Really nice for cases where they are used for "state initialization" purposes 
(the majority of use cases).




El 11/06/2013, a las 14:56, Jeroen van der Wal <[email protected]> escribió:

> For what it's worth, we actually use a pattern like this:
> 
> public enum Category {
>    Professional(1), Domestic(2), Other(3);
> 
>    private Integer index;
> 
>    private Category(Integer index) {
>        this.index = index;
>    }
> 
>    public Integer myIndex() {
>        return index;
>    }
> }
> 
> 
> 
> 
> On Tue, Jun 11, 2013 at 12:21 PM, GESCONSULTOR - Óscar Bou <
> [email protected]> wrote:
> 
>> Jira still not responding (at least from here) ... I'll try again in a few
>> minutes.
>> 
>> 
>> El 11/06/2013, a las 12:18, Dan Haywood <[email protected]>
>> escribió:
>> 
>>> More detail to add to that ticket, then, when you raise it.
>>> 
>>> Ta
>>> Dan
>>> 
>>> 
>>> On 11 June 2013 11:16, GESCONSULTOR - Óscar Bou <[email protected]
>>> wrote:
>>> 
>>>> Upps!!!
>>>> 
>>>> 
>>>> With this code:
>>>> 
>>>> public class ToDoItem implements Comparable<ToDoItem> /*, Locatable*/ {
>> //
>>>> GMAP3: uncomment to use https://github.com/danhaywood/isis-wicket-gmap3
>>>> 
>>>>       private static final long ONE_WEEK_IN_MILLIS = 7 * 24 * 60 * 60 *
>>>> 1000L;
>>>> 
>>>>       @ObjectType("TODOCATEGORY")
>>>>   public static enum Category {
>>>>       Professional {
>>>>                       @Override
>>>>                       public Integer myIndex() {
>>>>                               return 1;
>>>>                       }
>>>>               }, Domestic {
>>>>                       @Override
>>>>                       public Integer myIndex() {
>>>>                               return 2;
>>>>                       }
>>>>               }, Other {
>>>>                       @Override
>>>>                       public Integer myIndex() {
>>>>                               return 3;
>>>>                       }
>>>>               };
>>>> 
>>>>               @Programmatic
>>>>       public abstract Integer myIndex();
>>>>   }
>>>> 
>>>> 
>>>> Same exception is thrown.
>>>> 
>>>> 12:11:49,412  [Native               main       DEBUG]  SELECT
>>>> 'dom.todo.ToDoItem' AS
>>>> 
>> NUCLEUS_TYPE,A0.CATEGORY,A0.COMPLETE,A0.COST,A0.DESCRIPTION,A0.DUEBY,A0.NOTES,A0.OWNEDBY,A0.TODOITEM_ID,A0.VERSION
>>>> FROM TODOITEM A0
>>>> 12:11:49,412  [Native               main       DEBUG]  SELECT
>>>> 'dom.todo.ToDoItem' AS
>>>> 
>> NUCLEUS_TYPE,A0.CATEGORY,A0.COMPLETE,A0.COST,A0.DESCRIPTION,A0.DUEBY,A0.NOTES,A0.OWNEDBY,A0.TODOITEM_ID,A0.VERSION
>>>> FROM TODOITEM A0
>>>> 12:11:49,412  [FacetedMethodsBuilder main       INFO ]  introspecting
>>>> dom.todo.ToDoItem$Category$1
>>>> 12:11:49,412  [FixturesInstallerDelegate main       ERROR]  installing
>>>> fixture fixture.todo.ToDoItemsFixture failed; aborting
>>>> java.lang.IllegalArgumentException: illegal argument, expected: is a non
>>>> empty string
>>>>       at
>>>> org.apache.isis.core.commons.ensure.Ensure.ensureThatArg(Ensure.java:57)
>>>>       at
>>>> 
>> org.apache.isis.core.metamodel.spec.ObjectSpecId.<init>(ObjectSpecId.java:47)
>>>>       at
>>>> 
>> org.apache.isis.core.metamodel.spec.ObjectSpecId.of(ObjectSpecId.java:43)
>>>>       at
>>>> 
>> org.apache.isis.core.progmodel.facets.object.objecttype.ObjectSpecIdFacetAbstract.<init>(ObjectSpecIdFacetAbstract.java:40)
>>>>       at
>>>> 
>> org.apache.isis.core.progmodel.facets.object.objecttype.ObjectSpecIdFacetDerivedFromClassName.<init>(ObjectSpecIdFacetDerivedFromClassName.java:27)
>>>>       at
>>>> 
>> org.apache.isis.core.progmodel.facets.object.objecttype.ObjectTypeDerivedFromClassNameFacetFactory.process(ObjectTypeDerivedFromClassNameFacetFactory.java:47)
>>>>       at
>>>> 
>> org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor.process(FacetProcessor.java:283)
>>>>       at
>>>> 
>> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.introspectClass(FacetedMethodsBuilder.java:178)
>>>>       at
>>>> 
>> org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.introspectTypeHierarchyAndMembers(ObjectSpecificationDefault.java:128)
>>>>       at
>>>> 
>> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.introspectIfRequired(ObjectReflectorDefault.java:572)
>>>>       at
>>>> 
>> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecificationForSubstitutedClass(ObjectReflectorDefault.java:475)
>>>>       at
>>>> 
>> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.internalLoadSpecification(ObjectReflectorDefault.java:453)
>>>>       at
>>>> 
>> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecification(ObjectReflectorDefault.java:448)
>>>>       at
>>>> 
>> org.apache.isis.core.runtime.persistence.adaptermanager.AdapterManagerDefault.existingOrValueAdapter(AdapterManagerDefault.java:186)
>>>>       at
>>>> 
>> org.apache.isis.core.runtime.persistence.adaptermanager.AdapterManagerDefault.adapterFor(AdapterManagerDefault.java:160)
>>>>       at
>>>> 
>> org.apache.isis.core.runtime.persistence.internal.RuntimeContextFromSession$2.adapterFor(RuntimeContextFromSession.java:110)
>>>>       at
>>>> 
>> org.apache.isis.core.progmodel.facets.properties.defaults.fromtype.PropertyDefaultFacetDerivedFromDefaultedFacet.getDefault(PropertyDefaultFacetDerivedFromDefaultedFacet.java:49)
>>>>       at
>>>> 
>> org.apache.isis.core.metamodel.specloader.specimpl.OneToOneAssociationImpl.getDefault(OneToOneAssociationImpl.java:210)
>>>>       at
>>>> 
>> org.apache.isis.core.metamodel.specloader.specimpl.OneToOneAssociationImpl.toDefault(OneToOneAssociationImpl.java:221)
>>>>       at
>>>> 
>> org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.initialize(ObjectSpecificationDefault.java:456)
>>>>       at
>>>> 
>> org.apache.isis.core.runtime.system.persistence.PersistenceSession.createTransientInstance(PersistenceSession.java:316)
>>>>       at
>>>> 
>> org.apache.isis.core.runtime.persistence.internal.RuntimeContextFromSession$7.createTransientInstance(RuntimeContextFromSession.java:185)
>>>>       at
>>>> 
>> org.apache.isis.core.metamodel.services.container.DomainObjectContainerDefault.doCreateTransientInstance(DomainObjectContainerDefault.java:148)
>>>>       at
>>>> 
>> org.apache.isis.core.metamodel.services.container.DomainObjectContainerDefault.newTransientInstance(DomainObjectContainerDefault.java:100)
>>>>       at
>>>> 
>> org.apache.isis.applib.AbstractContainedObject.newTransientInstance(AbstractContainedObject.java:41)
>>>>       at dom.todo.ToDoItems.newToDo(ToDoItems.java:150)
>>>>       at
>>>> 
>> fixture.todo.ToDoItemsFixture.createToDoItemForUser(ToDoItemsFixture.java:76)
>>>>       at
>>>> fixture.todo.ToDoItemsFixture.installFor(ToDoItemsFixture.java:50)
>>>>       at
>> fixture.todo.ToDoItemsFixture.install(ToDoItemsFixture.java:41)
>>>>       at
>>>> 
>> org.apache.isis.core.runtime.fixtures.FixturesInstallerDelegate.installFixture(FixturesInstallerDelegate.java:213)
>>>>       at
>>>> 
>> org.apache.isis.core.runtime.fixtures.FixturesInstallerDelegate.installFixtureInTransaction(FixturesInstallerDelegate.java:175)
>>>>       at
>>>> 
>> org.apache.isis.core.runtime.fixtures.FixturesInstallerDelegate.installFixtures(FixturesInstallerDelegate.java:162)
>>>>       at
>>>> 
>> org.apache.isis.core.runtime.fixtures.FixturesInstallerDelegate.installFixtures(FixturesInstallerDelegate.java:142)
>>>>       at
>>>> 
>> org.apache.isis.core.integtestsupport.IsisSystemForTest.wireAndInstallFixtures(IsisSystemForTest.java:292)
>>>>       at
>>>> 
>> org.apache.isis.core.integtestsupport.IsisSystemForTest.setUpSystem(IsisSystemForTest.java:283)
>>>>       at
>>>> 
>> org.apache.isis.core.integtestsupport.IsisSystemForTest.setUpSystem(IsisSystemForTest.java:256)
>>>>       at
>>>> 
>> integtests.AbstractIntegTest$IsisSystemForTestRule$1.initialValue(AbstractIntegTest.java:131)
>>>>       at
>>>> 
>> integtests.AbstractIntegTest$IsisSystemForTestRule$1.initialValue(AbstractIntegTest.java:128)
>>>>       at java.lang.ThreadLocal.setInitialValue(ThreadLocal.java:141)
>>>>       at java.lang.ThreadLocal.get(ThreadLocal.java:131)
>>>>       at
>>>> 
>> integtests.AbstractIntegTest$IsisSystemForTestRule.getIsisSystemForTest(AbstractIntegTest.java:137)
>>>>       at
>>>> 
>> integtests.AbstractIntegTest$IsisSystemForTestRule.apply(AbstractIntegTest.java:142)
>>>>       at
>>>> 
>> org.junit.runners.BlockJUnit4ClassRunner.withMethodRules(BlockJUnit4ClassRunner.java:349)
>>>>       at
>>>> 
>> org.junit.runners.BlockJUnit4ClassRunner.withRules(BlockJUnit4ClassRunner.java:339)
>>>>       at
>>>> 
>> org.junit.runners.BlockJUnit4ClassRunner.methodBlock(BlockJUnit4ClassRunner.java:256)
>>>>       at
>>>> 
>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
>>>>       at
>>>> 
>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
>>>>       at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
>>>>       at
>> org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
>>>>       at
>>>> org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
>>>>       at
>> org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
>>>>       at
>> org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
>>>>       at
>>>> 
>> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
>>>>       at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
>>>>       at
>>>> 
>> org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:59)
>>>>       at
>>>> 
>> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:115)
>>>>       at
>>>> 
>> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:102)
>>>>       at org.apache.maven.surefire.Surefire.run(Surefire.java:180)
>>>>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>       at
>>>> 
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>>>       at
>>>> 
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>>>       at java.lang.reflect.Method.invoke(Method.java:597)
>>>>       at
>>>> 
>> org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:350)
>>>>       at
>>>> 
>> org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1021)
>>>> 12:11:49,413  [IsisTransaction      main       INFO ]  abort transaction
>>>> IsisTransaction@49dd63c9[state=IN_PROGRESS,commands=0]
>>>> [INFO]
>>>> ------------------------------------------------------------------------
>>>> [INFO] Reactor Summary:
>>>> 
>>>> 
>>>> 
>>>> 2. But This works ok:
>>>> 
>>>> 
>>>> public class ToDoItem implements Comparable<ToDoItem> /*, Locatable*/ {
>> //
>>>> GMAP3: uncomment to use https://github.com/danhaywood/isis-wicket-gmap3
>>>> 
>>>>       private static final long ONE_WEEK_IN_MILLIS = 7 * 24 * 60 * 60 *
>>>> 1000L;
>>>> 
>>>>       @ObjectType("TODOCATEGORY")
>>>>   public static enum Category {
>>>>       Professional , Domestic, Other;
>>>> 
>>>>               @Programmatic
>>>>       public Integer myIndex() {
>>>>                       return 1;
>>>>               };
>>>>   }
>>>> 
>>>> 3. And this works ok also:
>>>> 
>>>> public class ToDoItem implements Comparable<ToDoItem> /*, Locatable*/ {
>> //
>>>> GMAP3: uncomment to use https://github.com/danhaywood/isis-wicket-gmap3
>>>> 
>>>>       private static final long ONE_WEEK_IN_MILLIS = 7 * 24 * 60 * 60 *
>>>> 1000L;
>>>> 
>>>>   public static enum Category {
>>>>       Professional , Domestic, Other;
>>>> 
>>>>               @Programmatic
>>>>       public Integer myIndex() {
>>>>                       return 1;
>>>>               };
>>>>   }
>>>> 
>>>> 
>>>> 
>>>> The first one is our preferred (and current) implementation.
>>>> 
>>>> 
>>>> El 11/06/2013, a las 12:01, GESCONSULTOR - Óscar Bou <
>>>> [email protected]> escribió:
>>>> 
>>>>> Thanks for the workaround. The second is really fast and doesn't break
>>>> any code :-))
>>>>> 
>>>>> It seems the JIRA site is currently down. I will try again in 30 min.
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> El 11/06/2013, a las 11:56, Dan Haywood <[email protected]>
>>>> escribió:
>>>>> 
>>>>>> Hmm, I use that technique a lot myself.  Definitely needs fixing.
>>>> Please
>>>>>> raise a ticket.
>>>>>> 
>>>>>> ~~~
>>>>>> In the meantime, a workaround that should work (we have the equivalent
>>>> in
>>>>>> Estatio) is:
>>>>>> 
>>>>>> public static enum Category {
>>>>>>     Professional, Domestic, Other;
>>>>>> 
>>>>>>     @Programmatic
>>>>>>     public Integer myIndex() {
>>>>>>         if(this == Professional) { return 1; }
>>>>>>         if(this == Domestic) { return 2; }
>>>>>>         if(this == Other) { return 3; }
>>>>>>     }
>>>>>> }
>>>>>> 
>>>>>> Another workaround that *might* work is to annotate with @ObjectType:
>>>>>> 
>>>>>> @ObjectType("TODOCATEGORY")
>>>>>> public static enum Category {
>>>>>>     /// your implementation...
>>>>>> 
>>>>>>     @Programmatic
>>>>>>     public abstract Integer myIndex();
>>>>>> }
>>>>>> 
>>>>>> 
>>>>>> Thx
>>>>>> Dan
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> On 11 June 2013 10:48, GESCONSULTOR - Óscar Bou <
>> [email protected]
>>>>> wrote:
>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> We make extensive use of abstract methods defined on Enums, returing
>>>>>>> valuable information regarding them. It seems this is not fully
>>>> supported
>>>>>>> on Isis.
>>>>>>> 
>>>>>>> Steps to reproduce on the Archetype:
>>>>>>> 
>>>>>>> 
>>>>>>> 1. Modify the "Category" enum, replacing its definition by this:
>>>>>>> 
>>>>>>> 
>>>>>>> public class ToDoItem implements Comparable<ToDoItem> /*, Locatable*/
>>>> { //
>>>>>>> GMAP3: uncomment to use
>>>> https://github.com/danhaywood/isis-wicket-gmap3
>>>>>>> 
>>>>>>>     private static final long ONE_WEEK_IN_MILLIS = 7 * 24 * 60 * 60
>> *
>>>>>>> 1000L;
>>>>>>> 
>>>>>>> public static enum Category {
>>>>>>>     Professional {
>>>>>>>                     @Override
>>>>>>>                     public Integer myIndex() {
>>>>>>>                             return 1;
>>>>>>>                     }
>>>>>>>             }, Domestic {
>>>>>>>                     @Override
>>>>>>>                     public Integer myIndex() {
>>>>>>>                             return 2;
>>>>>>>                     }
>>>>>>>             }, Other {
>>>>>>>                     @Override
>>>>>>>                     public Integer myIndex() {
>>>>>>>                             return 3;
>>>>>>>                     }
>>>>>>>             };
>>>>>>> 
>>>>>>>     public abstract Integer myIndex();
>>>>>>> }
>>>>>>> 
>>>>>>> 
>>>>>>> 2. Try to run the project and the following Exception is thrown
>> (while
>>>>>>> running the tests and installing the Fixture):
>>>>>>> 
>>>>>>> 11:45:24,380  [Native               main       DEBUG]  SELECT
>>>>>>> 'dom.todo.ToDoItem' AS
>>>>>>> 
>>>> 
>> NUCLEUS_TYPE,A0.CATEGORY,A0.COMPLETE,A0.COST,A0.DESCRIPTION,A0.DUEBY,A0.NOTES,A0.OWNEDBY,A0.TODOITEM_ID,A0.VERSION
>>>>>>> FROM TODOITEM A0
>>>>>>> 11:45:24,381  [Native               main       DEBUG]  SELECT
>>>>>>> 'dom.todo.ToDoItem' AS
>>>>>>> 
>>>> 
>> NUCLEUS_TYPE,A0.CATEGORY,A0.COMPLETE,A0.COST,A0.DESCRIPTION,A0.DUEBY,A0.NOTES,A0.OWNEDBY,A0.TODOITEM_ID,A0.VERSION
>>>>>>> FROM TODOITEM A0
>>>>>>> 11:45:24,381  [Native               main       DEBUG]  SELECT
>>>>>>> 'dom.todo.ToDoItem' AS
>>>>>>> 
>>>> 
>> NUCLEUS_TYPE,A0.CATEGORY,A0.COMPLETE,A0.COST,A0.DESCRIPTION,A0.DUEBY,A0.NOTES,A0.OWNEDBY,A0.TODOITEM_ID,A0.VERSION
>>>>>>> FROM TODOITEM A0
>>>>>>> 11:45:24,381  [Native               main       DEBUG]  SELECT
>>>>>>> 'dom.todo.ToDoItem' AS
>>>>>>> 
>>>> 
>> NUCLEUS_TYPE,A0.CATEGORY,A0.COMPLETE,A0.COST,A0.DESCRIPTION,A0.DUEBY,A0.NOTES,A0.OWNEDBY,A0.TODOITEM_ID,A0.VERSION
>>>>>>> FROM TODOITEM A0
>>>>>>> 11:45:24,382  [FacetedMethodsBuilder main       INFO ]  introspecting
>>>>>>> dom.todo.ToDoItem$Category$1
>>>>>>> 11:45:24,382  [FixturesInstallerDelegate main       ERROR]
>> installing
>>>>>>> fixture fixture.todo.ToDoItemsFixture failed; aborting
>>>>>>> java.lang.IllegalArgumentException: illegal argument, expected: is a
>>>> non
>>>>>>> empty string
>>>>>>>     at
>>>>>>> 
>>>> org.apache.isis.core.commons.ensure.Ensure.ensureThatArg(Ensure.java:57)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.apache.isis.core.metamodel.spec.ObjectSpecId.<init>(ObjectSpecId.java:47)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.apache.isis.core.metamodel.spec.ObjectSpecId.of(ObjectSpecId.java:43)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.apache.isis.core.progmodel.facets.object.objecttype.ObjectSpecIdFacetAbstract.<init>(ObjectSpecIdFacetAbstract.java:40)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.apache.isis.core.progmodel.facets.object.objecttype.ObjectSpecIdFacetDerivedFromClassName.<init>(ObjectSpecIdFacetDerivedFromClassName.java:27)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.apache.isis.core.progmodel.facets.object.objecttype.ObjectTypeDerivedFromClassNameFacetFactory.process(ObjectTypeDerivedFromClassNameFacetFactory.java:47)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor.process(FacetProcessor.java:283)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.introspectClass(FacetedMethodsBuilder.java:178)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.introspectTypeHierarchyAndMembers(ObjectSpecificationDefault.java:128)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.introspectIfRequired(ObjectReflectorDefault.java:572)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecificationForSubstitutedClass(ObjectReflectorDefault.java:475)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.internalLoadSpecification(ObjectReflectorDefault.java:453)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecification(ObjectReflectorDefault.java:448)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.apache.isis.core.runtime.persistence.adaptermanager.AdapterManagerDefault.existingOrValueAdapter(AdapterManagerDefault.java:186)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.apache.isis.core.runtime.persistence.adaptermanager.AdapterManagerDefault.adapterFor(AdapterManagerDefault.java:160)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.apache.isis.core.runtime.persistence.internal.RuntimeContextFromSession$2.adapterFor(RuntimeContextFromSession.java:110)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.apache.isis.core.progmodel.facets.properties.defaults.fromtype.PropertyDefaultFacetDerivedFromDefaultedFacet.getDefault(PropertyDefaultFacetDerivedFromDefaultedFacet.java:49)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.apache.isis.core.metamodel.specloader.specimpl.OneToOneAssociationImpl.getDefault(OneToOneAssociationImpl.java:210)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.apache.isis.core.metamodel.specloader.specimpl.OneToOneAssociationImpl.toDefault(OneToOneAssociationImpl.java:221)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.initialize(ObjectSpecificationDefault.java:456)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.apache.isis.core.runtime.system.persistence.PersistenceSession.createTransientInstance(PersistenceSession.java:316)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.apache.isis.core.runtime.persistence.internal.RuntimeContextFromSession$7.createTransientInstance(RuntimeContextFromSession.java:185)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.apache.isis.core.metamodel.services.container.DomainObjectContainerDefault.doCreateTransientInstance(DomainObjectContainerDefault.java:148)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.apache.isis.core.metamodel.services.container.DomainObjectContainerDefault.newTransientInstance(DomainObjectContainerDefault.java:100)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.apache.isis.applib.AbstractContainedObject.newTransientInstance(AbstractContainedObject.java:41)
>>>>>>>     at dom.todo.ToDoItems.newToDo(ToDoItems.java:150)
>>>>>>>     at
>>>>>>> 
>>>> 
>> fixture.todo.ToDoItemsFixture.createToDoItemForUser(ToDoItemsFixture.java:76)
>>>>>>>     at
>>>>>>> fixture.todo.ToDoItemsFixture.installFor(ToDoItemsFixture.java:50)
>>>>>>>     at
>>>> fixture.todo.ToDoItemsFixture.install(ToDoItemsFixture.java:41)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.apache.isis.core.runtime.fixtures.FixturesInstallerDelegate.installFixture(FixturesInstallerDelegate.java:213)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.apache.isis.core.runtime.fixtures.FixturesInstallerDelegate.installFixtureInTransaction(FixturesInstallerDelegate.java:175)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.apache.isis.core.runtime.fixtures.FixturesInstallerDelegate.installFixtures(FixturesInstallerDelegate.java:162)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.apache.isis.core.runtime.fixtures.FixturesInstallerDelegate.installFixtures(FixturesInstallerDelegate.java:142)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.apache.isis.core.integtestsupport.IsisSystemForTest.wireAndInstallFixtures(IsisSystemForTest.java:292)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.apache.isis.core.integtestsupport.IsisSystemForTest.setUpSystem(IsisSystemForTest.java:283)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.apache.isis.core.integtestsupport.IsisSystemForTest.setUpSystem(IsisSystemForTest.java:256)
>>>>>>>     at
>>>>>>> 
>>>> 
>> integtests.AbstractIntegTest$IsisSystemForTestRule$1.initialValue(AbstractIntegTest.java:131)
>>>>>>>     at
>>>>>>> 
>>>> 
>> integtests.AbstractIntegTest$IsisSystemForTestRule$1.initialValue(AbstractIntegTest.java:128)
>>>>>>>     at java.lang.ThreadLocal.setInitialValue(ThreadLocal.java:141)
>>>>>>>     at java.lang.ThreadLocal.get(ThreadLocal.java:131)
>>>>>>>     at
>>>>>>> 
>>>> 
>> integtests.AbstractIntegTest$IsisSystemForTestRule.getIsisSystemForTest(AbstractIntegTest.java:137)
>>>>>>>     at
>>>>>>> 
>>>> 
>> integtests.AbstractIntegTest$IsisSystemForTestRule.apply(AbstractIntegTest.java:142)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.junit.runners.BlockJUnit4ClassRunner.withMethodRules(BlockJUnit4ClassRunner.java:349)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.junit.runners.BlockJUnit4ClassRunner.withRules(BlockJUnit4ClassRunner.java:339)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.junit.runners.BlockJUnit4ClassRunner.methodBlock(BlockJUnit4ClassRunner.java:256)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
>>>>>>>     at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
>>>>>>>     at
>>>> org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
>>>>>>>     at
>>>>>>> org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
>>>>>>>     at
>>>> org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
>>>>>>>     at
>>>> org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
>>>>>>>     at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:59)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:115)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:102)
>>>>>>>     at org.apache.maven.surefire.Surefire.run(Surefire.java:180)
>>>>>>>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>>>>     at
>>>>>>> 
>>>> 
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>>>>>>     at
>>>>>>> 
>>>> 
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>>>>>>     at java.lang.reflect.Method.invoke(Method.java:597)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:350)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1021)
>>>>>>> 11:45:24,382  [IsisTransaction      main       INFO ]  abort
>>>> transaction
>>>>>>> IsisTransaction@7fbb6976[state=IN_PROGRESS,commands=0]
>>>>>>> 11:45:24,387  [IsisConfigurationDefault main       INFO ]  adding
>>>>>>> isis.persistor.datanucleus.RegisterEntities.packagePrefix=dom
>>>>>>> 11:45:24,388  [IsisConfigurationDefault main       INFO ]  adding
>>>>>>> 
>>>> 
>> isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL=jdbc:hsqldb:mem:test
>>>>>>> 11:45:24,388  [IsisConfigurationDefault main       INFO ]  adding
>>>>>>> 
>>>> 
>> isis.persistor.datanucleus.impl.datanucleus.defaultInheritanceStrategy=TABLE_PER_CLASS
>>>>>>> 11:45:24,388  [IsisConfigurationDefault main       INFO ]  adding
>>>>>>> isis.persistor.datanucleus.install-fixtures=true
>>>>>>> 11:45:24,388  [IsisConfigurationDefault main       INFO ]  adding
>>>>>>> isis.persistor.datanucleus.impl.datanucleus.cache.level2.type=none
>>>>>>> 11:45:24,388  [IsisSystemFixturesHookAbstract main       INFO ]
>>>>>>> initialising Isis System
>>>>>>> 11:45:24,388  [IsisSystemFixturesHookAbstract main       INFO ]
>>>> working
>>>>>>> directory: /Users/oscarboubou/dev/test/myapp/integtests/.
>>>>>>> 11:45:24,388  [IsisSystemFixturesHookAbstract main       INFO ]
>>>> resource
>>>>>>> stream source: null
>>>>>>> 11:45:24,388  [TemplateImageLoaderAwt main       INFO ]  images to be
>>>>>>> loaded from images/
>>>>>>> 11:45:24,390  [TemplateImageLoaderAwt main       INFO ]  images to be
>>>>>>> loaded from images/
>>>>>>> 
>>>>>>> [....] more log here.
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 3. For us, as they are always @Programmatic methods, we annotate
>> them:
>>>>>>> 
>>>>>>> public class ToDoItem implements Comparable<ToDoItem> /*, Locatable*/
>>>> { //
>>>>>>> GMAP3: uncomment to use
>>>> https://github.com/danhaywood/isis-wicket-gmap3
>>>>>>> 
>>>>>>>     private static final long ONE_WEEK_IN_MILLIS = 7 * 24 * 60 * 60
>> *
>>>>>>> 1000L;
>>>>>>> 
>>>>>>> public static enum Category {
>>>>>>>     Professional {
>>>>>>>                     @Override
>>>>>>>                     @Programmatic
>>>>>>>                     public Integer myIndex() {
>>>>>>>                             return 1;
>>>>>>>                     }
>>>>>>>             }, Domestic {
>>>>>>>                     @Override
>>>>>>>                     @Programmatic
>>>>>>>                     public Integer myIndex() {
>>>>>>>                             return 2;
>>>>>>>                     }
>>>>>>>             }, Other {
>>>>>>>                     @Override
>>>>>>>                     @Programmatic
>>>>>>>                     public Integer myIndex() {
>>>>>>>                             return 3;
>>>>>>>                     }
>>>>>>>             };
>>>>>>> 
>>>>>>>     public abstract Integer myIndex();
>>>>>>> }
>>>>>>> 
>>>>>>> 
>>>>>>> The behavior is the same. If you skip the tests or execute "mvn
>>>>>>> antrun:run", when running the wicket viewer, if you try to execute
>> the
>>>> menu
>>>>>>> option "Fixtures --> Install" the following exception is thrown:
>>>>>>> 
>>>>>>> org.apache.wicket.WicketRuntimeException
>>>>>>> Can't instantiate page using constructor 'public
>>>>>>> 
>>>> 
>> org.apache.isis.viewer.wicket.ui.pages.action.ActionPage(org.apache.wicket.request.mapper.parameter.PageParameters)'
>>>>>>> and argument 'pageType=[ACTION], actionSingleResultsMode=[REDIRECT],
>>>>>>> objectOid=[fixture.todo.ToDoItemsFixturesService:1],
>> actionType=[USER],
>>>>>>> actionOwningSpec=[fixture.todo.ToDoItemsFixturesService],
>>>>>>> actionId=[install()], pageTitle=[Install], actionMode=[RESULTS]'.
>>>> Might be
>>>>>>> it doesn't exist, may be it is not visible (public).
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.wicket.session.DefaultPageFactory#newPage(DefaultPageFactory.java:193)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.wicket.session.DefaultPageFactory#newPage(DefaultPageFactory.java:98)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.wicket.DefaultMapperContext#newPageInstance(DefaultMapperContext.java:137)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.wicket.core.request.handler.PageProvider#resolvePageInstance(PageProvider.java:268)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.wicket.core.request.handler.PageProvider#getPageInstance(PageProvider.java:166)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.wicket.request.handler.render.PageRenderer#getPage(PageRenderer.java:78)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.wicket.request.handler.render.WebPageRenderer#renderPage(WebPageRenderer.java:94)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.wicket.request.handler.render.WebPageRenderer#respond(WebPageRenderer.java:196)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.wicket.core.request.handler.RenderPageRequestHandler#respond(RenderPageRequestHandler.java:165)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor#respond(RequestCycle.java:854)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.wicket.request.RequestHandlerStack#execute(RequestHandlerStack.java:64)
>>>>>>> 
>>>> 
>> org.apache.wicket.request.cycle.RequestCycle#execute(RequestCycle.java:254)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.wicket.request.cycle.RequestCycle#processRequest(RequestCycle.java:211)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.wicket.request.cycle.RequestCycle#processRequestAndDetach(RequestCycle.java:282)
>>>>>>> 
>>>>>>> 
>>>> 
>> 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.eclipse.jetty.servlet.ServletHandler$CachedChain#doFilter(ServletHandler.java:1326)
>>>>>>> 
>>>>>>> 
>>>> 
>> 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:1326)
>>>>>>> 
>>>> 
>> org.eclipse.jetty.servlet.ServletHandler#doHandle(ServletHandler.java:479)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.server.handler.ScopedHandler#handle(ScopedHandler.java:119)
>>>>>>> 
>>>> 
>> org.eclipse.jetty.security.SecurityHandler#handle(SecurityHandler.java:520)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.server.session.SessionHandler#doHandle(SessionHandler.java:227)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.server.handler.ContextHandler#doHandle(ContextHandler.java:940)
>>>>>>> 
>>>> 
>> org.eclipse.jetty.servlet.ServletHandler#doScope(ServletHandler.java:409)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.server.session.SessionHandler#doScope(SessionHandler.java:186)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.server.handler.ContextHandler#doScope(ContextHandler.java:874)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.server.handler.ScopedHandler#handle(ScopedHandler.java:117)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.server.handler.ContextHandlerCollection#handle(ContextHandlerCollection.java:250)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.server.handler.HandlerCollection#handle(HandlerCollection.java:149)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.server.handler.HandlerWrapper#handle(HandlerWrapper.java:110)
>>>>>>> org.eclipse.jetty.server.Server#handle(Server.java:349)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.server.HttpConnection#handleRequest(HttpConnection.java:441)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.server.HttpConnection$RequestHandler#headerComplete(HttpConnection.java:904)
>>>>>>> org.eclipse.jetty.http.HttpParser#parseNext(HttpParser.java:565)
>>>>>>> org.eclipse.jetty.http.HttpParser#parseAvailable(HttpParser.java:217)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.server.AsyncHttpConnection#handle(AsyncHttpConnection.java:46)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.io.nio.SelectChannelEndPoint#handle(SelectChannelEndPoint.java:545)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.io.nio.SelectChannelEndPoint$1#run(SelectChannelEndPoint.java:43)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.util.thread.QueuedThreadPool#runJob(QueuedThreadPool.java:598)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.util.thread.QueuedThreadPool$3#run(QueuedThreadPool.java:533)
>>>>>>> java.lang.Thread#run(Thread.java:680)
>>>>>>> java.lang.reflect.InvocationTargetException
>>>>>>> 
>>>>>>> 
>>>> 
>> sun.reflect.NativeConstructorAccessorImpl#newInstance0(NativeConstructorAccessorImpl.java:-2)
>>>>>>> 
>>>>>>> 
>>>> 
>> sun.reflect.NativeConstructorAccessorImpl#newInstance(NativeConstructorAccessorImpl.java:39)
>>>>>>> 
>>>>>>> 
>>>> 
>> sun.reflect.DelegatingConstructorAccessorImpl#newInstance(DelegatingConstructorAccessorImpl.java:27)
>>>>>>> java.lang.reflect.Constructor#newInstance(Constructor.java:513)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.wicket.session.DefaultPageFactory#newPage(DefaultPageFactory.java:170)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.wicket.session.DefaultPageFactory#newPage(DefaultPageFactory.java:98)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.wicket.DefaultMapperContext#newPageInstance(DefaultMapperContext.java:137)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.wicket.core.request.handler.PageProvider#resolvePageInstance(PageProvider.java:268)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.wicket.core.request.handler.PageProvider#getPageInstance(PageProvider.java:166)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.wicket.request.handler.render.PageRenderer#getPage(PageRenderer.java:78)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.wicket.request.handler.render.WebPageRenderer#renderPage(WebPageRenderer.java:94)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.wicket.request.handler.render.WebPageRenderer#respond(WebPageRenderer.java:196)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.wicket.core.request.handler.RenderPageRequestHandler#respond(RenderPageRequestHandler.java:165)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor#respond(RequestCycle.java:854)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.wicket.request.RequestHandlerStack#execute(RequestHandlerStack.java:64)
>>>>>>> 
>>>> 
>> org.apache.wicket.request.cycle.RequestCycle#execute(RequestCycle.java:254)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.wicket.request.cycle.RequestCycle#processRequest(RequestCycle.java:211)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.wicket.request.cycle.RequestCycle#processRequestAndDetach(RequestCycle.java:282)
>>>>>>> 
>>>>>>> 
>>>> 
>> 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.eclipse.jetty.servlet.ServletHandler$CachedChain#doFilter(ServletHandler.java:1326)
>>>>>>> 
>>>>>>> 
>>>> 
>> 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:1326)
>>>>>>> 
>>>> 
>> org.eclipse.jetty.servlet.ServletHandler#doHandle(ServletHandler.java:479)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.server.handler.ScopedHandler#handle(ScopedHandler.java:119)
>>>>>>> 
>>>> 
>> org.eclipse.jetty.security.SecurityHandler#handle(SecurityHandler.java:520)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.server.session.SessionHandler#doHandle(SessionHandler.java:227)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.server.handler.ContextHandler#doHandle(ContextHandler.java:940)
>>>>>>> 
>>>> 
>> org.eclipse.jetty.servlet.ServletHandler#doScope(ServletHandler.java:409)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.server.session.SessionHandler#doScope(SessionHandler.java:186)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.server.handler.ContextHandler#doScope(ContextHandler.java:874)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.server.handler.ScopedHandler#handle(ScopedHandler.java:117)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.server.handler.ContextHandlerCollection#handle(ContextHandlerCollection.java:250)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.server.handler.HandlerCollection#handle(HandlerCollection.java:149)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.server.handler.HandlerWrapper#handle(HandlerWrapper.java:110)
>>>>>>> org.eclipse.jetty.server.Server#handle(Server.java:349)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.server.HttpConnection#handleRequest(HttpConnection.java:441)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.server.HttpConnection$RequestHandler#headerComplete(HttpConnection.java:904)
>>>>>>> org.eclipse.jetty.http.HttpParser#parseNext(HttpParser.java:565)
>>>>>>> org.eclipse.jetty.http.HttpParser#parseAvailable(HttpParser.java:217)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.server.AsyncHttpConnection#handle(AsyncHttpConnection.java:46)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.io.nio.SelectChannelEndPoint#handle(SelectChannelEndPoint.java:545)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.io.nio.SelectChannelEndPoint$1#run(SelectChannelEndPoint.java:43)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.util.thread.QueuedThreadPool#runJob(QueuedThreadPool.java:598)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.util.thread.QueuedThreadPool$3#run(QueuedThreadPool.java:533)
>>>>>>> java.lang.Thread#run(Thread.java:680)
>>>>>>> java.lang.IllegalArgumentException
>>>>>>> illegal argument, expected: is a non empty string
>>>>>>> 
>>>> org.apache.isis.core.commons.ensure.Ensure#ensureThatArg(Ensure.java:57)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.core.metamodel.spec.ObjectSpecId#<init>(ObjectSpecId.java:47)
>>>>>>> 
>>>> 
>> org.apache.isis.core.metamodel.spec.ObjectSpecId#of(ObjectSpecId.java:43)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.core.progmodel.facets.object.objecttype.ObjectSpecIdFacetAbstract#<init>(ObjectSpecIdFacetAbstract.java:40)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.core.progmodel.facets.object.objecttype.ObjectSpecIdFacetDerivedFromClassName#<init>(ObjectSpecIdFacetDerivedFromClassName.java:27)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.core.progmodel.facets.object.objecttype.ObjectTypeDerivedFromClassNameFacetFactory#process(ObjectTypeDerivedFromClassNameFacetFactory.java:47)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor#process(FacetProcessor.java:283)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder#introspectClass(FacetedMethodsBuilder.java:178)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault#introspectTypeHierarchyAndMembers(ObjectSpecificationDefault.java:128)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault#introspectIfRequired(ObjectReflectorDefault.java:572)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault#loadSpecificationForSubstitutedClass(ObjectReflectorDefault.java:475)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault#internalLoadSpecification(ObjectReflectorDefault.java:453)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault#loadSpecification(ObjectReflectorDefault.java:448)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.core.runtime.persistence.adaptermanager.AdapterManagerDefault#existingOrValueAdapter(AdapterManagerDefault.java:186)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.core.runtime.persistence.adaptermanager.AdapterManagerDefault#adapterFor(AdapterManagerDefault.java:160)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.core.runtime.persistence.internal.RuntimeContextFromSession$2#adapterFor(RuntimeContextFromSession.java:110)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.core.progmodel.facets.properties.defaults.fromtype.PropertyDefaultFacetDerivedFromDefaultedFacet#getDefault(PropertyDefaultFacetDerivedFromDefaultedFacet.java:49)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.core.metamodel.specloader.specimpl.OneToOneAssociationImpl#getDefault(OneToOneAssociationImpl.java:210)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.core.metamodel.specloader.specimpl.OneToOneAssociationImpl#toDefault(OneToOneAssociationImpl.java:221)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault#initialize(ObjectSpecificationDefault.java:456)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.core.runtime.system.persistence.PersistenceSession#createTransientInstance(PersistenceSession.java:316)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.core.runtime.persistence.internal.RuntimeContextFromSession$7#createTransientInstance(RuntimeContextFromSession.java:185)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.core.metamodel.services.container.DomainObjectContainerDefault#doCreateTransientInstance(DomainObjectContainerDefault.java:148)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.core.metamodel.services.container.DomainObjectContainerDefault#newTransientInstance(DomainObjectContainerDefault.java:100)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.applib.AbstractContainedObject#newTransientInstance(AbstractContainedObject.java:41)
>>>>>>> dom.todo.ToDoItems#newToDo(ToDoItems.java:150)
>>>>>>> 
>>>>>>> 
>>>> 
>> fixture.todo.ToDoItemsFixture#createToDoItemForUser(ToDoItemsFixture.java:76)
>>>>>>> fixture.todo.ToDoItemsFixture#installFor(ToDoItemsFixture.java:50)
>>>>>>> fixture.todo.ToDoItemsFixture#install(ToDoItemsFixture.java:41)
>>>>>>> 
>>>>>>> 
>>>> 
>> fixture.todo.ToDoItemsFixturesService#install(ToDoItemsFixturesService.java:40)
>>>>>>> 
>>>>>>> 
>>>> 
>> 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.progmodel.facets.actions.invoke.ActionInvocationFacetViaMethod#invoke(ActionInvocationFacetViaMethod.java:94)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.core.runtime.transaction.facets.ActionInvocationFacetWrapTransaction$1#execute(ActionInvocationFacetWrapTransaction.java:55)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.core.runtime.transaction.facets.ActionInvocationFacetWrapTransaction$1#execute(ActionInvocationFacetWrapTransaction.java:52)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.core.runtime.system.transaction.IsisTransactionManager#executeWithinTransaction(IsisTransactionManager.java:220)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.core.runtime.transaction.facets.ActionInvocationFacetWrapTransaction#invoke(ActionInvocationFacetWrapTransaction.java:52)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.core.metamodel.specloader.specimpl.ObjectActionImpl#execute(ObjectActionImpl.java:412)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.viewer.wicket.model.models.ActionModel#executeAction(ActionModel.java:475)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.viewer.wicket.model.models.ActionModel#load(ActionModel.java:460)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.viewer.wicket.model.models.ActionModel#load(ActionModel.java:61)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.wicket.model.LoadableDetachableModel#getObject(LoadableDetachableModel.java:121)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.viewer.wicket.ui.components.actions.ActionPanel#executeActionHandlingApplicationExceptions(ActionPanel.java:256)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.viewer.wicket.ui.components.actions.ActionPanel#executeActionOnTargetAndProcessResults(ActionPanel.java:178)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.viewer.wicket.ui.components.actions.ActionPanel#executeActionAndProcessResults(ActionPanel.java:138)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.viewer.wicket.ui.components.actions.ActionPanel#buildGui(ActionPanel.java:96)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.viewer.wicket.ui.components.actions.ActionPanel#<init>(ActionPanel.java:89)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.viewer.wicket.ui.components.actions.ActionPanelFactory#createComponent(ActionPanelFactory.java:49)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.viewer.wicket.ui.ComponentFactoryAbstract#createComponent(ComponentFactoryAbstract.java:82)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.viewer.wicket.viewer.registries.components.ComponentFactoryRegistryDefault#createComponent(ComponentFactoryRegistryDefault.java:120)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.viewer.wicket.viewer.registries.components.ComponentFactoryRegistryDefault#addOrReplaceComponent(ComponentFactoryRegistryDefault.java:105)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.viewer.wicket.ui.pages.PageAbstract#addComponent(PageAbstract.java:263)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.viewer.wicket.ui.pages.PageAbstract#addChildComponents(PageAbstract.java:258)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.isis.viewer.wicket.ui.pages.action.ActionPage#<init>(ActionPage.java:54)
>>>>>>> 
>>>>>>> 
>>>> 
>> sun.reflect.NativeConstructorAccessorImpl#newInstance0(NativeConstructorAccessorImpl.java:-2)
>>>>>>> 
>>>>>>> 
>>>> 
>> sun.reflect.NativeConstructorAccessorImpl#newInstance(NativeConstructorAccessorImpl.java:39)
>>>>>>> 
>>>>>>> 
>>>> 
>> sun.reflect.DelegatingConstructorAccessorImpl#newInstance(DelegatingConstructorAccessorImpl.java:27)
>>>>>>> java.lang.reflect.Constructor#newInstance(Constructor.java:513)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.wicket.session.DefaultPageFactory#newPage(DefaultPageFactory.java:170)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.wicket.session.DefaultPageFactory#newPage(DefaultPageFactory.java:98)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.wicket.DefaultMapperContext#newPageInstance(DefaultMapperContext.java:137)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.wicket.core.request.handler.PageProvider#resolvePageInstance(PageProvider.java:268)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.wicket.core.request.handler.PageProvider#getPageInstance(PageProvider.java:166)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.wicket.request.handler.render.PageRenderer#getPage(PageRenderer.java:78)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.wicket.request.handler.render.WebPageRenderer#renderPage(WebPageRenderer.java:94)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.wicket.request.handler.render.WebPageRenderer#respond(WebPageRenderer.java:196)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.wicket.core.request.handler.RenderPageRequestHandler#respond(RenderPageRequestHandler.java:165)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor#respond(RequestCycle.java:854)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.wicket.request.RequestHandlerStack#execute(RequestHandlerStack.java:64)
>>>>>>> 
>>>> 
>> org.apache.wicket.request.cycle.RequestCycle#execute(RequestCycle.java:254)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.wicket.request.cycle.RequestCycle#processRequest(RequestCycle.java:211)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.apache.wicket.request.cycle.RequestCycle#processRequestAndDetach(RequestCycle.java:282)
>>>>>>> 
>>>>>>> 
>>>> 
>> 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.eclipse.jetty.servlet.ServletHandler$CachedChain#doFilter(ServletHandler.java:1326)
>>>>>>> 
>>>>>>> 
>>>> 
>> 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:1326)
>>>>>>> 
>>>> 
>> org.eclipse.jetty.servlet.ServletHandler#doHandle(ServletHandler.java:479)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.server.handler.ScopedHandler#handle(ScopedHandler.java:119)
>>>>>>> 
>>>> 
>> org.eclipse.jetty.security.SecurityHandler#handle(SecurityHandler.java:520)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.server.session.SessionHandler#doHandle(SessionHandler.java:227)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.server.handler.ContextHandler#doHandle(ContextHandler.java:940)
>>>>>>> 
>>>> 
>> org.eclipse.jetty.servlet.ServletHandler#doScope(ServletHandler.java:409)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.server.session.SessionHandler#doScope(SessionHandler.java:186)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.server.handler.ContextHandler#doScope(ContextHandler.java:874)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.server.handler.ScopedHandler#handle(ScopedHandler.java:117)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.server.handler.ContextHandlerCollection#handle(ContextHandlerCollection.java:250)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.server.handler.HandlerCollection#handle(HandlerCollection.java:149)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.server.handler.HandlerWrapper#handle(HandlerWrapper.java:110)
>>>>>>> org.eclipse.jetty.server.Server#handle(Server.java:349)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.server.HttpConnection#handleRequest(HttpConnection.java:441)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.server.HttpConnection$RequestHandler#headerComplete(HttpConnection.java:904)
>>>>>>> org.eclipse.jetty.http.HttpParser#parseNext(HttpParser.java:565)
>>>>>>> org.eclipse.jetty.http.HttpParser#parseAvailable(HttpParser.java:217)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.server.AsyncHttpConnection#handle(AsyncHttpConnection.java:46)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.io.nio.SelectChannelEndPoint#handle(SelectChannelEndPoint.java:545)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.io.nio.SelectChannelEndPoint$1#run(SelectChannelEndPoint.java:43)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.util.thread.QueuedThreadPool#runJob(QueuedThreadPool.java:598)
>>>>>>> 
>>>>>>> 
>>>> 
>> org.eclipse.jetty.util.thread.QueuedThreadPool$3#run(QueuedThreadPool.java:533)
>>>>>>> java.lang.Thread#run(Thread.java:680)
>>>>>>> 
>>>>>>> 
>>>>> 
>>>> 
>>>> 
>> 
>> 

Reply via email to