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")); } }
