Hi
Im seeing an exception when trying to load using Twig (see below) that
I dont see in Live.
My colleague also doesn't see it and yet we have the same dev set up
(although he runs on Mac)
The item it is failing on is an ArrayList<ContactStatus> where
ContactStatus is a simple enum (see below), here's the model
declaration
List<ContactStatus> contactStatuses = new ArrayList<ContactStatus>();
So as I understand it this should just work out of the box?
No @Child annotation etc needed? (indeed adding @Embedded seems to
cause issue35 :
http://code.google.com/p/twig-persist/issues/detail?id=35)
When I run a debug session this seems to be failing because ArrayList
does not implement Comparable (since enums always do)
What are we doing wrong?!
Thanks in advance
Ben
Versions:
Java 1.6
Twig 2.0-beta3
AppEngine 1.6.2.1
GWT 2.4.0
The enum is simply:
public enum ContactStatus implements IsSerializable, Serializable {
Public, Secret, Blocked, Ignored;
}
The exception that we see in dev :
java.lang.IllegalArgumentException: Cannot compare [SimpleProperty
value=[Ignored, Ignored, Ignored, Ignored, Ignored, Ignored, Ignored,
Ignored, Ignored, Ignored, Ignored, Ignored, Ignored, Ignored,
Ignored, Ignored, Ignored, Blocked, Ignored, Ignored, Ignored,
Ignored, Ignored, Ignored, Ignored, Ignored, Ignored, Ignored,
Ignored, Ignored, Blocked, Ignored, Ignored, Ignored, Ignored,
Ignored, Ignored, Ignored, Ignored, Ignored, Ignored, Ignored,
Ignored, Ignored, Ignored, Ignored, Ignored, Blocked, Ignored,
Ignored, Ignored, Ignored, Ignored, Ignored, Ignored, Ignored,
Ignored, Ignored, Blocked, Ignored, Ignored, Ignored, Ignored,
Ignored, Ignored, Ignored, Ignored, Ignored, Ignored, Ignored,
Blocked, Ignored, Ignored, Ignored, Ignored, Ignored, Ignored,
Ignored, Ignored, Ignored, Ignored, Ignored, Ignored, Ignored,
Ignored, Ignored, Ignored, Ignored, Ignored, Ignored, Ignored,
Ignored, Ignored, Ignored, Ignored, Ignored, Ignored, Ignored,
Ignored, Ignored, Ignored, Ignored, Ignored, Ignored, Ignored,
Ignored, Ignored, Ignored, Ignored, Ignored, Ignored, Ignored,
Ignored, Ignored, Blocked, Ignored, Ignored, Ignored, Ignored,
Ignored, Blocked, Ignored, Ignored, Ignored, Ignored, Ignored,
Ignored, Blocked, Ignored, Ignored, Ignored, Ignored, Ignored,
Ignored, Ignored, Ignored, Ignored, Ignored, Ignored, Ignored,
Ignored, Ignored, Ignored, Ignored, Ignored, Ignored, Ignored,
Ignored, Ignored, Ignored, Ignored, Ignored, Ignored, Ignored,
Ignored, Ignored, Ignored, Ignored, Ignored] path=contactStatuses
indexed=false] with [SimpleProperty value=[Ignored, Ignored, Ignored,
Ignored, Ignored, Ignored, Ignored, Ignored, Ignored, Ignored,
Ignored, Ignored, Ignored, Ignored, Ignored, Ignored, Ignored,
Blocked, Ignored, Ignored, Ignored, Ignored, Ignored, Ignored,
Ignored, Ignored, Ignored, Ignored, Ignored, Ignored, Blocked,
Ignored, Ignored, Ignored, Ignored, Ignored, Ignored, Ignored,
Ignored, Ignored, Ignored, Ignored, Ignored, Ignored, Ignored,
Ignored, Ignored, Blocked, Ignored, Ignored, Ignored, Ignored,
Ignored, Ignored, Ignored, Ignored, Ignored, Ignored, Blocked,
Ignored, Ignored, Ignored, Ignored, Ignored, Ignored, Ignored,
Ignored, Ignored, Ignored, Ignored, Blocked, Ignored, Ignored,
Ignored, Ignored, Ignored, Ignored, Ignored, Ignored, Ignored,
Ignored, Ignored, Ignored, Ignored, Ignored, Ignored, Ignored,
Ignored, Ignored, Ignored, Ignored, Ignored, Ignored, Ignored,
Ignored, Ignored, Ignored, Ignored, Ignored, Ignored, Ignored,
Ignored, Ignored, Ignored, Ignored, Ignored, Ignored, Ignored,
Ignored, Ignored, Ignored, Ignored, Ignored, Ignored, Blocked,
Ignored, Ignored, Ignored, Ignored, Ignored, Blocked, Ignored,
Ignored, Ignored, Ignored, Ignored, Ignored, Blocked, Ignored,
Ignored, Ignored, Ignored, Ignored, Ignored, Ignored, Ignored,
Ignored, Ignored, Ignored, Ignored, Ignored, Ignored, Ignored,
Ignored, Ignored, Ignored, Ignored, Ignored, Ignored, Ignored,
Ignored, Ignored, Ignored, Ignored, Ignored, Ignored, Ignored,
Ignored, Ignored] path=contactStatuses indexed=false]
at
com.google.code.twig.util.PropertyComparator.compare(PropertyComparator.java:
23)
at
com.google.code.twig.util.PropertyComparator.compare(PropertyComparator.java:
7)
at java.util.TreeMap.compare(TreeMap.java:1188)
at java.util.TreeMap.put(TreeMap.java:531)
at java.util.TreeSet.add(TreeSet.java:255)
at java.util.AbstractCollection.addAll(AbstractCollection.java:334)
at java.util.TreeSet.addAll(TreeSet.java:312)
at
com.google.code.twig.standard.StandardDecodeCommand.entityToInstance(StandardDecodeCommand.java:
60)
at
com.google.code.twig.standard.StandardDecodeCommand.keyToInstance(StandardDecodeCommand.java:
127)
at
com.google.code.twig.standard.StandardSingleTypedLoadCommand.keyToInstance(StandardSingleTypedLoadCommand.java:
9)
at
com.google.code.twig.standard.StandardSingleTypedLoadCommand.now(StandardSingleTypedLoadCommand.java:
34)
at
com.google.code.twig.standard.TranslatorObjectDatastore.load(TranslatorObjectDatastore.java:
202)
at
com.recruitmentlink.server.persistence.twig.TwigProfileImpl.getExistingCandidate(TwigProfileImpl.java:
92)
at
com.recruitmentlink.server.social.userhandling.UserProfileHandler.getCandidateUserState(UserProfileHandler.java:
49)
at
com.recruitmentlink.server.dispatch.GetCandidateUserStateHandler.executeInternal(GetCandidateUserStateHandler.java:
53)
at
com.recruitmentlink.server.dispatch.GetCandidateUserStateHandler.executeInternal(GetCandidateUserStateHandler.java:
1)
at
com.recruitmentlink.server.dispatch.AbstractActionHandler.execute(AbstractActionHandler.java:
35)
at
com.gwtplatform.dispatch.server.AbstractDispatchImpl.doExecute(AbstractDispatchImpl.java:
153)
at
com.gwtplatform.dispatch.server.AbstractDispatchImpl.execute(AbstractDispatchImpl.java:
111)
at
com.gwtplatform.dispatch.server.AbstractDispatchServiceImpl.execute(AbstractDispatchServiceImpl.java:
80)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
43)
at java.lang.reflect.Method.invoke(Method.java:601)
at
com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:
104)
at
com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:
569)
at
com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:
208)
at
com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:
248)
at
com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:
62)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at
com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:
261)
at
com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:
175)
at
com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:
91)
at
com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:
62)
at
com.gwtplatform.dispatch.server.AbstractHttpSessionSecurityCookieFilter.doFilter(AbstractHttpSessionSecurityCookieFilter.java:
67)
at
com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:
162)
at
com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:
58)
at
com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:
118)
at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:
113)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
at
com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:
35)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
at
com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:
60)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
at
com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:
43)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
at
com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:
122)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
at
com.google.appengine.tools.development.BackendServersFilter.doFilter(BackendServersFilter.java:
97)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
388)
at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:
216)
at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
182)
at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
418)
at
com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:
78)
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
152)
at com.google.appengine.tools.development.JettyContainerService
$ApiProxyHandler.handle(JettyContainerService.