Hi folks,
For a project I am working on we intend to use Apache Isis. Our first
encounter is looking good, but we have some issues with custom value
types (java classes UUID and URI).
Looking at Isis support for BigDecimal I created sets for both UUID
and URI (based on ValueSemanticsProviderAndFacetAbstract). These sets
contain:
<Type>ValueFacet
<Type>ValueSemanticsProvider
<Type>ValuetypeFacetFactory
Just including these classes in my deployment package results in the
following error (see below for the stack trace):
Cannot subclass final class class java.util.UUID
Somehow I think my classes are not being used by Isis. Since on the
object details page a UUID is shown as a link instead of the string
representation.
Now I wonder how I make sure Isis uses the classes I described above.
Regards,
Minto van der Sluis
Stack trace:
===========
Problem accessing /object.htmlviewer. Reason:
Cannot subclass final class class java.util.UUID
Caused by:
java.lang.IllegalArgumentException: Cannot subclass final class class
java.util.UUID
at net.sf.cglib.proxy.Enhancer.generateClass(Enhancer.java:446)
at
net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
at
net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216)
at net.sf.cglib.proxy.Enhancer.createHelper(Enhancer.java:377)
at net.sf.cglib.proxy.Enhancer.create(Enhancer.java:285)
at
org.apache.isis.runtimes.dflt.bytecode.dflt.objectfactory.internal.ObjectResolveAndObjectChangedEnhancer.newInstance(ObjectResolveAndObjectChangedEnhancer.java:93)
at
org.apache.isis.runtimes.dflt.bytecode.dflt.objectfactory.CglibObjectFactory.doInstantiate(CglibObjectFactory.java:66)
at
org.apache.isis.runtimes.dflt.runtime.persistence.objectfactory.ObjectFactoryAbstract.instantiate(ObjectFactoryAbstract.java:83)
at
org.apache.isis.runtimes.dflt.runtime.persistence.internal.RuntimeContextFromSession$3.instantiate(RuntimeContextFromSession.java:119)
at
org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.createObject(ObjectSpecificationDefault.java:446)
at
org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.createObject(ObjectSpecificationDefault.java:432)
at
org.apache.isis.runtimes.dflt.runtime.persistence.PersistenceSessionAbstract.recreateAdapter(PersistenceSessionAbstract.java:343)
at
org.apache.isis.runtimes.dflt.runtime.memento.Memento.recreateObject(Memento.java:176)
at
org.apache.isis.viewer.html.context.TransientObjectMapping.restoreToLoader(TransientObjectMapping.java:87)
at
org.apache.isis.viewer.html.context.Context.restoreAllObjectsToLoader(Context.java:453)
at
org.apache.isis.viewer.html.servlet.internal.WebController.generatePage(WebController.java:253)
at
org.apache.isis.viewer.html.servlet.ControllerServlet.processRequest(ControllerServlet.java:126)
at
org.apache.isis.viewer.html.servlet.ControllerServlet.processRequest(ControllerServlet.java:94)
at
org.apache.isis.viewer.html.servlet.ControllerServlet.doGet(ControllerServlet.java:79)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at
org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:547)
at
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1355)
at
org.apache.isis.runtimes.dflt.webapp.IsisSessionFilter$SessionState.handle(IsisSessionFilter.java:383)
at
org.apache.isis.runtimes.dflt.webapp.IsisSessionFilter.doFilter(IsisSessionFilter.java:404)
at
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1326)
at
org.apache.isis.runtimes.dflt.webapp.IsisSessionFilter$SessionState$1.handle(IsisSessionFilter.java:315)
at
org.apache.isis.runtimes.dflt.webapp.IsisSessionFilter.doFilter(IsisSessionFilter.java:404)
at
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1326)
at
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:479)
at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
at
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:520)
at
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:227)
at
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:940)
at
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:409)
at
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:186)
at
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:874)
at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
at
org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:250)
at
org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:149)
at
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110)
at org.eclipse.jetty.server.Server.handle(Server.java:349)
at
org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:441)
at
org.eclipse.jetty.server.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:904)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:565)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:217)
at
org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:46)
at
org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:545)
at
org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:43)
at
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:598)
at
org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:533)
at java.lang.Thread.run(Thread.java:722)