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 2011/01/17 10:27:01 UTC

svn commit: r1059826 [6/8] - in /incubator/isis/trunk: alternatives/objectstore/sql/persistor/src/main/java/org/apache/isis/alternatives/objectstore/sql/auto/ alternatives/progmodel/groovy/metamodel/src/main/java/org/apache/isis/progmodel/groovy/metamo...

Modified: incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/object/value/ValueFacetFactoryTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/object/value/ValueFacetFactoryTest.java?rev=1059826&r1=1059825&r2=1059826&view=diff
==============================================================================
--- incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/object/value/ValueFacetFactoryTest.java (original)
+++ incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/object/value/ValueFacetFactoryTest.java Mon Jan 17 09:26:54 2011
@@ -27,7 +27,9 @@ import org.apache.isis.applib.adapters.E
 import org.apache.isis.applib.adapters.Parser;
 import org.apache.isis.applib.annotation.Value;
 import org.apache.isis.core.commons.config.IsisConfigurationDefault;
+import org.apache.isis.core.metamodel.facetapi.FacetHolderImpl;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext;
 import org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacet;
 import org.apache.isis.core.metamodel.facets.object.ident.title.TitleFacet;
 import org.apache.isis.core.metamodel.facets.object.immutable.ImmutableFacet;
@@ -36,7 +38,8 @@ import org.apache.isis.core.metamodel.fa
 import org.apache.isis.core.metamodel.facets.propparam.typicallength.TypicalLengthFacet;
 import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
 import org.apache.isis.core.progmodel.facets.AbstractFacetFactoryTest;
-import org.apache.isis.core.progmodel.facets.object.defaults.DefaultedFacet;
+import org.apache.isis.core.progmodel.facets.ProgrammableMethodRemover;
+import org.apache.isis.core.progmodel.facets.defaults.DefaultedFacet;
 import org.apache.isis.core.progmodel.facets.object.ebc.EqualByContentFacet;
 
 public class ValueFacetFactoryTest extends AbstractFacetFactoryTest {
@@ -84,24 +87,24 @@ public class ValueFacetFactoryTest exten
 
     public void testFacetPickedUp() {
 
-        facetFactory.process(MyParseableUsingParserName2.class, methodRemover, facetHolder);
+        facetFactory.process(new ProcessClassContext(MyParseableUsingParserName2.class, methodRemover, facetedMethod));
 
-        final ValueFacet facet = facetHolder.getFacet(ValueFacet.class);
+        final ValueFacet facet = facetedMethod.getFacet(ValueFacet.class);
         assertNotNull(facet);
         assertTrue(facet instanceof ValueFacetAnnotation);
     }
 
     public void testFacetFacetHolderStored() {
 
-        facetFactory.process(MyParseableUsingParserName2.class, methodRemover, facetHolder);
+        facetFactory.process(new ProcessClassContext(MyParseableUsingParserName2.class, methodRemover, facetedMethod));
 
-        final ValueFacetAnnotation valueFacet = (ValueFacetAnnotation) facetHolder.getFacet(ValueFacet.class);
-        assertEquals(facetHolder, valueFacet.getFacetHolder());
+        final ValueFacetAnnotation valueFacet = (ValueFacetAnnotation) facetedMethod.getFacet(ValueFacet.class);
+        assertEquals(facetedMethod, valueFacet.getFacetHolder());
     }
 
     public void testNoMethodsRemoved() {
 
-        facetFactory.process(MyParseableUsingParserName2.class, methodRemover, facetHolder);
+        facetFactory.process(new ProcessClassContext(MyParseableUsingParserName2.class, methodRemover, facetedMethod));
 
         assertNoMethodsRemoved();
     }
@@ -119,9 +122,9 @@ public class ValueFacetFactoryTest exten
 
     public void testPickUpSemanticsProviderViaNameAndInstallsValueFacet() {
 
-        facetFactory.process(MyValueSemanticsProviderUsingSemanticsProviderName.class, methodRemover, facetHolder);
+        facetFactory.process(new ProcessClassContext(MyValueSemanticsProviderUsingSemanticsProviderName.class, methodRemover, facetedMethod));
 
-        assertNotNull(facetHolder.getFacet(ValueFacet.class));
+        assertNotNull(facetedMethod.getFacet(ValueFacet.class));
     }
 
     @Value(semanticsProviderClass = MyValueSemanticsProviderUsingSemanticsProviderClass.class)
@@ -137,9 +140,9 @@ public class ValueFacetFactoryTest exten
 
     public void testPickUpSemanticsProviderViaClassAndInstallsValueFacet() {
 
-        facetFactory.process(MyValueSemanticsProviderUsingSemanticsProviderClass.class, methodRemover, facetHolder);
+        facetFactory.process(new ProcessClassContext(MyValueSemanticsProviderUsingSemanticsProviderClass.class, methodRemover, facetedMethod));
 
-        assertNotNull(facetHolder.getFacet(ValueFacet.class));
+        assertNotNull(facetedMethod.getFacet(ValueFacet.class));
     }
 
     public void testValueSemanticsProviderMustBeAValueSemanticsProvider() {
@@ -160,10 +163,10 @@ public class ValueFacetFactoryTest exten
     }
 
     public void testValueSemanticsProviderMustHaveANoArgConstructor() {
-        facetFactory.process(MyValueSemanticsProviderWithoutNoArgConstructor.class, methodRemover, facetHolder);
+        facetFactory.process(new ProcessClassContext(MyValueSemanticsProviderWithoutNoArgConstructor.class, methodRemover, facetedMethod));
 
         // the fact that we have an immutable means that the provider wasn't picked up
-        assertNotNull(facetHolder.getFacet(ImmutableFacet.class));
+        assertNotNull(facetedMethod.getFacet(ImmutableFacet.class));
     }
 
     @Value(semanticsProviderClass = MyValueSemanticsProviderWithoutPublicNoArgConstructor.class)
@@ -182,15 +185,15 @@ public class ValueFacetFactoryTest exten
     }
 
     public void testValueSemanticsProviderMustHaveAPublicNoArgConstructor() {
-        facetFactory.process(MyValueSemanticsProviderWithoutPublicNoArgConstructor.class, methodRemover, facetHolder);
+        facetFactory.process(new ProcessClassContext(MyValueSemanticsProviderWithoutPublicNoArgConstructor.class, methodRemover, facetedMethod));
 
         // the fact that we have an immutable means that the provider wasn't picked up
-        assertNotNull(facetHolder.getFacet(ImmutableFacet.class));
+        assertNotNull(facetedMethod.getFacet(ImmutableFacet.class));
     }
 
     public void testValueSemanticsProviderThatIsNotAParserDoesNotInstallParseableFacet() {
-        facetFactory.process(MyValueSemanticsProviderUsingSemanticsProviderClass.class, methodRemover, facetHolder);
-        assertNull(facetHolder.getFacet(ParseableFacet.class));
+        facetFactory.process(new ProcessClassContext(MyValueSemanticsProviderUsingSemanticsProviderClass.class, methodRemover, facetedMethod));
+        assertNull(facetedMethod.getFacet(ParseableFacet.class));
     }
 
     @Value(semanticsProviderName = "org.apache.isis.core.progmodel.facets.object.value.ValueFacetFactoryTest$MyValueSemanticsProviderThatIsAParser")
@@ -232,23 +235,23 @@ public class ValueFacetFactoryTest exten
     }
 
     public void testValueSemanticsProviderThatIsAParserInstallsParseableFacet() {
-        facetFactory.process(MyValueSemanticsProviderThatIsAParser.class, methodRemover, facetHolder);
-        assertNotNull(facetHolder.getFacet(ParseableFacet.class));
+        facetFactory.process(new ProcessClassContext(MyValueSemanticsProviderThatIsAParser.class, methodRemover, facetedMethod));
+        assertNotNull(facetedMethod.getFacet(ParseableFacet.class));
     }
 
     public void testValueSemanticsProviderThatIsAParserInstallsTitleFacet() {
-        facetFactory.process(MyValueSemanticsProviderThatIsAParser.class, methodRemover, facetHolder);
-        assertNotNull(facetHolder.getFacet(TitleFacet.class));
+        facetFactory.process(new ProcessClassContext(MyValueSemanticsProviderThatIsAParser.class, methodRemover, facetedMethod));
+        assertNotNull(facetedMethod.getFacet(TitleFacet.class));
     }
 
     public void testValueSemanticsProviderThatIsAParserInstallsTypicalLengthFacet() {
-        facetFactory.process(MyValueSemanticsProviderThatIsAParser.class, methodRemover, facetHolder);
-        assertNotNull(facetHolder.getFacet(TypicalLengthFacet.class));
+        facetFactory.process(new ProcessClassContext(MyValueSemanticsProviderThatIsAParser.class, methodRemover, facetedMethod));
+        assertNotNull(facetedMethod.getFacet(TypicalLengthFacet.class));
     }
 
     public void testValueSemanticsProviderThatIsNotADefaultsProviderDoesNotInstallDefaultedFacet() {
-        facetFactory.process(MyValueSemanticsProviderUsingSemanticsProviderClass.class, methodRemover, facetHolder);
-        assertNull(facetHolder.getFacet(DefaultedFacet.class));
+        facetFactory.process(new ProcessClassContext(MyValueSemanticsProviderUsingSemanticsProviderClass.class, methodRemover, facetedMethod));
+        assertNull(facetedMethod.getFacet(DefaultedFacet.class));
     }
 
     @Value(semanticsProviderName = "org.apache.isis.core.progmodel.facets.object.value.ValueFacetFactoryTest$MyValueSemanticsProviderThatIsADefaultsProvider")
@@ -269,15 +272,15 @@ public class ValueFacetFactoryTest exten
     }
 
     public void testValueSemanticsProviderThatIsADefaultsProviderInstallsDefaultedFacet() {
-        facetFactory.process(MyValueSemanticsProviderThatIsADefaultsProvider.class, methodRemover, facetHolder);
-        assertNotNull(facetHolder.getFacet(DefaultedFacet.class));
+        facetFactory.process(new ProcessClassContext(MyValueSemanticsProviderThatIsADefaultsProvider.class, methodRemover, facetedMethod));
+        assertNotNull(facetedMethod.getFacet(DefaultedFacet.class));
     }
 
     public void testValueSemanticsProviderThatIsNotAnEncoderDecoderDoesNotInstallEncodeableFacet() {
 
-        facetFactory.process(MyValueSemanticsProviderUsingSemanticsProviderClass.class, methodRemover, facetHolder);
+        facetFactory.process(new ProcessClassContext(MyValueSemanticsProviderUsingSemanticsProviderClass.class, methodRemover, facetedMethod));
 
-        assertNull(facetHolder.getFacet(EncodableFacet.class));
+        assertNull(facetedMethod.getFacet(EncodableFacet.class));
     }
 
     @Value(semanticsProviderName = "org.apache.isis.core.progmodel.facets.object.value.ValueFacetFactoryTest$MyValueSemanticsProviderThatIsAnEncoderDecoder")
