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 2018/07/18 06:00:49 UTC

[isis] branch master updated (774e04b -> 50500e2)

This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git.


    from 774e04b  ISIS-1810: updates supplemental data models
     new fcd07db  ISIS-1810: updates to latest version of release plugin.
     new ad567d6  ISIS-1810: updates archetypes to use
     new 3aee989  ISIS-1954: adds BootstrappingGlueAbstract for BDD tests on Junit 5
     new d6815a6  ISIS-1810: moves source-plugin into a mvn profile
     new f2ce4c9  ISIS-1810: uncomments @Column on @Name annotation for simpleapp
     new daca965  ISIS-898: fixes classcast exception with TreePanel.
     new 1d2170e  ISIS-1632: adds meta-annotation support for Jdo @Column and others
     new 9fbd675  ISIS-1632: moves @Column entirely to @Name for SimpleObject#name
     new 50500e2  ISIS-1810: cleans up use of Lombok annotations on SimpleObject

The 9 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../isis/commons/internal/base/_NullSafe.java      |  8 ++-
 .../integtestsupport/IntegrationTestAbstract3.java | 19 +++---
 .../integtestsupport/IntegrationTestJupiter.java   | 17 +++---
 .../isis/core/integtestsupport/ModuleBuilder.java  | 67 ++++++++++++++++++++++
 .../{Util.java => TransactionRuleAbstract.java}    | 51 +---------------
 ...java => HeadlessTransactionSupportDefault.java} |  2 +-
 .../isis/core/metamodel/facets/Annotations.java    |  8 ++-
 .../action/ActionAnnotationFacetFactory.java       |  7 ++-
 ...FromJavaxValidationDigitsAnnotationFactory.java |  4 +-
 .../property/PropertyAnnotationFacetFactory.java   |  3 +-
 ...DerivedFromJdoColumnAnnotationFacetFactory.java |  5 +-
 ...ndatoryFromJdoColumnAnnotationFacetFactory.java | 21 +++----
 core/pom.xml                                       | 23 ++++++--
 .../HeadlessWithBootstrappingAbstract.java         | 15 ++---
 .../viewer/wicket/model/models/ScalarModel.java    |  8 +--
 .../ScalarModel_isScalarSubtypingAnyOf_Test.java   | 53 +++++++++++++++++
 .../ui/components/tree/TreePanelFactories.java     |  7 ++-
 .../bdd/specglue/BootstrappingGlue.java            |  4 +-
 ...ingGlue.java => BootstrappingGlueAbstract.java} | 25 +++-----
 .../modules/simple/dom/impl/SimpleObject.java      |  7 ---
 .../domainapp/modules/simple/dom/types/Name.java   |  5 +-
 example/archetype/helloworld/pom.xml               |  3 +-
 example/archetype/simpleapp/pom.xml                |  3 +-
 23 files changed, 227 insertions(+), 138 deletions(-)
 create mode 100644 core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/ModuleBuilder.java
 rename core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/{Util.java => TransactionRuleAbstract.java} (68%)
 rename core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/components/{DefaultHeadlessTransactionSupport.java => HeadlessTransactionSupportDefault.java} (99%)
 create mode 100644 core/viewer-wicket-model/src/test/java/org/apache/isis/viewer/wicket/model/models/ScalarModel_isScalarSubtypingAnyOf_Test.java
 copy example/application/simpleapp/application/src/test/java/domainapp/application/bdd/specglue/{BootstrappingGlue.java => BootstrappingGlueAbstract.java} (65%)


[isis] 05/09: ISIS-1810: uncomments @Column on @Name annotation for simpleapp

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit f2ce4c920be347c7ca7b64be0e49517f4e381281
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Tue Jul 17 07:14:45 2018 +0100

    ISIS-1810: uncomments @Column on @Name annotation for simpleapp
---
 .../main/java/domainapp/modules/simple/dom/impl/SimpleObject.java    | 3 +--
 .../src/main/java/domainapp/modules/simple/dom/types/Name.java       | 5 ++++-
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/example/application/simpleapp/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.java b/example/application/simpleapp/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.java
index c52a832..cf208b9 100644
--- a/example/application/simpleapp/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.java
+++ b/example/application/simpleapp/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.java
@@ -24,7 +24,6 @@ import javax.jdo.annotations.VersionStrategy;
 import com.google.common.collect.ComparisonChain;
 
 import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.Auditing;
 import org.apache.isis.applib.annotation.CommandReification;
 import org.apache.isis.applib.annotation.DomainObject;
