Validator.java:23: non-static method equals(java.lang.Object) cannot be referenc
ed from a static context
[javac] return EditEventModel.equals(clazz);
[javac]
The equals method cannot be used as a static method. That is, you need to provide an object. Try EditEventModel.class.equals(clazz);
Validator.java:68: cannot find symbol
[javac] symbol : variable lang
[javac] location: class com.teradata.portlets.calendar.validators.EditEventV
alidator
[javac] if(obj.getClass() == java.lang.String && ((String)obj).trim().len
gth() <= 0)
I would try obj.getClass().equals(String.class)
Thanks! I'm well on my way to getting this thing running. Do you know where I put these folders? Images, Incudes, js, resources and tooltip? I shuffled all my folders and I have no idea where they go.
These folders go under yourProjectName/web/
Ok. I deployed the project but when I try to add the portlet to the portal all I see is the loading bar. Before I had the folders in the right place my portlet was under a different tab but now its Undefined. Maybe the folders are still the problem?
Anyone know how to fix this error?
ERROR 05 Jun 2009 08:18:52,738 [com.liferay.portal.kernel.deploy.AutoDeployScann
er] [com.liferay.portal.log.CommonsLogImpl.error(52)] Auto deploy failed to remo
ve EventsPortlet.war
You can just redeploy the portlet and this shouldn't be an issue.
You can also manually undeploy the portlet by going to _$CATALINA\_HOME/webapps_ and _$CATALINA\_HOME_/work_ and removing the files/folders related to your portlet.
I redeployed and I still get those errors.
Did you try manually undeploying it?
Yeah, I deleted the files for it in those directories. This is what Tomcat is displaying.
ERROR 05 Jun 2009 09:57:00,791 [ContainerBackgroundProcessor[StandardEngine[Cata
lina]]] [org.apache.catalina.core.StandardContext.start(4217)] Error listenerSta
rt
ERROR 05 Jun 2009 09:57:00,791 [ContainerBackgroundProcessor[StandardEngine[Cata
lina]]] [org.apache.catalina.core.StandardContext.start(4244)] Context [/EventsP
ortlet] startup failed due to previous errors
INFO 05 Jun 2009 09:57:00,791 [ContainerBackgroundProcessor[StandardEngine[Cata
lina]]] [com.teradata.anterage.buildinfo.webapp.BuildInfoSessi onContextListener.
contextDestroyed(78)] EventsPortlet: Unloading Build --> 2009.06.05 09:56:1
0 | Events Portlet | 03340684@pepwud10038 | build 69 | 1.5.0_19-b02 |
Windows XP 5.1 x86
INFO 05 Jun 2009 09:57:00,807 [ContainerBackgroundProcessor[StandardEngine[Cata
lina]]] [org.apache.catalina.core.ApplicationContext.log(647)] Closing Spring ro
ot WebApplicationContext
INFO 05 Jun 2009 09:57:00,807 [ContainerBackgroundProcessor[StandardEngine[Cata
lina]]] [org.apache.catalina.core.ApplicationContext.log(647)] Shutting down Log
4J
INFO 05 Jun 2009 09:57:00,807 [ContainerBackgroundProcessor[StandardEngine[Cata
lina]]] [com.liferay.portal.deploy.HotDeployPortletListener.in vokeUndeploy(374)]
Unregistering portlets for EventsPortlet
INFO 05 Jun 2009 09:57:00,807 [ContainerBackgroundProcessor[StandardEngine[Cata
lina]]] [com.liferay.portal.deploy.HotDeployPortletListener.in vokeUndeploy(407)]
Portlets for EventsPortlet unregistered successfully
That is not the same error, it tried to deploy, but there was an error with the portlet. There is probably an error in the code that prevented the portlet from deploying successfully. You will need to take a look at the stack track (look for the ERROR line with a Java stack trace) to determine why it failed to deploy.
How do you do a stack track?
You posted part of a stack trace on the other page; it's the message the explains the reason for the error with a track through the source code stack. Please post the whole trace.
http://java.sun.com/developer/technicalArticles/ Programming/Stacktrace/
Ok, I hit ctrl-break on the window and these are the results.
"com.liferay.portal.kernel.deploy.AutoDeployScanner" daemon prio=2 tid=0x0386e5f
8 nid=0xe6c waiting on condition [0x041ff000..0x041ffae8]
at java.lang.Thread.sleep(Native Method)
at com.liferay.portal.kernel.deploy.AutoDeployScanner.run (AutoDeployScan
ner.java:55)
"DefaultQuartzScheduler_QuartzSchedulerThread" prio=6 tid=0x03876308 nid=0x1464
waiting on condition [0x041bf000..0x041bfb68]
at java.lang.Thread.sleep(Native Method)
at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedu lerThread.java:
394)
"DefaultQuartzScheduler_Worker-9" daemon prio=6 tid=0x038703e0 nid=0xf08 in Obje
ct.wait() [0x0417f000..0x0417fc68]
at java.lang.Object.wait(Native Method)
at org.quartz.simpl.SimpleThreadPool.getNextRunnable(Simp leThreadPool.ja
va:428)
- locked (a java.lang.Object)
at org.quartz.simpl.SimpleThreadPool.access$000(SimpleThr eadPool.java:47
)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(Sim pleThreadPool.j
ava:518)
"DefaultQuartzScheduler_Worker-8" daemon prio=6 tid=0x03879928 nid=0x1110 in Obj
ect.wait() [0x0413f000..0x0413fbe8]
at java.lang.Object.wait(Native Method)
at org.quartz.simpl.SimpleThreadPool.getNextRunnable(Simp leThreadPool.ja
va:428)
- locked (a java.lang.Object)
at org.quartz.simpl.SimpleThreadPool.access$000(SimpleThr eadPool.java:47
)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(Sim pleThreadPool.j
ava:518)
"DefaultQuartzScheduler_Worker-7" daemon prio=6 tid=0x03878c90 nid=0x1254 in Obj
ect.wait() [0x040ff000..0x040ffce8]
at java.lang.Object.wait(Native Method)
at org.quartz.simpl.SimpleThreadPool.getNextRunnable(Simp leThreadPool.ja
va:428)
- locked (a java.lang.Object)
at org.quartz.simpl.SimpleThreadPool.access$000(SimpleThr eadPool.java:47
)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(Sim pleThreadPool.j
ava:518)
"DefaultQuartzScheduler_Worker-6" daemon prio=6 tid=0x03878138 nid=0x1070 in Obj
ect.wait() [0x040bf000..0x040bfd68]
at java.lang.Object.wait(Native Method)
at org.quartz.simpl.SimpleThreadPool.getNextRunnable(Simp leThreadPool.ja
va:428)
- locked (a java.lang.Object)
at org.quartz.simpl.SimpleThreadPool.access$000(SimpleThr eadPool.java:47
)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(Sim pleThreadPool.j
ava:518)
"DefaultQuartzScheduler_Worker-5" daemon prio=6 tid=0x03775428 nid=0x14a0 in Obj
ect.wait() [0x0407f000..0x0407fa68]
at java.lang.Object.wait(Native Method)
at org.quartz.simpl.SimpleThreadPool.getNextRunnable(Simp leThreadPool.ja
va:428)
- locked (a java.lang.Object)
at org.quartz.simpl.SimpleThreadPool.access$000(SimpleThr eadPool.java:47
)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(Sim pleThreadPool.j
ava:518)
"DefaultQuartzScheduler_Worker-4" daemon prio=6 tid=0x03774aa0 nid=0x1498 in Obj
ect.wait() [0x0403f000..0x0403f9e8]
at java.lang.Object.wait(Native Method)
at org.quartz.simpl.SimpleThreadPool.getNextRunnable(Simp leThreadPool.ja
va:428)
- locked (a java.lang.Object)
at org.quartz.simpl.SimpleThreadPool.access$000(SimpleThr eadPool.java:47
)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(Sim pleThreadPool.j
ava:518)
"DefaultQuartzScheduler_Worker-3" daemon prio=6 tid=0x03828910 nid=0xa00 in Obje
ct.wait() [0x03fff000..0x03fffae8]
at java.lang.Object.wait(Native Method)
at org.quartz.simpl.SimpleThreadPool.getNextRunnable(Simp leThreadPool.ja
va:428)
- locked (a java.lang.Object)
at org.quartz.simpl.SimpleThreadPool.access$000(SimpleThr eadPool.java:47
)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(Sim pleThreadPool.j
ava:518)
"DefaultQuartzScheduler_Worker-2" daemon prio=6 tid=0x03828788 nid=0x10d4 in Obj
ect.wait() [0x03fbf000..0x03fbfb68]
at java.lang.Object.wait(Native Method)
at org.quartz.simpl.SimpleThreadPool.getNextRunnable(Simp leThreadPool.ja
va:428)
- locked (a java.lang.Object)
at org.quartz.simpl.SimpleThreadPool.access$000(SimpleThr eadPool.java:47
)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(Sim pleThreadPool.j
ava:518)
"DefaultQuartzScheduler_Worker-1" daemon prio=6 tid=0x03325ed0 nid=0x16ec in Obj
ect.wait() [0x03e2f000..0x03e2fbe8]
at java.lang.Object.wait(Native Method)
at org.quartz.simpl.SimpleThreadPool.getNextRunnable(Simp leThreadPool.ja
va:428)
- locked (a java.lang.Object)
at org.quartz.simpl.SimpleThreadPool.access$000(SimpleThr eadPool.java:47
)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(Sim pleThreadPool.j
ava:518)
"DefaultQuartzScheduler_Worker-0" daemon prio=6 tid=0x0352ef90 nid=0x1338 in Obj
ect.wait() [0x03daf000..0x03dafc68]
at java.lang.Object.wait(Native Method)
at org.quartz.simpl.SimpleThreadPool.getNextRunnable(Simp leThreadPool.ja
va:428)
- locked (a java.lang.Object)
at org.quartz.simpl.SimpleThreadPool.access$000(SimpleThr eadPool.java:47
)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(Sim pleThreadPool.j
ava:518)
"com.mchange.v2.async.ThreadPoolAsynchronousRunner$Poo lThread-#2" daemon prio=6
tid=0x03645d98 nid=0x179c in Object.wait() [0x03f7f000..0x03f7f9e8]
at java.lang.Object.wait(Native Method)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$Pool Thread.run(Thre
adPoolAsynchronousRunner.java:534)
- locked (a com.mchange.v2.async.ThreadPoolAsynchronousRunn
er)
"com.mchange.v2.async.ThreadPoolAsynchronousRunner$Poo lThread-#1" daemon prio=6
tid=0x03645810 nid=0xb54 in Object.wait() [0x03f3f000..0x03f3fce8]
at java.lang.Object.wait(Native Method)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$Pool Thread.run(Thre
adPoolAsynchronousRunner.java:534)
- locked (a com.mchange.v2.async.ThreadPoolAsynchronousRunn
er)
"com.mchange.v2.async.ThreadPoolAsynchronousRunner$Poo lThread-#0" daemon prio=6
tid=0x03647900 nid=0x10ec in Object.wait() [0x03eff000..0x03effa68]
at java.lang.Object.wait(Native Method)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$Pool Thread.run(Thre
adPoolAsynchronousRunner.java:534)
- locked (a com.mchange.v2.async.ThreadPoolAsynchronousRunn
er)
"Timer-1" daemon prio=6 tid=0x035a2620 nid=0x106c in Object.wait() [0x03ebf000..
0x03ebfd68]
at java.lang.Object.wait(Native Method)
- waiting on (a java.util.TaskQueue)
at java.util.TimerThread.mainLoop(Unknown Source)
- locked (a java.util.TaskQueue)
at java.util.TimerThread.run(Unknown Source)
"ActiveMQ Session Task" prio=8 tid=0x0352e9c0 nid=0x11b8 waiting on condition [0
x03e6f000..0x03e6fb68]
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.park(Unknown Source)
at java.util.concurrent.locks.AbstractQueuedSynchronizer. parkAndCheckInt
errupt(Unknown Source)
at java.util.concurrent.locks.AbstractQueuedSynchronizer. doAcquireInterr
uptibly(Unknown Source)
at java.util.concurrent.locks.AbstractQueuedSynchronizer. acquireInterrup
tibly(Unknown Source)
at java.util.concurrent.SynchronousQueue$Node.waitForPut( Unknown Source)
at java.util.concurrent.SynchronousQueue.take(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.getTask(Unknow n Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unk nown Source)
at java.lang.Thread.run(Unknown Source)
"org.springframework.jms.listener.DefaultMessageListen erContainer#1-1" prio=6 ti
d=0x03541920 nid=0xf88 in Object.wait() [0x03def000..0x03defbe8]
at java.lang.Object.wait(Native Method)
at org.apache.activemq.MessageDispatchChannel.dequeue(Mes sageDispatchCha
nnel.java:77)
- locked (a java.lang.Object)
at org.apache.activemq.ActiveMQMessageConsumer.dequeue(Ac tiveMQMessageCo
nsumer.java:404)
at org.apache.activemq.ActiveMQMessageConsumer.receive(Ac tiveMQMessageCo
nsumer.java:516)
at org.springframework.jms.listener.DefaultMessageListene rContainer.rece
iveMessage(DefaultMessageListenerContainer.java:578)
at org.springframework.jms.listener.DefaultMessageListene rContainer.doRe
ceiveAndExecute(DefaultMessageListenerContainer.java: 523)
at org.springframework.jms.listener.DefaultMessageListene rContainer.rece
iveAndExecute(DefaultMessageListenerContainer.java: 478)
at org.springframework.jms.listener.DefaultMessageListene rContainer$Asyn
cMessageListenerInvoker.invokeListener(DefaultMessageL istenerContainer.java:889)
at org.springframework.jms.listener.DefaultMessageListene rContainer$Asyn
cMessageListenerInvoker.run(DefaultMessageListenerCont ainer.java:842)
at org.springframework.core.task.SimpleAsyncTaskExecutor$ ConcurrencyThro
ttlingRunnable.run(SimpleAsyncTaskExecutor.java:203)
at java.lang.Thread.run(Unknown Source)
"org.springframework.jms.listener.DefaultMessageListen erContainer-1" prio=6 tid=
0x034a6f20 nid=0xa20 in Object.wait() [0x03d2f000..0x03d2fc68]
at java.lang.Object.wait(Native Method)
at org.apache.activemq.MessageDispatchChannel.dequeue(Mes sageDispatchCha
nnel.java:77)
- locked (a java.lang.Object)
at org.apache.activemq.ActiveMQMessageConsumer.dequeue(Ac tiveMQMessageCo
nsumer.java:404)
at org.apache.activemq.ActiveMQMessageConsumer.receive(Ac tiveMQMessageCo
nsumer.java:516)
at org.springframework.jms.listener.DefaultMessageListene rContainer.rece
iveMessage(DefaultMessageListenerContainer.java:578)
at org.springframework.jms.listener.DefaultMessageListene rContainer.doRe
ceiveAndExecute(DefaultMessageListenerContainer.java: 523)
at org.springframework.jms.listener.DefaultMessageListene rContainer.rece
iveAndExecute(DefaultMessageListenerContainer.java: 478)
at org.springframework.jms.listener.DefaultMessageListene rContainer$Asyn
cMessageListenerInvoker.invokeListener(DefaultMessageL istenerContainer.java:889)
at org.springframework.jms.listener.DefaultMessageListene rContainer$Asyn
cMessageListenerInvoker.run(DefaultMessageListenerCont ainer.java:842)
at org.springframework.core.task.SimpleAsyncTaskExecutor$ ConcurrencyThro
ttlingRunnable.run(SimpleAsyncTaskExecutor.java:203)
at java.lang.Thread.run(Unknown Source)
"com.mchange.v2.async.ThreadPoolAsynchronousRunner$Poo lThread-#2" daemon prio=6
tid=0x034a4c50 nid=0x145c in Object.wait() [0x03cef000..0x03cefa68]
at java.lang.Object.wait(Native Method)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$Pool Thread.run(Thre
adPoolAsynchronousRunner.java:534)
- locked (a com.mchange.v2.async.ThreadPoolAsynchronousRunn
er)
"com.mchange.v2.async.ThreadPoolAsynchronousRunner$Poo lThread-#1" daemon prio=6
tid=0x034a93f0 nid=0x1460 in Object.wait() [0x03caf000..0x03cafae8]
at java.lang.Object.wait(Native Method)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$Pool Thread.run(Thre
adPoolAsynchronousRunner.java:534)
- locked (a com.mchange.v2.async.ThreadPoolAsynchronousRunn
er)
"com.mchange.v2.async.ThreadPoolAsynchronousRunner$Poo lThread-#0" daemon prio=6
tid=0x034aeaa0 nid=0x1050 in Object.wait() [0x03c6f000..0x03c6fb68]
at java.lang.Object.wait(Native Method)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$Pool Thread.run(Thre
adPoolAsynchronousRunner.java:534)
- locked (a com.mchange.v2.async.ThreadPoolAsynchronousRunn
er)
"Timer-0" daemon prio=6 tid=0x034ae8b8 nid=0x750 in Object.wait() [0x03c2f000..0
x03c2fbe8]
at java.lang.Object.wait(Native Method)
- waiting on (a java.util.TaskQueue)
at java.util.TimerThread.mainLoop(Unknown Source)
- locked (a java.util.TaskQueue)
at java.util.TimerThread.run(Unknown Source)
"Low Memory Detector" daemon prio=6 tid=0x0096f198 nid=0x864 runnable [0x0000000
0..0x00000000]
"CompilerThread0" daemon prio=10 tid=0x0096de08 nid=0xf60 waiting on condition [
0x00000000..0x02cbfa48]
"Signal Dispatcher" daemon prio=10 tid=0x0096d170 nid=0x16c8 waiting on conditio
n [0x00000000..0x00000000]
"Finalizer" daemon prio=8 tid=0x00963990 nid=0xe14 in Object.wait() [0x02c3f000.
.0x02c3fa68]
at java.lang.Object.wait(Native Method)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
- locked (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source)
"Reference Handler" daemon prio=10 tid=0x00962d68 nid=0xe50 in Object.wait() [0x
02bff000..0x02bffae8]
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Unknown Source)
at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source)
- locked (a java.lang.ref.Reference$Lock)
"main" prio=6 tid=0x00038da8 nid=0xc18 runnable [0x0007f000..0x0007fc3c]
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.PlainSocketImpl.accept(Unknown Source)
- locked (a java.net.SocksSocketImpl)
at java.net.ServerSocket.implAccept(Unknown Source)
at java.net.ServerSocket.accept(Unknown Source)
at org.apache.catalina.core.StandardServer.await(Standard Server.java:379
)
at org.apache.catalina.startup.Catalina.await(Catalina.ja va:616)
at org.apache.catalina.startup.Catalina.start(Catalina.ja va:576)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknow n Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap. java:295)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.j ava:433)
"VM Thread" prio=10 tid=0x0003fb10 nid=0x11dc runnable
"VM Periodic Task Thread" prio=10 tid=0x00970498 nid=0x15f8 waiting on condition
Could I get help with these errors? These are shown during a stack trace.
ERROR 16 Jun 2009 09:58:29,538 [ContainerBackgroundProcessor[StandardEngine[Cata
lina]]] [org.springframework.web.context.ContextLoader.initWeb ApplicationContext
(203)] Context initialization failed
org.springframework.beans.factory.xml.XmlBeanDefinitio nStoreException: Line 39 i
n XML document from ServletContext resource [/WEB-INF/applicationContext.xml] is
invalid; nested exception is org.xml.sax.SAXParseException: Attribute value "te
stProjectManager" of type ID must be unique within the document.
Caused by:
org.xml.sax.SAXParseException: Attribute value "testProjectManager" of type ID m
ust be unique within the document.
ERROR 16 Jun 2009 09:58:29,554 [ContainerBackgroundProcessor[StandardEngine[Cata
lina]]] [org.apache.catalina.core.StandardContext.listenerStar t(3768)] Exception
sending context initialized event to listener instance of class org.springframe
work.web.context.ContextLoaderListener
org.springframework.beans.factory.xml.XmlBeanDefinitio nStoreException: Line 39 i
n XML document from ServletContext resource [/WEB-INF/applicationContext.xml] is
invalid; nested exception is org.xml.sax.SAXParseException: Attribute value "te
stProjectManager" of type ID must be unique within the document.
Caused by:
org.xml.sax.SAXParseException: Attribute value "testProjectManager" of type ID m
ust be unique within the document.
ERROR 16 Jun 2009 09:58:29,554 [ContainerBackgroundProcessor[StandardEngine[Cata
lina]]] [org.apache.catalina.core.StandardContext.listenerStar t(3768)] Exception
sending context initialized event to listener instance of class com.teradata.vi
ewpoint.security.config.ConfigLoaderContextListener
java.lang.ClassCastException: org.springframework.beans.factory.xml.XmlBeanDefin
itionStoreException
ERROR 16 Jun 2009 09:58:29,554 [ContainerBackgroundProcessor[StandardEngine[Cata
lina]]] [org.apache.catalina.core.StandardContext.start(4217)] Error listenerSta
rt
ERROR 16 Jun 2009 09:58:29,569 [ContainerBackgroundProcessor[StandardEngine[Cata
lina]]] [org.apache.catalina.core.StandardContext.start(4244)] Context [/TestPro
jectPortlet] startup failed due to previous errors
Is this what Tomcat is displaying when you start up, having already removed your portlet?
Yes
Actually, I fixed this problem. I should have edited that a while ago. Sorry.



