As Martin says, the DN error is perhaps a bit misleading ... I believe the
"store" action here is DN repopulating the pojo with data from the
database, rather than the other way around.

In Isis the JdoObjectIdSerializer class [1] is responsible for converting
between the Isis RootOid and the DN ObjectId; the format "
4028dd814d2213d8014d2213d8610000[OID]tm.dom.modules.assets.Device" is a
valid value for the OID,

Could you provide a test example based on simpleapp that demonstrates the
problem?  It might be to do with the particular annotations/mappings that
you have on your Device class.

Thanks
Dan



[1]
https://github.com/apache/isis/blob/rel/isis-1.11.1/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/spi/JdoObjectIdSerializer.java

On 25 January 2016 at 08:04, Martin Grigorov <[email protected]> wrote:

> Hi,
>
> I believe there are two issues here:
>
> 1) Isis doesn't extract the primary key (4028dd814d2213d8014d2213d8610000)
> from "4028dd814d2213d8014d2213d8610000[OID]tm.dom.modules.assets.Device"
> before passing it to DataNucleus
> 2) DataNucleus uses misleading exception message. The method call is
> #getObjectById().
> I guess it uses something like JDOQL with template object, e.g.
> Device device = new Device();
>
> device.setId("4028dd814d2213d8014d2213d8610000[OID]tm.dom.modules.assets.Device");
>  // 1
> SELECT * FROM Device dev WHERE dev.getId() = device.getId();
>
> and it fails at [1].
>
> I have no experience with DataNucleus so this is just a guess. And the
> given JDOQL above is most probably very wrong, but you get the idea.
>
> Martin Grigorov
> Wicket Training and Consulting
> https://twitter.com/mtgrigorov
>
> On Mon, Jan 25, 2016 at 2:39 AM, Chuangyu <[email protected]> wrote:
>
> > Hi,
> >
> > I met an error when try a GET method with Swagger UI.
> >
> > The url is below:
> >
> >
> >
> http://localhost:8080/restful/objects/tm.dom.modules.assets.Device/4028dd814d2213d8014d2213d8610000
> >
> >
> > "4028dd814d2213d8014d2213d8610000" is a uuid string which length is 32.
> >
> >  curl command as below:
> >
> > curl -X GET --header "Accept:
> > application/json;profile=urn:org.apache.isis/v1" --header
> > "Authorization: Basic c3lzdGVtLWFkbWluOmdvb2dmcmllbmc="
> > "
> >
> http://localhost:8080/restful/objects/tm.dom.modules.assets.Device/4028dd814d2213d8014d2213d8610000
> > "
> >
> >
> > error message sa below:
> >
> > { "className": "javax.jdo.JDOFatalUserException", "message": "Attempt to
> > store value
> > \"4028dd814d2213d8014d2213d8610000[OID]tm.dom.modules.assets.Device\" in
> > column \"id\" that has maximum length of 32. Please correct your data!",
> "
> > stackTrace": [
> >
> >
> "org.datanucleus.api.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:616)",
> >
> >
> "org.datanucleus.api.jdo.JDOPersistenceManager.getObjectById(JDOPersistenceManager.java:1728)",
> >
> >
> "org.datanucleus.api.jdo.JDOPersistenceManager.getObjectById(JDOPersistenceManager.java:1741)",
> >
> >
> "org.apache.isis.core.runtime.system.persistence.PersistenceSession.loadPojo(PersistenceSession.java:885)",
> >
> >
> "org.apache.isis.core.runtime.system.persistence.PersistenceSession$2.execute(PersistenceSession.java:866)",
> >
> >
> "org.apache.isis.core.runtime.system.persistence.PersistenceSession$2.execute(PersistenceSession.java:859)",
> >
> >
> "org.apache.isis.core.runtime.system.transaction.IsisTransactionManager.executeWithinTransaction(IsisTransactionManager.java:216)",
> >
> >
> "org.apache.isis.core.runtime.system.persistence.PersistenceSession.loadObjectInTransaction(PersistenceSession.java:858)",
> >
> >
> "org.apache.isis.core.runtime.system.persistence.PersistenceSession.adapterForAny(PersistenceSession.java:1507)",
> >
> >
> "org.apache.isis.viewer.restfulobjects.server.util.OidUtils.getObjectAdapter(OidUtils.java:60)",
> >
> >
> "org.apache.isis.viewer.restfulobjects.server.util.OidUtils.getObjectAdapterElseNull(OidUtils.java:40)",
> >
> >
> "org.apache.isis.viewer.restfulobjects.server.resources.ResourceAbstract.getObjectAdapterElseNull(ResourceAbstract.java:151)",
> >
> >
> "org.apache.isis.viewer.restfulobjects.server.resources.ResourceAbstract.getObjectAdapterElseThrowNotFound(ResourceAbstract.java:141)",
> >
> >
> "org.apache.isis.viewer.restfulobjects.server.resources.DomainObjectResourceServerside.object(DomainObjectResourceServerside.java:123)",
> > "sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)",
> >
> >
> "sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)",
> >
> >
> "sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)",
> > "java.lang.reflect.Method.invoke(Method.java:497)",
> >
> >
> "org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:137)",
> >
> >
> "org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:296)",
> >
> >
> "org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:250)",
> >
> >
> "org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:237)",
> >
> >
> "org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:356)",
> >
> >
> "org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:179)",
> >
> >
> "org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:220)",
> >
> >
> "org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56)",
> >
> >
> "org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51)",
> > "javax.servlet.http.HttpServlet.service(HttpServlet.java:790)",
> > "org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:808)",
> >
> >
> "org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)",
> >
> >
> "org.apache.isis.viewer.restfulobjects.server.webapp.IsisTransactionFilterForRestfulObjects.doFilter(IsisTransactionFilterForRestfulObjects.java:46)",
> >
> >
> "org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)",
> >
> >
> "org.apache.isis.core.webapp.IsisSessionFilter.doFilter(IsisSessionFilter.java:338)",
> >
> >
> "org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)",
> >
> >
> "org.apache.isis.core.webapp.diagnostics.IsisLogOnExceptionFilter.doFilter(IsisLogOnExceptionFilter.java:52)",
> >
> >
> "org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)",
> >
> >
> "org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)",
> >
> >
> "org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)",
> >
> >
> "org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)",
> >
> >
> "org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)",
> >
> >
> "org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)",
> >
> >
> "org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)",
> >
> >
> "org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)",
> >
> >
> "org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)",
> >
> >
> "org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)",
> >
> >
> "org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)",
> >
> >
> "org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)",
> >
> >
> "org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)",
> >
> >
> "org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)",
> >
> >
> "org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)",
> >
> >
> "org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)",
> >
> >
> "org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)",
> >
> >
> "org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)",
> >
> >
> "org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)",
> > "org.eclipse.jetty.server.Server.handle(Server.java:499)",
> > "org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)",
> >
> >
> "org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)",
> >
> >
> "org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)",
> >
> >
> "org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)",
> >
> >
> "org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)",
> > "java.lang.Thread.run(Thread.java:745)" ], "causedBy": { "className":
> > "org.datanucleus.exceptions.NucleusUserException", "message": "Attempt to
> > store value
> > \"4028dd814d2213d8014d2213d8610000[OID]tm.dom.modules.assets.Device\" in
> > column \"id\" that has maximum length of 32. Please correct your data!",
> "
> > stackTrace": [
> >
> >
> "org.datanucleus.store.rdbms.mapping.datastore.CharRDBMSMapping.setString(CharRDBMSMapping.java:254)",
> >
> >
> "org.datanucleus.store.rdbms.mapping.java.SingleFieldMapping.setString(SingleFieldMapping.java:180)",
> >
> >
> "org.datanucleus.store.rdbms.fieldmanager.ParameterSetter.storeStringField(ParameterSetter.java:158)",
> >
> >
> "org.datanucleus.state.AbstractStateManager.providedStringField(AbstractStateManager.java:1448)",
> >
> >
> "org.datanucleus.state.StateManagerImpl.providedStringField(StateManagerImpl.java:120)",
> > "tm.dom.modules.IdEntity.dnProvideField(IdEntity.java)",
> > "tm.dom.modules.assets.Device.dnProvideField(Device.java)",
> > "tm.dom.modules.IdEntity.dnProvideFields(IdEntity.java)",
> >
> >
> "org.datanucleus.state.StateManagerImpl.provideFields(StateManagerImpl.java:1170)",
> >
> >
> "org.datanucleus.store.rdbms.request.FetchRequest.execute(FetchRequest.java:333)",
> >
> >
> "org.datanucleus.store.rdbms.RDBMSPersistenceHandler.fetchObject(RDBMSPersistenceHandler.java:319)",
> >
> >
> "org.datanucleus.state.AbstractStateManager.loadFieldsFromDatastore(AbstractStateManager.java:1147)",
> >
> >
> "org.datanucleus.state.StateManagerImpl.validate(StateManagerImpl.java:4289)",
> >
> >
> "org.datanucleus.ExecutionContextImpl.findObject(ExecutionContextImpl.java:3608)",
> >
> >
> "org.datanucleus.api.jdo.JDOPersistenceManager.getObjectById(JDOPersistenceManager.java:1723)",
> >
> >
> "org.datanucleus.api.jdo.JDOPersistenceManager.getObjectById(JDOPersistenceManager.java:1741)",
> >
> >
> "org.apache.isis.core.runtime.system.persistence.PersistenceSession.loadPojo(PersistenceSession.java:885)",
> >
> >
> "org.apache.isis.core.runtime.system.persistence.PersistenceSession$2.execute(PersistenceSession.java:866)",
> >
> >
> "org.apache.isis.core.runtime.system.persistence.PersistenceSession$2.execute(PersistenceSession.java:859)",
> >
> >
> "org.apache.isis.core.runtime.system.transaction.IsisTransactionManager.executeWithinTransaction(IsisTransactionManager.java:216)",
> >
> >
> "org.apache.isis.core.runtime.system.persistence.PersistenceSession.loadObjectInTransaction(PersistenceSession.java:858)",
> >
> >
> "org.apache.isis.core.runtime.system.persistence.PersistenceSession.adapterForAny(PersistenceSession.java:1507)",
> >
> >
> "org.apache.isis.viewer.restfulobjects.server.util.OidUtils.getObjectAdapter(OidUtils.java:60)",
> >
> >
> "org.apache.isis.viewer.restfulobjects.server.util.OidUtils.getObjectAdapterElseNull(OidUtils.java:40)",
> >
> >
> "org.apache.isis.viewer.restfulobjects.server.resources.ResourceAbstract.getObjectAdapterElseNull(ResourceAbstract.java:151)",
> >
> >
> "org.apache.isis.viewer.restfulobjects.server.resources.ResourceAbstract.getObjectAdapterElseThrowNotFound(ResourceAbstract.java:141)",
> >
> >
> "org.apache.isis.viewer.restfulobjects.server.resources.DomainObjectResourceServerside.object(DomainObjectResourceServerside.java:123)",
> > "sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)",
> >
> >
> "sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)",
> >
> >
> "sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)",
> > "java.lang.reflect.Method.invoke(Method.java:497)",
> >
> >
> "org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:137)",
> >
> >
> "org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:296)",
> >
> >
> "org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:250)",
> >
> >
> "org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:237)",
> >
> >
> "org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:356)",
> >
> >
> "org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:179)",
> >
> >
> "org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:220)",
> >
> >
> "org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56)",
> >
> >
> "org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51)",
> > "javax.servlet.http.HttpServlet.service(HttpServlet.java:790)",
> > "org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:808)",
> >
> >
> "org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)",
> >
> >
> "org.apache.isis.viewer.restfulobjects.server.webapp.IsisTransactionFilterForRestfulObjects.doFilter(IsisTransactionFilterForRestfulObjects.java:46)",
> >
> >
> "org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)",
> >
> >
> "org.apache.isis.core.webapp.IsisSessionFilter.doFilter(IsisSessionFilter.java:338)",
> >
> >
> "org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)",
> >
> >
> "org.apache.isis.core.webapp.diagnostics.IsisLogOnExceptionFilter.doFilter(IsisLogOnExceptionFilter.java:52)",
> >
> >
> "org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)",
> >
> >
> "org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)",
> >
> >
> "org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)",
> >
> >
> "org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)",
> >
> >
> "org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)",
> >
> >
> "org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)",
> >
> >
> "org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)",
> >
> >
> "org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)",
> >
> >
> "org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)",
> >
> >
> "org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)",
> >
> >
> "org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)",
> >
> >
> "org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)",
> >
> >
> "org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)",
> >
> >
> "org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)",
> >
> >
> "org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)",
> >
> >
> "org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)",
> >
> >
> "org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)",
> >
> >
> "org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)",
> >
> >
> "org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)",
> > "org.eclipse.jetty.server.Server.handle(Server.java:499)",
> > "org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)",
> >
> >
> "org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)",
> >
> >
> "org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)",
> >
> >
> "org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)",
> >
> >
> "org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)",
> > "java.lang.Thread.run(Thread.java:745)" ], "causedBy": null } }
> >
> > I don't know why a GET method lead to a store action ?
> >
>

Reply via email to