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 2019/11/28 18:52:55 UTC

[isis] branch ISIS-2188 created (now 1ac231b)

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

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


      at 1ac231b  ISIS-2188: trying to figure out why FixtureResult view model has no properties

This branch includes the following new commits:

     new 8887a9b  ISIS-2148: adds src/main/java as resource for the starter apps.
     new 09d11c8  ISIS-2188: adds src/main/java as resource for ext-fixtures
     new abc8b10  ISIS-2188: fixes discoverability of fixture scripts
     new 4bdabfa  ISIS-2188: reworks FixtureResult into JAXB
     new 2984026  ISIS-2193: uses bookmark.getObjectType() rather than bookmark.getClass() to lookup the ObjectSpec
     new 1ac231b  ISIS-2188: trying to figure out why FixtureResult view model has no properties

The 6 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.



[isis] 05/06: ISIS-2193: uses bookmark.getObjectType() rather than bookmark.getClass() to lookup the ObjectSpec

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

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

commit 2984026237f97071155bbdf5d66b82981f87f0b4
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Nov 28 18:44:11 2019 +0000

    ISIS-2193: uses bookmark.getObjectType() rather than bookmark.getClass() to lookup the ObjectSpec
---
 .../runtime/services/bookmarks/BookmarkServiceInternalDefault.java  | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/bookmarks/BookmarkServiceInternalDefault.java b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/bookmarks/BookmarkServiceInternalDefault.java
index 6d21401..74c65d5 100644
--- a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/bookmarks/BookmarkServiceInternalDefault.java
+++ b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/bookmarks/BookmarkServiceInternalDefault.java
@@ -26,8 +26,6 @@ import java.util.Set;
 
 import javax.inject.Inject;
 
-import org.springframework.stereotype.Service;
-
 import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.applib.services.bookmark.BookmarkHolder;
 import org.apache.isis.applib.services.bookmark.BookmarkService;
@@ -41,7 +39,9 @@ import org.apache.isis.metamodel.adapter.oid.ObjectNotFoundException;
 import org.apache.isis.metamodel.objectmanager.ObjectManager;
 import org.apache.isis.metamodel.objectmanager.load.ObjectLoader;
 import org.apache.isis.metamodel.spec.ManagedObject;
+import org.apache.isis.metamodel.spec.ObjectSpecId;
 import org.apache.isis.metamodel.specloader.SpecificationLoader;
+import org.springframework.stereotype.Service;
 
 import lombok.val;
 