I don't know how to fix these errors. I'm not really sure what the first one wants but I'm pretty sure the second one just can't find that location so how do I fix these?
[mkdir] Created dir: C:\Events\build\classes
[javac] Compiling 11 source files to C:\Events\build\classes
[javac] C:\Events\src\java\com\teradata\portlets\events\ validators\EditEvent
Validator.java:23: non-static method equals(java.lang.Object) cannot be referenc
ed from a static context
[javac] return EditEventModel.equals(clazz);
[javac] ^
[javac] C:\Events\src\java\com\teradata\portlets\events\ validators\EditEvent
Validator.java:68: cannot find symbol
[javac] symbol : variable lang
[javac] location: class com.teradata.portlets.calendar.validators.EditEventV
alidator
[javac] if(obj.getClass() == java.lang.String && ((String)obj).trim().len
gth() <= 0)
[javac] ^
[javac] Note: C:\Events\src\java\com\teradata\portlets\events\ controllers\Ev
entsViewController.java uses unchecked or unsafe operations.
[javac] Note: Recompile with -Xlint:unchecked for details.
[javac] 2 errors
Here is the code
package com.teradata.portlets.calendar.validators;
import com.teradata.portlets.calendar.model.EditEventModel;
import java.sql.Timestamp;
import org.springframework.validation.Errors;
import org.springframework.validation.Validator;
public class EditEventValidator
implements Validator
{
public EditEventValidator()
{
}
public boolean supports(Class clazz)
{
return EditEventModel.equals(clazz);
}
public void validate(Object obj, Errors e)
{
EditEventModel editEventModel = (EditEventModel)obj;
if(editEventModel == null)
throw new NullPointerException("encountered null edit event form model");
Integer id = editEventModel.getEventId();
String eventTitle = editEventModel.getEventTitle();
String eventText = editEventModel.getEventText();
String author = editEventModel.getEventAuthorName();
String lastModifiedName = editEventModel.getEventLastModifiedName();
Integer priority = editEventModel.getEventPriority();
Long start = editEventModel.getEventStartTime();
Long end = editEventModel.getEventEndTime();
Long logTime = editEventModel.getEventLogTime();
Long lastModifiedTime = editEventModel.getEventLastModifiedTime();
validateRequiredField("eventId", id, e);
if(id.intValue() != -1)
{
validateRequiredField("eventAuthorName", author, e);
validateRequiredField("eventLastModifiedName", lastModifiedName, e);
validateTimestamp("eventLogTime", logTime, e);
validateTimestamp("eventLastModifiedTime", lastModifiedTime, e);
}
validateRequiredField("eventTitle", eventTitle, e);
validateMaxLength("eventTitle", eventTitle, 128, e);
validateMaxLength("eventText", eventText, 16384, e);
validateRequiredField("eventPriority", priority, e);
validateRequiredField("eventStartTime", start, e);
validateTimestamp("eventStartTime", start, e);
validateRequiredField("eventEndTime", end, e);
validateTimestamp("eventEndTime", end, e);
if(start != null && end != null && start.longValue() > end.longValue())
e.rejectValue("eventStartTime", "errors.startafterend");
}
public void validateRequiredField(String fieldName, Object obj, Errors e)
{
if(obj == null)
{
e.rejectValue(fieldName, "errors.required");
return;
}
if(obj.getClass() == java.lang.String && ((String)obj).trim().length() <= 0)
e.rejectValue(fieldName, "errors.required");
}
public void validateTimestamp(String fieldName, Long time, Errors e)
{
if(time == null)
return;
try
{
Timestamp timestamp = new Timestamp(time.longValue());
if(timestamp == null)
e.rejectValue(fieldName, "errors.invalidtimestamp");
}
catch(Exception ex)
{
e.rejectValue(fieldName, "errors.invalidtimestamp");
}
}
public void validateMaxLength(String fieldName, String string, int maxLength, Errors e)
{
if(string == null)
return;
if(string.length() > maxLength)
e.rejectValue(fieldName, "errors.toolong");
}
public static final int MAX_LENGTH_EVENTTITLE = 128;
public static final int MAX_LENGTH_EVENTTEXT = 16384;
}