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 2017/08/02 14:42:22 UTC

isis git commit: ISIS-1686: simpleapp archetype now uses new AppManifestAbstract etc.

Repository: isis
Updated Branches:
  refs/heads/master 98048bb90 -> 28fdfeb5e


ISIS-1686: simpleapp archetype now uses new AppManifestAbstract etc.

also renames the Builder's withModules to forModules, to avoid possible confusion with the withAdditionalModules method


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/28fdfeb5
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/28fdfeb5
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/28fdfeb5

Branch: refs/heads/master
Commit: 28fdfeb5e92885804ae549f8f0723c83ee1eb945
Parents: 98048bb
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Aug 2 15:41:52 2017 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Aug 2 15:41:52 2017 +0100

----------------------------------------------------------------------
 .../apache/isis/applib/AppManifestAbstract.java |   6 +-
 .../IntegrationTestAbstract2.java               |   9 ++
 .../application/HelloWorldAppManifest.java      |   2 +-
 .../manifest/DomainAppAppManifest.java          | 126 ++-----------------
 .../DomainAppAppManifestBypassSecurity.java     |   4 +-
 .../DomainAppAppManifestWithFixtures.java       |  10 +-
 ...ppAppManifestWithFixturesBypassSecurity.java |   5 +-
 .../integtests/DomainAppIntegTestAbstract.java  |  33 +----
 .../modules/simple/SimpleModuleManifest.java    |  48 ++-----
 .../SimpleModuleIntegTestAbstract.java          |  34 +----
 10 files changed, 44 insertions(+), 233 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/28fdfeb5/core/applib/src/main/java/org/apache/isis/applib/AppManifestAbstract.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/AppManifestAbstract.java b/core/applib/src/main/java/org/apache/isis/applib/AppManifestAbstract.java