@@ -53,7 +52,7 @@ import lombok.AccessLevel;
 public class SimpleObject implements Comparable<SimpleObject> {
 
 
-    @javax.jdo.annotations.Column(allowsNull = "false", length = Name.MAX_LEN)
+    @javax.jdo.annotations.Column(allowsNull = "false")
     @lombok.Getter @lombok.Setter @lombok.NonNull
     @Title(prepend = "Object: ")
     @Name private String name;
diff --git a/example/application/simpleapp/module-simple/src/main/java/domainapp/modules/simple/dom/types/Name.java b/example/application/simpleapp/module-simple/src/main/java/domainapp/modules/simple/dom/types/Name.java
index b2db377..254422d 100644
--- a/example/application/simpleapp/module-simple/src/main/java/domainapp/modules/simple/dom/types/Name.java
+++ b/example/application/simpleapp/module-simple/src/main/java/domainapp/modules/simple/dom/types/Name.java
@@ -5,13 +5,15 @@ import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
+import javax.jdo.annotations.Column;
+
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.services.i18n.TranslatableString;
 import org.apache.isis.applib.spec.AbstractSpecification2;
 
-// @Column(length = Name.MAX_LEN) // requires DN 5.x
+@Column(length = Name.MAX_LEN)
 @Property(mustSatisfy = Name.NoExclamationMarks.class, maxLength = Name.MAX_LEN)
 @Parameter(mustSatisfy = Name.NoExclamationMarks.class, maxLength = Name.MAX_LEN)
 @ParameterLayout(named = "Name")
@@ -20,6 +22,7 @@ import org.apache.isis.applib.spec.AbstractSpecification2;
 public @interface Name {
 
     int MAX_LEN = 40;
+
     class NoExclamationMarks extends AbstractSpecification2<String> {
 
         @Override


[isis] 01/09: ISIS-1810: updates to latest version of release plugin.

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit fcd07db819cd978b6420f1ee1f55fbdb330e7ca0
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Sun Jul 15 18:20:18 2018 +0100

    ISIS-1810: updates to latest version of release plugin.
    
    Attempting usual command failed, looks like can't handle
    
    Perhaps latest version of this plugin does?
---
 core/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/core/pom.xml b/core/pom.xml
index 62a3e44..23076c5 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -944,7 +944,7 @@
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-release-plugin</artifactId>
-                    <version>2.5.2</version>
+                    <version>2.5.3</version>
                     <configuration>
                         <!-- overriddes the default ('clean verify') as workaround -->
                         <preparationGoals>clean install</preparationGoals>


[isis] 08/09: ISIS-1632: moves @Column entirely to @Name for SimpleObject#name

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 9fbd6753628c1a9c233719ca6a06b87209f5f5e5
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Jul 18 07:59:34 2018 +0200

    ISIS-1632: moves @Column entirely to @Name for SimpleObject#name
---
 .../src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.java   | 1 -
 .../src/main/java/domainapp/modules/simple/dom/types/Name.java          | 2 +-
 2 files changed, 1 insertion(+), 2 deletions(-)

diff --git a/example/application/simpleapp/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.java b/example/application/simpleapp/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.java
index cf208b9..ed8963d 100644
--- a/example/application/simpleapp/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.java
+++ b/example/application/simpleapp/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.java
@@ -52,7 +52,6 @@ import lombok.AccessLevel;
 public class SimpleObject implements Comparable<SimpleObject> {
 
 
-    @javax.jdo.annotations.Column(allowsNull = "false")
     @lombok.Getter @lombok.Setter @lombok.NonNull
     @Title(prepend = "Object: ")
     @Name private String name;
diff --git a/example/application/simpleapp/module-simple/src/main/java/domainapp/modules/simple/dom/types/Name.java b/example/application/simpleapp/module-simple/src/main/java/domainapp/modules/simple/dom/types/Name.java
index 254422d..e381dbe 100644
--- a/example/application/simpleapp/module-simple/src/main/java/domainapp/modules/simple/dom/types/Name.java
+++ b/example/application/simpleapp/module-simple/src/main/java/domainapp/modules/simple/dom/types/Name.java
@@ -13,7 +13,7 @@ import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.services.i18n.TranslatableString;
 import org.apache.isis.applib.spec.AbstractSpecification2;
 
-@Column(length = Name.MAX_LEN)
+@Column(length = Name.MAX_LEN, allowsNull = "false")
 @Property(mustSatisfy = Name.NoExclamationMarks.class, maxLength = Name.MAX_LEN)
 @Parameter(mustSatisfy = Name.NoExclamationMarks.class, maxLength = Name.MAX_LEN)
 @ParameterLayout(named = "Name")


[isis] 06/09: ISIS-898: fixes classcast exception with TreePanel.

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit daca965c2d18b721cc2a87d96918ad8fd14b44a8
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Jul 18 07:55:16 2018 +0200

    ISIS-898: fixes classcast exception with TreePanel.
    
    The FixtureResult class (view model returned from running fixture scripts through the UI) has a property of type java.lang.Object - this being the object wrapped by the FixtureResult, created by the fixture script.  The logic in TreePanelFactories to determine if this property's type implements TreeNode seems to be wrong - returns yes for Object being a subtype of TreeNode.  This then causes a TreePanel to attempt to be rendered which looks to downcast the object to TreeNode, and then [...]
---
 .../isis/commons/internal/base/_NullSafe.java      |  8 +++-
 .../viewer/wicket/model/models/ScalarModel.java    |  8 ++--
 .../ScalarModel_isScalarSubtypingAnyOf_Test.java   | 53 ++++++++++++++++++++++
 .../ui/components/tree/TreePanelFactories.java     |  7 +--
 4 files changed, 67 insertions(+), 9 deletions(-)

diff --git a/core/commons/src/main/java/org/apache/isis/commons/internal/base/_NullSafe.java b/core/commons/src/main/java/org/apache/isis/commons/internal/base/_NullSafe.java
index d495c0a..1aa317a 100644
--- a/core/commons/src/main/java/org/apache/isis/commons/internal/base/_NullSafe.java
+++ b/core/commons/src/main/java/org/apache/isis/commons/internal/base/_NullSafe.java
@@ -57,10 +57,14 @@ public final class _NullSafe {
         return array!=null ? Stream.of(array) : Stream.empty();
     }
 
+    public static <T> Stream<T> stream(final T nullable) {
+        return nullable != null ? Stream.of(nullable) : Stream.empty();
+    }
+
     /**
      * If {@code collection} is {@code null} returns the empty stream,
      * otherwise returns a stream of the collection's elements.
-     * @param collection
+     * @param coll
      * @return non-null stream object
      */
     public static <T> Stream<T> stream(final Collection<T> coll){
@@ -80,7 +84,7 @@ public final class _NullSafe {
     /**
      * If {@code iterator} is {@code null} returns the empty stream,
      * otherwise returns a stream of the iterator's elements.
-     * @param collection
+     * @param iterator
      * @return non-null stream object
      */
     public static <T> Stream<T> stream(final Iterator<T> iterator){
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
index be2ce23..94ec782 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
@@ -26,6 +26,8 @@ import java.util.Collections;
 import java.util.List;
 import java.util.stream.Collectors;
 
+import com.google.common.collect.Lists;
+
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.commons.internal.base._NullSafe;
@@ -60,8 +62,6 @@ import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
 import org.apache.isis.viewer.wicket.model.mementos.PropertyMemento;
 import org.apache.isis.viewer.wicket.model.mementos.SpecUtils;
 
-import com.google.common.collect.Lists;
-
 /**
  * Represents a scalar of an entity, either a {@link Kind#PROPERTY property} or
  * a {@link Kind#PARAMETER parameter}.
@@ -789,10 +789,10 @@ public class ScalarModel extends EntityModel implements LinksProvider, FormExecu
                 .anyMatch(fullName::equals);
     }
 
-    public boolean isScalarTypeSubtypingAnyOf(final Class<?>... requiredClass) {
+    public boolean isScalarTypeSubtypeOf(final Class<?> requiredClass) {
         final Class<?> scalarType = getTypeOfSpecification().getCorrespondingClass();
         return _NullSafe.stream(requiredClass)
-                .anyMatch(scalarType::isAssignableFrom);
+                .anyMatch(x -> x.isAssignableFrom(scalarType));
     }
 
     public String getObjectAsString() {
diff --git a/core/viewer-wicket-model/src/test/java/org/apache/isis/viewer/wicket/model/models/ScalarModel_isScalarSubtypingAnyOf_Test.java b/core/viewer-wicket-model/src/test/java/org/apache/isis/viewer/wicket/model/models/ScalarModel_isScalarSubtypingAnyOf_Test.java
new file mode 100644
index 0000000..6c0c866
--- /dev/null
+++ b/core/viewer-wicket-model/src/test/java/org/apache/isis/viewer/wicket/model/models/ScalarModel_isScalarSubtypingAnyOf_Test.java
@@ -0,0 +1,53 @@
+package org.apache.isis.viewer.wicket.model.models;
+
+import org.jmock.Expectations;
+import org.jmock.auto.Mock;
+import org.junit.Rule;
+
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+public class ScalarModel_isScalarSubtypingAnyOf_Test {
+
+    @Rule
+    public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(JUnitRuleMockery2.Mode.INTERFACES_AND_CLASSES);
+
+    @Mock
+    ObjectSpecification mockObjectSpecification;
+
+    public static class A {}
+    public static class B extends A {}
+    public static class C extends B {}
+
+    @org.junit.Test
+    public void when_super() {
+        assertThat(newScalarModelFor(A.class).isScalarTypeSubtypeOf(B.class), is(equalTo(false)));
+    }
+
+    @org.junit.Test
+    public void when_same() {
+        assertThat(newScalarModelFor(B.class).isScalarTypeSubtypeOf(B.class), is(equalTo(true)));
+    }
+
+    @org.junit.Test
+    public void when_sub() {
+        assertThat(newScalarModelFor(C.class).isScalarTypeSubtypeOf(B.class), is(equalTo(true)));
+    }
+
+    private ScalarModel newScalarModelFor(final Class<?> result) {
+        final ScalarModel scalarModel = new ScalarModel(null, null) {
+            @Override public ObjectSpecification getTypeOfSpecification() {
+                return mockObjectSpecification;
+            }
+        };
+        context.checking(new Expectations() {{
+            allowing(mockObjectSpecification).getCorrespondingClass();
+            will(returnValue(result));
+        }});
+        return scalarModel;
+    }
+}
\ No newline at end of file
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/tree/TreePanelFactories.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/tree/TreePanelFactories.java
index 9ea944e..d9936b4 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/tree/TreePanelFactories.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/tree/TreePanelFactories.java
@@ -19,6 +19,9 @@
 
 package org.apache.isis.viewer.wicket.ui.components.tree;
 
+import org.apache.wicket.Component;
+import org.apache.wicket.model.IModel;
+
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
 import org.apache.isis.viewer.wicket.model.models.ValueModel;
@@ -26,8 +29,6 @@ import org.apache.isis.viewer.wicket.ui.ComponentFactory;
 import org.apache.isis.viewer.wicket.ui.ComponentFactoryAbstract;
 import org.apache.isis.viewer.wicket.ui.ComponentType;
 import org.apache.isis.viewer.wicket.ui.components.scalars.markup.MarkupPanel;
-import org.apache.wicket.Component;
-import org.apache.wicket.model.IModel;
 
 /**
  * {@link ComponentFactory} for {@link MarkupPanel}.
@@ -51,7 +52,7 @@ public class TreePanelFactories {
 
             final ScalarModel scalarModel = (ScalarModel) model;
 
-            if(!scalarModel.isScalarTypeSubtypingAnyOf(org.apache.isis.applib.tree.TreeNode.class)) {
+            if(!scalarModel.isScalarTypeSubtypeOf(org.apache.isis.applib.tree.TreeNode.class)) {
                 return ApplicationAdvice.DOES_NOT_APPLY;
             }
 


[isis] 03/09: ISIS-1954: adds BootstrappingGlueAbstract for BDD tests on Junit 5

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 3aee989ea4c4e76bca08af07b52c6a118f8a199f
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Tue Jul 17 07:13:31 2018 +0100

    ISIS-1954: adds BootstrappingGlueAbstract for BDD tests on Junit 5
    
    calls ModuleBuilder to set up additional services.
    
    Also removed the Util class that was acting as a wrapper for ModuleBuilder and also TransactionRule support.
---
 .../integtestsupport/IntegrationTestAbstract3.java | 19 +++---
 .../integtestsupport/IntegrationTestJupiter.java   | 17 +++---
 .../isis/core/integtestsupport/ModuleBuilder.java  | 67 ++++++++++++++++++++++
 .../{Util.java => TransactionRuleAbstract.java}    | 51 +---------------
 ...java => HeadlessTransactionSupportDefault.java} |  2 +-
 .../HeadlessWithBootstrappingAbstract.java         | 15 ++---
 .../bdd/specglue/BootstrappingGlue.java            |  4 +-
 ...ingGlue.java => BootstrappingGlueAbstract.java} | 25 +++-----
 8 files changed, 106 insertions(+), 94 deletions(-)

diff --git a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IntegrationTestAbstract3.java b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IntegrationTestAbstract3.java
index d5a94a3..7dfb208 100644
--- a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IntegrationTestAbstract3.java
+++ b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IntegrationTestAbstract3.java
@@ -18,12 +18,6 @@
  */
 package org.apache.isis.core.integtestsupport;
 
-import org.apache.isis.applib.AppManifest;
-import org.apache.isis.applib.Module;
-import org.apache.isis.core.runtime.headless.HeadlessTransactionSupport;
-import org.apache.isis.core.runtime.headless.HeadlessWithBootstrappingAbstract;
-import org.apache.isis.core.runtime.headless.IsisSystem;
-import org.apache.isis.core.runtime.headless.logging.LogConfig;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
@@ -33,6 +27,13 @@ import org.junit.runners.model.FrameworkMethod;
 import org.junit.runners.model.Statement;
 import org.slf4j.event.Level;
 
+import org.apache.isis.applib.AppManifest;
+import org.apache.isis.applib.Module;
+import org.apache.isis.core.runtime.headless.HeadlessTransactionSupport;
+import org.apache.isis.core.runtime.headless.HeadlessWithBootstrappingAbstract;
+import org.apache.isis.core.runtime.headless.IsisSystem;
+import org.apache.isis.core.runtime.headless.logging.LogConfig;
+
 /**
  * Reworked base class for integration tests, uses a {@link Module} to bootstrap, rather than an {@link AppManifest}.
  */
@@ -50,7 +51,7 @@ public abstract class IntegrationTestAbstract3 extends HeadlessWithBootstrapping
     @Rule
     public IntegrationTestAbstract3.IsisTransactionRule isisTransactionRule = new IntegrationTestAbstract3.IsisTransactionRule();
 
-    private static class IsisTransactionRule implements MethodRule {
+    private static class IsisTransactionRule extends TransactionRuleAbstract implements MethodRule {
 
         @Override
         public Statement apply(final Statement base, final FrameworkMethod method, final Object target) {
@@ -66,7 +67,7 @@ public abstract class IntegrationTestAbstract3 extends HeadlessWithBootstrapping
                         final IsisSystem isft = IsisSystem.get();
                         isft.getService(HeadlessTransactionSupport.class).endTransaction();
                     } catch(final Exception e) {
-                        Util.handleTransactionContextException(e);
+                        handleTransactionContextException(e);
                     }
                 }
 
@@ -82,7 +83,7 @@ public abstract class IntegrationTestAbstract3 extends HeadlessWithBootstrapping
             final LogConfig logConfig,
             final Module module) {
         super(logConfig,
-                Util.moduleBuilder(module)
+                ModuleBuilder.create(module)
                 .withHeadlessTransactionSupport()
                 .withIntegrationTestConfigFallback()
                 .build() );
diff --git a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IntegrationTestJupiter.java b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IntegrationTestJupiter.java
index 5c05fb5..5745398 100644
--- a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IntegrationTestJupiter.java
+++ b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IntegrationTestJupiter.java
@@ -18,17 +18,18 @@
  */
 package org.apache.isis.core.integtestsupport;
 
+import org.junit.jupiter.api.extension.AfterEachCallback;
+import org.junit.jupiter.api.extension.BeforeEachCallback;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.junit.jupiter.api.extension.ExtensionContext;
+import org.slf4j.event.Level;
+
 import org.apache.isis.applib.AppManifest;
 import org.apache.isis.applib.Module;
 import org.apache.isis.core.runtime.headless.HeadlessTransactionSupport;
 import org.apache.isis.core.runtime.headless.HeadlessWithBootstrappingAbstract;
 import org.apache.isis.core.runtime.headless.IsisSystem;
 import org.apache.isis.core.runtime.headless.logging.LogConfig;
-import org.junit.jupiter.api.extension.AfterEachCallback;
-import org.junit.jupiter.api.extension.BeforeEachCallback;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.junit.jupiter.api.extension.ExtensionContext;
-import org.slf4j.event.Level;
 
 /**
  * Base class for integration tests for the JUnit 5 Jupiter Engine,
@@ -39,7 +40,7 @@ import org.slf4j.event.Level;
 @ExtendWith(IntegrationTestJupiter.HeadlessTransactionRule.class)
 public abstract class IntegrationTestJupiter extends HeadlessWithBootstrappingAbstract {
 
-    public static class HeadlessTransactionRule implements AfterEachCallback, BeforeEachCallback {
+    public static class HeadlessTransactionRule extends TransactionRuleAbstract implements AfterEachCallback, BeforeEachCallback {
 
         @Override
         public void beforeEach(ExtensionContext context) throws Exception {
@@ -54,7 +55,7 @@ public abstract class IntegrationTestJupiter extends HeadlessWithBootstrappingAb
                 final IsisSystem isft = IsisSystem.get();
                 isft.getService(HeadlessTransactionSupport.class).endTransaction();
             } catch(final Exception e) {
-                Util.handleTransactionContextException(e);
+                handleTransactionContextException(e);
             } finally {
                 final IntegrationTestJupiter testInstance = testInstance(context);
                 testInstance.tearDownAllModules();
@@ -77,7 +78,7 @@ public abstract class IntegrationTestJupiter extends HeadlessWithBootstrappingAb
             final LogConfig logConfig,
             final Module module) {
         super(logConfig,
-                Util.moduleBuilder(module)
+                ModuleBuilder.create(module)
                 .withHeadlessTransactionSupport()
                 .withIntegrationTestConfigFallback()
                 .build() );
diff --git a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/ModuleBuilder.java b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/ModuleBuilder.java
new file mode 100644
index 0000000..561db04
--- /dev/null
+++ b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/ModuleBuilder.java
@@ -0,0 +1,67 @@
+/*
+ *  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.integtestsupport;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.isis.applib.AppManifest;
+import org.apache.isis.applib.Module;
+import org.apache.isis.core.integtestsupport.components.HeadlessTransactionSupportDefault;
+
+/**
+ * Provides the ability to wrap or extend a {@link Module} with additional services/configuration to allow the
+ * Module be used for bootstrapping integration tests.
+ */
+public class ModuleBuilder {
+
+    public static ModuleBuilder create(Module module) {
+        return new ModuleBuilder(module);
+    }
+
+    final Module module;
+    ModuleBuilder(Module module) {
+        this.module = module;
+    }
+
+    public Module build() {
+        return module;
+    }
+
+    /**
+     * Registers HeadlessTransactionSupportDefault as an additional service.
+     */
+    public ModuleBuilder withHeadlessTransactionSupport() {
+        module.getAdditionalServices().add(HeadlessTransactionSupportDefault.class);
+        return this;
+    }
+    /**
+     * Adds default fallback configuration values for integration tests,
+     * without overriding any existing key value pairs.
+     */
+    public ModuleBuilder withIntegrationTestConfigFallback() {
+        final Map<String, String> integrationTestDefaultConfig = new HashMap<>();
+        AppManifest.Util.withJavaxJdoRunInMemoryProperties(integrationTestDefaultConfig);
+        AppManifest.Util.withDataNucleusProperties(integrationTestDefaultConfig);
+        AppManifest.Util.withIsisIntegTestProperties(integrationTestDefaultConfig);
+
+        integrationTestDefaultConfig.forEach((k, v)-> module.getFallbackConfigProps().putIfAbsent(k, v));
+        return this;
+    }
+}
diff --git a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/Util.java b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/TransactionRuleAbstract.java
similarity index 68%
rename from core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/Util.java
rename to core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/TransactionRuleAbstract.java
index edd5201..970e043 100644
--- a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/Util.java
+++ b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/TransactionRuleAbstract.java
@@ -19,63 +19,18 @@
 
 package org.apache.isis.core.integtestsupport;
 
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
-import org.apache.isis.applib.AppManifest;
-import org.apache.isis.applib.Module;
 import org.apache.isis.applib.NonRecoverableException;
 import org.apache.isis.applib.RecoverableException;
 import org.apache.isis.applib.services.jdosupport.IsisJdoSupport;
 import org.apache.isis.applib.services.xactn.TransactionService;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
-import org.apache.isis.core.integtestsupport.components.DefaultHeadlessTransactionSupport;
 import org.apache.isis.core.runtime.headless.IsisSystem;
 
-class Util {
+public abstract class TransactionRuleAbstract {
 
-    // -- MODULE BUILDER
-
-    public static class ModuleBuilder {
-        final Module module;
-        private ModuleBuilder(Module module) {
-            this.module = module;
-        }
-        public Module build() {
-            return module;
-        }
-        /**
-         * Registers DefaultHeadlessTransactionSupport as an additional service.
-         */
-        public ModuleBuilder withHeadlessTransactionSupport() {
-            module.getAdditionalServices().add(DefaultHeadlessTransactionSupport.class);
-            return this;
-        }
-        /**
-         * Adds default fallback configuration values for integration tests,
-         * without overriding any existing key value pairs.
-         */
-        public ModuleBuilder withIntegrationTestConfigFallback() {
-            final Map<String, String> integrationTestDefaultConfig = new HashMap<>();
-            AppManifest.Util.withJavaxJdoRunInMemoryProperties(integrationTestDefaultConfig);
-            AppManifest.Util.withDataNucleusProperties(integrationTestDefaultConfig);
-            AppManifest.Util.withIsisIntegTestProperties(integrationTestDefaultConfig);
-
-            integrationTestDefaultConfig.forEach((k, v)->{
-                module.getFallbackConfigProps().computeIfAbsent(k, __->v);
-            });
-            return this;
-        }
-    }
-
-    public static ModuleBuilder moduleBuilder(Module module) {
-        return new ModuleBuilder(module);
-    }
-
-    // -- HANDLING EXCEPTIONS
-
-    public static void handleTransactionContextException(Exception e) throws Exception {
+    void handleTransactionContextException(Exception e) throws Exception {
         // determine if underlying cause is an applib-defined exception,
         final RecoverableException recoverableException =
                 determineIfRecoverableException(e);
@@ -149,6 +104,4 @@ class Util {
     }
 
 
-
-
 }
diff --git a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/components/DefaultHeadlessTransactionSupport.java b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/components/HeadlessTransactionSupportDefault.java
similarity index 99%
rename from core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/components/DefaultHeadlessTransactionSupport.java
rename to core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/components/HeadlessTransactionSupportDefault.java
index 2706a50..6003e2f 100644
--- a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/components/DefaultHeadlessTransactionSupport.java
+++ b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/components/HeadlessTransactionSupportDefault.java
@@ -33,7 +33,7 @@ import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
 import org.apache.isis.core.runtime.system.transaction.IsisTransaction.State;
 
 @DomainService(nature=NatureOfService.DOMAIN)
-public class DefaultHeadlessTransactionSupport implements HeadlessTransactionSupport {
+public class HeadlessTransactionSupportDefault implements HeadlessTransactionSupport {
 
     @Override
     public void beginTransaction() {
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/HeadlessWithBootstrappingAbstract.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/HeadlessWithBootstrappingAbstract.java
index d693998..d764749 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/HeadlessWithBootstrappingAbstract.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/HeadlessWithBootstrappingAbstract.java
@@ -20,19 +20,20 @@ package org.apache.isis.core.runtime.headless;
 
 import java.io.PrintStream;
 
-import org.apache.isis.applib.Module;
-import org.apache.isis.applib.clock.Clock;
-import org.apache.isis.applib.services.xactn.TransactionService;
-import org.apache.isis.core.commons.factory.InstanceUtil;
-import org.apache.isis.core.runtime.headless.logging.LogConfig;
-import org.apache.isis.core.runtime.headless.logging.LogStream;
+import com.google.common.base.Strings;
+
 import org.apache.log4j.PropertyConfigurator;
 import org.joda.time.LocalDate;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.event.Level;
 
-import com.google.common.base.Strings;
+import org.apache.isis.applib.Module;
+import org.apache.isis.applib.clock.Clock;
+import org.apache.isis.applib.services.xactn.TransactionService;
+import org.apache.isis.core.commons.factory.InstanceUtil;
+import org.apache.isis.core.runtime.headless.logging.LogConfig;
+import org.apache.isis.core.runtime.headless.logging.LogStream;
 
 /**
  * Provides headless access to the system, first bootstrapping the system if required.
diff --git a/example/application/simpleapp/application/src/test/java/domainapp/application/bdd/specglue/BootstrappingGlue.java b/example/application/simpleapp/application/src/test/java/domainapp/application/bdd/specglue/BootstrappingGlue.java
index 654d555..c896845 100644
--- a/example/application/simpleapp/application/src/test/java/domainapp/application/bdd/specglue/BootstrappingGlue.java
+++ b/example/application/simpleapp/application/src/test/java/domainapp/application/bdd/specglue/BootstrappingGlue.java
@@ -16,13 +16,11 @@ O *  Licensed to the Apache Software Foundation (ASF) under one or more
  */
 package domainapp.application.bdd.specglue;
 
-import org.apache.isis.core.runtime.headless.HeadlessWithBootstrappingAbstract;
-
 import cucumber.api.java.After;
 import cucumber.api.java.Before;
 import domainapp.application.DomainAppApplicationModule;
 
-public class BootstrappingGlue extends HeadlessWithBootstrappingAbstract {
+public class BootstrappingGlue extends BootstrappingGlueAbstract {
 
     @Before(order=100)
     public void beforeScenario() {
diff --git a/example/application/simpleapp/application/src/test/java/domainapp/application/bdd/specglue/BootstrappingGlue.java b/example/application/simpleapp/application/src/test/java/domainapp/application/bdd/specglue/BootstrappingGlueAbstract.java
similarity index 65%
copy from example/application/simpleapp/application/src/test/java/domainapp/application/bdd/specglue/BootstrappingGlue.java
copy to example/application/simpleapp/application/src/test/java/domainapp/application/bdd/specglue/BootstrappingGlueAbstract.java
index 654d555..92e9eb8 100644
--- a/example/application/simpleapp/application/src/test/java/domainapp/application/bdd/specglue/BootstrappingGlue.java
+++ b/example/application/simpleapp/application/src/test/java/domainapp/application/bdd/specglue/BootstrappingGlueAbstract.java
@@ -16,26 +16,17 @@ O *  Licensed to the Apache Software Foundation (ASF) under one or more
  */
 package domainapp.application.bdd.specglue;
 
+import org.apache.isis.applib.Module;
+import org.apache.isis.core.integtestsupport.ModuleBuilder;
 import org.apache.isis.core.runtime.headless.HeadlessWithBootstrappingAbstract;
 
-import cucumber.api.java.After;
-import cucumber.api.java.Before;
-import domainapp.application.DomainAppApplicationModule;
+public class BootstrappingGlueAbstract extends HeadlessWithBootstrappingAbstract {
 
-public class BootstrappingGlue extends HeadlessWithBootstrappingAbstract {
-
-    @Before(order=100)
-    public void beforeScenario() {
-        super.bootstrapAndSetupIfRequired();
-    }
-
-    @After
-    public void afterScenario(cucumber.api.Scenario sc) {
-        super.tearDownAllModules();
-    }
-
-    public BootstrappingGlue() {
-        super(new DomainAppApplicationModule());
+    public BootstrappingGlueAbstract(final Module module) {
+        super(ModuleBuilder.create(module)
+                .withHeadlessTransactionSupport()
+                .withIntegrationTestConfigFallback()
+                .build());
     }
 
 }


[isis] 07/09: ISIS-1632: adds meta-annotation support for Jdo @Column and others

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 1d2170ef636f3d959e85d43bd3c7c6ab5fd4558b
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Jul 18 07:58:30 2018 +0200

    ISIS-1632: adds meta-annotation support for Jdo @Column and others
    
    others being @Digits and @Nullable.
    
    The @Column support was needed because otherwise the metamodel validator (MetaModelValidatorForConflictingOptionality) was throwing an incompatible nullability issue for SimpleObject#name (which is annotated using @Name that itself is annotated with @Column(allowsNull="false") ).
---
 .../isis/core/metamodel/facets/Annotations.java     |  8 ++++++--
 .../action/ActionAnnotationFacetFactory.java        |  7 ++++---
 ...yFromJavaxValidationDigitsAnnotationFactory.java |  4 +++-
 .../property/PropertyAnnotationFacetFactory.java    |  3 ++-
 ...lDerivedFromJdoColumnAnnotationFacetFactory.java |  5 +++--
 ...andatoryFromJdoColumnAnnotationFacetFactory.java | 21 +++++++++++----------
 6 files changed, 29 insertions(+), 19 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/Annotations.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/Annotations.java
index 06311db..1e87972 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/Annotations.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/Annotations.java
@@ -36,6 +36,8 @@ import javax.validation.constraints.Pattern;
 import javax.xml.bind.annotation.XmlTransient;
 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
+import com.google.common.collect.Lists;
+
 import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.applib.annotation.CollectionLayout;
 import org.apache.isis.applib.annotation.MemberOrder;
@@ -47,8 +49,6 @@ import org.apache.isis.core.commons.reflection.Reflect;
 import org.apache.isis.core.metamodel.exceptions.MetaModelException;
 import org.apache.isis.core.metamodel.methodutils.MethodScope;
 
-import com.google.common.collect.Lists;
-
 public final class Annotations  {
 
     private Annotations() {}
@@ -226,6 +226,10 @@ public final class Annotations  {
     /**
      * Searches for annotation on provided method, and if not found for any
      * inherited methods up from the superclass.
+     *
+     * <p>
+     *     WARN: this method does NOT search for meta-annotations; use {@link #getAnnotations(Class, Class)} for that.
+     * </p>
      */
     public static <T extends Annotation> T getAnnotation(
             final Method method,
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
index 3d6eb0a..00d6227 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
@@ -22,6 +22,8 @@ package org.apache.isis.core.metamodel.facets.actions.action;
 import java.lang.reflect.Method;
 import java.util.List;
 
+import com.google.common.base.Strings;
+
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.events.domain.ActionDomainEvent;
 import org.apache.isis.applib.services.HasTransactionId;
@@ -58,8 +60,6 @@ import org.apache.isis.core.metamodel.facets.members.order.annotprop.MemberOrder
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.util.EventUtil;
 
-import com.google.common.base.Strings;
-
 public class ActionAnnotationFacetFactory extends FacetFactoryAbstract {
 
 
@@ -291,7 +291,8 @@ public class ActionAnnotationFacetFactory extends FacetFactoryAbstract {
 
         // check for @Action(associateWith=...)
 
-        final Action action = Annotations.getAnnotation(method, Action.class);
+        final List<Action> actions = Annotations.getAnnotations(method, Action.class);
+        final Action action = actions.isEmpty() ? null : actions.get(0);
         if (action != null) {
             final String associateWith = action.associateWith();
             if(!Strings.isNullOrEmpty(associateWith)) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/bigdecimal/javaxvaldigits/BigDecimalFacetOnPropertyFromJavaxValidationDigitsAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/bigdecimal/javaxvaldigits/BigDecimalFacetOnPropertyFromJavaxValidationDigitsAnnotationFactory.java
index 8f1bb1a..4b392bd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/bigdecimal/javaxvaldigits/BigDecimalFacetOnPropertyFromJavaxValidationDigitsAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/bigdecimal/javaxvaldigits/BigDecimalFacetOnPropertyFromJavaxValidationDigitsAnnotationFactory.java
@@ -19,6 +19,7 @@
 package org.apache.isis.core.metamodel.facets.properties.bigdecimal.javaxvaldigits;
 
 import java.math.BigDecimal;
+import java.util.List;
 
 import javax.validation.constraints.Digits;
 
@@ -42,7 +43,8 @@ public class BigDecimalFacetOnPropertyFromJavaxValidationDigitsAnnotationFactory
             return;
         }
 
-        final Digits annotation = Annotations.getAnnotation(processMethodContext.getMethod(), Digits.class);
+        final List<Digits> annotations = Annotations.getAnnotations(processMethodContext.getMethod(), Digits.class);
+        final Digits annotation = annotations.isEmpty() ? null : annotations.get(0);
         if (annotation == null) {
             return;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java
index ae75861..bd23367 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java
@@ -285,7 +285,8 @@ public class PropertyAnnotationFacetFactory extends FacetFactoryAbstract impleme
         final FacetHolder holder = processMethodContext.getFacetHolder();
 
         // check for @Nullable
-        final Nullable nullableAnnotation = Annotations.getAnnotation(method, Nullable.class);
+        final List<Nullable> nullableAnnotations = Annotations.getAnnotations(method, Nullable.class);
+        final Nullable nullableAnnotation = nullableAnnotations.isEmpty() ? null : nullableAnnotations.get(0);
         final MandatoryFacet facet2 =
                 MandatoryFacetInvertedByNullableAnnotationOnProperty.create(nullableAnnotation, method, holder);
         FacetUtil.addFacet(facet2);
diff --git a/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/BigDecimalDerivedFromJdoColumnAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/BigDecimalDerivedFromJdoColumnAnnotationFacetFactory.java
index 64a674a..5adc667 100644
--- a/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/BigDecimalDerivedFromJdoColumnAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/BigDecimalDerivedFromJdoColumnAnnotationFacetFactory.java
@@ -63,9 +63,10 @@ public class BigDecimalDerivedFromJdoColumnAnnotationFacetFactory extends FacetF
 
         final FacetedMethod holder = processMethodContext.getFacetHolder();
 
-        BigDecimalValueFacet existingFacet = (BigDecimalValueFacet) holder.getFacet(BigDecimalValueFacet.class);
+        BigDecimalValueFacet existingFacet = holder.getFacet(BigDecimalValueFacet.class);
 
-        final Column jdoColumnAnnotation = Annotations.getAnnotation(processMethodContext.getMethod(), Column.class);
+        final List<Column> jdoColumnAnnotations = Annotations.getAnnotations(processMethodContext.getMethod(), Column.class);
+        final Column jdoColumnAnnotation = jdoColumnAnnotations.isEmpty() ? null : jdoColumnAnnotations.get(0);
 
         if (jdoColumnAnnotation == null) {
             if(existingFacet != null && !existingFacet.isNoop()) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/MandatoryFromJdoColumnAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/MandatoryFromJdoColumnAnnotationFacetFactory.java
index 6432668..2e9519f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/MandatoryFromJdoColumnAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/MandatoryFromJdoColumnAnnotationFacetFactory.java
@@ -63,7 +63,7 @@ public class MandatoryFromJdoColumnAnnotationFacetFactory extends FacetFactoryAb
             return;
         }
 
-        final Column annotation = Annotations.getAnnotation(processMethodContext.getMethod(), Column.class);
+        final List<Column> annotations = Annotations.getAnnotations(processMethodContext.getMethod(), Column.class);
 
         final FacetedMethod holder = processMethodContext.getFacetHolder();
 
@@ -82,22 +82,23 @@ public class MandatoryFromJdoColumnAnnotationFacetFactory extends FacetFactoryAb
             }
         }
 
+        final Column annotation = annotations.isEmpty() ? null : annotations.get(0);
         boolean required = whetherRequired(processMethodContext, annotation);
         MandatoryFacet facet = annotation != null
                 ? new MandatoryFacetDerivedFromJdoColumn(holder, required)
                         : new MandatoryFacetInferredFromAbsenceOfJdoColumn(holder, required);
 
 
-                // as a side-effect, will chain any existing facets.
-                // we'll exploit this fact for meta-model validation (see #refineMetaModelValidator(), below)
-                FacetUtil.addFacet(facet);
+        // as a side-effect, will chain any existing facets.
+        // we'll exploit this fact for meta-model validation (see #refineMetaModelValidator(), below)
+        FacetUtil.addFacet(facet);
 
-                // however, if a @Column was explicitly provided, and the underlying facet
-                // was the simple MandatoryFacetDefault (from an absence of @Optional or @Mandatory),
-                // then don't chain, simply replace.
-                if(facet instanceof MandatoryFacetDerivedFromJdoColumn && facet.getUnderlyingFacet() instanceof MandatoryFacetDefault) {
-                    facet.setUnderlyingFacet(null);
-                }
+        // however, if a @Column was explicitly provided, and the underlying facet
+        // was the simple MandatoryFacetDefault (from an absence of @Optional or @Mandatory),
+        // then don't chain, simply replace.
+        if(facet instanceof MandatoryFacetDerivedFromJdoColumn && facet.getUnderlyingFacet() instanceof MandatoryFacetDefault) {
+            facet.setUnderlyingFacet(null);
+        }
     }
 
     private static boolean whetherRequired(final ProcessMethodContext processMethodContext, final Column annotation) {


[isis] 02/09: ISIS-1810: updates archetypes to use

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit ad567d630c22dda9de2c5284ac47c438d3ff4def
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Jul 16 20:37:32 2018 +0100

    ISIS-1810: updates archetypes to use
---
 example/archetype/helloworld/pom.xml | 3 ++-
 example/archetype/simpleapp/pom.xml  | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/example/archetype/helloworld/pom.xml b/example/archetype/helloworld/pom.xml
index fc5f961..cebfcba 100644
--- a/example/archetype/helloworld/pom.xml
+++ b/example/archetype/helloworld/pom.xml
@@ -21,7 +21,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.apache.isis.archetype</groupId>
     <artifactId>helloworld-archetype</artifactId>
-    <version>2.0.0-M1-SNAPSHOT</version>
+    <version>${revision}</version>
     <packaging>maven-archetype</packaging>
     <name>helloworld-archetype</name>
     <build>
@@ -74,6 +74,7 @@
         <relativePath>../../../core/pom.xml</relativePath>
     </parent>
     <properties>
+        <revision>2.0.0-M1-SNAPSHOT</revision>
         <archetype.test.skip>true</archetype.test.skip>
     </properties>
 </project>
diff --git a/example/archetype/simpleapp/pom.xml b/example/archetype/simpleapp/pom.xml
index 1eb7cf6..485f3d8 100644
--- a/example/archetype/simpleapp/pom.xml
+++ b/example/archetype/simpleapp/pom.xml
@@ -21,7 +21,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.apache.isis.archetype</groupId>
     <artifactId>simpleapp-archetype</artifactId>
-    <version>1.16.3-SNAPSHOT</version>
+    <version>${revision}</version>
     <packaging>maven-archetype</packaging>
     <name>simpleapp-archetype</name>
     <build>
@@ -73,6 +73,7 @@
         <relativePath>../../../core/pom.xml</relativePath>
     </parent>
     <properties>
+        <revision>2.0.0-M1-SNAPSHOT</revision>
         <archetype.test.skip>true</archetype.test.skip>
     </properties>
 </project>


[isis] 09/09: ISIS-1810: cleans up use of Lombok annotations on SimpleObject

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 50500e2b7d5cd676bccdd29a626e17ac41c26d09
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Jul 18 08:00:30 2018 +0200

    ISIS-1810: cleans up use of Lombok annotations on SimpleObject
    
    removes @Getter and @Setter from class level, introduces too much noise elsewhere and too easy to not notice.
---
 .../main/java/domainapp/modules/simple/dom/impl/SimpleObject.java    | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/example/application/simpleapp/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.java b/example/application/simpleapp/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.java
index ed8963d..80acf29 100644
--- a/example/application/simpleapp/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.java
+++ b/example/application/simpleapp/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.java
@@ -39,7 +39,6 @@ import org.apache.isis.applib.services.repository.RepositoryService;
 import org.apache.isis.applib.services.title.TitleService;
 
 import domainapp.modules.simple.dom.types.Name;
-import lombok.AccessLevel;
 
 @javax.jdo.annotations.PersistenceCapable(identityType=IdentityType.DATASTORE, schema = "simple")
 @javax.jdo.annotations.DatastoreIdentity(strategy=javax.jdo.annotations.IdGeneratorStrategy.IDENTITY, column="id")
@@ -47,7 +46,6 @@ import lombok.AccessLevel;
 @javax.jdo.annotations.Unique(name="SimpleObject_name_UNQ", members = {"name"})
 @DomainObject(auditing = Auditing.ENABLED)
 @DomainObjectLayout()  // causes UI events to be triggered
-@lombok.Getter @lombok.Setter
 @lombok.RequiredArgsConstructor
 public class SimpleObject implements Comparable<SimpleObject> {
 
@@ -103,17 +101,14 @@ public class SimpleObject implements Comparable<SimpleObject> {
     // -- injected services
     @javax.inject.Inject
     @javax.jdo.annotations.NotPersistent
-    @lombok.Getter(AccessLevel.NONE) @lombok.Setter(AccessLevel.NONE)
     RepositoryService repositoryService;
 
     @javax.inject.Inject
     @javax.jdo.annotations.NotPersistent
-    @lombok.Getter(AccessLevel.NONE) @lombok.Setter(AccessLevel.NONE)
     TitleService titleService;
 
     @javax.inject.Inject
     @javax.jdo.annotations.NotPersistent
-    @lombok.Getter(AccessLevel.NONE) @lombok.Setter(AccessLevel.NONE)
     MessageService messageService;
     //endregion
 


[isis] 04/09: ISIS-1810: moves source-plugin into a mvn profile

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit d6815a66d542f5f8e3a9b90543b342c3d0c24b89
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Tue Jul 17 07:14:08 2018 +0100

    ISIS-1810: moves source-plugin into a mvn profile
    
    by default enabled, but allows it to be switched off for faster build times, (using -Dskip.src)
---
 core/pom.xml | 21 ++++++++++++++++-----
 1 file changed, 16 insertions(+), 5 deletions(-)

diff --git a/core/pom.xml b/core/pom.xml
index 23076c5..2226784 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -1081,11 +1081,6 @@
             </plugin>
 
             <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-source-plugin</artifactId>
-            </plugin>
-
-            <plugin>
                 <artifactId>maven-remote-resources-plugin</artifactId>
                 <executions>
                     <execution>
@@ -2419,6 +2414,22 @@ ${license.additional-notes}
             </build>
         </profile>
         <profile>
+            <id>src</id>
+            <activation>
+                <property>
+                    <name>!skip.src</name>
+                </property>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-source-plugin</artifactId>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+        <profile>
             <id>git</id>
             <activation>
                 <property>