@@ -304,9 +307,9 @@ public class ValueFacetFactoryTest exten
 
     public void testValueSemanticsProviderThatIsAnEncoderInstallsEncodeableFacet() {
 
-        facetFactory.process(MyValueSemanticsProviderThatIsAnEncoderDecoder.class, methodRemover, facetHolder);
+        facetFactory.process(new ProcessClassContext(MyValueSemanticsProviderThatIsAnEncoderDecoder.class, methodRemover, facetedMethod));
 
-        assertNotNull(facetHolder.getFacet(EncodableFacet.class));
+        assertNotNull(facetedMethod.getFacet(EncodableFacet.class));
     }
 
     public void testImmutableFacetsIsInstalledIfNoSemanticsProviderSpecified() {
@@ -315,9 +318,9 @@ public class ValueFacetFactoryTest exten
         class MyNumberImmutableDefault {
         }
 
-        facetFactory.process(MyNumberImmutableDefault.class, methodRemover, facetHolder);
+        facetFactory.process(new ProcessClassContext(MyNumberImmutableDefault.class, methodRemover, facetedMethod));
 
-        final ImmutableFacet facet = facetHolder.getFacet(ImmutableFacet.class);
+        final ImmutableFacet facet = facetedMethod.getFacet(ImmutableFacet.class);
         assertNotNull(facet);
     }
 
@@ -335,9 +338,9 @@ public class ValueFacetFactoryTest exten
 
     public void testImmutableFacetsIsInstalledIfSpecifiesImmutable() {
 
-        facetFactory.process(MyValueSemanticsProviderThatSpecifiesImmutableSemantic.class, methodRemover, facetHolder);
+        facetFactory.process(new ProcessClassContext(MyValueSemanticsProviderThatSpecifiesImmutableSemantic.class, methodRemover, facetedMethod));
 
-        final ImmutableFacet facet = facetHolder.getFacet(ImmutableFacet.class);
+        final ImmutableFacet facet = facetedMethod.getFacet(ImmutableFacet.class);
         assertNotNull(facet);
     }
 
@@ -355,10 +358,9 @@ public class ValueFacetFactoryTest exten
 
     public void testImmutableFacetsIsNotInstalledIfSpecifiesNotImmutable() {
 
-        facetFactory.process(MyValueSemanticsProviderThatSpecifiesNotImmutableSemantic.class, methodRemover,
-            facetHolder);
+        facetFactory.process(new ProcessClassContext(MyValueSemanticsProviderThatSpecifiesNotImmutableSemantic.class, methodRemover, facetedMethod));
 
-        final ImmutableFacet facet = facetHolder.getFacet(ImmutableFacet.class);
+        final ImmutableFacet facet = facetedMethod.getFacet(ImmutableFacet.class);
         assertNull(facet);
     }
 
@@ -368,9 +370,9 @@ public class ValueFacetFactoryTest exten
         class MyNumberEqualByContentDefault {
         }
 
-        facetFactory.process(MyNumberEqualByContentDefault.class, methodRemover, facetHolder);
+        facetFactory.process(new ProcessClassContext(MyNumberEqualByContentDefault.class, methodRemover, facetedMethod));
 
-        final EqualByContentFacet facet = facetHolder.getFacet(EqualByContentFacet.class);
+        final EqualByContentFacet facet = facetedMethod.getFacet(EqualByContentFacet.class);
         assertNotNull(facet);
     }
 
@@ -388,10 +390,9 @@ public class ValueFacetFactoryTest exten
 
     public void testEqualByContentFacetsIsInstalledIfSpecifiesEqualByContent() {
 
-        facetFactory.process(MyValueSemanticsProviderThatSpecifiesEqualByContentSemantic.class, methodRemover,
-            facetHolder);
+        facetFactory.process(new ProcessClassContext(MyValueSemanticsProviderThatSpecifiesEqualByContentSemantic.class, methodRemover, facetedMethod));
 
-        final EqualByContentFacet facet = facetHolder.getFacet(EqualByContentFacet.class);
+        final EqualByContentFacet facet = facetedMethod.getFacet(EqualByContentFacet.class);
         assertNotNull(facet);
     }
 
@@ -409,10 +410,9 @@ public class ValueFacetFactoryTest exten
 
     public void testEqualByContentFacetsIsNotInstalledIfSpecifiesNotEqualByContent() {
 
-        facetFactory.process(MyValueSemanticsProviderThatSpecifiesNotEqualByContentSemantic.class, methodRemover,
-            facetHolder);
+        facetFactory.process(new ProcessClassContext(MyValueSemanticsProviderThatSpecifiesNotEqualByContentSemantic.class, methodRemover, facetedMethod));
 
-        final EqualByContentFacet facet = facetHolder.getFacet(EqualByContentFacet.class);
+        final EqualByContentFacet facet = facetedMethod.getFacet(EqualByContentFacet.class);
         assertNull(facet);
     }
 
@@ -459,11 +459,11 @@ public class ValueFacetFactoryTest exten
             "org.apache.isis.core.progmodel.facets.object.value.ValueFacetFactoryTest$MyValueWithSemanticsProviderSpecifiedUsingConfiguration";
         isisConfigurationDefault.add(ValueSemanticsProviderUtil.SEMANTICS_PROVIDER_NAME_KEY_PREFIX
             + canonical(className) + ValueSemanticsProviderUtil.SEMANTICS_PROVIDER_NAME_KEY_SUFFIX, className);
-        facetFactory.process(MyValueWithSemanticsProviderSpecifiedUsingConfiguration.class, methodRemover, facetHolder);
-        final ValueFacetAbstract facet = (ValueFacetAbstract) facetHolder.getFacet(ValueFacet.class);
+        facetFactory.process(new ProcessClassContext(MyValueWithSemanticsProviderSpecifiedUsingConfiguration.class, methodRemover, facetedMethod));
+        final ValueFacetAbstract facet = (ValueFacetAbstract) facetedMethod.getFacet(ValueFacet.class);
         assertNotNull(facet);
         // should also be a ParserFacet, since the VSP implements Parser
-        final ParseableFacet parseableFacet = facetHolder.getFacet(ParseableFacet.class);
+        final ParseableFacet parseableFacet = facetedMethod.getFacet(ParseableFacet.class);
         assertNotNull(parseableFacet);
     }
 
@@ -509,12 +509,11 @@ public class ValueFacetFactoryTest exten
             "org.apache.isis.core.progmodel.facets.object.value.ValueFacetFactoryTest$NonAnnotatedValueSemanticsProviderSpecifiedUsingConfiguration";
         isisConfigurationDefault.add(ValueSemanticsProviderUtil.SEMANTICS_PROVIDER_NAME_KEY_PREFIX
             + canonical(className) + ValueSemanticsProviderUtil.SEMANTICS_PROVIDER_NAME_KEY_SUFFIX, className);
-        facetFactory.process(NonAnnotatedValueSemanticsProviderSpecifiedUsingConfiguration.class, methodRemover,
-            facetHolder);
-        final ValueFacetAbstract facet = (ValueFacetAbstract) facetHolder.getFacet(ValueFacet.class);
+        facetFactory.process(new ProcessClassContext(NonAnnotatedValueSemanticsProviderSpecifiedUsingConfiguration.class, methodRemover, facetedMethod));
+        final ValueFacetAbstract facet = (ValueFacetAbstract) facetedMethod.getFacet(ValueFacet.class);
         assertNotNull(facet);
         // should also be a ParserFacet, since the VSP implements Parser
-        final ParseableFacet parseableFacet = facetHolder.getFacet(ParseableFacet.class);
+        final ParseableFacet parseableFacet = facetedMethod.getFacet(ParseableFacet.class);
         assertNotNull(parseableFacet);
     }
 

Modified: incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/ordering/actionorder/ActionOrderAnnotationFacetFactoryTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/ordering/actionorder/ActionOrderAnnotationFacetFactoryTest.java?rev=1059826&r1=1059825&r2=1059826&view=diff
==============================================================================
--- incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/ordering/actionorder/ActionOrderAnnotationFacetFactoryTest.java (original)
+++ incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/ordering/actionorder/ActionOrderAnnotationFacetFactoryTest.java Mon Jan 17 09:26:54 2011
@@ -24,9 +24,12 @@ import java.util.List;
 
 import org.apache.isis.applib.annotation.ActionOrder;
 import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.facetapi.FacetHolderImpl;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext;
 import org.apache.isis.core.metamodel.facets.ordering.actionorder.ActionOrderFacet;
 import org.apache.isis.core.progmodel.facets.AbstractFacetFactoryTest;
