Hi Dan,
The layout.xml I have for the domain objects in question is malformed. I will 
find out exactly what is wrong with them and the code affected by this. It is 
easier to just debug and find the problem than to create a sample app.
Thanks for the hint.
Gerrie    On Wednesday, 27 December 2017, 12:40:29 GMT+2, Dan Haywood 
<d...@haywood-associates.co.uk> wrote:  
 
 Hmm. Can you provide an example app on github with instructions on how to
reproduce?

Also, ObjectSpecifications are invalidated/removed from the cache when
running in prototype mode in order to support dynamic reloading of the
.layout.xml files; this is done by the Wicket viewer when about to rerender
the EntityPage. My guess is you've found some code path where this is
occurring but then the recreation isn't occurring correctly somehow. Does
the problem still occur when running in production mode?

Thx,
Dan.

On Wed, 27 Dec 2017, 10:29 Gerrie Myburgh,
<gerrie.mybu...@yahoo.co.uk.invalid> wrote:

> Hi,
> I have encountered suspect behavior in isis when it is trying to construct
> a domain object. The problem is that it is not consistently the same across
> different builds of the system.
> What is happening is that some Domains objects specification is not found
> in the cache of SpecificationLoader.
> In SpecificationLoader.java the lookupBySpecId gets a inpout ObjectSpecId
> of "release.Person_Job". It checks the cache if this object definition is
> there. Initially this cache size is 283 and the getByObjectType  method
> finds the definition. But after a while the definition get's removed from
> the cache and the size decreases to 281.
>
> getByObjectType methods then returns null and the loadSpecification method
> is then called called . This tries to get the Class definition using the
> className : "release.Person_Job" . This fails and the method throws a "No
> such class available".
> The problem appears to be that the class definition is removed from the
> cache of SpecificationLoader and not reloaded into the cache afterwards for
> some reason.
> Other domain objects that is loaded is done using the fully qualified
> class name. In this case it is not.
> Here is the stacktrace :
>
>
>    - org.apache.isis.core.commons.exceptions.IsisException
>    - No such class available: release.Person_Job
>    -
> org.apache.isis.core.metamodel.specloader.SpecificationLoader#loadSpecification(SpecificationLoader.java:289)
>    -
> org.apache.isis.core.metamodel.specloader.SpecificationLoader#lookupBySpecId(SpecificationLoader.java:515)
>    -
> org.apache.isis.viewer.wicket.model.models.EntityModel#getSpecificationFor(EntityModel.java:291)
>    -
> org.apache.isis.viewer.wicket.model.models.EntityModel#getTypeOfSpecification(EntityModel.java:287)
>    -
> org.apache.isis.viewer.wicket.ui.components.layout.bs3.tabs.TabGroupPanel#tabsFor(TabGroupPanel.java:62)
>    -
> org.apache.isis.viewer.wicket.ui.components.layout.bs3.tabs.TabGroupPanel#<init>(TabGroupPanel.java:87)
>    -
> org.apache.isis.viewer.wicket.ui.components.layout.bs3.col.Col#buildGui(Col.java:213)
>    -
> org.apache.isis.viewer.wicket.ui.components.layout.bs3.col.Col#<init>(Col.java:79)
>    -
> org.apache.isis.viewer.wicket.ui.components.layout.bs3.row.Row#buildGui(Row.java:69)
>    -
> org.apache.isis.viewer.wicket.ui.components.layout.bs3.row.Row#<init>(Row.java:53)
>    -
> org.apache.isis.viewer.wicket.ui.components.layout.bs3.BS3GridPanel#buildGui(BS3GridPanel.java:53)
>    -
> org.apache.isis.viewer.wicket.ui.components.layout.bs3.BS3GridPanel#<init>(BS3GridPanel.java:42)
>    -
> org.apache.isis.viewer.wicket.ui.components.entity.selector.links.EntityLinksSelectorPanelFactory#createComponent(EntityLinksSelectorPanelFactory.java:57)
>    -
> org.apache.isis.viewer.wicket.ui.ComponentFactoryAbstract#createComponent(ComponentFactoryAbstract.java:98)
>    -
> org.apache.isis.viewer.wicket.viewer.registries.components.ComponentFactoryRegistryDefault#createComponent(ComponentFactoryRegistryDefault.java:121)
>    -
> org.apache.isis.viewer.wicket.viewer.registries.components.ComponentFactoryRegistryDefault#addOrReplaceComponent(ComponentFactoryRegistryDefault.java:106)
>    -
> org.apache.isis.viewer.wicket.ui.pages.PageAbstract#addComponent(PageAbstract.java:404)
>    -
> org.apache.isis.viewer.wicket.ui.pages.PageAbstract#addChildComponents(PageAbstract.java:399)
>    -
> org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage#buildPage(EntityPage.java:182)
>    -
> org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage#<init>(EntityPage.java:115)
>    -
> org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage#<init>(EntityPage.java:83)
>    -
> org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage#<init>(EntityPage.java:64)
>    -
> sun.reflect.NativeConstructorAccessorImpl#newInstance0(NativeConstructorAccessorImpl.java:-2)
>    -
> sun.reflect.NativeConstructorAccessorImpl#newInstance(NativeConstructorAccessorImpl.java:62)
>    -
> sun.reflect.DelegatingConstructorAccessorImpl#newInstance(DelegatingConstructorAccessorImpl.java:45)
>    - java.lang.reflect.Constructor#newInstance(Constructor.java:423)
>    -
> org.apache.wicket.session.DefaultPageFactory#newPage(DefaultPageFactory.java:171)
>    -
> org.apache.wicket.session.DefaultPageFactory#newPage(DefaultPageFactory.java:99)
>    -
> org.apache.wicket.DefaultMapperContext#newPageInstance(DefaultMapperContext.java:106)
>    -
> org.apache.wicket.core.request.handler.PageProvider#resolvePageInstance(PageProvider.java:271)
>    -
> org.apache.wicket.core.request.handler.PageProvider#getPageInstance(PageProvider.java:169)
>    -
> org.apache.wicket.request.handler.render.PageRenderer#getPage(PageRenderer.java:78)
>    -
> org.apache.wicket.request.handler.render.WebPageRenderer#renderPage(WebPageRenderer.java:102)
>    -
> org.apache.wicket.request.handler.render.WebPageRenderer#respond(WebPageRenderer.java:195)
>    -
> org.apache.wicket.core.request.handler.RenderPageRequestHandler#respond(RenderPageRequestHandler.java:175)
>    -
> org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor#respond(RequestCycle.java:895)
>    -
> org.apache.wicket.request.RequestHandlerStack#execute(RequestHandlerStack.java:64)
>    -
> org.apache.wicket.request.cycle.RequestCycle#execute(RequestCycle.java:265)
>    -
> org.apache.wicket.request.cycle.RequestCycle#processRequest(RequestCycle.java:222)
>    -
> org.apache.wicket.request.cycle.RequestCycle#processRequestAndDetach(RequestCycle.java:293)
>    -
> org.apache.wicket.protocol.http.WicketFilter#processRequestCycle(WicketFilter.java:261)
>    -
> org.apache.wicket.protocol.http.WicketFilter#processRequest(WicketFilter.java:203)
>    -
> org.apache.wicket.protocol.http.WicketFilter#doFilter(WicketFilter.java:284)
>    -
> org.eclipse.jetty.servlet.ServletHandler$CachedChain#doFilter(ServletHandler.java:1621)
>    -
> org.apache.isis.core.webapp.diagnostics.IsisLogOnExceptionFilter#doFilter(IsisLogOnExceptionFilter.java:52)
>    -
> org.eclipse.jetty.servlet.ServletHandler$CachedChain#doFilter(ServletHandler.java:1621)
>    -
> 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:1613)
>    -
> org.eclipse.jetty.servlet.ServletHandler#doHandle(ServletHandler.java:541)
>    -
> org.eclipse.jetty.server.handler.ScopedHandler#handle(ScopedHandler.java:143)
>    -
> org.eclipse.jetty.security.SecurityHandler#handle(SecurityHandler.java:548)
>    -
> org.eclipse.jetty.server.handler.HandlerWrapper#handle(HandlerWrapper.java:132)
>    -
> org.eclipse.jetty.server.handler.ScopedHandler#nextHandle(ScopedHandler.java:190)
>    -
> org.eclipse.jetty.server.session.SessionHandler#doHandle(SessionHandler.java:1593)
>    -
> org.eclipse.jetty.server.handler.ScopedHandler#nextHandle(ScopedHandler.java:188)
>    -
> org.eclipse.jetty.server.handler.ContextHandler#doHandle(ContextHandler.java:1239)
>    -
> org.eclipse.jetty.server.handler.ScopedHandler#nextScope(ScopedHandler.java:168)
>    -
> org.eclipse.jetty.servlet.ServletHandler#doScope(ServletHandler.java:481)
>    -
> org.eclipse.jetty.server.session.SessionHandler#doScope(SessionHandler.java:1562)
>    -
> org.eclipse.jetty.server.handler.ScopedHandler#nextScope(ScopedHandler.java:166)
>    -
> org.eclipse.jetty.server.handler.ContextHandler#doScope(ContextHandler.java:1141)
>    -
> org.eclipse.jetty.server.handler.ScopedHandler#handle(ScopedHandler.java:141)
>    -
> org.eclipse.jetty.server.handler.HandlerWrapper#handle(HandlerWrapper.java:132)
>    - org.eclipse.jetty.server.Server#handle(Server.java:564)
>    - org.eclipse.jetty.server.HttpChannel#handle(HttpChannel.java:320)
>    -
> org.eclipse.jetty.server.HttpConnection#onFillable(HttpConnection.java:251)
>    - org.eclipse.jetty.io
> .AbstractConnection$ReadCallback#succeeded(AbstractConnection.java:279)
>    - org.eclipse.jetty.io.FillInterest#fillable(FillInterest.java:110)
>    - org.eclipse.jetty.io.ChannelEndPoint$2#run(ChannelEndPoint.java:124)
>    -
> org.eclipse.jetty.util.thread.QueuedThreadPool#runJob(QueuedThreadPool.java:672)
>    -
> org.eclipse.jetty.util.thread.QueuedThreadPool$2#run(QueuedThreadPool.java:590)
>    - java.lang.Thread#run(Thread.java:745)
>
> ThanksGerrie Myburgh
>
>
> Powered by:
>
>    - Apache Isis ™
>    - About
>    - Change theme
>    -
>
>  

Reply via email to