index 9c3fb0b..78df5f3 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/AppManifestAbstract.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/AppManifestAbstract.java
@@ -194,11 +194,11 @@ public abstract class AppManifestAbstract implements AppManifest {
         /**
          * Factory method.
          */
-        public static Builder withModules(final List<Class<?>> modules) {
+        public static Builder forModules(final List<Class<?>> modules) {
             return new Builder().withAdditionalModules(modules);
         }
-        public static Builder withModules(final Class<?>... modules) {
-            return withModules(Arrays.asList(modules));
+        public static Builder forModules(final Class<?>... modules) {
+            return forModules(Arrays.asList(modules));
         }
 
         public Builder withAdditionalModules(final Class<?>... modules) {

http://git-wip-us.apache.org/repos/asf/isis/blob/28fdfeb5/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IntegrationTestAbstract2.java
----------------------------------------------------------------------
diff --git a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IntegrationTestAbstract2.java b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IntegrationTestAbstract2.java
index 240d739..6f50644 100644
--- a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IntegrationTestAbstract2.java
+++ b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IntegrationTestAbstract2.java
@@ -31,6 +31,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.isis.applib.AppManifest;
+import org.apache.isis.applib.AppManifestAbstract;
 import org.apache.isis.applib.fixturescripts.FixtureScript;
 import org.apache.isis.applib.fixturescripts.FixtureScripts;
 import org.apache.isis.applib.services.xactn.TransactionService;
@@ -45,6 +46,14 @@ public abstract class IntegrationTestAbstract2 extends IntegrationTestAbstract {
     private static final Logger LOG = LoggerFactory.getLogger(IntegrationTestAbstract2.class);
 
     /**
+     * Convenience, will call {@link AppManifestAbstract.Builder#build() build} on the provided
+     * {@link AppManifestAbstract.Builder Builder}, then delegate to {@link #bootstrapUsing(AppManifest)}.
+     */
+    protected static void bootstrapUsing(final AppManifestAbstract.Builder builder) {
+        bootstrapUsing(builder.build());
+    }
+
+    /**
      * Intended to be called from the subclass' <code>@BeforeClass init()</code> method.
      */
     protected static void bootstrapUsing(final AppManifest appManifest) {

http://git-wip-us.apache.org/repos/asf/isis/blob/28fdfeb5/example/application/helloworld/src/main/java/domainapp/application/HelloWorldAppManifest.java
----------------------------------------------------------------------
diff --git a/example/application/helloworld/src/main/java/domainapp/application/HelloWorldAppManifest.java b/example/application/helloworld/src/main/java/domainapp/application/HelloWorldAppManifest.java
index 1357540..b35c7f2 100644
--- a/example/application/helloworld/src/main/java/domainapp/application/HelloWorldAppManifest.java
+++ b/example/application/helloworld/src/main/java/domainapp/application/HelloWorldAppManifest.java
@@ -28,7 +28,7 @@ import domainapp.dom.HelloWorldModule;
 public class HelloWorldAppManifest extends AppManifestAbstract {
 
     public HelloWorldAppManifest() {
-        super(Builder.withModules(HelloWorldModule.class)
+        super(Builder.forModules(HelloWorldModule.class)
                        .withPropertiesFile("isis-non-changing.properties"));
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/28fdfeb5/example/application/simpleapp/application/src/main/java/domainapp/application/manifest/DomainAppAppManifest.java
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/application/src/main/java/domainapp/application/manifest/DomainAppAppManifest.java b/example/application/simpleapp/application/src/main/java/domainapp/application/manifest/DomainAppAppManifest.java
index 8d9afea..d0aedff 100644
--- a/example/application/simpleapp/application/src/main/java/domainapp/application/manifest/DomainAppAppManifest.java
+++ b/example/application/simpleapp/application/src/main/java/domainapp/application/manifest/DomainAppAppManifest.java
@@ -18,19 +18,7 @@
  */
 package domainapp.application.manifest;
 
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-
-import org.apache.isis.applib.AppManifest;
-import org.apache.isis.applib.fixturescripts.FixtureScript;
+import org.apache.isis.applib.AppManifestAbstract;
 
 import domainapp.application.fixture.DomainAppApplicationModuleFixtureSubmodule;
 import domainapp.application.services.DomainAppApplicationModuleServicesSubmodule;
@@ -39,113 +27,17 @@ import domainapp.modules.simple.dom.SimpleModuleDomSubmodule;
 /**
  * Bootstrap the application.
  */
-public class DomainAppAppManifest implements AppManifest {
+public class DomainAppAppManifest extends AppManifestAbstract {
 
-    private final List<Class<? extends FixtureScript>> fixtureScripts;
-    private final String authMechanism;
-    private final List<Class<?>> additionalModules;
+    public static final Builder BUILDER = Builder.forModules(
+                    SimpleModuleDomSubmodule.class,
+                    DomainAppApplicationModuleFixtureSubmodule.class,
+                    DomainAppApplicationModuleServicesSubmodule.class
+            )
+            .withPropertiesFile("isis-non-changing.properties", DomainAppAppManifest.class);
 
     public DomainAppAppManifest() {
-        this(
-                Collections.<Class<? extends FixtureScript>>emptyList(),
-                null,
-                Collections.<Class<?>>emptyList()
-        );
-    }
-
-    public DomainAppAppManifest(
-            final List<Class<? extends FixtureScript>> fixtureScripts,
-            final String authMechanism,
-            final List<Class<?>> additionalModules) {
-        this.fixtureScripts = elseEmptyIfNull(fixtureScripts);
-        this.authMechanism = authMechanism != null ? authMechanism : "shiro";
-        this.additionalModules = elseEmptyIfNull(additionalModules);
-    }
-
-    private static <T> List<T> elseEmptyIfNull(final List<T> list) {
-        return list == null ? Collections.<T>emptyList() : list;
-    }
-
-    /**
-     * Load all services and entities found in (the packages and subpackages within) these modules
-     */
-    @Override
-    public List<Class<?>> getModules() {
-        List<Class<?>> modules = Lists.newArrayList();
-        modules.addAll(Arrays.asList(
-                SimpleModuleDomSubmodule.class,
-                DomainAppApplicationModuleFixtureSubmodule.class,
-                DomainAppApplicationModuleServicesSubmodule.class
-        ));
-        modules.addAll(additionalModules);
-        return modules;
-    }
-
-    /**
-     * No additional services.
-     */
-    @Override
-    public List<Class<?>> getAdditionalServices() {
-        return Collections.emptyList();
-    }
-
-    /**
-     * Use shiro for authentication.
-     */
-    @Override
-    public String getAuthenticationMechanism() {
-        return authMechanism;
-    }
-
-    /**
-     * Use shiro for authorization.
-     */
-    @Override
-    public String getAuthorizationMechanism() {
-        return authMechanism;
-    }
-
-    /**
-     * No fixtures.
-     */
-    @Override
-    public List<Class<? extends FixtureScript>> getFixtures() {
-        return fixtureScripts;
-    }
-
-    /**
-     * No overrides.
-     */
-    @Override
-    public Map<String, String> getConfigurationProperties() {
-        final Map<String, String> props = Maps.newHashMap();
-
-        loadPropsInto(props, "isis-non-changing.properties");
-
-        if(!fixtureScripts.isEmpty()) {
-            props.put("isis.persistor.datanucleus.install-fixtures", "true");
-        }
-
-        return props;
-    }
-
-    static void loadPropsInto(final Map<String, String> props, final String propertiesFile) {
-        final Properties properties = new Properties();
-        try {
-            try (final InputStream stream =
-                    DomainAppAppManifest.class.getResourceAsStream(propertiesFile)) {
-                properties.load(stream);
-                for (Object key : properties.keySet()) {
-                    final Object value = properties.get(key);
-                    if(key instanceof String && value instanceof String) {
-                        props.put((String)key, (String)value);
-                    }
-                }
-            }
-        } catch (IOException e) {
-            throw new RuntimeException(
-                    String.format("Failed to load '%s' file ", propertiesFile), e);
-        }
+        super(BUILDER);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/28fdfeb5/example/application/simpleapp/application/src/main/java/domainapp/application/manifest/DomainAppAppManifestBypassSecurity.java
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/application/src/main/java/domainapp/application/manifest/DomainAppAppManifestBypassSecurity.java b/example/application/simpleapp/application/src/main/java/domainapp/application/manifest/DomainAppAppManifestBypassSecurity.java
index cc96674..f4bb9ef 100644
--- a/example/application/simpleapp/application/src/main/java/domainapp/application/manifest/DomainAppAppManifestBypassSecurity.java
+++ b/example/application/simpleapp/application/src/main/java/domainapp/application/manifest/DomainAppAppManifestBypassSecurity.java
@@ -23,7 +23,7 @@ package domainapp.application.manifest;
  */
 public class DomainAppAppManifestBypassSecurity extends DomainAppAppManifest {
 
-    public DomainAppAppManifestBypassSecurity() {
-        super(null, "bypass", null);
+    @Override protected String overrideAuthMechanism() {
+        return "bypass";
     }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/28fdfeb5/example/application/simpleapp/application/src/main/java/domainapp/application/manifest/DomainAppAppManifestWithFixtures.java
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/application/src/main/java/domainapp/application/manifest/DomainAppAppManifestWithFixtures.java b/example/application/simpleapp/application/src/main/java/domainapp/application/manifest/DomainAppAppManifestWithFixtures.java
index 79d0ce1..b6313d9 100644
--- a/example/application/simpleapp/application/src/main/java/domainapp/application/manifest/DomainAppAppManifestWithFixtures.java
+++ b/example/application/simpleapp/application/src/main/java/domainapp/application/manifest/DomainAppAppManifestWithFixtures.java
@@ -20,7 +20,7 @@ package domainapp.application.manifest;
 
 import java.util.List;
 
-import com.google.common.collect.Lists;
+import org.apache.isis.applib.fixturescripts.FixtureScript;
 
 import domainapp.modules.simple.fixture.scenario.CreateSimpleObjects;
 
@@ -29,12 +29,8 @@ import domainapp.modules.simple.fixture.scenario.CreateSimpleObjects;
  */
 public class DomainAppAppManifestWithFixtures extends DomainAppAppManifest {
 
-    public DomainAppAppManifestWithFixtures() {
-        this(null);
-    }
-
-    public DomainAppAppManifestWithFixtures(final String authMechanism) {
-        super((List)Lists.newArrayList(CreateSimpleObjects.class), authMechanism, null);
+    @Override protected void overrideFixtures(final List<Class<? extends FixtureScript>> fixtureScripts) {
+        fixtureScripts.add(CreateSimpleObjects.class);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/28fdfeb5/example/application/simpleapp/application/src/main/java/domainapp/application/manifest/DomainAppAppManifestWithFixturesBypassSecurity.java
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/application/src/main/java/domainapp/application/manifest/DomainAppAppManifestWithFixturesBypassSecurity.java b/example/application/simpleapp/application/src/main/java/domainapp/application/manifest/DomainAppAppManifestWithFixturesBypassSecurity.java
index 5390109..e0b772a 100644
--- a/example/application/simpleapp/application/src/main/java/domainapp/application/manifest/DomainAppAppManifestWithFixturesBypassSecurity.java
+++ b/example/application/simpleapp/application/src/main/java/domainapp/application/manifest/DomainAppAppManifestWithFixturesBypassSecurity.java
@@ -23,7 +23,8 @@ package domainapp.application.manifest;
  */
 public class DomainAppAppManifestWithFixturesBypassSecurity extends DomainAppAppManifestWithFixtures {
 
-    public DomainAppAppManifestWithFixturesBypassSecurity() {
-        super("bypass");
+    @Override protected String overrideAuthMechanism() {
+        return "bypass";
     }
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/28fdfeb5/example/application/simpleapp/application/src/test/java/domainapp/application/integtests/DomainAppIntegTestAbstract.java
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/application/src/test/java/domainapp/application/integtests/DomainAppIntegTestAbstract.java b/example/application/simpleapp/application/src/test/java/domainapp/application/integtests/DomainAppIntegTestAbstract.java
index ac4bca3..02ee1e1 100644
--- a/example/application/simpleapp/application/src/test/java/domainapp/application/integtests/DomainAppIntegTestAbstract.java
+++ b/example/application/simpleapp/application/src/test/java/domainapp/application/integtests/DomainAppIntegTestAbstract.java
@@ -18,44 +18,17 @@
  */
 package domainapp.application.integtests;
 
-import java.util.Map;
-
-import com.google.common.collect.Maps;
-
 import org.junit.BeforeClass;
 
-import org.apache.isis.core.integtestsupport.IntegrationTestAbstract;
-import org.apache.isis.core.integtestsupport.IsisSystemForTest;
-import org.apache.isis.core.integtestsupport.scenarios.ScenarioExecutionForIntegration;
+import org.apache.isis.core.integtestsupport.IntegrationTestAbstract2;
 
 import domainapp.application.manifest.DomainAppAppManifest;
 
-public abstract class DomainAppIntegTestAbstract extends IntegrationTestAbstract {
+public abstract class DomainAppIntegTestAbstract extends IntegrationTestAbstract2 {
 
     @BeforeClass
     public static void initSystem() {
-        org.apache.log4j.PropertyConfigurator.configure("logging-integtest.properties");
-        IsisSystemForTest isft = IsisSystemForTest.getElseNull();
-        if(isft == null) {
-            isft = new IsisSystemForTest.Builder()
-                    .withLoggingAt(org.apache.log4j.Level.INFO)
-                    .with(new DomainAppAppManifest() {
-                        @Override
-                        public Map<String, String> getConfigurationProperties() {
-                            final Map<String, String> map = Maps.newHashMap();
-                            Util.withJavaxJdoRunInMemoryProperties(map);
-                            Util.withDataNucleusProperties(map);
-                            Util.withIsisIntegTestProperties(map);
-                            return map;
-                        }
-                    })
-                    .build();
-            isft.setUpSystem();
-            IsisSystemForTest.set(isft);
-        }
-
-        // instantiating will install onto ThreadLocal
-        new ScenarioExecutionForIntegration();
+        bootstrapUsing(new DomainAppAppManifest());
     }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/28fdfeb5/example/application/simpleapp/module-simple/src/main/java/domainapp/modules/simple/SimpleModuleManifest.java
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/module-simple/src/main/java/domainapp/modules/simple/SimpleModuleManifest.java b/example/application/simpleapp/module-simple/src/main/java/domainapp/modules/simple/SimpleModuleManifest.java
index 9d305d1..961695d 100644
--- a/example/application/simpleapp/module-simple/src/main/java/domainapp/modules/simple/SimpleModuleManifest.java
+++ b/example/application/simpleapp/module-simple/src/main/java/domainapp/modules/simple/SimpleModuleManifest.java
@@ -18,13 +18,7 @@
  */
 package domainapp.modules.simple;
 
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.isis.applib.AppManifest;
-import org.apache.isis.applib.fixturescripts.FixtureScript;
+import org.apache.isis.applib.AppManifestAbstract;
 
 import domainapp.modules.simple.dom.SimpleModuleDomSubmodule;
 import domainapp.modules.simple.fixture.SimpleModuleFixtureSubmodule;
@@ -32,42 +26,16 @@ import domainapp.modules.simple.fixture.SimpleModuleFixtureSubmodule;
 /**
  * Used by <code>isis-maven-plugin</code> (build-time validation of the module) and also by module-level integration tests.
  */
-public class SimpleModuleManifest implements AppManifest {
+public class SimpleModuleManifest extends AppManifestAbstract {
 
-    @Override
-    public List<Class<?>> getModules() {
-        return Arrays.<Class<?>>asList(
-                SimpleModuleDomSubmodule.class,
-                SimpleModuleFixtureSubmodule.class
-        );
-    }
+    public static final Builder BUILDER = Builder.forModules(
+            SimpleModuleDomSubmodule.class,
+            SimpleModuleFixtureSubmodule.class
+    );
 
-    @Override
-    public List<Class<?>> getAdditionalServices() {
-        return Collections.emptyList();
+    public SimpleModuleManifest() {
+        super(BUILDER);
     }
 
-    @Override
-    public String getAuthenticationMechanism() {
-        return null;
-    }
-
-    @Override
-    public String getAuthorizationMechanism() {
-        return null;
-    }
-
-    @Override
-    public List<Class<? extends FixtureScript>> getFixtures() {
-        return null;
-    }
-
-    /**
-     * No overrides.
-     */
-    @Override
-    public Map<String, String> getConfigurationProperties() {
-        return null;
-    }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/28fdfeb5/example/application/simpleapp/module-simple/src/test/java/domainapp/modules/simple/integtests/SimpleModuleIntegTestAbstract.java
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/module-simple/src/test/java/domainapp/modules/simple/integtests/SimpleModuleIntegTestAbstract.java b/example/application/simpleapp/module-simple/src/test/java/domainapp/modules/simple/integtests/SimpleModuleIntegTestAbstract.java
index ebd601d..57f0cb6 100644
--- a/example/application/simpleapp/module-simple/src/test/java/domainapp/modules/simple/integtests/SimpleModuleIntegTestAbstract.java
+++ b/example/application/simpleapp/module-simple/src/test/java/domainapp/modules/simple/integtests/SimpleModuleIntegTestAbstract.java
@@ -31,45 +31,17 @@ import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.fixturescripts.FixtureScripts;
 import org.apache.isis.applib.services.fixturespec.FixtureScriptsSpecification;
 import org.apache.isis.applib.services.fixturespec.FixtureScriptsSpecificationProvider;
-import org.apache.isis.core.integtestsupport.IntegrationTestAbstract;
+import org.apache.isis.core.integtestsupport.IntegrationTestAbstract2;
 import org.apache.isis.core.integtestsupport.IsisSystemForTest;
 import org.apache.isis.core.integtestsupport.scenarios.ScenarioExecutionForIntegration;
 
 import domainapp.modules.simple.SimpleModuleManifest;
 
-public abstract class SimpleModuleIntegTestAbstract extends IntegrationTestAbstract {
+public abstract class SimpleModuleIntegTestAbstract extends IntegrationTestAbstract2 {
 
     @BeforeClass
     public static void initSystem() {
-        org.apache.log4j.PropertyConfigurator.configure("logging-integtest.properties");
-        IsisSystemForTest isft = IsisSystemForTest.getElseNull();
-        if(isft == null) {
-            isft = new IsisSystemForTest.Builder()
-                    .withLoggingAt(org.apache.log4j.Level.INFO)
-                    .with(new SimpleModuleManifest() {
-                        @Override
-                        public Map<String, String> getConfigurationProperties() {
-                            final Map<String, String> map = Maps.newHashMap();
-                            Util.withJavaxJdoRunInMemoryProperties(map);
-                            Util.withDataNucleusProperties(map);
-                            Util.withIsisIntegTestProperties(map);
-                            // same as in isis.properties
-                            map.put("isis.objects.editing","false");
-                            return map;
-                        }
-
-                        @Override public List<Class<?>> getAdditionalServices() {
-                            return (List)Lists.newArrayList(ModuleFixtureScriptsSpecificationProvider.class);
-                        }
-                    })
-
-                    .build();
-            isft.setUpSystem();
-            IsisSystemForTest.set(isft);
-        }
-
-        // instantiating will install onto ThreadLocal
-        new ScenarioExecutionForIntegration();
+        bootstrapUsing(SimpleModuleManifest.BUILDER.withConfigurationProperty("isis.objects.editing","false"));
     }
 
     @DomainService(nature = NatureOfService.DOMAIN)