http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/OptionalAnnotationOnPropertyFacetFactoryTest.java
----------------------------------------------------------------------
diff --git 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/OptionalAnnotationOnPropertyFacetFactoryTest.java
 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/OptionalAnnotationOnPropertyFacetFactoryTest.java
new file mode 100644
index 0000000..ef38092
--- /dev/null
+++ 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/OptionalAnnotationOnPropertyFacetFactoryTest.java
@@ -0,0 +1,72 @@
+/*
+ *  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.properties.property;
+
+import java.lang.reflect.Method;
+import org.apache.isis.applib.annotation.Optional;
+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.properties.property.mandatory.MandatoryFacetInvertedByOptionalAnnotationOnProperty;
+import 
org.apache.isis.core.metamodel.facets.propparam.mandatory.MandatoryFacet;
+
+public class OptionalAnnotationOnPropertyFacetFactoryTest extends 
AbstractFacetFactoryTest {
+
+    private PropertyAnnotationFacetFactory facetFactory;
+
+    public void setUp() throws Exception {
+        super.setUp();
+        facetFactory = new PropertyAnnotationFacetFactory();
+    }
+
+    public void testOptionalAnnotationPickedUpOnProperty() {
+
+        class Customer {
+            @Optional
+            public String getFirstName() {
+                return null;
+            }
+        }
+        final Method method = findMethod(Customer.class, "getFirstName");
+
+        facetFactory.processOptional(new ProcessMethodContext(Customer.class, 
null, null, method, methodRemover, facetedMethod));
+
+        final Facet facet = facetedMethod.getFacet(MandatoryFacet.class);
+        assertNotNull(facet);
+        assertTrue(facet instanceof 
MandatoryFacetInvertedByOptionalAnnotationOnProperty);
+    }
+
+    public void testOptionalAnnotationIgnoredForPrimitiveOnProperty() {
+
+        class Customer {
+            @SuppressWarnings("unused")
+            @Optional
+            public int getNumberOfOrders() {
+                return 0;
+            }
+        }
+        final Method method = findMethod(Customer.class, "getNumberOfOrders");
+
+        facetFactory.processOptional(new ProcessMethodContext(Customer.class, 
null, null, method, methodRemover, facetedMethod));
+
+        assertNull(facetedMethod.getFacet(MandatoryFacet.class));
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
index 5927790..e6455dd 100644
--- 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
+++ 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
@@ -159,7 +159,7 @@ public class PropertyAnnotationFacetFactoryTest extends 
AbstractFacetFactoryJUni
 
             // when
             final FacetFactory.ProcessMethodContext processMethodContext = new 
FacetFactory.ProcessMethodContext(cls, null, null, propertyMethod, 
mockMethodRemover, facetedMethod);
-            facetFactory.processModify(processMethodContext);
+            facetFactory.processDomainEvent(processMethodContext);
 
             // then
             final Facet domainEventFacet = 
facetedMethod.getFacet(PropertyDomainEventFacet.class);
@@ -214,7 +214,7 @@ public class PropertyAnnotationFacetFactoryTest extends 
AbstractFacetFactoryJUni
 
             // when
             final FacetFactory.ProcessMethodContext processMethodContext = new 
FacetFactory.ProcessMethodContext(cls, null, null, propertyMethod, 
mockMethodRemover, facetedMethod);
-            facetFactory.processModify(processMethodContext);
+            facetFactory.processDomainEvent(processMethodContext);
 
             // then
             final Facet domainEventFacet = 
facetedMethod.getFacet(PropertyDomainEventFacet.class);
@@ -268,7 +268,7 @@ public class PropertyAnnotationFacetFactoryTest extends 
AbstractFacetFactoryJUni
 
             // when
             final FacetFactory.ProcessMethodContext processMethodContext = new 
FacetFactory.ProcessMethodContext(cls, null, null, propertyMethod, 
mockMethodRemover, facetedMethod);
-            facetFactory.processModify(processMethodContext);
+            facetFactory.processDomainEvent(processMethodContext);
 
             // then
             final Facet domainEventFacet = 
facetedMethod.getFacet(PropertyDomainEventFacet.class);
@@ -316,7 +316,7 @@ public class PropertyAnnotationFacetFactoryTest extends 
AbstractFacetFactoryJUni
 
             // when
             final FacetFactory.ProcessMethodContext processMethodContext = new 
FacetFactory.ProcessMethodContext(cls, null, null, propertyMethod, 
mockMethodRemover, facetedMethod);
-            facetFactory.processModify(processMethodContext);
+            facetFactory.processDomainEvent(processMethodContext);
 
             // then
             final Facet domainEventFacet = 
facetedMethod.getFacet(PropertyDomainEventFacet.class);

http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/RegExAnnotationOnPropertyFacetFactoryTest.java
----------------------------------------------------------------------
diff --git 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/RegExAnnotationOnPropertyFacetFactoryTest.java
 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/RegExAnnotationOnPropertyFacetFactoryTest.java
new file mode 100644
index 0000000..1763b56
--- /dev/null
+++ 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/RegExAnnotationOnPropertyFacetFactoryTest.java
@@ -0,0 +1,79 @@
+/*
+ *  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.properties.property;
+
+import java.lang.reflect.Method;
+import org.junit.Before;
+import org.apache.isis.applib.annotation.RegEx;
+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.object.regex.RegExFacet;
+import 
org.apache.isis.core.metamodel.facets.properties.property.regex.RegExFacetFromRegExAnnotationOnProperty;
+
+public class RegExAnnotationOnPropertyFacetFactoryTest extends 
AbstractFacetFactoryTest {
+
+    private PropertyAnnotationFacetFactory facetFactory;
+
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+        facetFactory = new PropertyAnnotationFacetFactory();
+    }
+
+    public void testRegExAnnotationPickedUpOnProperty() {
+
+        class Customer {
+            @SuppressWarnings("unused")
+            @RegEx(validation = "^A.*", caseSensitive = false)
+            public String getFirstName() {
+                return null;
+            }
+        }
+        final Method method = findMethod(Customer.class, "getFirstName");
+
+        facetFactory.process(new ProcessMethodContext(Customer.class, null, 
null, method, methodRemover, facetedMethod));
+
+        final Facet facet = facetedMethod.getFacet(RegExFacet.class);
+        assertNotNull(facet);
+        assertTrue(facet instanceof RegExFacetFromRegExAnnotationOnProperty);
+        final RegExFacetFromRegExAnnotationOnProperty regExFacet = 
(RegExFacetFromRegExAnnotationOnProperty) facet;
+        assertEquals("^A.*", regExFacet.validation());
+        assertEquals(false, regExFacet.caseSensitive());
+    }
+
+    public void testRegExAnnotationIgnoredForNonStringsProperty() {
+
+        class Customer {
+            @SuppressWarnings("unused")
+            @RegEx(validation = "^A.*", caseSensitive = false)
+            public int getNumberOfOrders() {
+                return 0;
+            }
+        }
+        final Method method = findMethod(Customer.class, "getNumberOfOrders");
+
+        facetFactory.process(new ProcessMethodContext(Customer.class, null, 
null, method, methodRemover, facetedMethod));
+
+        assertNull(facetedMethod.getFacet(RegExFacet.class));
+    }
+
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/specification/MustSatisfySpecificationFacetFactoryProcessParameterTest.java
----------------------------------------------------------------------
diff --git 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/specification/MustSatisfySpecificationFacetFactoryProcessParameterTest.java
 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/specification/MustSatisfySpecificationFacetFactoryProcessParameterTest.java
deleted file mode 100644
index 771e9aa..0000000
--- 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/specification/MustSatisfySpecificationFacetFactoryProcessParameterTest.java
+++ /dev/null
@@ -1,87 +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.propparam.specification;
-
-import java.lang.reflect.Method;
-import org.jmock.Expectations;
-import org.jmock.Mockery;
-import org.jmock.integration.junit4.JMock;
-import org.jmock.integration.junit4.JUnit4Mockery;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import 
org.apache.isis.core.metamodel.facets.FacetFactory.ProcessParameterContext;
-import org.apache.isis.core.metamodel.facets.FacetedMethodParameter;
-import 
org.apache.isis.core.metamodel.facets.param.validating.mustsatisfyspec.MustSatisfySpecificationFacetForMustSatisfyAnnotationOnParameter;
-import 
org.apache.isis.core.metamodel.facets.param.validating.mustsatisfyspec.MustSatisfySpecificationOnParameterFacetFactory;
-import org.apache.isis.core.unittestsupport.jmocking.JavassistImposteriser;
-
-import static org.apache.isis.core.commons.matchers.IsisMatchers.anInstanceOf;
-
-@RunWith(JMock.class)
-public class MustSatisfySpecificationFacetFactoryProcessParameterTest {
-
-    private final Mockery mockery = new JUnit4Mockery() {
-        {
-            setImposteriser(JavassistImposteriser.INSTANCE);
-        }
-    };
-
-    private FacetedMethodParameter mockFacetedMethodParameter;
-
-    private Class<DomainObjectWithoutMustSatisfyAnnotations> 
domainObjectClassWithoutAnnotation;
-    private Class<DomainObjectWithMustSatisfyAnnotations> 
domainObjectClassWithAnnotation;
-    private Method changeLastNameMethodWithout;
-    private Method changeLastNameMethodWith;
-
-    @Before
-    public void setUp() throws Exception {
-        mockFacetedMethodParameter = 
mockery.mock(FacetedMethodParameter.class);
-        domainObjectClassWithoutAnnotation = 
DomainObjectWithoutMustSatisfyAnnotations.class;
-        domainObjectClassWithAnnotation = 
DomainObjectWithMustSatisfyAnnotations.class;
-        changeLastNameMethodWithout = 
domainObjectClassWithoutAnnotation.getMethod("changeLastName", String.class);
-        changeLastNameMethodWith = 
domainObjectClassWithAnnotation.getMethod("changeLastName", String.class);
-    }
-
-    @Test
-    public void addsAMustSatisfySpecificationFacetIfAnnotated() {
-        final MustSatisfySpecificationOnParameterFacetFactory facetFactory = 
new MustSatisfySpecificationOnParameterFacetFactory();
-
-        mockery.checking(new Expectations() {
-            {
-                
one(mockFacetedMethodParameter).addFacet(with(anInstanceOf(MustSatisfySpecificationFacetForMustSatisfyAnnotationOnParameter.class)));
-            }
-        });
-        facetFactory.processParams(new 
ProcessParameterContext(changeLastNameMethodWith, 0, 
mockFacetedMethodParameter));
-    }
-
-    @Test
-    public void doesNotAddsAMustSatisfySpecificationFacetIfNotAnnotated() {
-        final MustSatisfySpecificationOnParameterFacetFactory facetFactory = 
new MustSatisfySpecificationOnParameterFacetFactory();
-
-        mockery.checking(new Expectations() {
-            {
-                
never(mockFacetedMethodParameter).addFacet(with(anInstanceOf(MustSatisfySpecificationFacetForMustSatisfyAnnotationOnParameter.class)));
-            }
-        });
-        facetFactory.processParams(new 
ProcessParameterContext(changeLastNameMethodWithout, 0, 
mockFacetedMethodParameter));
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/specification/MustSatisfySpecificationFacetFactoryProcessPropertyTest.java
----------------------------------------------------------------------
diff --git 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/specification/MustSatisfySpecificationFacetFactoryProcessPropertyTest.java
 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/specification/MustSatisfySpecificationFacetFactoryProcessPropertyTest.java
deleted file mode 100644
index ee15092..0000000
--- 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/specification/MustSatisfySpecificationFacetFactoryProcessPropertyTest.java
+++ /dev/null
@@ -1,90 +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.propparam.specification;
-
-import java.lang.reflect.Method;
-import org.jmock.Expectations;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.apache.isis.core.metamodel.facetapi.MethodRemover;
-import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext;
-import org.apache.isis.core.metamodel.facets.FacetedMethod;
-import 
org.apache.isis.core.metamodel.facets.properties.validating.mustsatisfyspec.MustSatisfySpecificationFacetForMustSatisfyAnnotationOnProperty;
-import 
org.apache.isis.core.metamodel.facets.properties.validating.mustsatisfyspec.MustSatisfySpecificationOnPropertyFacetFactory;
-import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
-
-import static org.apache.isis.core.commons.matchers.IsisMatchers.anInstanceOf;
-
-public class MustSatisfySpecificationFacetFactoryProcessPropertyTest {
-
-    @Rule
-    public JUnitRuleMockery2 mockery = 
JUnitRuleMockery2.createFor(JUnitRuleMockery2.Mode.INTERFACES_AND_CLASSES);
-
-    private MethodRemover mockMethodRemover;
-    private FacetedMethod mockFacetHolder;
-
-    private Class<DomainObjectWithoutMustSatisfyAnnotations> 
domainObjectClassWithoutAnnotation;
-    private Class<DomainObjectWithMustSatisfyAnnotations> 
domainObjectClassWithAnnotation;
-    private Method firstNameMethodWithout;
-    private Method firstNameMethodWith;
-
-    @Before
-    public void setUp() throws Exception {
-        mockMethodRemover = mockery.mock(MethodRemover.class);
-        mockFacetHolder = mockery.mock(FacetedMethod.class);
-        domainObjectClassWithoutAnnotation = 
DomainObjectWithoutMustSatisfyAnnotations.class;
-        domainObjectClassWithAnnotation = 
DomainObjectWithMustSatisfyAnnotations.class;
-        firstNameMethodWithout = 
domainObjectClassWithoutAnnotation.getMethod("getFirstName");
-        firstNameMethodWith = 
domainObjectClassWithAnnotation.getMethod("getFirstName");
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        mockMethodRemover = null;
-        mockFacetHolder = null;
-    }
-
-    @Test
-    public void addsAMustSatisfySpecificationFacetIfAnnotated() {
-        final MustSatisfySpecificationOnPropertyFacetFactory facetFactory = 
new MustSatisfySpecificationOnPropertyFacetFactory();
-
-        mockery.checking(new Expectations() {
-            {
-                
one(mockFacetHolder).addFacet(with(anInstanceOf(MustSatisfySpecificationFacetForMustSatisfyAnnotationOnProperty.class)));
-            }
-        });
-        facetFactory.process(new 
ProcessMethodContext(domainObjectClassWithAnnotation.getClass(), null, null, 
firstNameMethodWith, mockMethodRemover, mockFacetHolder));
-    }
-
-    @Test
-    public void doesNotAddsAMustSatisfySpecificationFacetIfNotAnnotated() {
-        final MustSatisfySpecificationOnPropertyFacetFactory facetFactory = 
new MustSatisfySpecificationOnPropertyFacetFactory();
-
-        mockery.checking(new Expectations() {
-            {
-                
never(mockFacetHolder).addFacet(with(anInstanceOf(MustSatisfySpecificationFacetForMustSatisfyAnnotationOnProperty.class)));
-            }
-        });
-        facetFactory.process(new 
ProcessMethodContext(domainObjectClassWithAnnotation.getClass(), null, null, 
firstNameMethodWithout, mockMethodRemover, mockFacetHolder));
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/validate/mandatory/MandatoryAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/validate/mandatory/MandatoryAnnotationFacetFactoryTest.java
 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/validate/mandatory/MandatoryAnnotationFacetFactoryTest.java
deleted file mode 100644
index 00d4cbe..0000000
--- 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/validate/mandatory/MandatoryAnnotationFacetFactoryTest.java
+++ /dev/null
@@ -1,53 +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.propparam.validate.mandatory;
-
-import java.lang.reflect.Method;
-
-import org.apache.isis.applib.annotation.Mandatory;
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext;
-import 
org.apache.isis.core.metamodel.facets.properties.mandatory.annotation.mandatory.MandatoryFacetOnPropertyMandatoryAnnotation;
-import 
org.apache.isis.core.metamodel.facets.properties.mandatory.annotation.mandatory.MandatoryFacetOnPropertyMandatoryAnnotationFactory;
-import 
org.apache.isis.core.metamodel.facets.propparam.mandatory.MandatoryFacet;
-import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
-
-public class MandatoryAnnotationFacetFactoryTest extends 
AbstractFacetFactoryTest {
-
-    public void testMandatoryAnnotationPickedUpOnProperty() {
-        final MandatoryFacetOnPropertyMandatoryAnnotationFactory facetFactory 
= new MandatoryFacetOnPropertyMandatoryAnnotationFactory();
-
-        class Customer {
-            @Mandatory
-            public String getFirstName() {
-                return null;
-            }
-        }
-        final Method method = findMethod(Customer.class, "getFirstName");
-
-        facetFactory.process(new ProcessMethodContext(Customer.class, null, 
null, method, methodRemover, facetedMethod));
-
-        final Facet facet = facetedMethod.getFacet(MandatoryFacet.class);
-        assertNotNull(facet);
-        assertTrue(facet instanceof 
MandatoryFacetOnPropertyMandatoryAnnotation);
-    }
-
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/validate/mandatory/OptionalAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/validate/mandatory/OptionalAnnotationFacetFactoryTest.java
 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/validate/mandatory/OptionalAnnotationFacetFactoryTest.java
deleted file mode 100644
index b4f61b2..0000000
--- 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/validate/mandatory/OptionalAnnotationFacetFactoryTest.java
+++ /dev/null
@@ -1,104 +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.propparam.validate.mandatory;
-
-import java.lang.reflect.Method;
-
-import org.apache.isis.applib.annotation.Optional;
-import org.apache.isis.core.metamodel.facetapi.Facet;
-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.param.mandatory.annotation.MandatoryFacetOnParameterInvertedByOptionalAnnotation;
-import 
org.apache.isis.core.metamodel.facets.param.mandatory.annotation.MandatoryFacetOnParameterInvertedByOptionalAnnotationFactory;
-import 
org.apache.isis.core.metamodel.facets.properties.mandatory.annotation.optional.MandatoryFacetOnPropertyInvertedByOptionalAnnotation;
-import 
org.apache.isis.core.metamodel.facets.properties.mandatory.annotation.optional.MandatoryFacetOnPropertyInvertedByOptionalAnnotationFactory;
-import 
org.apache.isis.core.metamodel.facets.propparam.mandatory.MandatoryFacet;
-import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
-
-public class OptionalAnnotationFacetFactoryTest extends 
AbstractFacetFactoryTest {
-
-    public void testOptionalAnnotationPickedUpOnProperty() {
-        final MandatoryFacetOnPropertyInvertedByOptionalAnnotationFactory 
facetFactory = new 
MandatoryFacetOnPropertyInvertedByOptionalAnnotationFactory();
-
-        class Customer {
-            @Optional
-            public String getFirstName() {
-                return null;
-            }
-        }
-        final Method method = findMethod(Customer.class, "getFirstName");
-
-        facetFactory.process(new ProcessMethodContext(Customer.class, null, 
null, method, methodRemover, facetedMethod));
-
-        final Facet facet = facetedMethod.getFacet(MandatoryFacet.class);
-        assertNotNull(facet);
-        assertTrue(facet instanceof 
MandatoryFacetOnPropertyInvertedByOptionalAnnotation);
-    }
-
-    public void testOptionalAnnotationPickedUpOnActionParameter() {
-        final MandatoryFacetOnParameterInvertedByOptionalAnnotationFactory 
facetFactory = new 
MandatoryFacetOnParameterInvertedByOptionalAnnotationFactory();
-
-        class Customer {
-            @SuppressWarnings("unused")
-            public void someAction(@Optional final String foo) {
-            }
-        }
-        final Method method = findMethod(Customer.class, "someAction", new 
Class[] { String.class });
-
-        facetFactory.processParams(new ProcessParameterContext(method, 0, 
facetedMethodParameter));
-
-        final Facet facet = 
facetedMethodParameter.getFacet(MandatoryFacet.class);
-        assertNotNull(facet);
-        assertTrue(facet instanceof 
MandatoryFacetOnParameterInvertedByOptionalAnnotation);
-    }
-
-    public void testOptionalAnnotationIgnoredForPrimitiveOnProperty() {
-        final MandatoryFacetOnPropertyInvertedByOptionalAnnotationFactory 
facetFactory = new 
MandatoryFacetOnPropertyInvertedByOptionalAnnotationFactory();
-
-        class Customer {
-            @SuppressWarnings("unused")
-            @Optional
-            public int getNumberOfOrders() {
-                return 0;
-            }
-        }
-        final Method method = findMethod(Customer.class, "getNumberOfOrders");
-
-        facetFactory.process(new ProcessMethodContext(Customer.class, null, 
null, method, methodRemover, facetedMethod));
-
-        assertNull(facetedMethod.getFacet(MandatoryFacet.class));
-    }
-
-    public void testOptionalAnnotationIgnoredForPrimitiveOnActionParameter() {
-        final MandatoryFacetOnParameterInvertedByOptionalAnnotationFactory 
facetFactory = new 
MandatoryFacetOnParameterInvertedByOptionalAnnotationFactory();
-
-        class Customer {
-            @SuppressWarnings("unused")
-            public void someAction(@Optional final int foo) {
-            }
-        }
-        final Method method = findMethod(Customer.class, "someAction", new 
Class[] { int.class });
-
-        facetFactory.processParams(new ProcessParameterContext(method, 0, 
facetedMethodParameter));
-
-        assertNull(facetedMethod.getFacet(MandatoryFacet.class));
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/validate/regex/RegExAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/validate/regex/RegExAnnotationFacetFactoryTest.java
 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/validate/regex/RegExAnnotationFacetFactoryTest.java
deleted file mode 100644
index 50c32ce..0000000
--- 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/validate/regex/RegExAnnotationFacetFactoryTest.java
+++ /dev/null
@@ -1,130 +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.propparam.validate.regex;
-
-import java.lang.reflect.Method;
-
-import org.apache.isis.applib.annotation.RegEx;
-import org.apache.isis.core.metamodel.facetapi.Facet;
-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.AbstractFacetFactoryTest;
-import org.apache.isis.core.metamodel.facets.object.regex.RegExFacet;
-import 
org.apache.isis.core.metamodel.facets.object.regex.annotation.RegExFacetOnTypeAnnotation;
-import 
org.apache.isis.core.metamodel.facets.object.regex.annotation.RegExFacetOnTypeAnnotationFactory;
-import 
org.apache.isis.core.metamodel.facets.param.validating.regexannot.RegExFacetFacetOnParameterAnnotationFactory;
-import 
org.apache.isis.core.metamodel.facets.param.validating.regexannot.RegExFacetOnParameterAnnotation;
-import 
org.apache.isis.core.metamodel.facets.properties.validating.regexannot.RegExFacetFacetOnPropertyAnnotationFactory;
-import 
org.apache.isis.core.metamodel.facets.properties.validating.regexannot.RegExFacetOnPropertyAnnotation;
-
-public class RegExAnnotationFacetFactoryTest extends AbstractFacetFactoryTest {
-
-    public void testRegExAnnotationPickedUpOnClass() {
-        final RegExFacetOnTypeAnnotationFactory facetFactory = new 
RegExFacetOnTypeAnnotationFactory();
-
-        @RegEx(validation = "^A.*", caseSensitive = false)
-        class Customer {
-        }
-        facetFactory.process(new ProcessClassContext(Customer.class, 
methodRemover, facetedMethod));
-
-        final Facet facet = facetedMethod.getFacet(RegExFacet.class);
-        assertNotNull(facet);
-        assertTrue(facet instanceof RegExFacetOnTypeAnnotation);
-        final RegExFacetOnTypeAnnotation regExFacet = 
(RegExFacetOnTypeAnnotation) facet;
-        assertEquals("^A.*", regExFacet.validation());
-        assertEquals(false, regExFacet.caseSensitive());
-    }
-
-    public void testRegExAnnotationPickedUpOnProperty() {
-        final RegExFacetFacetOnPropertyAnnotationFactory facetFactory = new 
RegExFacetFacetOnPropertyAnnotationFactory();
-
-        class Customer {
-            @SuppressWarnings("unused")
-            @RegEx(validation = "^A.*", caseSensitive = false)
-            public String getFirstName() {
-                return null;
-            }
-        }
-        final Method method = findMethod(Customer.class, "getFirstName");
-
-        facetFactory.process(new ProcessMethodContext(Customer.class, null, 
null, method, methodRemover, facetedMethod));
-
-        final Facet facet = facetedMethod.getFacet(RegExFacet.class);
-        assertNotNull(facet);
-        assertTrue(facet instanceof RegExFacetOnPropertyAnnotation);
-        final RegExFacetOnPropertyAnnotation regExFacet = 
(RegExFacetOnPropertyAnnotation) facet;
-        assertEquals("^A.*", regExFacet.validation());
-        assertEquals(false, regExFacet.caseSensitive());
-    }
-
-    public void testRegExAnnotationPickedUpOnActionParameter() {
-        final RegExFacetFacetOnParameterAnnotationFactory facetFactory = new 
RegExFacetFacetOnParameterAnnotationFactory();
-
-        class Customer {
-            @SuppressWarnings("unused")
-            public void someAction(@RegEx(validation = "^A.*", caseSensitive = 
false) final String foo) {
-            }
-        }
-        final Method method = findMethod(Customer.class, "someAction", new 
Class[] { String.class });
-
-        facetFactory.processParams(new ProcessParameterContext(method, 0, 
facetedMethodParameter));
-
-        final Facet facet = facetedMethodParameter.getFacet(RegExFacet.class);
-        assertNotNull(facet);
-        assertTrue(facet instanceof RegExFacetOnParameterAnnotation);
-        final RegExFacetOnParameterAnnotation regExFacet = 
(RegExFacetOnParameterAnnotation) facet;
-        assertEquals("^A.*", regExFacet.validation());
-        assertEquals(false, regExFacet.caseSensitive());
-    }
-
-    public void testRegExAnnotationIgnoredForNonStringsProperty() {
-        final RegExFacetFacetOnParameterAnnotationFactory facetFactory = new 
RegExFacetFacetOnParameterAnnotationFactory();
-
-        class Customer {
-            @SuppressWarnings("unused")
-            @RegEx(validation = "^A.*", caseSensitive = false)
-            public int getNumberOfOrders() {
-                return 0;
-            }
-        }
-        final Method method = findMethod(Customer.class, "getNumberOfOrders");
-
-        facetFactory.process(new ProcessMethodContext(Customer.class, null, 
null, method, methodRemover, facetedMethod));
-
-        assertNull(facetedMethod.getFacet(RegExFacet.class));
-    }
-
-    public void testRegExAnnotationIgnoredForPrimitiveOnActionParameter() {
-        final RegExFacetFacetOnParameterAnnotationFactory facetFactory = new 
RegExFacetFacetOnParameterAnnotationFactory();
-
-        class Customer {
-            @SuppressWarnings("unused")
-            public void someAction(@RegEx(validation = "^A.*", caseSensitive = 
false) final int foo) {
-            }
-        }
-        final Method method = findMethod(Customer.class, "someAction", new 
Class[] { int.class });
-
-        facetFactory.processParams(new ProcessParameterContext(method, 0, 
facetedMethodParameter));
-
-        assertNull(facetedMethod.getFacet(RegExFacet.class));
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/validate/regex/RegExAnnotationOnTypeFacetFactoryTest.java
----------------------------------------------------------------------
diff --git 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/validate/regex/RegExAnnotationOnTypeFacetFactoryTest.java
 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/validate/regex/RegExAnnotationOnTypeFacetFactoryTest.java
new file mode 100644
index 0000000..2ebe771
--- /dev/null
+++ 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/validate/regex/RegExAnnotationOnTypeFacetFactoryTest.java
@@ -0,0 +1,48 @@
+/*
+ *  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.propparam.validate.regex;
+
+import org.apache.isis.applib.annotation.RegEx;
+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.regex.RegExFacet;
+import 
org.apache.isis.core.metamodel.facets.object.regex.annotation.RegExFacetOnTypeAnnotation;
+import 
org.apache.isis.core.metamodel.facets.object.regex.annotation.RegExFacetOnTypeAnnotationFactory;
+
+public class RegExAnnotationOnTypeFacetFactoryTest extends 
AbstractFacetFactoryTest {
+
+    public void testRegExAnnotationPickedUpOnClass() {
+        final RegExFacetOnTypeAnnotationFactory facetFactory = new 
RegExFacetOnTypeAnnotationFactory();
+
+        @RegEx(validation = "^A.*", caseSensitive = false)
+        class Customer {
+        }
+        facetFactory.process(new ProcessClassContext(Customer.class, 
methodRemover, facetedMethod));
+
+        final Facet facet = facetedMethod.getFacet(RegExFacet.class);
+        assertNotNull(facet);
+        assertTrue(facet instanceof RegExFacetOnTypeAnnotation);
+        final RegExFacetOnTypeAnnotation regExFacet = 
(RegExFacetOnTypeAnnotation) facet;
+        assertEquals("^A.*", regExFacet.validation());
+        assertEquals(false, regExFacet.caseSensitive());
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/tck/tck-integtests/src/test/java/org/apache/isis/core/integtestsupport/legacy/MemberInvalidTest.java
----------------------------------------------------------------------
diff --git 
a/tck/tck-integtests/src/test/java/org/apache/isis/core/integtestsupport/legacy/MemberInvalidTest.java
 
b/tck/tck-integtests/src/test/java/org/apache/isis/core/integtestsupport/legacy/MemberInvalidTest.java
index 78c0c78..215cee8 100644
--- 
a/tck/tck-integtests/src/test/java/org/apache/isis/core/integtestsupport/legacy/MemberInvalidTest.java
+++ 
b/tck/tck-integtests/src/test/java/org/apache/isis/core/integtestsupport/legacy/MemberInvalidTest.java
@@ -30,8 +30,8 @@ import org.junit.Test;
 
 import org.apache.isis.applib.services.wrapper.InvalidException;
 import org.apache.isis.core.integtestsupport.legacy.sample.domain.Country;
-import 
org.apache.isis.core.metamodel.facets.properties.validating.maxlenannot.MaxLengthFacetOnPropertyAnnotation;
-import 
org.apache.isis.core.metamodel.facets.properties.validating.regexannot.RegExFacetOnPropertyAnnotation;
+import 
org.apache.isis.core.metamodel.facets.properties.property.maxlength.MaxLengthFacetForMaxLengthAnnotationOnProperty;
+import 
org.apache.isis.core.metamodel.facets.properties.property.regex.RegExFacetFromRegExAnnotationOnProperty;
 import 
org.apache.isis.core.metamodel.facets.propparam.mandatory.MandatoryFacetDefault;
 import 
org.apache.isis.core.metamodel.facets.actions.validate.method.ActionValidationFacetViaMethod;
 import 
org.apache.isis.core.metamodel.facets.collections.validate.CollectionValidateAddToFacetViaMethod;
@@ -215,7 +215,7 @@ public class MemberInvalidTest extends AbstractTest {
             custJsWO.setMaxLengthField("This is far too long");
             fail("Should have thrown exception");
         } catch (final InvalidException ex) {
-            assertThat(ex.getAdvisorClass(), 
classEqualTo(MaxLengthFacetOnPropertyAnnotation.class));
+            assertThat(ex.getAdvisorClass(), 
classEqualTo(MaxLengthFacetForMaxLengthAnnotationOnProperty.class));
             assertThat(ex.getIdentifier().getMemberNaturalName(), equalTo("Max 
Length Field"));
         }
     }
@@ -242,7 +242,7 @@ public class MemberInvalidTest extends AbstractTest {
             custJsWO.setRegExCaseInsensitiveField("abXfoobar");
             fail("Should have thrown exception");
         } catch (final InvalidException ex) {
-            assertThat(ex.getAdvisorClass(), 
classEqualTo(RegExFacetOnPropertyAnnotation.class));
+            assertThat(ex.getAdvisorClass(), 
classEqualTo(RegExFacetFromRegExAnnotationOnProperty.class));
             assertThat(ex.getIdentifier().getMemberNaturalName(), equalTo("Reg 
Ex Case Insensitive Field"));
         }
     }

Reply via email to