@@ -70,7 +70,7 @@ public class BookmarkServiceInternalDefault implements BookmarkService, Serializ
         }
         try {
             
-            val spec = specificationLoader.loadSpecification(bookmark.getClass());
+            val spec = specificationLoader.loadSpecification(ObjectSpecId.of(bookmark.getObjectType()));
             val identifier = bookmark.getIdentifier();
             val objectLoadRequest = ObjectLoader.Request.of(spec, identifier);
             


[isis] 02/06: ISIS-2188: adds src/main/java as resource for ext-fixtures

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

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

commit 09d11c84692ee3cb08e9728addcd2a2b8c3008de
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Nov 28 18:10:42 2019 +0000

    ISIS-2188: adds src/main/java as resource for ext-fixtures
    
    for FixtureResult view model
---
 extensions/testing/fixtures/pom.xml | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/extensions/testing/fixtures/pom.xml b/extensions/testing/fixtures/pom.xml
index 5acd4eb..bef86d0 100644
--- a/extensions/testing/fixtures/pom.xml
+++ b/extensions/testing/fixtures/pom.xml
@@ -30,6 +30,21 @@
 		<git-plugin.propertiesDir>org/apache/isis/extensions/fixtures</git-plugin.propertiesDir>
 	</properties>
 
+	<build>
+		<resources>
+			<resource>
+				<filtering>false</filtering>
+				<directory>src/main/java</directory>
+				<includes>
+					<include>**</include>
+				</includes>
+				<excludes>
+					<exclude>**/*.java</exclude>
+				</excludes>
+			</resource>
+		</resources>
+	</build>
+
 	<dependencies>
 
 		<dependency>


[isis] 04/06: ISIS-2188: reworks FixtureResult into JAXB

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

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

commit 4bdabfaa1724fa89158e06a8761f5d4dc2263ec1
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Nov 28 18:42:23 2019 +0000

    ISIS-2188: reworks FixtureResult into JAXB
    
    and use a Bookmark to serialize the object (because can't serialize a property of type java.lang.Object using JAXB)
---
 .../fixtures/fixturescripts/FixtureResult.java     | 91 ++++++++--------------
 .../fixtures/fixturescripts/FixtureScripts.java    |  3 +-
 2 files changed, 35 insertions(+), 59 deletions(-)

diff --git a/extensions/testing/fixtures/src/main/java/org/apache/isis/extensions/fixtures/fixturescripts/FixtureResult.java b/extensions/testing/fixtures/src/main/java/org/apache/isis/extensions/fixtures/fixturescripts/FixtureResult.java
index 5c64767..bf443b6 100644
--- a/extensions/testing/fixtures/src/main/java/org/apache/isis/extensions/fixtures/fixturescripts/FixtureResult.java
+++ b/extensions/testing/fixtures/src/main/java/org/apache/isis/extensions/fixtures/fixturescripts/FixtureResult.java
@@ -19,6 +19,11 @@
 package org.apache.isis.extensions.fixtures.fixturescripts;
 
 import javax.inject.Inject;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.MemberOrder;
@@ -29,93 +34,63 @@ import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.annotation.ViewModelLayout;
+import org.apache.isis.applib.services.bookmark.Bookmark;
+import org.apache.isis.applib.services.bookmark.BookmarkService;
+
+import lombok.Getter;
+import lombok.Setter;
 
 @DomainObject(
         nature = Nature.VIEW_MODEL,
-        objectType = "isisApplib.FixtureResult"
+        objectType = "extFixture.FixtureResult"
         )
 @ViewModelLayout(paged=500)
+@XmlRootElement(name = "fixtureResult")
+@XmlType(
+        propOrder = {
+                "fixtureScriptClassName",
+                "fixtureScriptQualifiedName",
+                "key",
+                "objectBookmark"
+        }
+)
+@XmlAccessorType(XmlAccessType.FIELD)
 public class FixtureResult {
 
-
-    // -- fixtureScriptClassName (property)
-
-    private String fixtureScriptClassName;
-
     @PropertyLayout(named="Fixture script")
     @Property(optionality = Optionality.OPTIONAL)
-    @MemberOrder(sequence="1")
-    public String getFixtureScriptClassName() {
-        return fixtureScriptClassName;
-    }
-    public void setFixtureScriptClassName(String fixtureScriptClassName) {
-        this.fixtureScriptClassName = fixtureScriptClassName;
-    }
-
-
-
-    // -- fixtureScriptQualifiedName (programmatic)
+    @Getter @Setter
+    private String fixtureScriptClassName;
 
+    @Getter(onMethod = @__(@Programmatic)) @Setter
     private String fixtureScriptQualifiedName;
 
-    @Programmatic
-    String getFixtureScriptQualifiedName() {
-        return fixtureScriptQualifiedName;
-    }
-
-    void setFixtureScriptQualifiedName(String fixtureScriptQualifiedName) {
-        this.fixtureScriptQualifiedName = fixtureScriptQualifiedName;
-    }
-
-
-
-    // -- key (property)
-
-    private String key;
-
     @PropertyLayout(named="Result key")
     @Title(sequence="1", append=": ")
-    @MemberOrder(sequence="1")
-    public String getKey() {
-        return key;
-    }
-    public void setKey(String key) {
-        this.key = key;
-    }
-
-
-
-    // -- object (property)
+    @Getter @Setter
+    private String key;
 
-    private Object object;
+    @Getter(onMethod = @__(@Programmatic)) @Setter
+    private String objectBookmark;
 
     @PropertyLayout(named="Result")
     @Title(sequence="2")
-    @MemberOrder(sequence="1")
     public Object getObject() {
-        return object;
+        return bookmarkService.lookup(new Bookmark(objectBookmark));
     }
+
     public void setObject(Object object) {
-        this.object = object;
+        this.objectBookmark = bookmarkService.bookmarkFor(object).toString();
     }
 
-
-
-    // -- className (derived property)
-
-
     @PropertyLayout(named="Result class")
     @MemberOrder(sequence="3")
     public String getClassName() {
-        return object != null? object.getClass().getName(): null;
+        return getObjectBookmark() != null? getObject().getClass().getName(): null;
     }
 
 
-
-    // -- injected services
-
-    @Inject FixtureScripts fixtureScripts;
-
+    @XmlTransient @Inject BookmarkService bookmarkService;
 
 
 }
\ No newline at end of file
diff --git a/extensions/testing/fixtures/src/main/java/org/apache/isis/extensions/fixtures/fixturescripts/FixtureScripts.java b/extensions/testing/fixtures/src/main/java/org/apache/isis/extensions/fixtures/fixturescripts/FixtureScripts.java
index 454efee..01bbb57 100644
--- a/extensions/testing/fixtures/src/main/java/org/apache/isis/extensions/fixtures/fixturescripts/FixtureScripts.java
+++ b/extensions/testing/fixtures/src/main/java/org/apache/isis/extensions/fixtures/fixturescripts/FixtureScripts.java
@@ -443,7 +443,8 @@ public abstract class FixtureScripts extends AbstractService {
                 throw _Exceptions.unmatchedCase(getNonPersistedObjectsStrategy());
             }
         }
-        final FixtureResult fixtureResult = new FixtureResult();
+        final FixtureResult fixtureResult = serviceInjector.injectServicesInto(
+                                                                new FixtureResult());
         fixtureResult.setFixtureScriptClassName(firstTime ? script.getClass().getName() : null);
         fixtureResult.setFixtureScriptQualifiedName(script.getQualifiedName());
         fixtureResult.setKey(script.pathWith(subkey));


[isis] 03/06: ISIS-2188: fixes discoverability of fixture scripts

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

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

commit abc8b10ec2555f03f0a70eb53e03ad96e6c6d35b
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Nov 28 18:12:08 2019 +0000

    ISIS-2188: fixes discoverability of fixture scripts
    
    (need to annotate with @Component)
---
 .../services/registry/ServiceRegistryDefault.java  |  4 +-
 .../fixtures/fixturescripts/FixtureScripts.java    | 50 +++-------------------
 .../domainapp/application/ApplicationModule.java   |  3 +-
 .../fixture/scenarios/DomainAppDemo.java           |  2 +
 4 files changed, 10 insertions(+), 49 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/registry/ServiceRegistryDefault.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/registry/ServiceRegistryDefault.java
index ab91be2..e40ee1c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/registry/ServiceRegistryDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/registry/ServiceRegistryDefault.java
@@ -73,12 +73,12 @@ public final class ServiceRegistryDefault implements ServiceRegistry {
 
     private Map<String, ManagedBeanAdapter> enumerateManagedBeans() {
         
-        val filter = isisBeanTypeRegistryHolder.getIsisBeanTypeRegistry();
+        val beanTypeRegistry = isisBeanTypeRegistryHolder.getIsisBeanTypeRegistry();
         val managedBeanAdapterByName = _Maps.<String, ManagedBeanAdapter>newHashMap();
 
         isisSystemEnvironment.getIocContainer().streamAllBeans()
         .filter(_NullSafe::isPresent)
-        .filter(bean->filter.isManagedBean(bean.getBeanClass())) // do not register unknown sort
+        .filter(bean->beanTypeRegistry.isManagedBean(bean.getBeanClass())) // do not register unknown sort
         .forEach(bean->{
             val id = bean.getId();
             managedBeanAdapterByName.put(id, bean);
diff --git a/extensions/testing/fixtures/src/main/java/org/apache/isis/extensions/fixtures/fixturescripts/FixtureScripts.java b/extensions/testing/fixtures/src/main/java/org/apache/isis/extensions/fixtures/fixturescripts/FixtureScripts.java
index 7d0aeba..454efee 100644
--- a/extensions/testing/fixtures/src/main/java/org/apache/isis/extensions/fixtures/fixturescripts/FixtureScripts.java
+++ b/extensions/testing/fixtures/src/main/java/org/apache/isis/extensions/fixtures/fixturescripts/FixtureScripts.java
@@ -19,12 +19,9 @@
 package org.apache.isis.extensions.fixtures.fixturescripts;
 
 import java.io.PrintStream;
-import java.lang.reflect.Constructor;
 import java.util.Comparator;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Objects;
-import java.util.Set;
 import java.util.function.Predicate;
 import java.util.stream.Collectors;
 
@@ -230,14 +227,10 @@ public abstract class FixtureScripts extends AbstractService {
     }
 
     private List<FixtureScript> findAndInstantiateFixtureScripts() {
-        return findFixtureScriptSubTypesInPackage().stream()
-                .filter(fixtureScriptCls -> {
-                    val packageName = fixtureScriptCls.getPackage().getName();
-                    // redundant check if ClassDiscoveryService2 in use because already filtered out
-                    return packageName.startsWith(getPackagePrefix());
-                })
-                .map(this::newFixtureScript)
+        val packagePrefix = getPackagePrefix();
+        return serviceRegistry.select(FixtureScript.class).stream()
                 .filter(Objects::nonNull)
+                .filter(fixtureScript -> fixtureScript.getClass().getPackage().getName().startsWith(packagePrefix))
                 .sorted(Comparator
                         .comparing(FixtureScript::getFriendlyName)
                         .thenComparing(FixtureScript::getQualifiedName)
@@ -245,35 +238,6 @@ public abstract class FixtureScripts extends AbstractService {
                 .collect(Collectors.toList());
     }
 
-    private Set<Class<? extends FixtureScript>> findFixtureScriptSubTypesInPackage() {
-
-        val packagePrefix = getPackagePrefix();
-        
-        return serviceRegistry.streamRegisteredBeansOfType(FixtureScript.class)
-                .map(beanAdapter->beanAdapter.getBeanClass())
-                .map(type->_Casts.<Class<? extends FixtureScript>>uncheckedCast(type))
-                .filter(type->type.getPackage().getName().startsWith(packagePrefix))
-                .collect(Collectors.toCollection(HashSet::new));
-    }
-
-    private FixtureScript newFixtureScript(final Class<? extends FixtureScript> fixtureScriptCls) {
-        try {
-            final Constructor<? extends FixtureScript> constructor = fixtureScriptCls.getConstructor();
-            final FixtureScript template = constructor.newInstance();
-            if(!template.isDiscoverable()) {
-                return null;
-            }
-
-            final FixtureScript instance = factoryService.instantiate(fixtureScriptCls);
-            instance.setParentPath(template.getParentPath());
-
-            return instance;
-
-        } catch(final Exception ex) {
-            // ignore if does not have a no-arg constructor or cannot be instantiated
-            return null;
-        }
-    }
 
 
     // -- fixtureTracing (thread-local)
@@ -298,9 +262,7 @@ public abstract class FixtureScripts extends AbstractService {
      * To make this action usable in the UI, override either {@link #choices0RunFixtureScript()} or
      * {@link #autoComplete0RunFixtureScript(String)} with <tt>public</tt> visibility</tt>.
      */
-    @Action(
-            restrictTo = RestrictTo.PROTOTYPING
-            )
+    @Action(restrictTo = RestrictTo.PROTOTYPING)
     @MemberOrder(sequence="10")
     public List<FixtureResult> runFixtureScript(
             final FixtureScript fixtureScript,
@@ -330,9 +292,7 @@ public abstract class FixtureScripts extends AbstractService {
         final Predicate<String> contains = str -> str != null && str.contains(arg);
 
         return _NullSafe.stream(getFixtureScriptList())
-                .filter(script->{
-                    return contains.test(script.getFriendlyName()) || contains.test(script.getLocalName());
-                })
+                .filter(script-> contains.test(script.getFriendlyName()) || contains.test(script.getLocalName()))
                 .collect(Collectors.toList());
     }
     public String disableRunFixtureScript() {
diff --git a/starters/simpleapp/application/src/main/java/domainapp/application/ApplicationModule.java b/starters/simpleapp/application/src/main/java/domainapp/application/ApplicationModule.java
index 4f6d1e5..684e332 100644
--- a/starters/simpleapp/application/src/main/java/domainapp/application/ApplicationModule.java
+++ b/starters/simpleapp/application/src/main/java/domainapp/application/ApplicationModule.java
@@ -18,12 +18,11 @@
  */
 package domainapp.application;
 
+import org.apache.isis.extensions.fixtures.modules.Module;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Import;
 
-import org.apache.isis.extensions.fixtures.modules.Module;
-
 import domainapp.modules.simple.SimpleModule;
 
 @Configuration
diff --git a/starters/simpleapp/application/src/main/java/domainapp/application/fixture/scenarios/DomainAppDemo.java b/starters/simpleapp/application/src/main/java/domainapp/application/fixture/scenarios/DomainAppDemo.java
index ecb0104..7c0d0c8 100644
--- a/starters/simpleapp/application/src/main/java/domainapp/application/fixture/scenarios/DomainAppDemo.java
+++ b/starters/simpleapp/application/src/main/java/domainapp/application/fixture/scenarios/DomainAppDemo.java
@@ -23,10 +23,12 @@ import javax.inject.Inject;
 import org.apache.isis.applib.services.metamodel.MetaModelService;
 import org.apache.isis.extensions.fixtures.fixturescripts.FixtureScript;
 import org.apache.isis.extensions.fixtures.legacy.teardown.TeardownFixtureAbstract2;
+import org.springframework.stereotype.Component;
 
 import domainapp.modules.simple.dom.impl.SimpleObject;
 import domainapp.modules.simple.fixture.SimpleObject_persona;
 
+@Component
 public class DomainAppDemo extends FixtureScript {
 
     public DomainAppDemo() {


[isis] 06/06: ISIS-2188: trying to figure out why FixtureResult view model has no properties

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

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

commit 1ac231b35b7ccf5fa700f676a7100db0e5f363d9
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Nov 28 18:52:16 2019 +0000

    ISIS-2188: trying to figure out why FixtureResult view model has no properties
    
    (other than objectType and objectIdentifier that are contributed).
---
 .../fixtures/fixturescripts/FixtureResult.java        | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/extensions/testing/fixtures/src/main/java/org/apache/isis/extensions/fixtures/fixturescripts/FixtureResult.java b/extensions/testing/fixtures/src/main/java/org/apache/isis/extensions/fixtures/fixturescripts/FixtureResult.java
index bf443b6..7a3f5c2 100644
--- a/extensions/testing/fixtures/src/main/java/org/apache/isis/extensions/fixtures/fixturescripts/FixtureResult.java
+++ b/extensions/testing/fixtures/src/main/java/org/apache/isis/extensions/fixtures/fixturescripts/FixtureResult.java
@@ -26,7 +26,6 @@ import javax.xml.bind.annotation.XmlTransient;
 import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Programmatic;
@@ -57,22 +56,32 @@ import lombok.Setter;
 @XmlAccessorType(XmlAccessType.FIELD)
 public class FixtureResult {
 
-    @PropertyLayout(named="Fixture script")
     @Property(optionality = Optionality.OPTIONAL)
+    @PropertyLayout(named="Fixture script")
     @Getter @Setter
     private String fixtureScriptClassName;
 
     @Getter(onMethod = @__(@Programmatic)) @Setter
     private String fixtureScriptQualifiedName;
 
-    @PropertyLayout(named="Result key")
     @Title(sequence="1", append=": ")
-    @Getter @Setter
+    //@Getter @Setter
     private String key;
 
+    @Property
+    @PropertyLayout(named="Result key")
+    public String getKey() {
+        return key;
+    }
+
+    public void setKey(final String key) {
+        this.key = key;
+    }
+
     @Getter(onMethod = @__(@Programmatic)) @Setter
     private String objectBookmark;
 
+    @Property
     @PropertyLayout(named="Result")
     @Title(sequence="2")
     public Object getObject() {
@@ -83,8 +92,8 @@ public class FixtureResult {
         this.objectBookmark = bookmarkService.bookmarkFor(object).toString();
     }
 
+    @Property
     @PropertyLayout(named="Result class")
-    @MemberOrder(sequence="3")
     public String getClassName() {
         return getObjectBookmark() != null? getObject().getClass().getName(): null;
     }


[isis] 01/06: ISIS-2148: adds src/main/java as resource for the starter apps.

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

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

commit 8887a9b69c4fea1e7a6e6857b8b76d0fb24351a0
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Nov 28 18:09:58 2019 +0000

    ISIS-2148: adds src/main/java as resource for the starter apps.
    
    (the layout was incorrect for these)
---
 starters/helloworld/pom.xml              | 15 +++++++++++++++
 starters/simpleapp/application/pom.xml   | 12 ++++++++++++
 starters/simpleapp/module-simple/pom.xml | 15 +++++++++++++++
 starters/simpleapp/webapp/pom.xml        | 15 +++++++++++++++
 4 files changed, 57 insertions(+)

diff --git a/starters/helloworld/pom.xml b/starters/helloworld/pom.xml
index fdf33eb..340ea1e 100644
--- a/starters/helloworld/pom.xml
+++ b/starters/helloworld/pom.xml
@@ -31,6 +31,21 @@
 		<maven-war-plugin.warName>${project.artifactId}</maven-war-plugin.warName>
 	</properties>
 
+	<build>
+		<resources>
+			<resource>
+				<filtering>false</filtering>
+				<directory>src/main/java</directory>
+				<includes>
+					<include>**</include>
+				</includes>
+				<excludes>
+					<exclude>**/*.java</exclude>
+				</excludes>
+			</resource>
+		</resources>
+	</build>
+
 	<dependencies>
 
 		<dependency>
diff --git a/starters/simpleapp/application/pom.xml b/starters/simpleapp/application/pom.xml
index 0cf979c..024c6ea 100644
--- a/starters/simpleapp/application/pom.xml
+++ b/starters/simpleapp/application/pom.xml
@@ -38,6 +38,18 @@
     </properties>
 
     <build>
+        <resources>
+            <resource>
+                <filtering>false</filtering>
+                <directory>src/main/java</directory>
+                <includes>
+                    <include>**</include>
+                </includes>
+                <excludes>
+                    <exclude>**/*.java</exclude>
+                </excludes>
+            </resource>
+        </resources>
         <testResources>
             <testResource>
                 <filtering>false</filtering>
diff --git a/starters/simpleapp/module-simple/pom.xml b/starters/simpleapp/module-simple/pom.xml
index 991e477..c0993b5 100644
--- a/starters/simpleapp/module-simple/pom.xml
+++ b/starters/simpleapp/module-simple/pom.xml
@@ -28,6 +28,21 @@
 		<maven-pmd-plugin.ruleset>${project.parent.basedir}/_checks/pmd.xml</maven-pmd-plugin.ruleset>
 	</properties>
 
+	<build>
+		<resources>
+			<resource>
+				<filtering>false</filtering>
+				<directory>src/main/java</directory>
+				<includes>
+					<include>**</include>
+				</includes>
+				<excludes>
+					<exclude>**/*.java</exclude>
+				</excludes>
+			</resource>
+		</resources>
+	</build>
+
 	<dependencies>
 
 		<!-- ISIS API -->
diff --git a/starters/simpleapp/webapp/pom.xml b/starters/simpleapp/webapp/pom.xml
index 367b904..a3b37ba 100644
--- a/starters/simpleapp/webapp/pom.xml
+++ b/starters/simpleapp/webapp/pom.xml
@@ -37,6 +37,21 @@
         <maven-war-plugin.warName>${project.parent.artifactId}</maven-war-plugin.warName>
     </properties>
 
+    <build>
+        <resources>
+            <resource>
+                <filtering>false</filtering>
+                <directory>src/main/java</directory>
+                <includes>
+                    <include>**</include>
+                </includes>
+                <excludes>
+                    <exclude>**/*.java</exclude>
+                </excludes>
+            </resource>
+        </resources>
+    </build>
+
     <dependencies>
     
     	<!-- this app -->