You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2015/01/21 01:03:25 UTC
[03/12] isis git commit: ISIS-970: consolidating processing into
DomainObjectAnnotationFacetFactory, ActionAnnotationFF, PropertyAnnotationFF,
CollectionAnnotationFF
http://git-wip-us.apache.org/repos/asf/isis/blob/74e1f371/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_actionInvocation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_actionInvocation.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_actionInvocation.java
new file mode 100644
index 0000000..e7d4abe
--- /dev/null
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_actionInvocation.java
@@ -0,0 +1,220 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.isis.core.metamodel.facets.actions.action;
+
+import java.lang.reflect.Method;
+import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
+import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext;
+import org.apache.isis.core.metamodel.facets.FacetedMethod;
+import org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet;
+import org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventAbstract;
+import org.apache.isis.core.metamodel.facets.members.disabled.method.DisableForContextFacet;
+import org.apache.isis.core.metamodel.facets.members.disabled.method.DisableForContextFacetViaMethod;
+import org.apache.isis.core.metamodel.facets.members.disabled.method.DisableForContextFacetViaMethodFactory;
+import org.apache.isis.core.metamodel.facets.param.choices.ActionParameterChoicesFacet;
+import org.apache.isis.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethod;
+import org.apache.isis.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethodFactory;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.testspec.ObjectSpecificationStub;
+
+public class ActionAnnotationFacetFactoryTest_actionInvocation extends AbstractFacetFactoryTest {
+
+ private final ObjectSpecification voidSpec = new ObjectSpecificationStub("VOID");
+ private final ObjectSpecification stringSpec = new ObjectSpecificationStub("java.lang.String");
+ private final ObjectSpecification customerSpec = new ObjectSpecificationStub("Customer");
+ private ActionAnnotationFacetFactory facetFactory;
+
+ public void setUp() throws Exception {
+ super.setUp();
+ facetFactory = new ActionAnnotationFacetFactory();
+ facetFactory.setSpecificationLookup(programmableReflector);
+ }
+
+ public void testActionInvocationFacetIsInstalledAndMethodRemoved() {
+ programmableReflector.setLoadSpecificationStringReturn(voidSpec);
+
+ class Customer {
+ @SuppressWarnings("unused")
+ public void someAction() {
+ }
+ }
+ final Method actionMethod = findMethod(Customer.class, "someAction");
+
+ facetFactory.processInvocation(new ProcessMethodContext(Customer.class, null, null, actionMethod, methodRemover, facetedMethod));
+
+ final Facet facet = facetedMethod.getFacet(ActionInvocationFacet.class);
+ assertNotNull(facet);
+ assertTrue(facet instanceof ActionInvocationFacetForDomainEventAbstract);
+ final ActionInvocationFacetForDomainEventAbstract actionInvocationFacetViaMethod = (ActionInvocationFacetForDomainEventAbstract) facet;
+ assertEquals(actionMethod, actionInvocationFacetViaMethod.getMethods().get(0));
+
+ assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(actionMethod));
+ }
+
+ public void testActionReturnTypeWhenVoid() {
+ programmableReflector.setLoadSpecificationStringReturn(voidSpec);
+
+ class Customer {
+ @SuppressWarnings("unused")
+ public void someAction() {
+ }
+ }
+ final Method actionMethod = findMethod(Customer.class, "someAction");
+
+ facetFactory.processInvocation(new ProcessMethodContext(Customer.class, null, null, actionMethod, methodRemover, facetedMethod));
+
+ final Facet facet = facetedMethod.getFacet(ActionInvocationFacet.class);
+ final ActionInvocationFacetForDomainEventAbstract actionInvocationFacetViaMethod = (ActionInvocationFacetForDomainEventAbstract) facet;
+ assertEquals(voidSpec, actionInvocationFacetViaMethod.getReturnType());
+ }
+
+ public void testActionReturnTypeWhenNotVoid() {
+ programmableReflector.setLoadSpecificationStringReturn(stringSpec);
+
+ class Customer {
+ @SuppressWarnings("unused")
+ public String someAction() {
+ return null;
+ }
+ }
+ final Method actionMethod = findMethod(Customer.class, "someAction");
+
+ facetFactory.processInvocation(new ProcessMethodContext(Customer.class, null, null, actionMethod, methodRemover, facetedMethod));
+
+ final Facet facet = facetedMethod.getFacet(ActionInvocationFacet.class);
+ final ActionInvocationFacetForDomainEventAbstract actionInvocationFacetViaMethod = (ActionInvocationFacetForDomainEventAbstract) facet;
+ assertEquals(stringSpec, actionInvocationFacetViaMethod.getReturnType());
+ }
+
+ public void testActionOnType() {
+ programmableReflector.setLoadSpecificationStringReturn(customerSpec);
+
+ class Customer {
+ @SuppressWarnings("unused")
+ public String someAction() {
+ return null;
+ }
+ }
+ final Method actionMethod = findMethod(Customer.class, "someAction");
+
+ facetFactory.processInvocation(new ProcessMethodContext(Customer.class, null, null, actionMethod, methodRemover, facetedMethod));
+
+ final Facet facet = facetedMethod.getFacet(ActionInvocationFacet.class);
+ final ActionInvocationFacetForDomainEventAbstract actionInvocationFacetViaMethod = (ActionInvocationFacetForDomainEventAbstract) facet;
+ assertEquals(customerSpec, actionInvocationFacetViaMethod.getOnType());
+ }
+
+ public void testActionsPickedUpFromSuperclass() {
+ programmableReflector.setLoadSpecificationStringReturn(voidSpec);
+
+ class Customer {
+ @SuppressWarnings("unused")
+ public void someAction(final int x, final long y) {
+ }
+ }
+
+ class CustomerEx extends Customer {
+ }
+
+ final Method actionMethod = findMethod(CustomerEx.class, "someAction", new Class[] { int.class, long.class });
+
+ final FacetedMethod facetHolderWithParms = FacetedMethod.createForAction(CustomerEx.class, actionMethod);
+
+ facetFactory.processInvocation(new ProcessMethodContext(CustomerEx.class, null, null, actionMethod, methodRemover, facetHolderWithParms));
+
+ final Facet facet0 = facetHolderWithParms.getFacet(ActionInvocationFacet.class);
+ assertNotNull(facet0);
+ }
+
+ public void testActionsPickedUpFromSuperclassButHelpersFromSubClass() {
+ programmableReflector.setLoadSpecificationStringReturn(voidSpec);
+
+ final ActionParameterChoicesFacetViaMethodFactory facetFactoryForChoices = new ActionParameterChoicesFacetViaMethodFactory();
+ facetFactoryForChoices.setSpecificationLookup(programmableReflector);
+ programmableReflector.setLoadSpecificationStringReturn(voidSpec);
+
+ final DisableForContextFacetViaMethodFactory facetFactoryForDisable = new DisableForContextFacetViaMethodFactory();
+ facetFactoryForDisable.setSpecificationLookup(programmableReflector);
+ programmableReflector.setLoadSpecificationStringReturn(voidSpec);
+
+ class Customer {
+ @SuppressWarnings("unused")
+ public void someAction(final int x, final long y) {
+ }
+
+ @SuppressWarnings("unused")
+ public int[] choices0SomeAction() {
+ return new int[0];
+ }
+ }
+
+ class CustomerEx extends Customer {
+ @Override
+ public int[] choices0SomeAction() {
+ return new int[0];
+ }
+
+ @SuppressWarnings("unused")
+ public long[] choices1SomeAction() {
+ return new long[0];
+ }
+
+ @SuppressWarnings("unused")
+ public String disableSomeAction(final int x, final long y) {
+ return null;
+ }
+ }
+
+ final Method actionMethod = findMethod(CustomerEx.class, "someAction", new Class[] { int.class, long.class });
+ final Method choices0Method = findMethod(CustomerEx.class, "choices0SomeAction", new Class[] {});
+ final Method choices1Method = findMethod(CustomerEx.class, "choices1SomeAction", new Class[] {});
+ final Method disableMethod = findMethod(CustomerEx.class, "disableSomeAction", new Class[] { int.class, long.class });
+
+ final FacetedMethod facetHolderWithParms = FacetedMethod.createForAction(CustomerEx.class, actionMethod);
+
+ final ProcessMethodContext processMethodContext = new ProcessMethodContext(CustomerEx.class, null, null, actionMethod, methodRemover, facetHolderWithParms);
+ facetFactory.processInvocation(processMethodContext);
+
+ facetFactoryForChoices.process(processMethodContext);
+ facetFactoryForDisable.process(processMethodContext);
+
+ final Facet facet0 = facetHolderWithParms.getFacet(ActionInvocationFacet.class);
+ assertNotNull(facet0);
+
+ final Facet facet1 = facetHolderWithParms.getParameters().get(0).getFacet(ActionParameterChoicesFacet.class);
+ assertNotNull(facet1);
+ assertTrue(facet1 instanceof ActionParameterChoicesFacetViaMethod);
+ final ActionParameterChoicesFacetViaMethod actionChoicesFacetViaMethod0 = (ActionParameterChoicesFacetViaMethod) facet1;
+ assertEquals(choices0Method, actionChoicesFacetViaMethod0.getMethods().get(0));
+
+ final Facet facet2 = facetHolderWithParms.getParameters().get(1).getFacet(ActionParameterChoicesFacet.class);
+ assertNotNull(facet2);
+ assertTrue(facet2 instanceof ActionParameterChoicesFacetViaMethod);
+ final ActionParameterChoicesFacetViaMethod actionChoicesFacetViaMethod1 = (ActionParameterChoicesFacetViaMethod) facet2;
+ assertEquals(choices1Method, actionChoicesFacetViaMethod1.getMethods().get(0));
+
+ final Facet facet3 = facetHolderWithParms.getFacet(DisableForContextFacet.class);
+ assertNotNull(facet3);
+ assertTrue(facet3 instanceof DisableForContextFacetViaMethod);
+ final DisableForContextFacetViaMethod disableFacetViaMethod = (DisableForContextFacetViaMethod) facet3;
+ assertEquals(disableMethod, disableFacetViaMethod.getMethods().get(0));
+ }
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/74e1f371/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_forActionSemantics.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_forActionSemantics.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_forActionSemantics.java
index 721f80b..929425d 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_forActionSemantics.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_forActionSemantics.java
@@ -53,7 +53,7 @@ public class ActionAnnotationFacetFactoryTest_forActionSemantics extends Abstrac
}
final Method actionMethod = findMethod(Customer.class, "someAction");
- facetFactory.process(new ProcessMethodContext(Customer.class, null, null, actionMethod, methodRemover, facetedMethod));
+ facetFactory.processSemantics(new ProcessMethodContext(Customer.class, null, null, actionMethod, methodRemover, facetedMethod));
final Facet facet = facetedMethod.getFacet(ActionSemanticsFacet.class);
assertNotNull(facet);
@@ -70,7 +70,7 @@ public class ActionAnnotationFacetFactoryTest_forActionSemantics extends Abstrac
}
final Method actionMethod = findMethod(Customer.class, "someAction");
- facetFactory.process(new ProcessMethodContext(Customer.class, null, null, actionMethod, methodRemover, facetedMethod));
+ facetFactory.processSemantics(new ProcessMethodContext(Customer.class, null, null, actionMethod, methodRemover, facetedMethod));
final Facet facet = facetedMethod.getFacet(ActionSemanticsFacet.class);
assertNull(facet);
http://git-wip-us.apache.org/repos/asf/isis/blob/74e1f371/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_forCommand.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_forCommand.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_forCommand.java
deleted file mode 100644
index ce0bf47..0000000
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_forCommand.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.isis.core.metamodel.facets.actions.action;
-
-import java.lang.reflect.Method;
-import org.apache.isis.applib.annotation.Command;
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
-import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext;
-import org.apache.isis.core.metamodel.facets.actions.command.CommandFacet;
-import org.apache.isis.core.metamodel.facets.actions.command.CommandFacetAbstract;
-
-public class ActionAnnotationFacetFactoryTest_forCommand extends AbstractFacetFactoryTest {
-
- private ActionAnnotationFacetFactory facetFactory;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
-
- facetFactory = new ActionAnnotationFacetFactory();
- }
-
- @Override
- protected void tearDown() throws Exception {
- facetFactory = null;
- super.tearDown();
- }
-
- public void testAnnotationPickedUp() {
- class Customer {
- @Command
- public void someAction() {
- }
- }
- final Method actionMethod = findMethod(Customer.class, "someAction");
-
- facetFactory.process(new ProcessMethodContext(Customer.class, null, null, actionMethod, methodRemover, facetedMethod));
-
- final Facet facet = facetedMethod.getFacet(CommandFacet.class);
- assertNotNull(facet);
- assertTrue(facet instanceof CommandFacetAbstract);
-
- assertNoMethodsRemoved();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/74e1f371/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/CommandFromConfigurationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/CommandFromConfigurationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/CommandFromConfigurationFacetFactoryTest.java
deleted file mode 100644
index 094e069..0000000
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/CommandFromConfigurationFacetFactoryTest.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.isis.core.metamodel.facets.actions.action;
-
-import java.lang.reflect.Method;
-import java.util.UUID;
-import org.jmock.Expectations;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.apache.isis.applib.annotation.ActionSemantics.Of;
-import org.apache.isis.applib.services.HasTransactionId;
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryJUnit4TestCase;
-import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext;
-import org.apache.isis.core.metamodel.facets.actions.command.CommandFacet;
-import org.apache.isis.core.metamodel.facets.actions.command.CommandFacetAbstract;
-import org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacetAbstract;
-
-public class CommandFromConfigurationFacetFactoryTest extends AbstractFacetFactoryJUnit4TestCase {
-
- private ActionAnnotationFacetFactory facetFactory;
- private Method customerActionMethod;
-
- @Before
- public void setUp() throws Exception {
- facetFactory = new ActionAnnotationFacetFactory();
- facetFactory.setConfiguration(mockConfiguration);
-
- customerActionMethod = findMethod(Customer.class, "someAction");
- }
-
- @After
- public void tearDown() throws Exception {
- facetFactory = null;
- }
-
- class Customer {
- public void someAction() {
- }
- }
-
- class SomeTransactionalId implements HasTransactionId {
- public void someAction() {
- }
-
- @Override
- public UUID getTransactionId() {
- return null;
- }
-
- @Override
- public void setTransactionId(UUID transactionId) {
- }
- }
-
- @Test(expected=IllegalStateException.class)
- public void requiresActionSemantics() {
- allowingConfigurationToReturn("safe");
- final Method actionMethod = findMethod(Customer.class, "someAction");
-
- facetFactory.process(new ProcessMethodContext(Customer.class, null, null, actionMethod, mockMethodRemover, facetedMethod));
- }
-
- @Test
- public void ignoreHasTransactionId() {
- final Of actionSemantics = Of.SAFE;
-
- allowingConfigurationToReturn("all");
- final Method actionMethod = findMethod(SomeTransactionalId.class, "someAction");
-
- facetedMethod.addFacet(new ActionSemanticsFacetAbstract(actionSemantics, facetedMethod) {});
- facetFactory.process(new ProcessMethodContext(SomeTransactionalId.class, null, null, actionMethod, mockMethodRemover, facetedMethod));
-
- final Facet facet = facetedMethod.getFacet(CommandFacet.class);
- Assert.assertNull(facet);
-
- expectNoMethodsRemoved();
- }
-
-
- @Test
- public void all_with_safe() {
- final Of actionSemantics = Of.SAFE;
-
- allowingConfigurationToReturn("all");
-
- facetedMethod.addFacet(new ActionSemanticsFacetAbstract(actionSemantics, facetedMethod) {});
- facetFactory.process(new ProcessMethodContext(Customer.class, null, null, customerActionMethod, mockMethodRemover, facetedMethod));
-
- final Facet facet = facetedMethod.getFacet(CommandFacet.class);
- Assert.assertTrue(facet instanceof CommandFacetAbstract);
-
- expectNoMethodsRemoved();
- }
-
- @Test
- public void ignoreQueryOnly_with_safe() {
- final Of actionSemantics = Of.SAFE;
-
- allowingConfigurationToReturn("ignoreQueryOnly");
-
- facetedMethod.addFacet(new ActionSemanticsFacetAbstract(actionSemantics, facetedMethod) {});
- facetFactory.process(new ProcessMethodContext(Customer.class, null, null, customerActionMethod, mockMethodRemover, facetedMethod));
-
- final Facet facet = facetedMethod.getFacet(CommandFacet.class);
- Assert.assertNull(facet);
-
- expectNoMethodsRemoved();
- }
-
- @Test
- public void none_with_nonIdempotent() {
- final Of actionSemantics = Of.NON_IDEMPOTENT;
-
- allowingConfigurationToReturn("none");
-
- facetedMethod.addFacet(new ActionSemanticsFacetAbstract(actionSemantics, facetedMethod) {});
- facetFactory.process(new ProcessMethodContext(Customer.class, null, null, customerActionMethod, mockMethodRemover, facetedMethod));
-
- final Facet facet = facetedMethod.getFacet(CommandFacet.class);
- Assert.assertNull(facet);
-
- expectNoMethodsRemoved();
- }
-
- private void allowingConfigurationToReturn(final String value) {
- context.checking(new Expectations() {
- {
- allowing(mockConfiguration).getString("isis.services.command.actions");
- will(returnValue(value));
- }
- });
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/74e1f371/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/CollectionFieldMethodsFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/CollectionFieldMethodsFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/CollectionFieldMethodsFacetFactoryTest.java
index 740b5a4..c437312 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/CollectionFieldMethodsFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/CollectionFieldMethodsFacetFactoryTest.java
@@ -66,7 +66,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
public void testPropertyAccessorFacetIsInstalledForJavaUtilCollectionAndMethodRemoved() {
final CollectionAccessorFacetViaAccessorFactory facetFactory = new CollectionAccessorFacetViaAccessorFactory();
- facetFactory.setSpecificationLookup(reflector);
+ facetFactory.setSpecificationLookup(programmableReflector);
class Customer {
@SuppressWarnings({ "rawtypes", "unused" })
@@ -89,7 +89,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
public void testPropertyAccessorFacetIsInstalledForJavaUtilListAndMethodRemoved() {
final CollectionAccessorFacetViaAccessorFactory facetFactory = new CollectionAccessorFacetViaAccessorFactory();
- facetFactory.setSpecificationLookup(reflector);
+ facetFactory.setSpecificationLookup(programmableReflector);
class Customer {
@SuppressWarnings({ "rawtypes", "unused" })
@@ -112,7 +112,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
public void testPropertyAccessorFacetIsInstalledForJavaUtilSetAndMethodRemoved() {
final CollectionAccessorFacetViaAccessorFactory facetFactory = new CollectionAccessorFacetViaAccessorFactory();
- facetFactory.setSpecificationLookup(reflector);
+ facetFactory.setSpecificationLookup(programmableReflector);
class Customer {
@SuppressWarnings({ "rawtypes", "unused" })
@@ -135,7 +135,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
public void testPropertyAccessorFacetIsInstalledForObjectArrayAndMethodRemoved() {
final CollectionAccessorFacetViaAccessorFactory facetFactory = new CollectionAccessorFacetViaAccessorFactory();
- facetFactory.setSpecificationLookup(reflector);
+ facetFactory.setSpecificationLookup(programmableReflector);
class Customer {
@SuppressWarnings("unused")
@@ -158,7 +158,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
public void testPropertyAccessorFacetIsInstalledForOrderArrayAndMethodRemoved() {
final CollectionAccessorFacetViaAccessorFactory facetFactory = new CollectionAccessorFacetViaAccessorFactory();
- facetFactory.setSpecificationLookup(reflector);
+ facetFactory.setSpecificationLookup(programmableReflector);
@SuppressWarnings("hiding")
class Order {
@@ -184,7 +184,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
public void testAddToFacetIsInstalledViaAccessorIfNoExplicitAddToMethodExists() {
final CollectionAddToRemoveFromAndValidateFacetFactory facetFactory = new CollectionAddToRemoveFromAndValidateFacetFactory();
- facetFactory.setSpecificationLookup(reflector);
+ facetFactory.setSpecificationLookup(programmableReflector);
@SuppressWarnings("hiding")
class Order {
@@ -208,7 +208,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
public void testCannotInferTypeOfFacetIfNoExplicitAddToOrRemoveFromMethods() {
final CollectionAddToRemoveFromAndValidateFacetFactory facetFactory = new CollectionAddToRemoveFromAndValidateFacetFactory();
- facetFactory.setSpecificationLookup(reflector);
+ facetFactory.setSpecificationLookup(programmableReflector);
@SuppressWarnings("hiding")
class Order {
@@ -228,7 +228,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
public void testRemoveFromFacetIsInstalledViaAccessorIfNoExplicitRemoveFromMethodExists() {
final CollectionAddToRemoveFromAndValidateFacetFactory facetFactory = new CollectionAddToRemoveFromAndValidateFacetFactory();
- facetFactory.setSpecificationLookup(reflector);
+ facetFactory.setSpecificationLookup(programmableReflector);
@SuppressWarnings("hiding")
class Order {
@@ -252,7 +252,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
public void testAddToFacetIsInstalledAndMethodRemoved() {
final CollectionAddToRemoveFromAndValidateFacetFactory facetFactory = new CollectionAddToRemoveFromAndValidateFacetFactory();
- facetFactory.setSpecificationLookup(reflector);
+ facetFactory.setSpecificationLookup(programmableReflector);
@SuppressWarnings("hiding")
class Order {
@@ -283,7 +283,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
public void testCanInferTypeOfFacetFromExplicitAddToMethod() {
final CollectionAddToRemoveFromAndValidateFacetFactory facetFactory = new CollectionAddToRemoveFromAndValidateFacetFactory();
- facetFactory.setSpecificationLookup(reflector);
+ facetFactory.setSpecificationLookup(programmableReflector);
@SuppressWarnings("hiding")
class Order {
@@ -311,7 +311,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
public void testRemoveFromFacetIsInstalledAndMethodRemoved() {
final CollectionAddToRemoveFromAndValidateFacetFactory facetFactory = new CollectionAddToRemoveFromAndValidateFacetFactory();
- facetFactory.setSpecificationLookup(reflector);
+ facetFactory.setSpecificationLookup(programmableReflector);
@SuppressWarnings("hiding")
class Order {
@@ -342,7 +342,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
public void testCanInferTypeOfFacetFromExplicitRemoveFromMethod() {
final CollectionAddToRemoveFromAndValidateFacetFactory facetFactory = new CollectionAddToRemoveFromAndValidateFacetFactory();
- facetFactory.setSpecificationLookup(reflector);
+ facetFactory.setSpecificationLookup(programmableReflector);
@SuppressWarnings("hiding")
class Order {
@@ -370,7 +370,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
public void testClearFacetIsInstalledAndMethodRemoved() {
final CollectionClearFacetFactory facetFactory = new CollectionClearFacetFactory();
- facetFactory.setSpecificationLookup(reflector);
+ facetFactory.setSpecificationLookup(programmableReflector);
@SuppressWarnings({ "hiding", "unused" })
class Order {
@@ -401,7 +401,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
public void testClearFacetIsInstalledViaAccessorIfNoExplicitClearMethod() {
final CollectionClearFacetFactory facetFactory = new CollectionClearFacetFactory();
- facetFactory.setSpecificationLookup(reflector);
+ facetFactory.setSpecificationLookup(programmableReflector);
@SuppressWarnings({ "hiding", "unused" })
class Order {
@@ -425,7 +425,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
public void testValidateAddToFacetIsInstalledAndMethodRemoved() {
final CollectionAddToRemoveFromAndValidateFacetFactory facetFactory = new CollectionAddToRemoveFromAndValidateFacetFactory();
- facetFactory.setSpecificationLookup(reflector);
+ facetFactory.setSpecificationLookup(programmableReflector);
@SuppressWarnings("hiding")
class Order {
@@ -461,7 +461,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
public void testValidateRemoveFromFacetIsInstalledAndMethodRemoved() {
final CollectionAddToRemoveFromAndValidateFacetFactory facetFactory = new CollectionAddToRemoveFromAndValidateFacetFactory();
- facetFactory.setSpecificationLookup(reflector);
+ facetFactory.setSpecificationLookup(programmableReflector);
@SuppressWarnings("hiding")
class Order {
@@ -497,7 +497,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
public void testMethodFoundInSuperclass() {
final CollectionAccessorFacetViaAccessorFactory facetFactory = new CollectionAccessorFacetViaAccessorFactory();
- facetFactory.setSpecificationLookup(reflector);
+ facetFactory.setSpecificationLookup(programmableReflector);
@SuppressWarnings("hiding")
class Order {
@@ -525,9 +525,9 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
public void testMethodFoundInSuperclassButHelpeMethodsFoundInSubclasses() {
final CollectionAccessorFacetViaAccessorFactory facetFactoryForAccessor = new CollectionAccessorFacetViaAccessorFactory();
- facetFactoryForAccessor.setSpecificationLookup(reflector);
+ facetFactoryForAccessor.setSpecificationLookup(programmableReflector);
final CollectionAddToRemoveFromAndValidateFacetFactory facetFactoryForHelpers = new CollectionAddToRemoveFromAndValidateFacetFactory();
- facetFactoryForHelpers.setSpecificationLookup(reflector);
+ facetFactoryForHelpers.setSpecificationLookup(programmableReflector);
@SuppressWarnings("hiding")
class Order {
@@ -620,7 +620,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
public void testInstallsNamedFacetUsingNameMethodAndRemovesMethod() {
final NamedFacetStaticMethodFactory facetFactory = new NamedFacetStaticMethodFactory();
- facetFactory.setSpecificationLookup(reflector);
+ facetFactory.setSpecificationLookup(programmableReflector);
final Method collectionAccessorMethod = findMethod(CustomerStatic.class, "getOrders");
final Method nameMethod = findMethod(CustomerStatic.class, "nameOrders");
@@ -638,7 +638,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
public void testInstallsDescribedAsFacetUsingDescriptionAndRemovesMethod() {
final DescribedAsFacetStaticMethodFactory facetFactory = new DescribedAsFacetStaticMethodFactory();
- facetFactory.setSpecificationLookup(reflector);
+ facetFactory.setSpecificationLookup(programmableReflector);
final Method collectionAccessorMethod = findMethod(CustomerStatic.class, "getOrders");
final Method descriptionMethod = findMethod(CustomerStatic.class, "descriptionOrders");
@@ -656,7 +656,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
public void testInstallsHiddenFacetUsingAlwaysHideAndRemovesMethod() {
final HiddenFacetStaticMethodFactory facetFactory = new HiddenFacetStaticMethodFactory();
- facetFactory.setSpecificationLookup(reflector);
+ facetFactory.setSpecificationLookup(programmableReflector);
final Method collectionAccessorMethod = findMethod(CustomerStatic.class, "getOrders");
final Method alwaysHideMethod = findMethod(CustomerStatic.class, "alwaysHideOrders");
@@ -674,7 +674,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
public void testInstallsHiddenFacetUsingAlwaysHideWhenNotAndRemovesMethod() {
final HiddenFacetStaticMethodFactory facetFactory = new HiddenFacetStaticMethodFactory();
- facetFactory.setSpecificationLookup(reflector);
+ facetFactory.setSpecificationLookup(programmableReflector);
final Method collectionAccessorMethod = findMethod(CustomerStatic.class, "getOtherOrders");
final Method alwaysHideMethod = findMethod(CustomerStatic.class, "alwaysHideOtherOrders");
@@ -688,7 +688,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
public void testInstallsDisabledFacetUsingProtectAndRemovesMethod() {
final DisabledFacetStaticMethodFacetFactory facetFactory = new DisabledFacetStaticMethodFacetFactory();
- facetFactory.setSpecificationLookup(reflector);
+ facetFactory.setSpecificationLookup(programmableReflector);
final Method collectionAccessorMethod = findMethod(CustomerStatic.class, "getOrders");
final Method protectMethod = findMethod(CustomerStatic.class, "protectOrders");
@@ -706,7 +706,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
public void testDoesNotInstallDisabledFacetUsingProtectWhenNotAndRemovesMethod() {
final DisabledFacetStaticMethodFacetFactory facetFactory = new DisabledFacetStaticMethodFacetFactory();
- facetFactory.setSpecificationLookup(reflector);
+ facetFactory.setSpecificationLookup(programmableReflector);
final Method collectionAccessorMethod = findMethod(CustomerStatic.class, "getOtherOrders");
final Method protectMethod = findMethod(CustomerStatic.class, "protectOtherOrders");
@@ -720,7 +720,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
public void testInstallsHiddenForSessionFacetAndRemovesMethod() {
final HideForSessionFacetViaMethodFactory facetFactory = new HideForSessionFacetViaMethodFactory();
- facetFactory.setSpecificationLookup(reflector);
+ facetFactory.setSpecificationLookup(programmableReflector);
final Method collectionAccessorMethod = findMethod(CustomerStatic.class, "getOrders");
final Method hideMethod = findMethod(CustomerStatic.class, "hideOrders", new Class[] { UserMemento.class });
@@ -738,7 +738,7 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
public void testInstallsDisabledForSessionFacetAndRemovesMethod() {
final DisableForSessionFacetViaMethodFactory facetFactory = new DisableForSessionFacetViaMethodFactory();
- facetFactory.setSpecificationLookup(reflector);
+ facetFactory.setSpecificationLookup(programmableReflector);
final Method collectionAccessorMethod = findMethod(CustomerStatic.class, "getOrders");
final Method disableMethod = findMethod(CustomerStatic.class, "disableOrders", new Class[] { UserMemento.class });
http://git-wip-us.apache.org/repos/asf/isis/blob/74e1f371/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/TypeOfAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/TypeOfAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/TypeOfAnnotationFacetFactoryTest.java
new file mode 100644
index 0000000..63338ea
--- /dev/null
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/TypeOfAnnotationFacetFactoryTest.java
@@ -0,0 +1,297 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.isis.core.metamodel.facets.collections.collection;
+
+import java.lang.reflect.Method;
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+import org.apache.isis.applib.annotation.TypeOf;
+import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
+import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext;
+import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
+import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetInferredFromArray;
+import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetInferredFromGenerics;
+import org.apache.isis.core.metamodel.facets.collections.collection.typeof.TypeOfFacetOnCollectionFromTypeOfAnnotation;
+
+public class TypeOfAnnotationFacetFactoryTest extends AbstractFacetFactoryTest {
+
+ private CollectionAnnotationFacetFactory facetFactory;
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ facetFactory = new CollectionAnnotationFacetFactory();
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ facetFactory = null;
+ super.tearDown();
+ }
+
+ public void testTypeOfFacetInferredForActionWithJavaUtilCollectionReturnType() {
+ class Order {
+ }
+ class Customer {
+ // rawtypes are intention for this test
+ @SuppressWarnings({ "unused", "rawtypes" })
+ @TypeOf(Order.class)
+ public Collection someAction() {
+ return null;
+ }
+ }
+ final Method actionMethod = findMethod(Customer.class, "someAction");
+
+ facetFactory.process(new ProcessMethodContext(Customer.class, null, null, actionMethod, methodRemover, facetedMethod));
+
+ final Facet facet = facetedMethod.getFacet(TypeOfFacet.class);
+ assertNotNull(facet);
+ assertTrue(facet instanceof TypeOfFacetOnCollectionFromTypeOfAnnotation);
+ final TypeOfFacetOnCollectionFromTypeOfAnnotation typeOfFacetOnCollectionAnnotation = (TypeOfFacetOnCollectionFromTypeOfAnnotation) facet;
+ assertEquals(Order.class, typeOfFacetOnCollectionAnnotation.value());
+
+ assertNoMethodsRemoved();
+ }
+
+ public void testTypeOfFacetInferredForCollectionWithJavaUtilCollectionReturnType() {
+ class Order {
+ }
+ class Customer {
+ // rawtypes are intention for this test
+ @SuppressWarnings({ "unused", "rawtypes" })
+ @TypeOf(Order.class)
+ public Collection getOrders() {
+ return null;
+ }
+ }
+ final Method accessorMethod = findMethod(Customer.class, "getOrders");
+
+ facetFactory.process(new ProcessMethodContext(Customer.class, null, null, accessorMethod, methodRemover, facetedMethod));
+
+ final Facet facet = facetedMethod.getFacet(TypeOfFacet.class);
+ assertNotNull(facet);
+ assertTrue(facet instanceof TypeOfFacetOnCollectionFromTypeOfAnnotation);
+ final TypeOfFacetOnCollectionFromTypeOfAnnotation typeOfFacetOnCollectionAnnotation = (TypeOfFacetOnCollectionFromTypeOfAnnotation) facet;
+ assertEquals(Order.class, typeOfFacetOnCollectionAnnotation.value());
+
+ assertNoMethodsRemoved();
+ }
+
+ public void testTypeOfFacetInferredForActionWithGenericCollectionReturnType() {
+ class Order {
+ }
+ class Customer {
+ @SuppressWarnings("unused")
+ public Collection<Order> someAction() {
+ return null;
+ }
+ }
+ final Method actionMethod = findMethod(Customer.class, "someAction");
+
+ facetFactory.process(new ProcessMethodContext(Customer.class, null, null, actionMethod, methodRemover, facetedMethod));
+
+ final Facet facet = facetedMethod.getFacet(TypeOfFacet.class);
+ assertNotNull(facet);
+ assertTrue(facet instanceof TypeOfFacetInferredFromGenerics);
+ final TypeOfFacetInferredFromGenerics typeOfFacetInferredFromGenerics = (TypeOfFacetInferredFromGenerics) facet;
+ assertEquals(Order.class, typeOfFacetInferredFromGenerics.value());
+
+ }
+
+ public void testTypeOfFacetInferredForCollectionWithGenericCollectionReturnType() {
+ class Order {
+ }
+ class Customer {
+ @SuppressWarnings("unused")
+ public Collection<Order> getOrders() {
+ return null;
+ }
+ }
+ final Method collectionAccessorMethod = findMethod(Customer.class, "getOrders");
+
+ facetFactory.process(new ProcessMethodContext(Customer.class, null, null, collectionAccessorMethod, methodRemover, facetedMethod));
+
+ final Facet facet = facetedMethod.getFacet(TypeOfFacet.class);
+ assertNotNull(facet);
+ assertTrue(facet instanceof TypeOfFacetInferredFromGenerics);
+ final TypeOfFacetInferredFromGenerics typeOfFacetInferredFromGenerics = (TypeOfFacetInferredFromGenerics) facet;
+ assertEquals(Order.class, typeOfFacetInferredFromGenerics.value());
+
+ }
+
+ public void testTypeOfFacetInferredForActionWithJavaUtilListReturnType() {
+ class Order {
+ }
+ class Customer {
+ // rawTypes is intentional here
+ @SuppressWarnings({ "unused", "rawtypes" })
+ @TypeOf(Order.class)
+ public List someAction() {
+ return null;
+ }
+ }
+ final Method actionMethod = findMethod(Customer.class, "someAction");
+
+ facetFactory.process(new ProcessMethodContext(Customer.class, null, null, actionMethod, methodRemover, facetedMethod));
+
+ final Facet facet = facetedMethod.getFacet(TypeOfFacet.class);
+ assertNotNull(facet);
+ assertTrue(facet instanceof TypeOfFacetOnCollectionFromTypeOfAnnotation);
+ final TypeOfFacetOnCollectionFromTypeOfAnnotation typeOfFacetOnCollectionAnnotation = (TypeOfFacetOnCollectionFromTypeOfAnnotation) facet;
+ assertEquals(Order.class, typeOfFacetOnCollectionAnnotation.value());
+
+ assertNoMethodsRemoved();
+ }
+
+ public void testTypeOfFacetInferredForCollectionWithJavaUtilListReturnType() {
+ class Order {
+ }
+ class Customer {
+ // rawTypes is intentional here
+ @SuppressWarnings({ "unused", "rawtypes" })
+ @TypeOf(Order.class)
+ public List getOrders() {
+ return null;
+ }
+ }
+ final Method accessorMethod = findMethod(Customer.class, "getOrders");
+
+ facetFactory.process(new ProcessMethodContext(Customer.class, null, null, accessorMethod, methodRemover, facetedMethod));
+
+ final Facet facet = facetedMethod.getFacet(TypeOfFacet.class);
+ assertNotNull(facet);
+ assertTrue(facet instanceof TypeOfFacetOnCollectionFromTypeOfAnnotation);
+ final TypeOfFacetOnCollectionFromTypeOfAnnotation typeOfFacetOnCollectionAnnotation = (TypeOfFacetOnCollectionFromTypeOfAnnotation) facet;
+ assertEquals(Order.class, typeOfFacetOnCollectionAnnotation.value());
+
+ assertNoMethodsRemoved();
+ }
+
+ public void testTypeOfFacetInferredForActionWithJavaUtilSetReturnType() {
+ class Order {
+ }
+ class Customer {
+ @SuppressWarnings("unused")
+ @TypeOf(Order.class)
+ public Set someAction() {
+ return null;
+ }
+ }
+ final Method actionMethod = findMethod(Customer.class, "someAction");
+
+ facetFactory.process(new ProcessMethodContext(Customer.class, null, null, actionMethod, methodRemover, facetedMethod));
+
+ final Facet facet = facetedMethod.getFacet(TypeOfFacet.class);
+ assertNotNull(facet);
+ assertTrue(facet instanceof TypeOfFacetOnCollectionFromTypeOfAnnotation);
+ final TypeOfFacetOnCollectionFromTypeOfAnnotation typeOfFacetOnCollectionAnnotation = (TypeOfFacetOnCollectionFromTypeOfAnnotation) facet;
+ assertEquals(Order.class, typeOfFacetOnCollectionAnnotation.value());
+
+ assertNoMethodsRemoved();
+ }
+
+ public void testTypeOfFacetInferredForCollectionWithJavaUtilSetReturnType() {
+ class Order {
+ }
+ class Customer {
+ @SuppressWarnings("unused")
+ @TypeOf(Order.class)
+ public Set getOrders() {
+ return null;
+ }
+ }
+ final Method accessorMethod = findMethod(Customer.class, "getOrders");
+
+ facetFactory.process(new ProcessMethodContext(Customer.class, null, null, accessorMethod, methodRemover, facetedMethod));
+
+ final Facet facet = facetedMethod.getFacet(TypeOfFacet.class);
+ assertNotNull(facet);
+ assertTrue(facet instanceof TypeOfFacetOnCollectionFromTypeOfAnnotation);
+ final TypeOfFacetOnCollectionFromTypeOfAnnotation typeOfFacetOnCollectionAnnotation = (TypeOfFacetOnCollectionFromTypeOfAnnotation) facet;
+ assertEquals(Order.class, typeOfFacetOnCollectionAnnotation.value());
+
+ assertNoMethodsRemoved();
+ }
+
+ public void testTypeOfFacetInferredForActionWithArrayReturnType() {
+ class Order {
+ }
+ class Customer {
+ @SuppressWarnings("unused")
+ public Order[] someAction() {
+ return null;
+ }
+ }
+ final Method actionMethod = findMethod(Customer.class, "someAction");
+
+ facetFactory.process(new ProcessMethodContext(Customer.class, null, null, actionMethod, methodRemover, facetedMethod));
+
+ final Facet facet = facetedMethod.getFacet(TypeOfFacet.class);
+ assertNotNull(facet);
+ assertTrue(facet instanceof TypeOfFacetInferredFromArray);
+ final TypeOfFacetInferredFromArray typeOfFacetInferredFromArray = (TypeOfFacetInferredFromArray) facet;
+ assertEquals(Order.class, typeOfFacetInferredFromArray.value());
+
+ assertNoMethodsRemoved();
+ }
+
+ public void testTypeOfFacetIsInferredForCollectionFromOrderArray() {
+ class Order {
+ }
+ class Customer {
+ @SuppressWarnings("unused")
+ public Order[] getOrders() {
+ return null;
+ }
+ }
+ final Method collectionAccessorMethod = findMethod(Customer.class, "getOrders");
+
+ facetFactory.process(new ProcessMethodContext(Customer.class, null, null, collectionAccessorMethod, methodRemover, facetedMethod));
+
+ final Facet facet = facetedMethod.getFacet(TypeOfFacet.class);
+ assertNotNull(facet);
+ assertTrue(facet instanceof TypeOfFacetInferredFromArray);
+ final TypeOfFacetInferredFromArray typeOfFacetInferredFromArray = (TypeOfFacetInferredFromArray) facet;
+ assertEquals(Order.class, typeOfFacetInferredFromArray.value());
+
+ }
+
+ public void testTypeOfAnnotationIgnoredForActionIfReturnTypeIsntACollectionType() {
+ class Order {
+ }
+ class Customer {
+ @SuppressWarnings("unused")
+ @TypeOf(Order.class)
+ public Customer someAction() {
+ return null;
+ }
+ }
+ final Method actionMethod = findMethod(Customer.class, "someAction");
+
+ facetFactory.process(new ProcessMethodContext(Customer.class, null, null, actionMethod, methodRemover, facetedMethod));
+
+ assertNull(facetedMethod.getFacet(TypeOfFacet.class));
+
+ assertNoMethodsRemoved();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/74e1f371/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/typeof/TypeOfAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/typeof/TypeOfAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/typeof/TypeOfAnnotationFacetFactoryTest.java
deleted file mode 100644
index de6701e..0000000
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/typeof/TypeOfAnnotationFacetFactoryTest.java
+++ /dev/null
@@ -1,298 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.isis.core.metamodel.facets.collections.typeof;
-
-import java.lang.reflect.Method;
-import java.util.Collection;
-import java.util.List;
-import java.util.Set;
-import org.apache.isis.applib.annotation.TypeOf;
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
-import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext;
-import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
-import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetInferredFromArray;
-import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetInferredFromGenerics;
-import org.apache.isis.core.metamodel.facets.collections.typeof.annotation.TypeOfFacetOnCollectionAnnotation;
-import org.apache.isis.core.metamodel.facets.collections.typeof.annotation.TypeOfFacetOnCollectionAnnotationFactory;
-
-public class TypeOfAnnotationFacetFactoryTest extends AbstractFacetFactoryTest {
-
- private TypeOfFacetOnCollectionAnnotationFactory facetFactory;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- facetFactory = new TypeOfFacetOnCollectionAnnotationFactory();
- }
-
- @Override
- protected void tearDown() throws Exception {
- facetFactory = null;
- super.tearDown();
- }
-
- public void testTypeOfFacetInferredForActionWithJavaUtilCollectionReturnType() {
- class Order {
- }
- class Customer {
- // rawtypes are intention for this test
- @SuppressWarnings({ "unused", "rawtypes" })
- @TypeOf(Order.class)
- public Collection someAction() {
- return null;
- }
- }
- final Method actionMethod = findMethod(Customer.class, "someAction");
-
- facetFactory.process(new ProcessMethodContext(Customer.class, null, null, actionMethod, methodRemover, facetedMethod));
-
- final Facet facet = facetedMethod.getFacet(TypeOfFacet.class);
- assertNotNull(facet);
- assertTrue(facet instanceof TypeOfFacetOnCollectionAnnotation);
- final TypeOfFacetOnCollectionAnnotation typeOfFacetOnCollectionAnnotation = (TypeOfFacetOnCollectionAnnotation) facet;
- assertEquals(Order.class, typeOfFacetOnCollectionAnnotation.value());
-
- assertNoMethodsRemoved();
- }
-
- public void testTypeOfFacetInferredForCollectionWithJavaUtilCollectionReturnType() {
- class Order {
- }
- class Customer {
- // rawtypes are intention for this test
- @SuppressWarnings({ "unused", "rawtypes" })
- @TypeOf(Order.class)
- public Collection getOrders() {
- return null;
- }
- }
- final Method accessorMethod = findMethod(Customer.class, "getOrders");
-
- facetFactory.process(new ProcessMethodContext(Customer.class, null, null, accessorMethod, methodRemover, facetedMethod));
-
- final Facet facet = facetedMethod.getFacet(TypeOfFacet.class);
- assertNotNull(facet);
- assertTrue(facet instanceof TypeOfFacetOnCollectionAnnotation);
- final TypeOfFacetOnCollectionAnnotation typeOfFacetOnCollectionAnnotation = (TypeOfFacetOnCollectionAnnotation) facet;
- assertEquals(Order.class, typeOfFacetOnCollectionAnnotation.value());
-
- assertNoMethodsRemoved();
- }
-
- public void testTypeOfFacetInferredForActionWithGenericCollectionReturnType() {
- class Order {
- }
- class Customer {
- @SuppressWarnings("unused")
- public Collection<Order> someAction() {
- return null;
- }
- }
- final Method actionMethod = findMethod(Customer.class, "someAction");
-
- facetFactory.process(new ProcessMethodContext(Customer.class, null, null, actionMethod, methodRemover, facetedMethod));
-
- final Facet facet = facetedMethod.getFacet(TypeOfFacet.class);
- assertNotNull(facet);
- assertTrue(facet instanceof TypeOfFacetInferredFromGenerics);
- final TypeOfFacetInferredFromGenerics typeOfFacetInferredFromGenerics = (TypeOfFacetInferredFromGenerics) facet;
- assertEquals(Order.class, typeOfFacetInferredFromGenerics.value());
-
- }
-
- public void testTypeOfFacetInferredForCollectionWithGenericCollectionReturnType() {
- class Order {
- }
- class Customer {
- @SuppressWarnings("unused")
- public Collection<Order> getOrders() {
- return null;
- }
- }
- final Method collectionAccessorMethod = findMethod(Customer.class, "getOrders");
-
- facetFactory.process(new ProcessMethodContext(Customer.class, null, null, collectionAccessorMethod, methodRemover, facetedMethod));
-
- final Facet facet = facetedMethod.getFacet(TypeOfFacet.class);
- assertNotNull(facet);
- assertTrue(facet instanceof TypeOfFacetInferredFromGenerics);
- final TypeOfFacetInferredFromGenerics typeOfFacetInferredFromGenerics = (TypeOfFacetInferredFromGenerics) facet;
- assertEquals(Order.class, typeOfFacetInferredFromGenerics.value());
-
- }
-
- public void testTypeOfFacetInferredForActionWithJavaUtilListReturnType() {
- class Order {
- }
- class Customer {
- // rawTypes is intentional here
- @SuppressWarnings({ "unused", "rawtypes" })
- @TypeOf(Order.class)
- public List someAction() {
- return null;
- }
- }
- final Method actionMethod = findMethod(Customer.class, "someAction");
-
- facetFactory.process(new ProcessMethodContext(Customer.class, null, null, actionMethod, methodRemover, facetedMethod));
-
- final Facet facet = facetedMethod.getFacet(TypeOfFacet.class);
- assertNotNull(facet);
- assertTrue(facet instanceof TypeOfFacetOnCollectionAnnotation);
- final TypeOfFacetOnCollectionAnnotation typeOfFacetOnCollectionAnnotation = (TypeOfFacetOnCollectionAnnotation) facet;
- assertEquals(Order.class, typeOfFacetOnCollectionAnnotation.value());
-
- assertNoMethodsRemoved();
- }
-
- public void testTypeOfFacetInferredForCollectionWithJavaUtilListReturnType() {
- class Order {
- }
- class Customer {
- // rawTypes is intentional here
- @SuppressWarnings({ "unused", "rawtypes" })
- @TypeOf(Order.class)
- public List getOrders() {
- return null;
- }
- }
- final Method accessorMethod = findMethod(Customer.class, "getOrders");
-
- facetFactory.process(new ProcessMethodContext(Customer.class, null, null, accessorMethod, methodRemover, facetedMethod));
-
- final Facet facet = facetedMethod.getFacet(TypeOfFacet.class);
- assertNotNull(facet);
- assertTrue(facet instanceof TypeOfFacetOnCollectionAnnotation);
- final TypeOfFacetOnCollectionAnnotation typeOfFacetOnCollectionAnnotation = (TypeOfFacetOnCollectionAnnotation) facet;
- assertEquals(Order.class, typeOfFacetOnCollectionAnnotation.value());
-
- assertNoMethodsRemoved();
- }
-
- public void testTypeOfFacetInferredForActionWithJavaUtilSetReturnType() {
- class Order {
- }
- class Customer {
- @SuppressWarnings("unused")
- @TypeOf(Order.class)
- public Set someAction() {
- return null;
- }
- }
- final Method actionMethod = findMethod(Customer.class, "someAction");
-
- facetFactory.process(new ProcessMethodContext(Customer.class, null, null, actionMethod, methodRemover, facetedMethod));
-
- final Facet facet = facetedMethod.getFacet(TypeOfFacet.class);
- assertNotNull(facet);
- assertTrue(facet instanceof TypeOfFacetOnCollectionAnnotation);
- final TypeOfFacetOnCollectionAnnotation typeOfFacetOnCollectionAnnotation = (TypeOfFacetOnCollectionAnnotation) facet;
- assertEquals(Order.class, typeOfFacetOnCollectionAnnotation.value());
-
- assertNoMethodsRemoved();
- }
-
- public void testTypeOfFacetInferredForCollectionWithJavaUtilSetReturnType() {
- class Order {
- }
- class Customer {
- @SuppressWarnings("unused")
- @TypeOf(Order.class)
- public Set getOrders() {
- return null;
- }
- }
- final Method accessorMethod = findMethod(Customer.class, "getOrders");
-
- facetFactory.process(new ProcessMethodContext(Customer.class, null, null, accessorMethod, methodRemover, facetedMethod));
-
- final Facet facet = facetedMethod.getFacet(TypeOfFacet.class);
- assertNotNull(facet);
- assertTrue(facet instanceof TypeOfFacetOnCollectionAnnotation);
- final TypeOfFacetOnCollectionAnnotation typeOfFacetOnCollectionAnnotation = (TypeOfFacetOnCollectionAnnotation) facet;
- assertEquals(Order.class, typeOfFacetOnCollectionAnnotation.value());
-
- assertNoMethodsRemoved();
- }
-
- public void testTypeOfFacetInferredForActionWithArrayReturnType() {
- class Order {
- }
- class Customer {
- @SuppressWarnings("unused")
- public Order[] someAction() {
- return null;
- }
- }
- final Method actionMethod = findMethod(Customer.class, "someAction");
-
- facetFactory.process(new ProcessMethodContext(Customer.class, null, null, actionMethod, methodRemover, facetedMethod));
-
- final Facet facet = facetedMethod.getFacet(TypeOfFacet.class);
- assertNotNull(facet);
- assertTrue(facet instanceof TypeOfFacetInferredFromArray);
- final TypeOfFacetInferredFromArray typeOfFacetInferredFromArray = (TypeOfFacetInferredFromArray) facet;
- assertEquals(Order.class, typeOfFacetInferredFromArray.value());
-
- assertNoMethodsRemoved();
- }
-
- public void testTypeOfFacetIsInferredForCollectionFromOrderArray() {
- class Order {
- }
- class Customer {
- @SuppressWarnings("unused")
- public Order[] getOrders() {
- return null;
- }
- }
- final Method collectionAccessorMethod = findMethod(Customer.class, "getOrders");
-
- facetFactory.process(new ProcessMethodContext(Customer.class, null, null, collectionAccessorMethod, methodRemover, facetedMethod));
-
- final Facet facet = facetedMethod.getFacet(TypeOfFacet.class);
- assertNotNull(facet);
- assertTrue(facet instanceof TypeOfFacetInferredFromArray);
- final TypeOfFacetInferredFromArray typeOfFacetInferredFromArray = (TypeOfFacetInferredFromArray) facet;
- assertEquals(Order.class, typeOfFacetInferredFromArray.value());
-
- }
-
- public void testTypeOfAnnotationIgnoredForActionIfReturnTypeIsntACollectionType() {
- class Order {
- }
- class Customer {
- @SuppressWarnings("unused")
- @TypeOf(Order.class)
- public Customer someAction() {
- return null;
- }
- }
- final Method actionMethod = findMethod(Customer.class, "someAction");
-
- facetFactory.process(new ProcessMethodContext(Customer.class, null, null, actionMethod, methodRemover, facetedMethod));
-
- assertNull(facetedMethod.getFacet(TypeOfFacet.class));
-
- assertNoMethodsRemoved();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/74e1f371/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/CssClassFaFacetAbstractTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/CssClassFaFacetAbstractTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/CssClassFaFacetAbstractTest.java
index d0051b9..23d5083 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/CssClassFaFacetAbstractTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/CssClassFaFacetAbstractTest.java
@@ -11,18 +11,17 @@ public class CssClassFaFacetAbstractTest {
@Test
public void present() throws Exception {
- assertThat(CssClassFaFacetAbstract.sanitize("fa foo"), is("fa foo"));
+ assertThat(CssClassFaFacetAbstract.sanitize("fa foo"), is("fa fa-fw foo"));
}
@Test
public void presentAtEnd() throws Exception {
- assertThat(CssClassFaFacetAbstract.sanitize("foo fa "), is("foo fa "));
+ assertThat(CssClassFaFacetAbstract.sanitize("foo fa "), is("fa fa-fw foo"));
}
@Test
public void missing() throws Exception {
- assertThat(CssClassFaFacetAbstract.sanitize("foo"), is("fa foo"));
+ assertThat(CssClassFaFacetAbstract.sanitize("foo"), is("fa fa-fw foo"));
}
-
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/74e1f371/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/audited/annotation/DomainObjectAnnotationFacetFactoryTest_forAuditable.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/audited/annotation/DomainObjectAnnotationFacetFactoryTest_forAuditable.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/audited/annotation/DomainObjectAnnotationFacetFactoryTest_forAuditable.java
deleted file mode 100644
index d023fbc..0000000
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/audited/annotation/DomainObjectAnnotationFacetFactoryTest_forAuditable.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.isis.core.metamodel.facets.object.audited.annotation;
-
-import org.apache.isis.applib.annotation.Audited;
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
-import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext;
-import org.apache.isis.core.metamodel.facets.object.audit.AuditableFacet;
-import org.apache.isis.core.metamodel.facets.object.audit.annotation.AuditableFacetForAuditedAnnotation;
-import org.apache.isis.core.metamodel.facets.object.domainobject.DomainObjectAnnotationFacetFactory;
-
-public class DomainObjectAnnotationFacetFactoryTest_forAuditable extends AbstractFacetFactoryTest {
-
- private DomainObjectAnnotationFacetFactory facetFactory;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
-
- facetFactory = new DomainObjectAnnotationFacetFactory();
- }
-
- @Override
- protected void tearDown() throws Exception {
- facetFactory = null;
- super.tearDown();
- }
-
- public void testAnnotationPickedUpOnClass() {
-
- @Audited
- class Customer {
- }
-
- facetFactory.process(new ProcessClassContext(Customer.class, null, methodRemover, facetHolder));
-
- final Facet facet = facetHolder.getFacet(AuditableFacet.class);
- assertNotNull(facet);
- assertTrue(facet instanceof AuditableFacetForAuditedAnnotation);
-
- assertNoMethodsRemoved();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/74e1f371/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
index 36940e9..1924f6b 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
@@ -24,7 +24,6 @@ import org.jmock.Expectations;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Test;
import org.apache.isis.applib.annotation.Audited;
import org.apache.isis.applib.annotation.DomainObject;
@@ -38,18 +37,32 @@ import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryJUnit4TestCase;
import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext;
import org.apache.isis.core.metamodel.facets.object.audit.AuditableFacet;
-import org.apache.isis.core.metamodel.facets.object.audit.annotation.AuditableFacetForAuditedAnnotation;
import org.apache.isis.core.metamodel.facets.object.autocomplete.AutoCompleteFacet;
+import org.apache.isis.core.metamodel.facets.object.domainobject.auditing.AuditableFacetForAuditedAnnotation;
+import org.apache.isis.core.metamodel.facets.object.domainobject.auditing.AuditableFacetForDomainObjectAnnotation;
+import org.apache.isis.core.metamodel.facets.object.domainobject.auditing.AuditableFacetForDomainObjectAnnotationAsConfigured;
+import org.apache.isis.core.metamodel.facets.object.domainobject.auditing.AuditableFacetFromConfiguration;
+import org.apache.isis.core.metamodel.facets.object.domainobject.autocomplete.AutoCompleteFacetForDomainObjectAnnotation;
+import org.apache.isis.core.metamodel.facets.object.domainobject.choices.ChoicesFacetForDomainObjectAnnotation;
+import org.apache.isis.core.metamodel.facets.object.domainobject.editing.ImmutableFacetForDomainObjectAnnotation;
+import org.apache.isis.core.metamodel.facets.object.domainobject.editing.ImmutableFacetFromConfiguration;
+import org.apache.isis.core.metamodel.facets.object.domainobject.objectspecid.ObjectSpecIdFacetForDomainObjectAnnotation;
+import org.apache.isis.core.metamodel.facets.object.domainobject.publishing.PublishedObjectFacetForDomainObjectAnnotation;
+import org.apache.isis.core.metamodel.facets.object.domainobject.publishing.PublishedObjectFacetForDomainObjectAnnotationAsConfigured;
+import org.apache.isis.core.metamodel.facets.object.domainobject.publishing.PublishedObjectFacetForPublishedObjectAnnotation;
+import org.apache.isis.core.metamodel.facets.object.domainobject.publishing.PublishedObjectFacetFromConfiguration;
+import org.apache.isis.core.metamodel.facets.object.domainobject.recreatable.RecreatableObjectFacetForDomainObjectAnnotation;
import org.apache.isis.core.metamodel.facets.object.immutable.ImmutableFacet;
import org.apache.isis.core.metamodel.facets.object.immutable.immutableannot.ImmutableFacetForImmutableAnnotation;
import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet;
import org.apache.isis.core.metamodel.facets.object.publishedobject.PublishedObjectFacet;
-import org.apache.isis.core.metamodel.facets.object.publishedobject.annotation.PublishedObjectFacetForPublishedObjectAnnotation;
+import org.apache.isis.core.metamodel.facets.object.publishedobject.PublishedObjectFacetAbstract;
import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
import org.apache.isis.core.metamodel.facets.propparam.choices.ChoicesFacet;
import org.apache.isis.core.metamodel.spec.ObjectSpecId;
import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.notNullValue;
import static org.hamcrest.Matchers.instanceOf;
import static org.junit.Assert.assertThat;
@@ -128,7 +141,7 @@ public class DomainObjectAnnotationFacetFactoryTest extends AbstractFacetFactory
allowingConfigurationToReturn("isis.services.audit.objects", "all");
- facetFactory.process(new ProcessClassContext(HasTransactionId.class, null, mockMethodRemover, facetHolder));
+ facetFactory.processAuditing(new ProcessClassContext(HasTransactionId.class, null, mockMethodRemover, facetHolder));
final Facet facet = facetHolder.getFacet(AuditableFacet.class);
Assert.assertNull(facet);
@@ -142,10 +155,11 @@ public class DomainObjectAnnotationFacetFactoryTest extends AbstractFacetFactory
public void configured_value_set_to_all() {
allowingConfigurationToReturn("isis.services.audit.objects", "all");
- facetFactory.process(new ProcessClassContext(Customer.class, null, mockMethodRemover, facetHolder));
+ facetFactory.processAuditing(new ProcessClassContext(Customer.class, null, mockMethodRemover, facetHolder));
final Facet facet = facetHolder.getFacet(AuditableFacet.class);
- Assert.assertTrue(facet instanceof AuditableFacetForDomainObjectAnnotationAsConfigured);
+ assertThat(facet, is(notNullValue()));
+ Assert.assertTrue(facet instanceof AuditableFacetFromConfiguration);
expectNoMethodsRemoved();
}
@@ -339,7 +353,7 @@ public class DomainObjectAnnotationFacetFactoryTest extends AbstractFacetFactory
final Facet facet = facetHolder.getFacet(PublishedObjectFacet.class);
Assert.assertNotNull(facet);
- Assert.assertTrue(facet instanceof PublishedObjectFacetForDomainObjectAnnotationAsConfigured);
+ Assert.assertTrue(facet instanceof PublishedObjectFacetFromConfiguration);
expectNoMethodsRemoved();
}
@@ -429,8 +443,8 @@ public class DomainObjectAnnotationFacetFactoryTest extends AbstractFacetFactory
final PublishedObject.PayloadFactory payloadFactory = ((PublishedObjectFacetForDomainObjectAnnotationAsConfigured) facet).value();
- assertThat(payloadFactory, instanceOf(PublishedObjectFacetForDomainObjectAnnotation.LegacyAdapter.class));
- final PublishedObjectFacetForDomainObjectAnnotation.LegacyAdapter legacyAdapter = (PublishedObjectFacetForDomainObjectAnnotation.LegacyAdapter) payloadFactory;
+ assertThat(payloadFactory, instanceOf(PublishedObjectFacetAbstract.LegacyAdapter.class));
+ final PublishedObjectFacetAbstract.LegacyAdapter legacyAdapter = (PublishedObjectFacetAbstract.LegacyAdapter) payloadFactory;
final PublishingPayloadFactoryForObject specifiedPayloadFactory = legacyAdapter.getPayloadFactory();
assertThat(specifiedPayloadFactory, instanceOf(CustomerPayloadFactory.class));
@@ -699,7 +713,7 @@ public class DomainObjectAnnotationFacetFactoryTest extends AbstractFacetFactory
final Facet facet = facetHolder.getFacet(ImmutableFacet.class);
Assert.assertNotNull(facet);
- Assert.assertTrue(facet instanceof ImmutableFacetForDomainObjectAnnotationAsConfigured);
+ Assert.assertTrue(facet instanceof ImmutableFacetFromConfiguration);
expectNoMethodsRemoved();
}
@@ -725,7 +739,6 @@ public class DomainObjectAnnotationFacetFactoryTest extends AbstractFacetFactory
ignoringConfiguration();
}
- @Ignore // processing is actually still in ImmutableFacetFactory
@Test
public void has_annotation() {
@@ -739,7 +752,6 @@ public class DomainObjectAnnotationFacetFactoryTest extends AbstractFacetFactory
expectNoMethodsRemoved();
}
- @Ignore // processing is actually still in ImmutableFacetFactory
@Test
public void does_not_have_annotation() {
@@ -797,13 +809,12 @@ public class DomainObjectAnnotationFacetFactoryTest extends AbstractFacetFactory
@Test
public void irrespective_of_configured_value() {
- allowingConfigurationToReturn("isis.services.audit.objects", null);
+ allowingConfigurationToReturn("isis.objects.editing", "false");
facetFactory.process(new ProcessClassContext(CustomerWithDomainObjectAndEditingSetToEnabled.class, null, mockMethodRemover, facetHolder));
- final Facet facet = facetHolder.getFacet(AuditableFacet.class);
- Assert.assertNotNull(facet);
- Assert.assertTrue(facet instanceof AuditableFacetForDomainObjectAnnotation);
+ final Facet facet = facetHolder.getFacet(ImmutableFacet.class);
+ Assert.assertNull(facet);
expectNoMethodsRemoved();
}
@@ -814,12 +825,13 @@ public class DomainObjectAnnotationFacetFactoryTest extends AbstractFacetFactory
@Test
public void irrespective_of_configured_value() {
- allowingConfigurationToReturn("isis.objects.editing", "all");
+ allowingConfigurationToReturn("isis.objects.editing", "true");
facetFactory.process(new ProcessClassContext(CustomerWithDomainObjectAndEditingSetToDisabled.class, null, mockMethodRemover, facetHolder));
- final Facet facet = facetHolder.getFacet(AuditableFacet.class);
- Assert.assertNull(facet);
+ final Facet facet = facetHolder.getFacet(ImmutableFacet.class);
+ Assert.assertNotNull(facet);
+ Assert.assertTrue(facet instanceof ImmutableFacetForDomainObjectAnnotation);
expectNoMethodsRemoved();
}
http://git-wip-us.apache.org/repos/asf/isis/blob/74e1f371/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest_immutable.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest_immutable.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest_immutable.java
new file mode 100644
index 0000000..9d5c7bc
--- /dev/null
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest_immutable.java
@@ -0,0 +1,125 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.isis.core.metamodel.facets.object.domainobject;
+
+import org.apache.isis.applib.annotation.Immutable;
+import org.apache.isis.applib.annotation.When;
+import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
+import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext;
+import org.apache.isis.core.metamodel.facets.object.immutable.ImmutableFacet;
+import org.apache.isis.core.metamodel.facets.object.immutable.immutableannot.ImmutableFacetForImmutableAnnotation;
+
+public class DomainObjectAnnotationFacetFactoryTest_immutable extends AbstractFacetFactoryTest {
+
+ private DomainObjectAnnotationFacetFactory facetFactory;
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ facetFactory = new DomainObjectAnnotationFacetFactory();
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ facetFactory = null;
+ super.tearDown();
+ }
+
+ public void testImmutableAnnotationPickedUpOnClassAndDefaultsToAlways() {
+ @Immutable
+ class Customer {
+ }
+
+ facetFactory.processEditing(new ProcessClassContext(Customer.class, methodRemover, facetedMethod));
+
+ final Facet facet = facetedMethod.getFacet(ImmutableFacet.class);
+ assertNotNull(facet);
+ assertTrue(facet instanceof ImmutableFacetForImmutableAnnotation);
+ final ImmutableFacetForImmutableAnnotation immutableFacetAnnotation = (ImmutableFacetForImmutableAnnotation) facet;
+ assertEquals(When.ALWAYS, immutableFacetAnnotation.when());
+
+ assertNoMethodsRemoved();
+ }
+
+ public void testImmutableAnnotationAlwaysPickedUpOnClass() {
+ @Immutable(When.ALWAYS)
+ class Customer {
+ }
+
+ facetFactory.processEditing(new ProcessClassContext(Customer.class, methodRemover, facetedMethod));
+
+ final Facet facet = facetedMethod.getFacet(ImmutableFacet.class);
+ assertNotNull(facet);
+ assertTrue(facet instanceof ImmutableFacetForImmutableAnnotation);
+ final ImmutableFacetForImmutableAnnotation immutableFacetAnnotation = (ImmutableFacetForImmutableAnnotation) facet;
+ assertEquals(When.ALWAYS, immutableFacetAnnotation.when());
+
+ assertNoMethodsRemoved();
+ }
+
+ public void testImmutableAnnotationNeverPickedUpOnClass() {
+ @Immutable(When.NEVER)
+ class Customer {
+ }
+
+ facetFactory.processEditing(new ProcessClassContext(Customer.class, methodRemover, facetedMethod));
+
+ final Facet facet = facetedMethod.getFacet(ImmutableFacet.class);
+ final ImmutableFacetForImmutableAnnotation immutableFacetAnnotation = (ImmutableFacetForImmutableAnnotation) facet;
+ assertEquals(When.NEVER, immutableFacetAnnotation.when());
+
+ assertNoMethodsRemoved();
+ }
+
+ public void testImmutableAnnotationOncePersistedPickedUpOnClass() {
+ @Immutable(When.ONCE_PERSISTED)
+ class Customer {
+ }
+
+ facetFactory.processEditing(new ProcessClassContext(Customer.class, methodRemover, facetedMethod));
+
+ final Facet facet = facetedMethod.getFacet(ImmutableFacet.class);
+ assertNotNull(facet);
+ assertTrue(facet instanceof ImmutableFacetForImmutableAnnotation);
+ final ImmutableFacetForImmutableAnnotation immutableFacetAnnotation = (ImmutableFacetForImmutableAnnotation) facet;
+ assertEquals(When.ONCE_PERSISTED, immutableFacetAnnotation.when());
+
+ assertNoMethodsRemoved();
+ }
+
+ public void testImmutableAnnotationUntilPersistedPickedUpOnClass() {
+ @Immutable(When.UNTIL_PERSISTED)
+ class Customer {
+ }
+
+ facetFactory.processEditing(new ProcessClassContext(Customer.class, methodRemover, facetedMethod));
+
+ final Facet facet = facetedMethod.getFacet(ImmutableFacet.class);
+ assertNotNull(facet);
+ assertTrue(facet instanceof ImmutableFacetForImmutableAnnotation);
+ final ImmutableFacetForImmutableAnnotation immutableFacetAnnotation = (ImmutableFacetForImmutableAnnotation) facet;
+ assertEquals(When.UNTIL_PERSISTED, immutableFacetAnnotation.when());
+
+ assertNoMethodsRemoved();
+ }
+
+}