+import org.apache.isis.core.progmodel.facets.ProgrammableMethodRemover;
 
 
 public class ActionOrderAnnotationFacetFactoryTest extends AbstractFacetFactoryTest {
@@ -60,9 +63,9 @@ public class ActionOrderAnnotationFacetF
         @ActionOrder("foo,bar")
         class Customer {}
 
-        facetFactory.process(Customer.class, methodRemover, facetHolder);
+        facetFactory.process(new ProcessClassContext(Customer.class, methodRemover, facetedMethod));
 
-        final Facet facet = facetHolder.getFacet(ActionOrderFacet.class);
+        final Facet facet = facetedMethod.getFacet(ActionOrderFacet.class);
         assertNotNull(facet);
         assertTrue(facet instanceof ActionOrderFacetAnnotation);
         final ActionOrderFacetAnnotation actionOrderFacetAnnotation = (ActionOrderFacetAnnotation) facet;

Modified: incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/ordering/fieldorder/FieldOrderAnnotationFacetFactoryTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/ordering/fieldorder/FieldOrderAnnotationFacetFactoryTest.java?rev=1059826&r1=1059825&r2=1059826&view=diff
==============================================================================
--- incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/ordering/fieldorder/FieldOrderAnnotationFacetFactoryTest.java (original)
+++ incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/ordering/fieldorder/FieldOrderAnnotationFacetFactoryTest.java Mon Jan 17 09:26:54 2011
@@ -24,9 +24,12 @@ import java.util.List;
 
 import org.apache.isis.applib.annotation.FieldOrder;
 import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.facetapi.FacetHolderImpl;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext;
 import org.apache.isis.core.metamodel.layout.ordermethod.FieldOrderFacet;
 import org.apache.isis.core.progmodel.facets.AbstractFacetFactoryTest;
+import org.apache.isis.core.progmodel.facets.ProgrammableMethodRemover;
 
 
 public class FieldOrderAnnotationFacetFactoryTest extends AbstractFacetFactoryTest {
@@ -60,9 +63,9 @@ public class FieldOrderAnnotationFacetFa
         @FieldOrder("foo,bar")
         class Customer {}
 
-        facetFactory.process(Customer.class, methodRemover, facetHolder);
+        facetFactory.process(new ProcessClassContext(Customer.class, methodRemover, facetedMethod));
 
-        final Facet facet = facetHolder.getFacet(FieldOrderFacet.class);
+        final Facet facet = facetedMethod.getFacet(FieldOrderFacet.class);
         assertNotNull(facet);
         assertTrue(facet instanceof FieldOrderFacetAnnotation);
         final FieldOrderFacetAnnotation fieldOrderFacetAnnotation = (FieldOrderFacetAnnotation) facet;

Modified: incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/ordering/memberorder/DeweyOrderSetTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/ordering/memberorder/DeweyOrderSetTest.java?rev=1059826&r1=1059825&r2=1059826&view=diff
==============================================================================
--- incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/ordering/memberorder/DeweyOrderSetTest.java (original)
+++ incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/ordering/memberorder/DeweyOrderSetTest.java Mon Jan 17 09:26:54 2011
@@ -30,7 +30,7 @@ import org.apache.log4j.LogManager;
 
 import com.google.common.collect.ImmutableList;
 
-import org.apache.isis.core.metamodel.facetedmethod.FacetedMethod;
+import org.apache.isis.core.metamodel.facets.FacetedMethod;
 import org.apache.isis.core.metamodel.layout.OrderSet;
 import org.apache.isis.core.metamodel.layout.memberorderfacet.DeweyOrderSet;
 

Modified: incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/ordering/memberorder/MemberOrderAnnotationFacetFactoryTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/ordering/memberorder/MemberOrderAnnotationFacetFactoryTest.java?rev=1059826&r1=1059825&r2=1059826&view=diff
==============================================================================
--- incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/ordering/memberorder/MemberOrderAnnotationFacetFactoryTest.java (original)
+++ incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/ordering/memberorder/MemberOrderAnnotationFacetFactoryTest.java Mon Jan 17 09:26:54 2011
@@ -26,9 +26,12 @@ import java.util.List;
 
 import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.facetapi.FacetHolderImpl;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext;
 import org.apache.isis.core.metamodel.facets.ordering.MemberOrderFacet;
 import org.apache.isis.core.progmodel.facets.AbstractFacetFactoryTest;
+import org.apache.isis.core.progmodel.facets.ProgrammableMethodRemover;
 
 
 public class MemberOrderAnnotationFacetFactoryTest extends AbstractFacetFactoryTest {
@@ -69,9 +72,9 @@ public class MemberOrderAnnotationFacetF
         }
         final Method method = findMethod(Customer.class, "getFirstName");
 
-        facetFactory.process(Customer.class, method, methodRemover, facetHolder);
+        facetFactory.process(new ProcessMethodContext(Customer.class, method, methodRemover, facetedMethod));
 
-        final Facet facet = facetHolder.getFacet(MemberOrderFacet.class);
+        final Facet facet = facetedMethod.getFacet(MemberOrderFacet.class);
         assertNotNull(facet);
         assertTrue(facet instanceof MemberOrderFacetAnnotation);
         final MemberOrderFacetAnnotation memberOrderFacetAnnotation = (MemberOrderFacetAnnotation) facet;
@@ -94,9 +97,9 @@ public class MemberOrderAnnotationFacetF
         }
         final Method method = findMethod(Customer.class, "getOrders");
 
-        facetFactory.process(Customer.class, method, methodRemover, facetHolder);
+        facetFactory.process(new ProcessMethodContext(Customer.class, method, methodRemover, facetedMethod));
 
-        final Facet facet = facetHolder.getFacet(MemberOrderFacet.class);
+        final Facet facet = facetedMethod.getFacet(MemberOrderFacet.class);
         assertNotNull(facet);
         assertTrue(facet instanceof MemberOrderFacetAnnotation);
         final MemberOrderFacetAnnotation memberOrderFacetAnnotation = (MemberOrderFacetAnnotation) facet;
@@ -114,9 +117,9 @@ public class MemberOrderAnnotationFacetF
         }
         final Method method = findMethod(Customer.class, "someAction");
 
-        facetFactory.process(Customer.class, method, methodRemover, facetHolder);
+        facetFactory.process(new ProcessMethodContext(Customer.class, method, methodRemover, facetedMethod));
 
-        final Facet facet = facetHolder.getFacet(MemberOrderFacet.class);
+        final Facet facet = facetedMethod.getFacet(MemberOrderFacet.class);
         assertNotNull(facet);
         assertTrue(facet instanceof MemberOrderFacetAnnotation);
         final MemberOrderFacetAnnotation memberOrderFacetAnnotation = (MemberOrderFacetAnnotation) facet;

Modified: incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/ordering/memberorder/MemberOrderComparatorTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/ordering/memberorder/MemberOrderComparatorTest.java?rev=1059826&r1=1059825&r2=1059826&view=diff
==============================================================================
--- incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/ordering/memberorder/MemberOrderComparatorTest.java (original)
+++ incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/ordering/memberorder/MemberOrderComparatorTest.java Mon Jan 17 09:26:54 2011
@@ -26,7 +26,7 @@ import junit.framework.TestSuite;
 import org.apache.log4j.Level;
 import org.apache.log4j.LogManager;
 
-import org.apache.isis.core.metamodel.facetedmethod.FacetedMethod;
+import org.apache.isis.core.metamodel.facets.FacetedMethod;
 import org.apache.isis.core.metamodel.layout.memberorderfacet.MemberOrderComparator;
 
 

Modified: incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/propcoll/notpersisted/NotPersistedAnnotationFacetFactoryTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/propcoll/notpersisted/NotPersistedAnnotationFacetFactoryTest.java?rev=1059826&r1=1059825&r2=1059826&view=diff
==============================================================================
--- incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/propcoll/notpersisted/NotPersistedAnnotationFacetFactoryTest.java (original)
+++ incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/propcoll/notpersisted/NotPersistedAnnotationFacetFactoryTest.java Mon Jan 17 09:26:54 2011
@@ -26,9 +26,12 @@ import java.util.List;
 
 import org.apache.isis.applib.annotation.NotPersisted;
 import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.facetapi.FacetHolderImpl;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext;
 import org.apache.isis.core.metamodel.facets.propcoll.notpersisted.NotPersistedFacet;
 import org.apache.isis.core.progmodel.facets.AbstractFacetFactoryTest;
+import org.apache.isis.core.progmodel.facets.ProgrammableMethodRemover;
 
 
 public class NotPersistedAnnotationFacetFactoryTest extends AbstractFacetFactoryTest {
@@ -69,9 +72,9 @@ public class NotPersistedAnnotationFacet
         }
         final Method method = findMethod(Customer.class, "getFirstName");
 
-        facetFactory.process(Customer.class, method, methodRemover, facetHolder);
+        facetFactory.process(new ProcessMethodContext(Customer.class, method, methodRemover, facetedMethod));
 
-        final Facet facet = facetHolder.getFacet(NotPersistedFacet.class);
+        final Facet facet = facetedMethod.getFacet(NotPersistedFacet.class);
         assertNotNull(facet);
         assertTrue(facet instanceof NotPersistedFacetAnnotation);
 
@@ -90,9 +93,9 @@ public class NotPersistedAnnotationFacet
         }
         final Method method = findMethod(Customer.class, "getOrders");
 
-        facetFactory.process(Customer.class, method, methodRemover, facetHolder);
+        facetFactory.process(new ProcessMethodContext(Customer.class, method, methodRemover, facetedMethod));
 
-        final Facet facet = facetHolder.getFacet(NotPersistedFacet.class);
+        final Facet facet = facetedMethod.getFacet(NotPersistedFacet.class);
         assertNotNull(facet);
         assertTrue(facet instanceof NotPersistedFacetAnnotation);
 

