Hi Oscar, You need to use trunk (1.4.0-SNAPSHOT) rather than 1.3.1; I think that's the problem. Let me know Cheers Dan
Sorry to be brief, sent from my phone On 2 Feb 2014 19:08, "GESCONSULTOR - Óscar Bou" <[email protected]> wrote: > > Hi, Dan. > > I'm very excited about the possibility to use the JRebel plugin, as it can > accelerate a lot the workflow. > I've downloaded and configured it, and I'm working over the latest > quickstart archetype. > > I've added 1 new property to the TodoItem entity, and it has not been > showed on the interface. > > These are the detailed steps followed. > > > > > 1. Quickstart prototype. > > I create a new folder and run maven to create a project based on the > latest Isis quickstart: > > mvn archetype:generate -D archetypeGroupId=org.apache.isis.archetype > -D archetypeArtifactId=quickstart_wicket_restful_jdo-archetype -D > archetypeVersion=1.3.1 -D groupId=com.mycompany -D artifactId=myapp > -D version=1.0-SNAPSHOT -B > > > 2. JRebel configuration. > > I've installed JRebel, and on the JRebel Config Center I've marked the > "dom" and "webapp" projects. to be followed for changes by JRebel. > > I've downloaded from [1] the > danhaywood-isis-jrebel-plugin-1.0.0-SNAPSHOT.jar plugin and copied it on > the lib folder of the "webapp" module. > > I've copied the ToDoApp-no-fixtures-PROTOTYPE.launch on the "webapp" > module to a new ToDoApp-no-fixtures-PROTOTYPE-Rebel.launch file, and added: > > <stringAttribute > key="org.eclipse.jdt.launching.VM_ARGUMENTS" > value="${jrebel_args} -Drebel.log=false > -Drebel.plugins=./lib/danhaywood-isis-jrebel-plugin-1.0.0-SNAPSHOT.jar > -Disis-jrebel-plugin.packagePrefix=dom.simple -XX:MaxPermSize=128m"/> > > 3. DataNucleus. > > I assume that the "DataNucleus - auto-enhancement" option must be enabled > on the "dom" module. > That originates that, each time the Enhancer is executed (that's after any > change on any file on the module) a JRebel dialog asks: > "You are launching a JRebel-enabled application without the JRebel agent. > JRebel will not work without it." > For avoiding that, I've checked the "Don't perform this check again (you > can restore it from preferences)", and have chosen the "Not this time" > option. > > 4. Run the webapp. > > I've launched the newly created Eclipse configuration and navigated to " > http://localhost:8080/wicket/". > I've installed the fixtures. > > 5. Changes in code. > > I add a new field to the ToDoItem entity. The following message appears on > Eclipse: > > Class 'xxx' has a new non-sttic field 'newField', it will be null on > existing instances. > > But after refreshing the webapp entity page, the field it's not showed. > I've waited enough time. In fact, the following messages have been logged: > > 2014-02-02 19:56:40 JRebel: Reloading class 'dom.todo.ToDoItem'. > 19:56:40,515 [Native 1238094722@qtp-1337505800-5 DEBUG] > SELECT > "A0"."category","A0"."complete","A0"."cost","A0"."description","A0"."dueBy","A0"."notes","A0"."ownedBy","A0"."subcategory","A0"."version" > FROM "ToDoItem" "A0" WHERE "A0"."id" = <11> > 2014-02-02 19:56:40 JRebel: Reloading class 'dom.todo.ToDoItem$Category'. > 2014-02-02 19:56:40 JRebel: Reloading class 'dom.todo.ToDoItem$Category$1'. > 2014-02-02 19:56:40 JRebel: Reloading class > 'dom.todo.ToDoItem$Subcategory'. > 2014-02-02 19:56:40 JRebel: Reloading class > 'dom.todo.ToDoItem$Subcategory$1'. > 2014-02-02 19:56:40 JRebel: Reinitialized class > 'dom.todo.ToDoItem$Subcategory'. > 2014-02-02 19:56:40 JRebel: Reinitialized class > 'dom.todo.ToDoItem$Category$1'. > 2014-02-02 19:56:40 JRebel: Reloading class 'dom.todo.ToDoItem$Category$2'. > 2014-02-02 19:56:40 JRebel: Reinitialized class > 'dom.todo.ToDoItem$Category$2'. > 2014-02-02 19:56:40 JRebel: Reloading class 'dom.todo.ToDoItem$Category$3'. > 2014-02-02 19:56:40 JRebel: Reinitialized class > 'dom.todo.ToDoItem$Category$3'. > 2014-02-02 19:56:40 JRebel: Reinitialized class > 'dom.todo.ToDoItem$Category'. > 19:56:40,697 [Native 1238094722@qtp-1337505800-5 DEBUG] > SELECT 'dom.todo.ToDoItem' AS > NUCLEUS_TYPE,"A1"."category","A1"."complete","A1"."cost","A1"."description","A1"."dueBy","A1"."notes","A1"."ownedBy","A1"."subcategory","A1"."id","A1"."version" > FROM "ToDoItemDependencies" "A0" INNER JOIN "ToDoItem" "A1" ON > "A0"."dependentId" = "A1"."id" WHERE "A0"."dependingId" = <11> > 2014-02-02 19:56:40 JRebel: Reloading class > 'dom.todo.ToDoItem$DependenciesComparator'. > 2014-02-02 19:56:40 JRebel: Reloading class > 'dom.todo.ToDoItem$DependenciesComparator$1'. > 19:56:40,771 [Native 1238094722@qtp-1337505800-5 DEBUG] > SELECT 'dom.todo.ToDoItem' AS > NUCLEUS_TYPE,"A0"."category","A0"."complete","A0"."cost","A0"."description","A0"."dueBy","A0"."notes","A0"."ownedBy","A0"."subcategory","A0"."id","A0"."version" > FROM "ToDoItem" "A0" WHERE "A0"."ownedBy" = <'sven'> AND "A0"."category" = > <'Professional'> > 19:56:40,789 [Native 1238094722@qtp-1337505800-5 DEBUG] > SELECT "A0"."attachment","A0"."version" FROM "ToDoItem" "A0" WHERE > "A0"."id" = <9> > 19:56:40,806 [Native 1238094722@qtp-1337505800-5 DEBUG] > SELECT "A0"."attachment","A0"."version" FROM "ToDoItem" "A0" WHERE > "A0"."id" = <10> > 19:56:40,812 [Native 1238094722@qtp-1337505800-5 DEBUG] > SELECT "A0"."attachment","A0"."version" FROM "ToDoItem" "A0" WHERE > "A0"."id" = <8> > 19:56:41,351 [ResourceServlet 447422450@qtp-1337505800-2 INFO ] > request: css/application.css > 19:56:41,351 [ResourceServlet 1203999762@qtp-1337505800-0 INFO ] > request: scripts/application.js > 19:56:41,362 [ResourceServlet 1238094722@qtp-1337505800-5 INFO ] > request: images/spinning-icon.gif > > > > On this state, if I press Edit and try to change the ToDoItem description, > the following exception is logged: > > > org.mortbay.jetty.bio.SocketConnector$Connection#run(SocketConnector.java:228) > > org.mortbay.thread.QueuedThreadPool$PoolThread#run(QueuedThreadPool.java:582) > java.lang.NullPointerException > > org.datanucleus.state.JDOStateManager#setObjectField(JDOStateManager.java:1843) > dom.todo.ToDoItem#setSubcategory(ToDoItem.java:-1) > > sun.reflect.NativeMethodAccessorImpl#invoke0(NativeMethodAccessorImpl.java:-2) > > sun.reflect.NativeMethodAccessorImpl#invoke(NativeMethodAccessorImpl.java:39) > > sun.reflect.DelegatingMethodAccessorImpl#invoke(DelegatingMethodAccessorImpl.java:25) > java.lang.reflect.Method#invoke(Method.java:597) > > org.apache.isis.core.commons.lang.MethodExtensions#invoke(MethodExtensions.java:50) > > org.apache.isis.core.commons.lang.MethodExtensions#invoke(MethodExtensions.java:45) > > org.apache.isis.core.metamodel.adapter.util.AdapterInvokeUtils#invoke(AdapterInvokeUtils.java:44) > > org.apache.isis.core.progmodel.facets.properties.modify.PropertyClearFacetViaSetterMethod#clearProperty(PropertyClearFacetViaSetterMethod.java:62) > > org.apache.isis.core.runtime.transaction.facets.PropertyClearFacetWrapTransaction$1#execute(PropertyClearFacetWrapTransaction.java:55) > > org.apache.isis.core.runtime.system.transaction.IsisTransactionManager#executeWithinTransaction(IsisTransactionManager.java:175) > > org.apache.isis.core.runtime.transaction.facets.PropertyClearFacetWrapTransaction#clearProperty(PropertyClearFacetWrapTransaction.java:52) > > org.apache.isis.core.metamodel.specloader.specimpl.OneToOneAssociationImpl#clearValue(OneToOneAssociationImpl.java:200) > > org.apache.isis.core.metamodel.specloader.specimpl.OneToOneAssociationImpl#set(OneToOneAssociationImpl.java:164) > > org.apache.isis.viewer.wicket.model.models.EntityModel#apply(EntityModel.java:427) > > org.apache.isis.viewer.wicket.ui.components.entity.properties.EntityPropertiesForm$2#onSubmit(EntityPropertiesForm.java:365) > org.apache.wicket.markup.html.form.Form#delegateSubmit(Form.java:1253) > org.apache.wicket.markup.html.form.Form#process(Form.java:925) > > org.apache.isis.viewer.wicket.ui.panels.FormAbstract#process(FormAbstract.java:118) > org.apache.wicket.markup.html.form.Form#onFormSubmitted(Form.java:771) > org.apache.wicket.markup.html.form.Form#onFormSubmitted(Form.java:704) > > sun.reflect.NativeMethodAccessorImpl#invoke0(NativeMethodAccessorImpl.java:-2) > > sun.reflect.NativeMethodAccessorImpl#invoke(NativeMethodAccessorImpl.java:39) > > sun.reflect.DelegatingMethodAccessorImpl#invoke(DelegatingMethodAccessorImpl.java:25) > java.lang.reflect.Method#invoke(Method.java:597) > > org.apache.wicket.RequestListenerInterface#internalInvoke(RequestListenerInterface.java:258) > > org.apache.wicket.RequestListenerInterface#invoke(RequestListenerInterface.java:216) > > org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler#invokeListener(ListenerInterfaceRequestHandler.java:240) > > org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler#respond(ListenerInterfaceRequestHandler.java:226) > > org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor#respond(RequestCycle.java:861) > > org.apache.wicket.request.RequestHandlerStack#execute(RequestHandlerStack.java:64) > org.apache.wicket.request.cycle.RequestCycle#execute(RequestCycle.java:261) > > org.apache.wicket.request.cycle.RequestCycle#processRequest(RequestCycle.java:218) > > org.apache.wicket.request.cycle.RequestCycle#processRequestAndDetach(RequestCycle.java:289) > > org.apache.wicket.protocol.http.WicketFilter#processRequestCycle(WicketFilter.java:259) > > org.apache.wicket.protocol.http.WicketFilter#processRequest(WicketFilter.java:201) > > org.apache.wicket.protocol.http.WicketFilter#doFilter(WicketFilter.java:282) > > org.mortbay.jetty.servlet.ServletHandler$CachedChain#doFilter(ServletHandler.java:1212) > > 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.mortbay.jetty.servlet.ServletHandler$CachedChain#doFilter(ServletHandler.java:1212) > org.mortbay.jetty.servlet.ServletHandler#handle(ServletHandler.java:399) > org.mortbay.jetty.security.SecurityHandler#handle(SecurityHandler.java:216) > org.mortbay.jetty.servlet.SessionHandler#handle(SessionHandler.java:182) > org.mortbay.jetty.handler.ContextHandler#__handle(ContextHandler.java:766) > org.mortbay.jetty.handler.ContextHandler#handle(ContextHandler.java:-1) > org.mortbay.jetty.webapp.WebAppContext#handle(WebAppContext.java:450) > org.mortbay.jetty.handler.HandlerWrapper#handle(HandlerWrapper.java:152) > org.mortbay.jetty.Server#handle(Server.java:326) > org.mortbay.jetty.HttpConnection#handleRequest(HttpConnection.java:542) > > org.mortbay.jetty.HttpConnection$RequestHandler#content(HttpConnection.java:945) > org.mortbay.jetty.HttpParser#parseNext(HttpParser.java:756) > org.mortbay.jetty.HttpParser#parseAvailable(HttpParser.java:218) > org.mortbay.jetty.HttpConnection#handle(HttpConnection.java:404) > > org.mortbay.jetty.bio.SocketConnector$Connection#run(SocketConnector.java:228) > > org.mortbay.thread.QueuedThreadPool$PoolThread#run(QueuedThreadPool.java:582) > > > [1] https://github.com/danhaywood/isis-jrebel-plugin.git