Copied: incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/properties/PropertyMethodsFacetFactoryTest.java (from r1056813, incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/properties/PropertyFieldMethodsFacetFactoryTest.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/properties/PropertyMethodsFacetFactoryTest.java?p2=incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/properties/PropertyMethodsFacetFactoryTest.java&p1=incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/properties/PropertyFieldMethodsFacetFactoryTest.java&r1=1056813&r2=1059826&rev=1059826&view=diff
==============================================================================
--- incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/properties/PropertyFieldMethodsFacetFactoryTest.java (original)
+++ incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/properties/PropertyMethodsFacetFactoryTest.java Mon Jan 17 09:26:54 2011
@@ -26,10 +26,11 @@ import java.util.List;
 import org.apache.isis.applib.security.UserMemento;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext;
 import org.apache.isis.core.metamodel.facets.hide.HiddenFacet;
 import org.apache.isis.core.metamodel.facets.naming.describedas.DescribedAsFacet;
 import org.apache.isis.core.metamodel.facets.naming.named.NamedFacet;
-import org.apache.isis.core.metamodel.facets.propcoll.access.PropertyAccessorFacet;
+import org.apache.isis.core.metamodel.facets.propcoll.access.PropertyOrCollectionAccessorFacet;
 import org.apache.isis.core.metamodel.facets.propcoll.notpersisted.NotPersistedFacet;
 import org.apache.isis.core.metamodel.facets.properties.choices.PropertyChoicesFacet;
 import org.apache.isis.core.metamodel.facets.properties.defaults.PropertyDefaultFacet;
@@ -37,52 +38,57 @@ import org.apache.isis.core.metamodel.fa
 import org.apache.isis.core.metamodel.facets.properties.modify.PropertyInitializationFacet;
 import org.apache.isis.core.metamodel.facets.properties.modify.PropertySetterFacet;
 import org.apache.isis.core.progmodel.facets.AbstractFacetFactoryTest;
-import org.apache.isis.core.progmodel.facets.actions.DescribedAsFacetViaMethod;
-import org.apache.isis.core.progmodel.facets.actions.NamedFacetViaMethod;
-import org.apache.isis.core.progmodel.facets.disable.DisableForContextFacet;
-import org.apache.isis.core.progmodel.facets.disable.DisableForContextFacetViaMethod;
-import org.apache.isis.core.progmodel.facets.disable.DisableForSessionFacet;
-import org.apache.isis.core.progmodel.facets.disable.DisableForSessionFacetViaMethod;
-import org.apache.isis.core.progmodel.facets.disable.DisabledFacet;
-import org.apache.isis.core.progmodel.facets.disable.DisabledFacetAlways;
-import org.apache.isis.core.progmodel.facets.hide.HiddenFacetAlways;
-import org.apache.isis.core.progmodel.facets.hide.HideForContextFacet;
-import org.apache.isis.core.progmodel.facets.hide.HideForContextFacetViaMethod;
-import org.apache.isis.core.progmodel.facets.hide.HideForSessionFacet;
-import org.apache.isis.core.progmodel.facets.hide.HideForSessionFacetViaMethod;
-import org.apache.isis.core.progmodel.facets.propcoll.access.PropertyAccessorFacetViaAccessor;
+import org.apache.isis.core.progmodel.facets.members.describedas.staticmethod.DescribedAsFacetViaDescriptionMethodFacetFactory;
+import org.apache.isis.core.progmodel.facets.members.describedas.staticmethod.DescribedAsFacetViaMethod;
+import org.apache.isis.core.progmodel.facets.members.disable.DisableForContextFacet;
+import org.apache.isis.core.progmodel.facets.members.disable.DisableForSessionFacet;
+import org.apache.isis.core.progmodel.facets.members.disable.DisabledFacet;
+import org.apache.isis.core.progmodel.facets.members.disable.forsession.DisableForSessionFacetViaMethod;
+import org.apache.isis.core.progmodel.facets.members.disable.forsession.DisabledFacetViaDisableForSessionMethodFacetFactory;
+import org.apache.isis.core.progmodel.facets.members.disable.method.DisableForContextFacetViaMethod;
+import org.apache.isis.core.progmodel.facets.members.disable.method.DisabledFacetViaDisableMethodFacetFactory;
+import org.apache.isis.core.progmodel.facets.members.disable.staticmethod.DisabledFacetAlways;
+import org.apache.isis.core.progmodel.facets.members.disable.staticmethod.DisabledFacetViaProtectMethodFacetFactory;
+import org.apache.isis.core.progmodel.facets.members.hide.HideForContextFacet;
+import org.apache.isis.core.progmodel.facets.members.hide.HideForSessionFacet;
+import org.apache.isis.core.progmodel.facets.members.hide.forsession.HiddenFacetViaHideForSessionMethodFacetFactory;
+import org.apache.isis.core.progmodel.facets.members.hide.forsession.HideForSessionFacetViaMethod;
+import org.apache.isis.core.progmodel.facets.members.hide.method.HiddenFacetViaHideMethodFacetFactory;
+import org.apache.isis.core.progmodel.facets.members.hide.method.HideForContextFacetViaMethod;
+import org.apache.isis.core.progmodel.facets.members.hide.staticmethod.HiddenFacetAlways;
+import org.apache.isis.core.progmodel.facets.members.hide.staticmethod.HiddenFacetViaAlwaysHideMethodFacetFactory;
+import org.apache.isis.core.progmodel.facets.members.name.staticmethod.NamedFacetViaMethod;
+import org.apache.isis.core.progmodel.facets.members.name.staticmethod.NamedFacetViaNameMethodFacetFactory;
 import org.apache.isis.core.progmodel.facets.propcoll.derived.DerivedFacetInferred;
+import org.apache.isis.core.progmodel.facets.properties.accessor.PropertyAccessorFacetFactory;
+import org.apache.isis.core.progmodel.facets.properties.accessor.PropertyOrCollectionAccessorFacetViaAccessor;
+import org.apache.isis.core.progmodel.facets.properties.choices.PropertyChoicesFacetFactory;
 import org.apache.isis.core.progmodel.facets.properties.choices.PropertyChoicesFacetViaMethod;
+import org.apache.isis.core.progmodel.facets.properties.defaults.PropertyDefaultFacetFactory;
 import org.apache.isis.core.progmodel.facets.properties.defaults.PropertyDefaultFacetViaMethod;
 import org.apache.isis.core.progmodel.facets.properties.modify.PropertyClearFacetViaClearMethod;
 import org.apache.isis.core.progmodel.facets.properties.modify.PropertyClearFacetViaSetterMethod;
 import org.apache.isis.core.progmodel.facets.properties.modify.PropertyInitializationFacetViaSetterMethod;
+import org.apache.isis.core.progmodel.facets.properties.modify.PropertyModifyFacetFactory;
+import org.apache.isis.core.progmodel.facets.properties.modify.PropertySetAndClearFacetFactory;
 import org.apache.isis.core.progmodel.facets.properties.modify.PropertySetterFacetViaModifyMethod;
 import org.apache.isis.core.progmodel.facets.properties.modify.PropertySetterFacetViaSetterMethod;
 import org.apache.isis.core.progmodel.facets.properties.validate.PropertyValidateFacet;
+import org.apache.isis.core.progmodel.facets.properties.validate.PropertyValidateFacetFactory;
 import org.apache.isis.core.progmodel.facets.properties.validate.PropertyValidateFacetViaMethod;
 
 
-public class PropertyFieldMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
-
-    private PropertyMethodsFacetFactory facetFactory;
+public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
 
+
+    /**
+     * TODO: copy for other facet factories also.
+     */
     @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-
-        facetFactory = new PropertyMethodsFacetFactory();
-        facetFactory.setSpecificationLookup(reflector);
-    }
+    public void testFeatureTypes() {
+        PropertyAccessorFacetFactory facetFactory = new PropertyAccessorFacetFactory();
+        facetFactory.setSpecificationLookup(reflector);
 
-    @Override
-    protected void tearDown() throws Exception {
-        facetFactory = null;
-        super.tearDown();
-    }
-
-    @Override
-    public void testFeatureTypes() {
         final List<FeatureType> featureTypes = facetFactory.getFeatureTypes();
         assertFalse(contains(featureTypes, FeatureType.OBJECT));
         assertTrue(contains(featureTypes, FeatureType.PROPERTY));
@@ -92,6 +98,9 @@ public class PropertyFieldMethodsFacetFa
     }
 
     public void testPropertyAccessorFacetIsInstalledAndMethodRemoved() {
+        PropertyAccessorFacetFactory facetFactory = new PropertyAccessorFacetFactory();
+        facetFactory.setSpecificationLookup(reflector);
+
         @edu.umd.cs.findbugs.annotations.SuppressWarnings("UMAC_UNCALLABLE_METHOD_OF_ANONYMOUS_CLASS")
         class Customer {
             @SuppressWarnings("unused")
@@ -101,18 +110,21 @@ public class PropertyFieldMethodsFacetFa
         }
         final Method propertyAccessorMethod = findMethod(Customer.class, "getFirstName");
 
-        facetFactory.process(CustomerStatic.class, propertyAccessorMethod, methodRemover, facetHolder);
+        facetFactory.process(new ProcessMethodContext(CustomerStatic.class, propertyAccessorMethod, methodRemover, facetedMethod));
 
-        final Facet facet = facetHolder.getFacet(PropertyAccessorFacet.class);
+        final Facet facet = facetedMethod.getFacet(PropertyOrCollectionAccessorFacet.class);
         assertNotNull(facet);
-        assertTrue(facet instanceof PropertyAccessorFacetViaAccessor);
-        final PropertyAccessorFacetViaAccessor propertyAccessorFacetViaAccessor = (PropertyAccessorFacetViaAccessor) facet;
-        assertEquals(propertyAccessorMethod, propertyAccessorFacetViaAccessor.getMethods().get(0));
+        assertTrue(facet instanceof PropertyOrCollectionAccessorFacetViaAccessor);
+        final PropertyOrCollectionAccessorFacetViaAccessor propertyOrCollectionAccessorFacetViaAccessor = (PropertyOrCollectionAccessorFacetViaAccessor) facet;
+        assertEquals(propertyAccessorMethod, propertyOrCollectionAccessorFacetViaAccessor.getMethods().get(0));
 
         assertTrue(methodRemover.getRemoveMethodMethodCalls().contains(propertyAccessorMethod));
     }
 
     public void testSetterFacetIsInstalledForSetterMethodAndMethodRemoved() {
+        PropertySetAndClearFacetFactory facetFactory = new PropertySetAndClearFacetFactory();
+        facetFactory.setSpecificationLookup(reflector);
+
         @edu.umd.cs.findbugs.annotations.SuppressWarnings("UMAC_UNCALLABLE_METHOD_OF_ANONYMOUS_CLASS")
         class Customer {
             @SuppressWarnings("unused")
@@ -126,9 +138,9 @@ public class PropertyFieldMethodsFacetFa
         final Method propertyAccessorMethod = findMethod(Customer.class, "getFirstName");
         final Method propertySetterMethod = findMethod(Customer.class, "setFirstName", new Class[] { String.class });
 
-        facetFactory.process(Customer.class, propertyAccessorMethod, methodRemover, facetHolder);
+        facetFactory.process(new ProcessMethodContext(Customer.class, propertyAccessorMethod, methodRemover, facetedMethod));
 
-        final Facet facet = facetHolder.getFacet(PropertySetterFacet.class);
+        final Facet facet = facetedMethod.getFacet(PropertySetterFacet.class);
         assertNotNull(facet);
         assertTrue(facet instanceof PropertySetterFacetViaSetterMethod);
         final PropertySetterFacetViaSetterMethod propertySetterFacet = (PropertySetterFacetViaSetterMethod) facet;
@@ -138,6 +150,9 @@ public class PropertyFieldMethodsFacetFa
     }
 
     public void testInitializationFacetIsInstalledForSetterMethodAndMethodRemoved() {
+        PropertySetAndClearFacetFactory facetFactory = new PropertySetAndClearFacetFactory();
+        facetFactory.setSpecificationLookup(reflector);
+
         @edu.umd.cs.findbugs.annotations.SuppressWarnings("UMAC_UNCALLABLE_METHOD_OF_ANONYMOUS_CLASS")
         class Customer {
             @SuppressWarnings("unused")
@@ -151,9 +166,9 @@ public class PropertyFieldMethodsFacetFa
         final Method propertyAccessorMethod = findMethod(Customer.class, "getFirstName");
         final Method propertySetterMethod = findMethod(Customer.class, "setFirstName", new Class[] { String.class });
 
-        facetFactory.process(Customer.class, propertyAccessorMethod, methodRemover, facetHolder);
+        facetFactory.process(new ProcessMethodContext(Customer.class, propertyAccessorMethod, methodRemover, facetedMethod));
 
-        final Facet facet = facetHolder.getFacet(PropertyInitializationFacet.class);
+        final Facet facet = facetedMethod.getFacet(PropertyInitializationFacet.class);
         assertNotNull(facet);
         assertTrue(facet instanceof PropertyInitializationFacet);
         final PropertyInitializationFacetViaSetterMethod propertySetterFacet = (PropertyInitializationFacetViaSetterMethod) facet;
@@ -163,6 +178,9 @@ public class PropertyFieldMethodsFacetFa
     }
 
     public void testSetterFacetIsInstalledMeansNoDisabledOrDerivedFacetsInstalled() {
+        PropertySetAndClearFacetFactory facetFactory = new PropertySetAndClearFacetFactory();
+        facetFactory.setSpecificationLookup(reflector);
+
         @edu.umd.cs.findbugs.annotations.SuppressWarnings("UMAC_UNCALLABLE_METHOD_OF_ANONYMOUS_CLASS")
         class Customer {
             @SuppressWarnings("unused")
@@ -175,13 +193,19 @@ public class PropertyFieldMethodsFacetFa
         }
         final Method propertyAccessorMethod = findMethod(Customer.class, "getFirstName");
 
-        facetFactory.process(Customer.class, propertyAccessorMethod, methodRemover, facetHolder);
+        facetFactory.process(new ProcessMethodContext(Customer.class, propertyAccessorMethod, methodRemover, facetedMethod));
 
-        assertNull(facetHolder.getFacet(NotPersistedFacet.class));
-        assertNull(facetHolder.getFacet(NotPersistedFacet.class));
+        assertNull(facetedMethod.getFacet(NotPersistedFacet.class));
+        assertNull(facetedMethod.getFacet(NotPersistedFacet.class));
     }
 
-    public void testSetterFacetIsInstalledForModifyMethodAndMethodRemoved() {
+    public void testSetterFacetIsInstalledForModifyMethodAndMethodRemoved() {
+        
+        PropertyModifyFacetFactory facetFactoryForModify = new PropertyModifyFacetFactory();
+        facetFactoryForModify.setSpecificationLookup(reflector);
+        PropertySetAndClearFacetFactory facetFactoryForSetter = new PropertySetAndClearFacetFactory();
+        facetFactoryForSetter.setSpecificationLookup(reflector);
+
         @edu.umd.cs.findbugs.annotations.SuppressWarnings("UMAC_UNCALLABLE_METHOD_OF_ANONYMOUS_CLASS")
         class Customer {
             @SuppressWarnings("unused")
@@ -195,9 +219,11 @@ public class PropertyFieldMethodsFacetFa
         final Method propertyAccessorMethod = findMethod(Customer.class, "getFirstName");
         final Method propertyModifyMethod = findMethod(Customer.class, "modifyFirstName", new Class[] { String.class });
 
-        facetFactory.process(Customer.class, propertyAccessorMethod, methodRemover, facetHolder);
+        final ProcessMethodContext processMethodContext = new ProcessMethodContext(Customer.class, propertyAccessorMethod, methodRemover, facetedMethod);
+        facetFactoryForModify.process(processMethodContext);
+        facetFactoryForSetter.process(processMethodContext);
 
-        final Facet facet = facetHolder.getFacet(PropertySetterFacet.class);
+        final Facet facet = facetedMethod.getFacet(PropertySetterFacet.class);
         assertNotNull(facet);
         assertTrue(facet instanceof PropertySetterFacetViaModifyMethod);
         final PropertySetterFacetViaModifyMethod propertySetterFacet = (PropertySetterFacetViaModifyMethod) facet;
@@ -207,6 +233,11 @@ public class PropertyFieldMethodsFacetFa
     }
 
     public void testModifyMethodWithNoSetterStillInstallsDisabledAndDerivedFacets() {
+        PropertySetAndClearFacetFactory facetFactory = new PropertySetAndClearFacetFactory();
+        facetFactory.setSpecificationLookup(reflector);
+        PropertyModifyFacetFactory facetFactoryForModify = new PropertyModifyFacetFactory();
+        facetFactoryForModify.setSpecificationLookup(reflector);
+
         @edu.umd.cs.findbugs.annotations.SuppressWarnings("UMAC_UNCALLABLE_METHOD_OF_ANONYMOUS_CLASS")
         class Customer {
             @SuppressWarnings("unused")
@@ -219,18 +250,25 @@ public class PropertyFieldMethodsFacetFa
         }
         final Method propertyAccessorMethod = findMethod(Customer.class, "getFirstName");
 
-        facetFactory.process(Customer.class, propertyAccessorMethod, methodRemover, facetHolder);
+        final ProcessMethodContext processMethodContext = new ProcessMethodContext(Customer.class, propertyAccessorMethod, methodRemover, facetedMethod);
+        facetFactory.process(processMethodContext);
+        facetFactoryForModify.process(processMethodContext);
 
-        Facet facet = facetHolder.getFacet(NotPersistedFacet.class);
+        Facet facet = facetedMethod.getFacet(NotPersistedFacet.class);
         assertNotNull(facet);
         assertTrue(facet instanceof DerivedFacetInferred);
 
-        facet = facetHolder.getFacet(DisabledFacet.class);
+        facet = facetedMethod.getFacet(DisabledFacet.class);
         assertNotNull(facet);
         assertTrue(facet instanceof DisabledFacetAlways);
     }
 
     public void testIfHaveSetterAndModifyFacetThenTheModifyFacetWinsOut() {
+        PropertySetAndClearFacetFactory facetFactory = new PropertySetAndClearFacetFactory();
+        facetFactory.setSpecificationLookup(reflector);
+        PropertyModifyFacetFactory facetFactoryForModify = new PropertyModifyFacetFactory();
+        facetFactoryForModify.setSpecificationLookup(reflector);
+
         @edu.umd.cs.findbugs.annotations.SuppressWarnings("UMAC_UNCALLABLE_METHOD_OF_ANONYMOUS_CLASS")
         class Customer {
             @SuppressWarnings("unused")
@@ -248,9 +286,11 @@ public class PropertyFieldMethodsFacetFa
         final Method propertySetterMethod = findMethod(Customer.class, "setFirstName", new Class[] { String.class });
         final Method propertyModifyMethod = findMethod(Customer.class, "modifyFirstName", new Class[] { String.class });
 
-        facetFactory.process(Customer.class, propertyAccessorMethod, methodRemover, facetHolder);
+        final ProcessMethodContext processMethodContext = new ProcessMethodContext(Customer.class, propertyAccessorMethod, methodRemover, facetedMethod);
+        facetFactory.process(processMethodContext);
+        facetFactoryForModify.process(processMethodContext);
 
-        final Facet facet = facetHolder.getFacet(PropertySetterFacet.class);
+        final Facet facet = facetedMethod.getFacet(PropertySetterFacet.class);
         assertNotNull(facet);
         assertTrue(facet instanceof PropertySetterFacetViaModifyMethod);
         final PropertySetterFacetViaModifyMethod propertySetterFacet = (PropertySetterFacetViaModifyMethod) facet;
@@ -261,6 +301,9 @@ public class PropertyFieldMethodsFacetFa
     }
 
     public void testClearFacet() {
+        PropertySetAndClearFacetFactory facetFactory = new PropertySetAndClearFacetFactory();
+        facetFactory.setSpecificationLookup(reflector);
+
         @edu.umd.cs.findbugs.annotations.SuppressWarnings("UMAC_UNCALLABLE_METHOD_OF_ANONYMOUS_CLASS")
         class Customer {
             @SuppressWarnings("unused")
@@ -274,9 +317,9 @@ public class PropertyFieldMethodsFacetFa
         final Method propertyAccessorMethod = findMethod(Customer.class, "getFirstName");
         final Method propertyClearMethod = findMethod(Customer.class, "clearFirstName");
 
-        facetFactory.process(Customer.class, propertyAccessorMethod, methodRemover, facetHolder);
+        facetFactory.process(new ProcessMethodContext(Customer.class, propertyAccessorMethod, methodRemover, facetedMethod));
 
-        final Facet facet = facetHolder.getFacet(PropertyClearFacet.class);
+        final Facet facet = facetedMethod.getFacet(PropertyClearFacet.class);
         assertNotNull(facet);
         assertTrue(facet instanceof PropertyClearFacetViaClearMethod);
         final PropertyClearFacetViaClearMethod propertyClearFacet = (PropertyClearFacetViaClearMethod) facet;
@@ -286,6 +329,9 @@ public class PropertyFieldMethodsFacetFa
     }
 
     public void testClearFacetViaSetterIfNoExplicitClearMethod() {
+        PropertySetAndClearFacetFactory facetFactory = new PropertySetAndClearFacetFactory();
+        facetFactory.setSpecificationLookup(reflector);
+
         @edu.umd.cs.findbugs.annotations.SuppressWarnings("UMAC_UNCALLABLE_METHOD_OF_ANONYMOUS_CLASS")
         class Customer {
             @SuppressWarnings("unused")
@@ -299,9 +345,9 @@ public class PropertyFieldMethodsFacetFa
         final Method propertyAccessorMethod = findMethod(Customer.class, "getFirstName");
         final Method propertySetterMethod = findMethod(Customer.class, "setFirstName", new Class[] { String.class });
 
-        facetFactory.process(Customer.class, propertyAccessorMethod, methodRemover, facetHolder);
+        facetFactory.process(new ProcessMethodContext(Customer.class, propertyAccessorMethod, methodRemover, facetedMethod));
 
-        final Facet facet = facetHolder.getFacet(PropertyClearFacet.class);
+        final Facet facet = facetedMethod.getFacet(PropertyClearFacet.class);
         assertNotNull(facet);
         assertTrue(facet instanceof PropertyClearFacetViaSetterMethod);
         final PropertyClearFacetViaSetterMethod propertyClearFacet = (PropertyClearFacetViaSetterMethod) facet;
@@ -309,6 +355,9 @@ public class PropertyFieldMethodsFacetFa
     }
 
     public void testChoicesFacetFoundAndMethodRemoved() {
+        PropertyChoicesFacetFactory facetFactory = new PropertyChoicesFacetFactory();
+        facetFactory.setSpecificationLookup(reflector);
+
         @edu.umd.cs.findbugs.annotations.SuppressWarnings("UMAC_UNCALLABLE_METHOD_OF_ANONYMOUS_CLASS")
         class Customer {
             @SuppressWarnings("unused")
@@ -324,9 +373,9 @@ public class PropertyFieldMethodsFacetFa
         final Method propertyAccessorMethod = findMethod(Customer.class, "getFirstName");
         final Method propertyChoicesMethod = findMethod(Customer.class, "choicesFirstName");
 
-        facetFactory.process(Customer.class, propertyAccessorMethod, methodRemover, facetHolder);
+        facetFactory.process(new ProcessMethodContext(Customer.class, propertyAccessorMethod, methodRemover, facetedMethod));
 
-        final Facet facet = facetHolder.getFacet(PropertyChoicesFacet.class);
+        final Facet facet = facetedMethod.getFacet(PropertyChoicesFacet.class);
         assertNotNull(facet);
         assertTrue(facet instanceof PropertyChoicesFacetViaMethod);
         final PropertyChoicesFacetViaMethod propertyChoicesFacet = (PropertyChoicesFacetViaMethod) facet;
@@ -336,6 +385,9 @@ public class PropertyFieldMethodsFacetFa
     }
 
     public void testDefaultFacetFoundAndMethodRemoved() {
+        PropertyDefaultFacetFactory facetFactory = new PropertyDefaultFacetFactory();
+        facetFactory.setSpecificationLookup(reflector);
+
         @edu.umd.cs.findbugs.annotations.SuppressWarnings("UMAC_UNCALLABLE_METHOD_OF_ANONYMOUS_CLASS")
         class Customer {
             @SuppressWarnings("unused")
@@ -351,9 +403,9 @@ public class PropertyFieldMethodsFacetFa
         final Method propertyAccessorMethod = findMethod(Customer.class, "getFirstName");
         final Method propertyDefaultMethod = findMethod(Customer.class, "defaultFirstName");
 
-        facetFactory.process(Customer.class, propertyAccessorMethod, methodRemover, facetHolder);
+        facetFactory.process(new ProcessMethodContext(Customer.class, propertyAccessorMethod, methodRemover, facetedMethod));
 
-        final Facet facet = facetHolder.getFacet(PropertyDefaultFacet.class);
+        final Facet facet = facetedMethod.getFacet(PropertyDefaultFacet.class);
         assertNotNull(facet);
         assertTrue(facet instanceof PropertyDefaultFacetViaMethod);
         final PropertyDefaultFacetViaMethod propertyDefaultFacet = (PropertyDefaultFacetViaMethod) facet;
@@ -363,6 +415,9 @@ public class PropertyFieldMethodsFacetFa
     }
 
     public void testValidateFacetFoundAndMethodRemoved() {
+        PropertyValidateFacetFactory facetFactory = new PropertyValidateFacetFactory();
+        facetFactory.setSpecificationLookup(reflector);
+
         @edu.umd.cs.findbugs.annotations.SuppressWarnings("UMAC_UNCALLABLE_METHOD_OF_ANONYMOUS_CLASS")
         class Customer {
             @SuppressWarnings("unused")
@@ -378,9 +433,9 @@ public class PropertyFieldMethodsFacetFa
         final Method propertyAccessorMethod = findMethod(Customer.class, "getFirstName");
         final Method propertyValidateMethod = findMethod(Customer.class, "validateFirstName", new Class[] { String.class });
 
-        facetFactory.process(Customer.class, propertyAccessorMethod, methodRemover, facetHolder);
+        facetFactory.process(new ProcessMethodContext(Customer.class, propertyAccessorMethod, methodRemover, facetedMethod));
 
-        final Facet facet = facetHolder.getFacet(PropertyValidateFacet.class);
+        final Facet facet = facetedMethod.getFacet(PropertyValidateFacet.class);
         assertNotNull(facet);
         assertTrue(facet instanceof PropertyValidateFacetViaMethod);
         final PropertyValidateFacetViaMethod propertyValidateFacet = (PropertyValidateFacetViaMethod) facet;
@@ -390,6 +445,9 @@ public class PropertyFieldMethodsFacetFa
     }
 
     public void testDisableFacetFoundAndMethodRemoved() {
+        DisabledFacetViaDisableMethodFacetFactory facetFactory = new DisabledFacetViaDisableMethodFacetFactory();
+        facetFactory.setSpecificationLookup(reflector);
+
         @edu.umd.cs.findbugs.annotations.SuppressWarnings("UMAC_UNCALLABLE_METHOD_OF_ANONYMOUS_CLASS")
         class Customer {
             @SuppressWarnings("unused")
@@ -398,16 +456,16 @@ public class PropertyFieldMethodsFacetFa
             }
 
             @SuppressWarnings("unused")
-            public String disableFirstName(final String fn) {
+            public String disableFirstName() {
                 return "disabled";
             }
         }
         final Method propertyAccessorMethod = findMethod(Customer.class, "getFirstName");
-        final Method propertyDisableMethod = findMethod(Customer.class, "disableFirstName", new Class[] { String.class });
+        final Method propertyDisableMethod = findMethod(Customer.class, "disableFirstName", new Class[] { });
 
-        facetFactory.process(Customer.class, propertyAccessorMethod, methodRemover, facetHolder);
+        facetFactory.process(new ProcessMethodContext(Customer.class, propertyAccessorMethod, methodRemover, facetedMethod));
 
-        final Facet facet = facetHolder.getFacet(DisableForContextFacet.class);
+        final Facet facet = facetedMethod.getFacet(DisableForContextFacet.class);
         assertNotNull(facet);
         assertTrue(facet instanceof DisableForContextFacetViaMethod);
         final DisableForContextFacetViaMethod disableForContextFacet = (DisableForContextFacetViaMethod) facet;
@@ -417,6 +475,9 @@ public class PropertyFieldMethodsFacetFa
     }
 
     public void testDisableFacetNoArgsFoundAndMethodRemoved() {
+        DisabledFacetViaDisableMethodFacetFactory facetFactory = new DisabledFacetViaDisableMethodFacetFactory();
+        facetFactory.setSpecificationLookup(reflector);
+
         @edu.umd.cs.findbugs.annotations.SuppressWarnings("UMAC_UNCALLABLE_METHOD_OF_ANONYMOUS_CLASS")
         class Customer {
             @SuppressWarnings("unused")
@@ -432,9 +493,9 @@ public class PropertyFieldMethodsFacetFa
         final Method propertyAccessorMethod = findMethod(Customer.class, "getFirstName");
         final Method propertyDisableMethod = findMethod(Customer.class, "disableFirstName");
 
-        facetFactory.process(Customer.class, propertyAccessorMethod, methodRemover, facetHolder);
+        facetFactory.process(new ProcessMethodContext(Customer.class, propertyAccessorMethod, methodRemover, facetedMethod));
 
-        final Facet facet = facetHolder.getFacet(DisableForContextFacet.class);
+        final Facet facet = facetedMethod.getFacet(DisableForContextFacet.class);
         assertNotNull(facet);
         assertTrue(facet instanceof DisableForContextFacetViaMethod);
         final DisableForContextFacetViaMethod disableForContextFacet = (DisableForContextFacetViaMethod) facet;
@@ -444,6 +505,9 @@ public class PropertyFieldMethodsFacetFa
     }
 
     public void testHiddenFacetFoundAndMethodRemoved() {
+        HiddenFacetViaHideMethodFacetFactory facetFactory = new HiddenFacetViaHideMethodFacetFactory();
+        facetFactory.setSpecificationLookup(reflector);
+
         @edu.umd.cs.findbugs.annotations.SuppressWarnings("UMAC_UNCALLABLE_METHOD_OF_ANONYMOUS_CLASS")
         class Customer {
             @SuppressWarnings("unused")
@@ -452,16 +516,16 @@ public class PropertyFieldMethodsFacetFa
             }
 
             @SuppressWarnings("unused")
-            public boolean hideFirstName(final String fn) {
+            public boolean hideFirstName() {
                 return true;
             }
         }
         final Method propertyAccessorMethod = findMethod(Customer.class, "getFirstName");
-        final Method propertyHideMethod = findMethod(Customer.class, "hideFirstName", new Class[] { String.class });
+        final Method propertyHideMethod = findMethod(Customer.class, "hideFirstName", new Class[] { });
 
-        facetFactory.process(Customer.class, propertyAccessorMethod, methodRemover, facetHolder);
+        facetFactory.process(new ProcessMethodContext(Customer.class, propertyAccessorMethod, methodRemover, facetedMethod));
 
-        final Facet facet = facetHolder.getFacet(HideForContextFacet.class);
+        final Facet facet = facetedMethod.getFacet(HideForContextFacet.class);
         assertNotNull(facet);
         assertTrue(facet instanceof HideForContextFacetViaMethod);
         final HideForContextFacetViaMethod hideForContextFacet = (HideForContextFacetViaMethod) facet;
@@ -471,6 +535,9 @@ public class PropertyFieldMethodsFacetFa
     }
 
     public void testHiddenFacetWithNoArgFoundAndMethodRemoved() {
+        HiddenFacetViaHideMethodFacetFactory facetFactory = new HiddenFacetViaHideMethodFacetFactory();
+        facetFactory.setSpecificationLookup(reflector);
+
         @edu.umd.cs.findbugs.annotations.SuppressWarnings("UMAC_UNCALLABLE_METHOD_OF_ANONYMOUS_CLASS")
         class Customer {
             @SuppressWarnings("unused")
@@ -486,9 +553,9 @@ public class PropertyFieldMethodsFacetFa
         final Method propertyAccessorMethod = findMethod(Customer.class, "getFirstName");
         final Method propertyHideMethod = findMethod(Customer.class, "hideFirstName");
 
-        facetFactory.process(Customer.class, propertyAccessorMethod, methodRemover, facetHolder);
+        facetFactory.process(new ProcessMethodContext(Customer.class, propertyAccessorMethod, methodRemover, facetedMethod));
 
-        final Facet facet = facetHolder.getFacet(HideForContextFacet.class);
+        final Facet facet = facetedMethod.getFacet(HideForContextFacet.class);
         assertNotNull(facet);
         assertTrue(facet instanceof HideForContextFacetViaMethod);
         final HideForContextFacetViaMethod hideForContextFacet = (HideForContextFacetViaMethod) facet;
@@ -498,6 +565,9 @@ public class PropertyFieldMethodsFacetFa
     }
 
     public void testPropertyFoundOnSuperclass() {
+        PropertyAccessorFacetFactory facetFactory = new PropertyAccessorFacetFactory();
+        facetFactory.setSpecificationLookup(reflector);
+
         @edu.umd.cs.findbugs.annotations.SuppressWarnings("UMAC_UNCALLABLE_METHOD_OF_ANONYMOUS_CLASS")
         class Customer {
             @SuppressWarnings("unused")
@@ -511,16 +581,23 @@ public class PropertyFieldMethodsFacetFa
 
         final Method propertyAccessorMethod = findMethod(Customer.class, "getFirstName");
 
-        facetFactory.process(CustomerEx.class, propertyAccessorMethod, methodRemover, facetHolder);
+        facetFactory.process(new ProcessMethodContext(CustomerEx.class, propertyAccessorMethod, methodRemover, facetedMethod));
 
-        final Facet facet = facetHolder.getFacet(PropertyAccessorFacet.class);
+        final Facet facet = facetedMethod.getFacet(PropertyOrCollectionAccessorFacet.class);
         assertNotNull(facet);
-        assertTrue(facet instanceof PropertyAccessorFacetViaAccessor);
-        final PropertyAccessorFacetViaAccessor accessorFacet = (PropertyAccessorFacetViaAccessor) facet;
+        assertTrue(facet instanceof PropertyOrCollectionAccessorFacetViaAccessor);
+        final PropertyOrCollectionAccessorFacetViaAccessor accessorFacet = (PropertyOrCollectionAccessorFacetViaAccessor) facet;
         assertEquals(propertyAccessorMethod, accessorFacet.getMethods().get(0));
     }
 
     public void testPropertyFoundOnSuperclassButHelperMethodFoundOnSubclass() {
+        PropertyAccessorFacetFactory facetFactory = new PropertyAccessorFacetFactory();
+        facetFactory.setSpecificationLookup(reflector);
+        HiddenFacetViaHideMethodFacetFactory facetFactoryForHide = new HiddenFacetViaHideMethodFacetFactory();
+        facetFactoryForHide.setSpecificationLookup(reflector);
+        DisabledFacetViaDisableMethodFacetFactory facetFactoryForDisable = new DisabledFacetViaDisableMethodFacetFactory();
+        facetFactoryForDisable.setSpecificationLookup(reflector);
+
         @edu.umd.cs.findbugs.annotations.SuppressWarnings("UMAC_UNCALLABLE_METHOD_OF_ANONYMOUS_CLASS")
         class Customer {
             @SuppressWarnings("unused")
@@ -548,15 +625,18 @@ public class PropertyFieldMethodsFacetFa
         final Method propertyHideMethod = findMethod(CustomerEx.class, "hideFirstName");
         final Method propertyDisableMethod = findMethod(CustomerEx.class, "disableFirstName");
 
-        facetFactory.process(CustomerEx.class, propertyAccessorMethod, methodRemover, facetHolder);
+        final ProcessMethodContext processMethodContext = new ProcessMethodContext(CustomerEx.class, propertyAccessorMethod, methodRemover, facetedMethod);
+        facetFactory.process(processMethodContext);
+        facetFactoryForHide.process(processMethodContext);
+        facetFactoryForDisable.process(processMethodContext);
 
-        final Facet facet = facetHolder.getFacet(HideForContextFacet.class);
+        final Facet facet = facetedMethod.getFacet(HideForContextFacet.class);
         assertNotNull(facet);
         assertTrue(facet instanceof HideForContextFacetViaMethod);
         final HideForContextFacetViaMethod hideForContextFacet = (HideForContextFacetViaMethod) facet;
         assertEquals(propertyHideMethod, hideForContextFacet.getMethods().get(0));
 
-        final Facet facet2 = facetHolder.getFacet(DisableForContextFacet.class);
+        final Facet facet2 = facetedMethod.getFacet(DisableForContextFacet.class);
         assertNotNull(facet2);
         assertTrue(facet2 instanceof DisableForContextFacetViaMethod);
         final DisableForContextFacetViaMethod disableForContextFacet = (DisableForContextFacetViaMethod) facet2;
@@ -612,12 +692,15 @@ public class PropertyFieldMethodsFacetFa
     }
 
     public void testInstallsNamedFacetUsingNameMethodAndRemovesMethod() {
+        NamedFacetViaNameMethodFacetFactory facetFactory = new NamedFacetViaNameMethodFacetFactory();
+        facetFactory.setSpecificationLookup(reflector);
+
         final Method propertyAccessorMethod = findMethod(CustomerStatic.class, "getFirstName");
         final Method nameMethod = findMethod(CustomerStatic.class, "nameFirstName");
 
-        facetFactory.process(CustomerStatic.class, propertyAccessorMethod, methodRemover, facetHolder);
+        facetFactory.process(new ProcessMethodContext(CustomerStatic.class, propertyAccessorMethod, methodRemover, facetedMethod));
 
-        final Facet facet = facetHolder.getFacet(NamedFacet.class);
+        final Facet facet = facetedMethod.getFacet(NamedFacet.class);
         assertNotNull(facet);
         assertTrue(facet instanceof NamedFacetViaMethod);
         final NamedFacetViaMethod namedFacet = (NamedFacetViaMethod) facet;
@@ -627,12 +710,15 @@ public class PropertyFieldMethodsFacetFa
     }
 
     public void testInstallsDescribedAsFacetUsingDescriptionAndRemovesMethod() {
+        DescribedAsFacetViaDescriptionMethodFacetFactory facetFactory = new DescribedAsFacetViaDescriptionMethodFacetFactory();
+        facetFactory.setSpecificationLookup(reflector);
+
         final Method propertyAccessorMethod = findMethod(CustomerStatic.class, "getFirstName");
         final Method descriptionMethod = findMethod(CustomerStatic.class, "descriptionFirstName");
 
-        facetFactory.process(CustomerStatic.class, propertyAccessorMethod, methodRemover, facetHolder);
+        facetFactory.process(new ProcessMethodContext(CustomerStatic.class, propertyAccessorMethod, methodRemover, facetedMethod));
 
-        final Facet facet = facetHolder.getFacet(DescribedAsFacet.class);
+        final Facet facet = facetedMethod.getFacet(DescribedAsFacet.class);
         assertNotNull(facet);
         assertTrue(facet instanceof DescribedAsFacetViaMethod);
         final DescribedAsFacetViaMethod describedAsFacet = (DescribedAsFacetViaMethod) facet;
@@ -642,12 +728,15 @@ public class PropertyFieldMethodsFacetFa
     }
 
     public void testInstallsHiddenFacetUsingAlwaysHideAndRemovesMethod() {
+        HiddenFacetViaAlwaysHideMethodFacetFactory facetFactory = new HiddenFacetViaAlwaysHideMethodFacetFactory();
+        facetFactory.setSpecificationLookup(reflector);
+
         final Method propertyAccessorMethod = findMethod(CustomerStatic.class, "getFirstName");
         final Method propertyAlwaysHideMethod = findMethod(CustomerStatic.class, "alwaysHideFirstName");
 
-        facetFactory.process(CustomerStatic.class, propertyAccessorMethod, methodRemover, facetHolder);
+        facetFactory.process(new ProcessMethodContext(CustomerStatic.class, propertyAccessorMethod, methodRemover, facetedMethod));
 
-        final Facet facet = facetHolder.getFacet(HiddenFacet.class);
+        final Facet facet = facetedMethod.getFacet(HiddenFacet.class);
         assertNotNull(facet);
         assertTrue(facet instanceof HiddenFacetAlways);
 
@@ -655,23 +744,29 @@ public class PropertyFieldMethodsFacetFa
     }
 
     public void testInstallsHiddenFacetUsingAlwaysHideWhenNotAndRemovesMethod() {
+        HiddenFacetViaAlwaysHideMethodFacetFactory facetFactory = new HiddenFacetViaAlwaysHideMethodFacetFactory();
+        facetFactory.setSpecificationLookup(reflector);
+
         final Method propertyAccessorMethod = findMethod(CustomerStatic.class, "getLastName");
         final Method propertyAlwaysHideMethod = findMethod(CustomerStatic.class, "alwaysHideLastName");
 
-        facetFactory.process(CustomerStatic.class, propertyAccessorMethod, methodRemover, facetHolder);
+        facetFactory.process(new ProcessMethodContext(CustomerStatic.class, propertyAccessorMethod, methodRemover, facetedMethod));
 
-        assertNull(facetHolder.getFacet(HiddenFacet.class));
+        assertNull(facetedMethod.getFacet(HiddenFacet.class));
 
         assertTrue(methodRemover.getRemoveMethodMethodCalls().contains(propertyAlwaysHideMethod));
     }
 
     public void testInstallsDisabledFacetUsingProtectAndRemovesMethod() {
+        DisabledFacetViaProtectMethodFacetFactory facetFactory = new DisabledFacetViaProtectMethodFacetFactory();
+        facetFactory.setSpecificationLookup(reflector);
+
         final Method propertyAccessorMethod = findMethod(CustomerStatic.class, "getFirstName");
         final Method propertyProtectMethod = findMethod(CustomerStatic.class, "protectFirstName");
 
-        facetFactory.process(CustomerStatic.class, propertyAccessorMethod, methodRemover, facetHolder);
+        facetFactory.process(new ProcessMethodContext(CustomerStatic.class, propertyAccessorMethod, methodRemover, facetedMethod));
 
-        final Facet facet = facetHolder.getFacet(DisabledFacet.class);
+        final Facet facet = facetedMethod.getFacet(DisabledFacet.class);
         assertNotNull(facet);
         assertTrue(facet instanceof DisabledFacetAlways);
 
@@ -679,24 +774,30 @@ public class PropertyFieldMethodsFacetFa
     }
 
     public void testDoesNotInstallDisabledFacetUsingProtectWhenNotAndRemovesMethod() {
+        DisabledFacetViaProtectMethodFacetFactory facetFactory = new DisabledFacetViaProtectMethodFacetFactory();
+        facetFactory.setSpecificationLookup(reflector);
+
         final Method propertyAccessorMethod = findMethod(CustomerStatic.class, "getLastName");
         final Method propertyProtectMethod = findMethod(CustomerStatic.class, "protectLastName");
 
-        facetFactory.process(CustomerStatic.class, propertyAccessorMethod, methodRemover, facetHolder);
+        facetFactory.process(new ProcessMethodContext(CustomerStatic.class, propertyAccessorMethod, methodRemover, facetedMethod));
 
-        final Facet facet = facetHolder.getFacet(DisabledFacet.class);
+        final Facet facet = facetedMethod.getFacet(DisabledFacet.class);
         assertNull(facet);
 
         assertTrue(methodRemover.getRemoveMethodMethodCalls().contains(propertyProtectMethod));
     }
 
     public void testInstallsHiddenForSessionFacetAndRemovesMethod() {
+        HiddenFacetViaHideForSessionMethodFacetFactory facetFactory = new HiddenFacetViaHideForSessionMethodFacetFactory();
+        facetFactory.setSpecificationLookup(reflector);
+
         final Method propertyAccessorMethod = findMethod(CustomerStatic.class, "getFirstName");
         final Method hideMethod = findMethod(CustomerStatic.class, "hideFirstName", new Class[] { UserMemento.class });
 
-        facetFactory.process(CustomerStatic.class, propertyAccessorMethod, methodRemover, facetHolder);
+        facetFactory.process(new ProcessMethodContext(CustomerStatic.class, propertyAccessorMethod, methodRemover, facetedMethod));
 
-        final Facet facet = facetHolder.getFacet(HideForSessionFacet.class);
+        final Facet facet = facetedMethod.getFacet(HideForSessionFacet.class);
         assertNotNull(facet);
         assertTrue(facet instanceof HideForSessionFacetViaMethod);
         final HideForSessionFacetViaMethod hideForSessionFacetViaMethod = (HideForSessionFacetViaMethod) facet;
@@ -707,12 +808,15 @@ public class PropertyFieldMethodsFacetFa
     }
 
     public void testInstallsDisabledForSessionFacetAndRemovesMethod() {
+        DisabledFacetViaDisableForSessionMethodFacetFactory facetFactory = new DisabledFacetViaDisableForSessionMethodFacetFactory();
+        facetFactory.setSpecificationLookup(reflector);
+
         final Method propertyAccessorMethod = findMethod(CustomerStatic.class, "getFirstName");
         final Method disableMethod = findMethod(CustomerStatic.class, "disableFirstName", new Class[] { UserMemento.class });
 
-        facetFactory.process(CustomerStatic.class, propertyAccessorMethod, methodRemover, facetHolder);
+        facetFactory.process(new ProcessMethodContext(CustomerStatic.class, propertyAccessorMethod, methodRemover, facetedMethod));
 
-        final Facet facet = facetHolder.getFacet(DisableForSessionFacet.class);
+        final Facet facet = facetedMethod.getFacet(DisableForSessionFacet.class);
         assertNotNull(facet);
         assertTrue(facet instanceof DisableForSessionFacetViaMethod);
         final DisableForSessionFacetViaMethod disableForSessionFacetViaMethod = (DisableForSessionFacetViaMethod) facet;

Modified: incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/propparam/multiline/MultiLineAnnotationFacetFactoryTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/propparam/multiline/MultiLineAnnotationFacetFactoryTest.java?rev=1059826&r1=1059825&r2=1059826&view=diff
==============================================================================
--- incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/propparam/multiline/MultiLineAnnotationFacetFactoryTest.java (original)
+++ incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/propparam/multiline/MultiLineAnnotationFacetFactoryTest.java Mon Jan 17 09:26:54 2011
@@ -26,8 +26,13 @@ import java.util.List;
 import org.apache.isis.applib.annotation.MultiLine;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext;
+import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext;
+import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessParameterContext;
 import org.apache.isis.core.metamodel.facets.propparam.multiline.MultiLineFacet;
 import org.apache.isis.core.progmodel.facets.AbstractFacetFactoryTest;
+import org.apache.isis.core.progmodel.facets.propparam.multiline.annotation.MultiLineAnnotationFacetFactory;
+import org.apache.isis.core.progmodel.facets.propparam.multiline.annotation.MultiLineFacetAnnotation;
 
 
 public class MultiLineAnnotationFacetFactoryTest extends AbstractFacetFactoryTest {
@@ -61,9 +66,9 @@ public class MultiLineAnnotationFacetFac
         @MultiLine(numberOfLines = 3, preventWrapping = false)
         class Customer {}
 
-        facetFactory.process(Customer.class, methodRemover, facetHolder);
+        facetFactory.process(new ProcessClassContext(Customer.class, methodRemover, facetedMethod));
 
-        final Facet facet = facetHolder.getFacet(MultiLineFacet.class);
+        final Facet facet = facetedMethod.getFacet(MultiLineFacet.class);
         assertNotNull(facet);
         assertTrue(facet instanceof MultiLineFacetAnnotation);
         final MultiLineFacetAnnotation multiLineFacetAnnotation = (MultiLineFacetAnnotation) facet;
@@ -82,9 +87,9 @@ public class MultiLineAnnotationFacetFac
         }
         final Method method = findMethod(Customer.class, "getFirstName");
 
-        facetFactory.process(Customer.class, method, methodRemover, facetHolder);
+        facetFactory.process(new ProcessMethodContext(Customer.class, method, methodRemover, facetedMethod));
 
-        final Facet facet = facetHolder.getFacet(MultiLineFacet.class);
+        final Facet facet = facetedMethod.getFacet(MultiLineFacet.class);
         assertNotNull(facet);
         assertTrue(facet instanceof MultiLineFacetAnnotation);
         final MultiLineFacetAnnotation multiLineFacetAnnotation = (MultiLineFacetAnnotation) facet;
@@ -100,9 +105,9 @@ public class MultiLineAnnotationFacetFac
         }
         final Method method = findMethod(Customer.class, "someAction", new Class[] { String.class });
 
-        facetFactory.processParams(method, 0, facetHolder);
+        facetFactory.processParams(new ProcessParameterContext(method, 0, facetedMethodParameter));
 
-        final Facet facet = facetHolder.getFacet(MultiLineFacet.class);
+        final Facet facet = facetedMethodParameter.getFacet(MultiLineFacet.class);
         assertNotNull(facet);
         assertTrue(facet instanceof MultiLineFacetAnnotation);
         final MultiLineFacetAnnotation multiLineFacetAnnotation = (MultiLineFacetAnnotation) facet;
@@ -115,9 +120,9 @@ public class MultiLineAnnotationFacetFac
         @MultiLine
         class Customer {}
 
-        facetFactory.process(Customer.class, methodRemover, facetHolder);
+        facetFactory.process(new ProcessClassContext(Customer.class, methodRemover, facetedMethod));
 
-        final Facet facet = facetHolder.getFacet(MultiLineFacet.class);
+        final Facet facet = facetedMethod.getFacet(MultiLineFacet.class);
         final MultiLineFacetAnnotation multiLineFacetAnnotation = (MultiLineFacetAnnotation) facet;
         assertEquals(6, multiLineFacetAnnotation.numberOfLines());
         assertEquals(true, multiLineFacetAnnotation.preventWrapping());
@@ -134,9 +139,9 @@ public class MultiLineAnnotationFacetFac
         }
         final Method method = findMethod(Customer.class, "getNumberOfOrders");
 
-        facetFactory.process(Customer.class, method, methodRemover, facetHolder);
+        facetFactory.process(new ProcessMethodContext(Customer.class, method, methodRemover, facetedMethod));
 
-        final Facet facet = facetHolder.getFacet(MultiLineFacet.class);
+        final Facet facet = facetedMethod.getFacet(MultiLineFacet.class);
         assertNull(facet);
     }
 
@@ -148,9 +153,9 @@ public class MultiLineAnnotationFacetFac
         }
         final Method method = findMethod(Customer.class, "someAction", new Class[] { int.class });
 
-        facetFactory.processParams(method, 0, facetHolder);
+        facetFactory.processParams(new ProcessParameterContext(method, 0, facetedMethodParameter));
 
-        assertNull(facetHolder.getFacet(MultiLineFacet.class));
+        assertNull(facetedMethod.getFacet(MultiLineFacet.class));
     }
 
 }

Modified: incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/propparam/specification/MustSatisfySpecificationFacetFactoryProcessParameterTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/propparam/specification/MustSatisfySpecificationFacetFactoryProcessParameterTest.java?rev=1059826&r1=1059825&r2=1059826&view=diff
==============================================================================
--- incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/propparam/specification/MustSatisfySpecificationFacetFactoryProcessParameterTest.java (original)
+++ incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/propparam/specification/MustSatisfySpecificationFacetFactoryProcessParameterTest.java Mon Jan 17 09:26:54 2011
@@ -34,8 +34,8 @@ import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facetapi.MethodRemover;
+import org.apache.isis.core.metamodel.facets.FacetedMethodParameter;
+import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessParameterContext;
 
 @RunWith(JMock.class)
 public class MustSatisfySpecificationFacetFactoryProcessParameterTest {
@@ -47,8 +47,7 @@ public class MustSatisfySpecificationFac
     };
     
     private MustSatisfySpecificationFacetFactory facetFactory;
-    private MethodRemover mockMethodRemover;
-    private FacetHolder mockFacetHolder;
+    private FacetedMethodParameter mockFacetedMethodParameter;
 
     private Class<DomainObjectWithoutMustSatisfyAnnotations> domainObjectClassWithoutAnnotation;
     private Class<DomainObjectWithMustSatisfyAnnotations> domainObjectClassWithAnnotation;
@@ -58,8 +57,7 @@ public class MustSatisfySpecificationFac
     @Before
     public void setUp() throws Exception {
         facetFactory = new MustSatisfySpecificationFacetFactory();
-        mockMethodRemover = mockery.mock(MethodRemover.class);
-        mockFacetHolder = mockery.mock(FacetHolder.class);
+        mockFacetedMethodParameter = mockery.mock(FacetedMethodParameter.class);
         domainObjectClassWithoutAnnotation = DomainObjectWithoutMustSatisfyAnnotations.class;
         domainObjectClassWithAnnotation = DomainObjectWithMustSatisfyAnnotations.class;
         changeLastNameMethodWithout = domainObjectClassWithoutAnnotation.getMethod("changeLastName", String.class);
@@ -69,24 +67,23 @@ public class MustSatisfySpecificationFac
     @After
     public void tearDown() throws Exception {
         facetFactory = null;
-        mockMethodRemover = null;
-        mockFacetHolder = null;
+        mockFacetedMethodParameter = null;
     }
 
     @Test
     public void addsAMustSatisfySpecificationFacetIfAnnotated() {
         mockery.checking(new Expectations() {{
-            one(mockFacetHolder).addFacet(with(anInstanceOf(MustSatisfySpecificationFacet.class)));
+            one(mockFacetedMethodParameter).addFacet(with(anInstanceOf(MustSatisfySpecificationFacet.class)));
         }});
-        facetFactory.processParams(changeLastNameMethodWith, 0, mockFacetHolder);
+        facetFactory.processParams(new ProcessParameterContext(changeLastNameMethodWith, 0, mockFacetedMethodParameter));
     }
 
     @Test
     public void doesNotAddsAMustSatisfySpecificationFacetIfNotAnnotated() {
         mockery.checking(new Expectations() {{
-            never(mockFacetHolder).addFacet(with(anInstanceOf(MustSatisfySpecificationFacet.class)));
+            never(mockFacetedMethodParameter).addFacet(with(anInstanceOf(MustSatisfySpecificationFacet.class)));
         }});
-        facetFactory.processParams(changeLastNameMethodWithout, 0, mockFacetHolder);
+        facetFactory.processParams(new ProcessParameterContext(changeLastNameMethodWithout, 0, mockFacetedMethodParameter));
     }
 
 }

Modified: incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/propparam/specification/MustSatisfySpecificationFacetFactoryProcessPropertyTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/propparam/specification/MustSatisfySpecificationFacetFactoryProcessPropertyTest.java?rev=1059826&r1=1059825&r2=1059826&view=diff
==============================================================================
--- incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/propparam/specification/MustSatisfySpecificationFacetFactoryProcessPropertyTest.java (original)
+++ incubator/isis/trunk/core/progmodel/src/test/java/org/apache/isis/core/progmodel/facets/propparam/specification/MustSatisfySpecificationFacetFactoryProcessPropertyTest.java Mon Jan 17 09:26:54 2011
@@ -34,8 +34,9 @@ import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.MethodRemover;
+import org.apache.isis.core.metamodel.facets.FacetedMethod;
+import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext;
 
 @RunWith(JMock.class)
 public class MustSatisfySpecificationFacetFactoryProcessPropertyTest {
@@ -48,7 +49,7 @@ public class MustSatisfySpecificationFac
     
     private MustSatisfySpecificationFacetFactory facetFactory;
     private MethodRemover mockMethodRemover;
-    private FacetHolder mockFacetHolder;
+    private FacetedMethod mockFacetHolder;
 
     private Class<DomainObjectWithoutMustSatisfyAnnotations> domainObjectClassWithoutAnnotation;
     private Class<DomainObjectWithMustSatisfyAnnotations> domainObjectClassWithAnnotation;
@@ -59,7 +60,7 @@ public class MustSatisfySpecificationFac
     public void setUp() throws Exception {
         facetFactory = new MustSatisfySpecificationFacetFactory();
         mockMethodRemover = mockery.mock(MethodRemover.class);
-        mockFacetHolder = mockery.mock(FacetHolder.class);
+        mockFacetHolder = mockery.mock(FacetedMethod.class);
         domainObjectClassWithoutAnnotation = DomainObjectWithoutMustSatisfyAnnotations.class;
         domainObjectClassWithAnnotation = DomainObjectWithMustSatisfyAnnotations.class;
         firstNameMethodWithout = domainObjectClassWithoutAnnotation.getMethod("getFirstName");
@@ -78,7 +79,7 @@ public class MustSatisfySpecificationFac
         mockery.checking(new Expectations() {{
             one(mockFacetHolder).addFacet(with(anInstanceOf(MustSatisfySpecificationFacet.class)));
         }});
-        facetFactory.process(domainObjectClassWithAnnotation.getClass(), firstNameMethodWith, mockMethodRemover, mockFacetHolder);
+        facetFactory.process(new ProcessMethodContext(domainObjectClassWithAnnotation.getClass(), firstNameMethodWith, mockMethodRemover, mockFacetHolder));
     }
 
     @Test
@@ -86,7 +87,7 @@ public class MustSatisfySpecificationFac
         mockery.checking(new Expectations() {{
             never(mockFacetHolder).addFacet(with(anInstanceOf(MustSatisfySpecificationFacet.class)));
         }});
-        facetFactory.process(domainObjectClassWithAnnotation.getClass(), firstNameMethodWithout, mockMethodRemover, mockFacetHolder);
+        facetFactory.process(new ProcessMethodContext(domainObjectClassWithAnnotation.getClass(), firstNameMethodWithout, mockMethodRemover, mockFacetHolder));
     }
 
 }