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/02/14 15:12:53 UTC
[03/20] isis git commit: ISIS-1478: now honours
@Property(editing=ENABLED),
takes precedence over isis.properties config file (if configured as
isis.objects.editing=false)
ISIS-1478: now honours @Property(editing=ENABLED), takes precedence over isis.properties config file (if configured as isis.objects.editing=false)
Also, refactored simpleapp so that the majority of isis.properties and persistor_datanucleus.properties are read in programmatically by the app manifest.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/beed85af
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/beed85af
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/beed85af
Branch: refs/heads/master
Commit: beed85aff4d087bce9e8b77b7db571ffa5b6b898
Parents: 5666e49
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Sun Feb 12 18:27:59 2017 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Sun Feb 12 18:27:59 2017 +0000
----------------------------------------------------------------------
.../facets/members/disabled/DisabledFacet.java | 9 +
.../members/disabled/DisabledFacetAbstract.java | 25 +-
.../disabled/DisabledFacetAbstractImpl.java | 10 +
.../editing/EditingObjectsConfiguration.java | 2 +-
...etOnPropertyDerivedFromImmutableFactory.java | 6 +
.../DisabledFacetForPropertyAnnotation.java | 4 +-
...tForPropertyAnnotationInvertedSemantics.java | 33 ++
.../DomainObjectAnnotationFacetFactoryTest.java | 17 +-
.../manifest/DomainAppAppManifest.java | 73 +++-
.../DomainAppAppManifestBypassSecurity.java | 10 +-
.../DomainAppAppManifestWithFixtures.java | 23 +-
...ppAppManifestWithFixturesBypassSecurity.java | 10 +-
.../application/manifest/isis.properties | 362 +++++++++++++++++++
.../modules/simple/dom/impl/SimpleObject.java | 2 +-
.../SimpleModuleIntegTestAbstract.java | 2 +
example/application/simpleapp/pom.xml | 2 +-
.../src/main/webapp/WEB-INF/isis.properties | 266 +-------------
.../main/webapp/WEB-INF/persistor.properties | 15 -
.../WEB-INF/persistor_datanucleus.properties | 91 -----
19 files changed, 537 insertions(+), 425 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/beed85af/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacet.java
index be97e7f..d1f3988 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacet.java
@@ -20,6 +20,8 @@
package org.apache.isis.core.metamodel.facets.members.disabled;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.WhenAndWhereValueFacet;
import org.apache.isis.core.metamodel.interactions.DisablingInteractionAdvisor;
@@ -37,4 +39,11 @@ public interface DisabledFacet extends WhenAndWhereValueFacet, DisablingInteract
* or <tt>null</tt> if enabled.
*/
public String disabledReason(ObjectAdapter target);
+
+ /**
+ * Indicates that the implementation is overridding the usual semantics, in
+ * other words that the {@link FacetHolder} to which this {@link Facet} is
+ * attached is <i>not</i> mandatory.
+ */
+ public boolean isInvertedSemantics();
}
http://git-wip-us.apache.org/repos/asf/isis/blob/beed85af/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstract.java
index 3e8d980..3acba7c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstract.java
@@ -37,16 +37,32 @@ public abstract class DisabledFacetAbstract extends WhenAndWhereValueFacetAbstra
return DisabledFacet.class;
}
+ private final Semantics semantics;
+
+ public enum Semantics {
+ DISABLED,
+ ENABLED;
+ }
+
public DisabledFacetAbstract(final When when, Where where, final FacetHolder holder) {
- this(type(), when, where, holder);
+ this(when, where, holder, Semantics.DISABLED);
}
- private DisabledFacetAbstract(final Class<? extends Facet> type, final When when, Where where, final FacetHolder holder) {
+ public DisabledFacetAbstract(final When when, Where where, final FacetHolder holder, final Semantics semantics) {
+ this(type(), when, where, holder, semantics);
+ }
+
+ private DisabledFacetAbstract(final Class<? extends Facet> type, final When when, Where where, final FacetHolder holder, final Semantics semantics) {
super(type, holder, when, where);
+ this.semantics = semantics;
}
@Override
public String disables(final UsabilityContext<? extends UsabilityEvent> ic) {
+ if(isInvertedSemantics()) {
+ return null;
+ }
+
if(ic instanceof ActionUsabilityContext && (getFacetHolder() instanceof OneToOneAssociationContributee || getFacetHolder() instanceof OneToManyAssociationContributee)) {
// otherwise ends up vetoing the invocation of the contributing action
return null;
@@ -63,4 +79,9 @@ public abstract class DisabledFacetAbstract extends WhenAndWhereValueFacetAbstra
return null;
}
+ @Override
+ public boolean isInvertedSemantics() {
+ return semantics == Semantics.ENABLED;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/isis/blob/beed85af/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstractImpl.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstractImpl.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstractImpl.java
index 45ae641..2d25ced 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstractImpl.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstractImpl.java
@@ -34,11 +34,20 @@ public abstract class DisabledFacetAbstractImpl extends DisabledFacetAbstract {
this(when, where, null, holder);
}
+ public DisabledFacetAbstractImpl(final When when, final Where where, final FacetHolder holder, final Semantics semantics) {
+ this(when, where, null, holder, semantics);
+ }
+
public DisabledFacetAbstractImpl(final When when, final Where where, final String reason, final FacetHolder holder) {
super(when, where, holder);
this.reason = reason;
}
+ public DisabledFacetAbstractImpl(final When when, final Where where, final String reason, final FacetHolder holder, final Semantics semantics) {
+ super(when, where, holder, semantics);
+ this.reason = reason;
+ }
+
@Override
public String disabledReason(final ObjectAdapter targetAdapter) {
if (when() == When.ALWAYS) {
@@ -71,4 +80,5 @@ public abstract class DisabledFacetAbstractImpl extends DisabledFacetAbstract {
return reason;
}
+
}
http://git-wip-us.apache.org/repos/asf/isis/blob/beed85af/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/editing/EditingObjectsConfiguration.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/editing/EditingObjectsConfiguration.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/editing/EditingObjectsConfiguration.java
index df98352..bd5fb23 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/editing/EditingObjectsConfiguration.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/editing/EditingObjectsConfiguration.java
@@ -25,7 +25,7 @@ public enum EditingObjectsConfiguration {
TRUE,
FALSE;
- private static final String EDIT_OBJECTS_KEY = "isis.objects.editing";
+ public static final String EDIT_OBJECTS_KEY = "isis.objects.editing";
public static EditingObjectsConfiguration parse(final IsisConfiguration configuration) {
final String configuredValue = configuration.getString(EDIT_OBJECTS_KEY);
http://git-wip-us.apache.org/repos/asf/isis/blob/beed85af/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/disabled/fromimmutable/DisabledFacetOnPropertyDerivedFromImmutableFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/disabled/fromimmutable/DisabledFacetOnPropertyDerivedFromImmutableFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/disabled/fromimmutable/DisabledFacetOnPropertyDerivedFromImmutableFactory.java
index 346f048..88e53b3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/disabled/fromimmutable/DisabledFacetOnPropertyDerivedFromImmutableFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/disabled/fromimmutable/DisabledFacetOnPropertyDerivedFromImmutableFactory.java
@@ -24,6 +24,7 @@ import org.apache.isis.core.metamodel.facetapi.FeatureType;
import org.apache.isis.core.metamodel.facets.FacetFactory;
import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
import org.apache.isis.core.metamodel.facets.FacetedMethod;
+import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet;
import org.apache.isis.core.metamodel.facets.object.immutable.ImmutableFacet;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -44,6 +45,11 @@ public class DisabledFacetOnPropertyDerivedFromImmutableFactory extends FacetFac
if (spec.containsDoOpFacet(ImmutableFacet.class)) {
final ImmutableFacet immutableFacet = spec.getFacet(ImmutableFacet.class);
final FacetedMethod facetHolder = processMethodContext.getFacetHolder();
+ DisabledFacet facet = facetHolder.getFacet(DisabledFacet.class);
+ if(facet != null && facet.isInvertedSemantics()) {
+ // @Property(editing=ENABLED)
+ return;
+ }
FacetUtil.addFacet(new DisabledFacetOnPropertyDerivedFromImmutable(immutableFacet, facetHolder));
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/beed85af/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/disabled/DisabledFacetForPropertyAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/disabled/DisabledFacetForPropertyAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/disabled/DisabledFacetForPropertyAnnotation.java
index 3fda4be..8725cdc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/disabled/DisabledFacetForPropertyAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/disabled/DisabledFacetForPropertyAnnotation.java
@@ -36,7 +36,6 @@ public class DisabledFacetForPropertyAnnotation extends DisabledFacetAbstractImp
}
final Editing editing = property.editing();
- final String disabledReason = property.editingDisabledReason();
switch (editing) {
case AS_CONFIGURED:
@@ -48,9 +47,10 @@ public class DisabledFacetForPropertyAnnotation extends DisabledFacetAbstractImp
return null;
case DISABLED:
+ final String disabledReason = property.editingDisabledReason();
return new DisabledFacetForPropertyAnnotation(disabledReason, holder);
case ENABLED:
- return null;
+ return new DisabledFacetForPropertyAnnotationInvertedSemantics(holder);
}
return null;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/beed85af/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/disabled/DisabledFacetForPropertyAnnotationInvertedSemantics.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/disabled/DisabledFacetForPropertyAnnotationInvertedSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/disabled/DisabledFacetForPropertyAnnotationInvertedSemantics.java
new file mode 100644
index 0000000..257ee4e
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/disabled/DisabledFacetForPropertyAnnotationInvertedSemantics.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.isis.core.metamodel.facets.properties.property.disabled;
+
+import org.apache.isis.applib.annotation.When;
+import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetAbstractImpl;
+
+public class DisabledFacetForPropertyAnnotationInvertedSemantics extends DisabledFacetAbstractImpl {
+
+ DisabledFacetForPropertyAnnotationInvertedSemantics(final FacetHolder holder) {
+ super(When.ALWAYS, Where.EVERYWHERE, null, holder, Semantics.ENABLED);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/beed85af/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
index 2e7e42f..505989f 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
@@ -46,6 +46,7 @@ import org.apache.isis.core.metamodel.facets.object.domainobject.auditing.Audita
import org.apache.isis.core.metamodel.facets.object.domainobject.auditing.AuditableFacetFromConfiguration;
import org.apache.isis.core.metamodel.facets.object.domainobject.autocomplete.AutoCompleteFacetForDomainObjectAnnotation;
import org.apache.isis.core.metamodel.facets.object.domainobject.choices.ChoicesFacetForDomainObjectAnnotation;
+import org.apache.isis.core.metamodel.facets.object.domainobject.editing.EditingObjectsConfiguration;
import org.apache.isis.core.metamodel.facets.object.domainobject.editing.ImmutableFacetForDomainObjectAnnotation;
import org.apache.isis.core.metamodel.facets.object.domainobject.editing.ImmutableFacetFromConfiguration;
import org.apache.isis.core.metamodel.facets.object.domainobject.objectspecid.ObjectSpecIdFacetForDomainObjectAnnotation;
@@ -699,7 +700,7 @@ public class DomainObjectAnnotationFacetFactoryTest extends AbstractFacetFactory
@Test
public void configured_value_set_to_true() {
- allowingConfigurationToReturn("isis.objects.editing", "true");
+ allowingConfigurationToReturn(EditingObjectsConfiguration.EDIT_OBJECTS_KEY, "true");
facetFactory.process(new ProcessClassContext(Customer.class, null, mockMethodRemover, facetHolder));
@@ -711,7 +712,7 @@ public class DomainObjectAnnotationFacetFactoryTest extends AbstractFacetFactory
@Test
public void configured_value_set_to_false() {
- allowingConfigurationToReturn("isis.objects.editing", "false");
+ allowingConfigurationToReturn(EditingObjectsConfiguration.EDIT_OBJECTS_KEY, "false");
facetFactory.process(new ProcessClassContext(Customer.class, null, mockMethodRemover, facetHolder));
@@ -724,7 +725,7 @@ public class DomainObjectAnnotationFacetFactoryTest extends AbstractFacetFactory
@Test
public void configured_value_set_to_not_recognized() {
- allowingConfigurationToReturn("isis.objects.editing", "foobar");
+ allowingConfigurationToReturn(EditingObjectsConfiguration.EDIT_OBJECTS_KEY, "foobar");
facetFactory.process(new ProcessClassContext(Customer.class, null, mockMethodRemover, facetHolder));
@@ -773,7 +774,7 @@ public class DomainObjectAnnotationFacetFactoryTest extends AbstractFacetFactory
@Test
public void configured_value_set_to_true() {
- allowingConfigurationToReturn("isis.objects.editing", "true");
+ allowingConfigurationToReturn(EditingObjectsConfiguration.EDIT_OBJECTS_KEY, "true");
facetFactory.process(new ProcessClassContext(CustomerWithDomainObjectAndEditingSetToAsConfigured.class, null, mockMethodRemover, facetHolder));
@@ -785,7 +786,7 @@ public class DomainObjectAnnotationFacetFactoryTest extends AbstractFacetFactory
@Test
public void configured_value_set_to_false() {
- allowingConfigurationToReturn("isis.objects.editing", "false");
+ allowingConfigurationToReturn(EditingObjectsConfiguration.EDIT_OBJECTS_KEY, "false");
facetFactory.process(new ProcessClassContext(CustomerWithDomainObjectAndEditingSetToAsConfigured.class, null, mockMethodRemover, facetHolder));
@@ -798,7 +799,7 @@ public class DomainObjectAnnotationFacetFactoryTest extends AbstractFacetFactory
@Test
public void configured_value_set_to_not_recognized() {
- allowingConfigurationToReturn("isis.objects.editing", "foobar");
+ allowingConfigurationToReturn(EditingObjectsConfiguration.EDIT_OBJECTS_KEY, "foobar");
facetFactory.process(new ProcessClassContext(CustomerWithDomainObjectAndEditingSetToAsConfigured.class, null, mockMethodRemover, facetHolder));
@@ -813,7 +814,7 @@ public class DomainObjectAnnotationFacetFactoryTest extends AbstractFacetFactory
@Test
public void irrespective_of_configured_value() {
- allowingConfigurationToReturn("isis.objects.editing", "false");
+ allowingConfigurationToReturn(EditingObjectsConfiguration.EDIT_OBJECTS_KEY, "false");
facetFactory.process(new ProcessClassContext(CustomerWithDomainObjectAndEditingSetToEnabled.class, null, mockMethodRemover, facetHolder));
@@ -829,7 +830,7 @@ public class DomainObjectAnnotationFacetFactoryTest extends AbstractFacetFactory
@Test
public void irrespective_of_configured_value() {
- allowingConfigurationToReturn("isis.objects.editing", "true");
+ allowingConfigurationToReturn(EditingObjectsConfiguration.EDIT_OBJECTS_KEY, "true");
facetFactory.process(new ProcessClassContext(CustomerWithDomainObjectAndEditingSetToDisabled.class, null, mockMethodRemover, facetHolder));
http://git-wip-us.apache.org/repos/asf/isis/blob/beed85af/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 bdd4d0f..973991e 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,10 +18,16 @@
*/
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;
@@ -35,16 +41,44 @@ import domainapp.modules.simple.dom.SimpleModuleDomSubmodule;
*/
public class DomainAppAppManifest implements AppManifest {
+ private final List<Class<? extends FixtureScript>> fixtureScripts;
+ private final String authMechanism;
+ private final List<Class<?>> additionalModules;
+
+ 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() {
- return Arrays.asList(
+ List<Class<?>> modules = Lists.newArrayList();
+ modules.addAll(Arrays.asList(
SimpleModuleDomSubmodule.class,
DomainAppApplicationModuleFixtureSubmodule.class,
DomainAppApplicationModuleServicesSubmodule.class
- );
+ ));
+ modules.addAll(additionalModules);
+ return modules;
}
/**
@@ -60,7 +94,7 @@ public class DomainAppAppManifest implements AppManifest {
*/
@Override
public String getAuthenticationMechanism() {
- return "shiro";
+ return authMechanism;
}
/**
@@ -68,7 +102,7 @@ public class DomainAppAppManifest implements AppManifest {
*/
@Override
public String getAuthorizationMechanism() {
- return "shiro";
+ return authMechanism;
}
/**
@@ -76,7 +110,7 @@ public class DomainAppAppManifest implements AppManifest {
*/
@Override
public List<Class<? extends FixtureScript>> getFixtures() {
- return Collections.emptyList();
+ return fixtureScripts;
}
/**
@@ -84,7 +118,34 @@ public class DomainAppAppManifest implements AppManifest {
*/
@Override
public Map<String, String> getConfigurationProperties() {
- return null;
+ final Map<String, String> props = Maps.newHashMap();
+
+ loadPropsInto(props, "isis.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);
+ }
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/beed85af/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 fda6c19..cc96674 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,13 +23,7 @@ package domainapp.application.manifest;
*/
public class DomainAppAppManifestBypassSecurity extends DomainAppAppManifest {
- @Override
- public String getAuthenticationMechanism() {
- return "bypass";
- }
-
- @Override
- public String getAuthorizationMechanism() {
- return "bypass";
+ public DomainAppAppManifestBypassSecurity() {
+ super(null, "bypass", null);
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/beed85af/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 0998455..79d0ce1 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
@@ -18,14 +18,9 @@
*/
package domainapp.application.manifest;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-
-import org.apache.isis.applib.fixturescripts.FixtureScript;
import domainapp.modules.simple.fixture.scenario.CreateSimpleObjects;
@@ -34,22 +29,12 @@ import domainapp.modules.simple.fixture.scenario.CreateSimpleObjects;
*/
public class DomainAppAppManifestWithFixtures extends DomainAppAppManifest {
- /**
- * Fixtures to be installed.
- */
- @Override
- public List<Class<? extends FixtureScript>> getFixtures() {
- return (List)Lists.newArrayList(CreateSimpleObjects.class);
+ public DomainAppAppManifestWithFixtures() {
+ this(null);
}
- /**
- * Force fixtures to be loaded.
- */
- @Override
- public Map<String, String> getConfigurationProperties() {
- HashMap<String,String> props = Maps.newHashMap();
- props.put("isis.persistor.datanucleus.install-fixtures","true");
- return props;
+ public DomainAppAppManifestWithFixtures(final String authMechanism) {
+ super((List)Lists.newArrayList(CreateSimpleObjects.class), authMechanism, null);
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/beed85af/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 6c736b8..5390109 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,13 +23,7 @@ package domainapp.application.manifest;
*/
public class DomainAppAppManifestWithFixturesBypassSecurity extends DomainAppAppManifestWithFixtures {
- @Override
- public String getAuthenticationMechanism() {
- return "bypass";
- }
-
- @Override
- public String getAuthorizationMechanism() {
- return "bypass";
+ public DomainAppAppManifestWithFixturesBypassSecurity() {
+ super("bypass");
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/beed85af/example/application/simpleapp/application/src/main/resources/domainapp/application/manifest/isis.properties
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/application/src/main/resources/domainapp/application/manifest/isis.properties b/example/application/simpleapp/application/src/main/resources/domainapp/application/manifest/isis.properties
new file mode 100644
index 0000000..9546cdb
--- /dev/null
+++ b/example/application/simpleapp/application/src/main/resources/domainapp/application/manifest/isis.properties
@@ -0,0 +1,362 @@
+# 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.
+
+
+
+
+#################################################################################
+#
+# MetaModel
+#
+# The metamodel typically does not require additional configuration, although
+# the system components (defined above) may refine the metamodel for their needs.
+#
+#################################################################################
+
+
+#
+# Additional programming model facet factories, or remove standard facet factories.
+# Comma separated list of fully qualified class names.
+#
+#isis.reflector.facets.include=
+#isis.reflector.facets.exclude=
+
+
+#
+# Metamodel validation (in addition to that automatically performed by the programming model facet factories)
+# Default implementation does nothing.
+#
+# Use a custom implementation to enforce additional constraints specific to your app/project/company.
+#
+#isis.reflector.validator=org.apache.isis.core.metamodel.metamodelvalidator.dflt.MetaModelValidatorDefault
+
+
+
+#
+# Whether to allow deprecated annotations/method prefixes (otherwise raise metamodel validation errors).
+# If not specified, default is to allow.
+#
+isis.reflector.validator.allowDeprecated=false
+
+
+#
+# Whether to ignore or honour (at least some of the) deprecated annotations/method prefixes.
+# If not specified, default is to honour
+#
+#isis.reflector.facets.ignoreDeprecated=false
+
+
+
+#
+# Implementation to use for reading dynamic layout.
+# Default implementation reads Xxx.layout.json files from classpath.
+#
+#isis.reflector.layoutMetadataReaders=org.apache.isis.core.metamodel.layoutmetadata.json.LayoutMetadataReaderFromJson
+
+
+#
+# patterns for applying CssClassFa facet (font-awesome icons), matching on action names
+#
+isis.reflector.facet.cssClassFa.patterns=\
+ new.*:fa-plus,\
+ add.*:fa-plus-square,\
+ create.*:fa-plus,\
+ update.*:fa-edit,\
+ change.*:fa-edit,\
+ remove.*:fa-minus-square,\
+ move.*:fa-exchange,\
+ first.*:fa-star,\
+ find.*:fa-search,\
+ lookup.*:fa-search,\
+ clear.*:fa-remove,\
+ previous.*:fa-step-backward,\
+ next.*:fa-step-forward,\
+ list.*:fa-list, \
+ all.*:fa-list, \
+ download.*:fa-download, \
+ upload.*:fa-upload, \
+ execute.*:fa-bolt, \
+ run.*:fa-bolt, \
+ calculate.*:fa-calculator, \
+ verify.*:fa-check-circle, \
+ refresh.*:fa-refresh, \
+ install.*:fa-wrench
+
+
+#
+# patterns for applying CssClass facet (CSS styles), matching on member names
+#
+isis.reflector.facet.cssClass.patterns=\
+ delete.*:btn-danger
+
+
+#
+# whether to suppress posting of events if not specified (left as Xxx.Default); defaults to true
+#
+
+#isis.reflector.facet.actionAnnotation.domainEvent.postForDefault=false
+#isis.reflector.facet.collectionAnnotation.domainEvent.postForDefault=false
+#isis.reflector.facet.propertyAnnotation.domainEvent.postForDefault=false
+
+#isis.reflector.facet.domainObjectLayoutAnnotation.cssClassUiEvent.postForDefault=false
+#isis.reflector.facet.domainObjectLayoutAnnotation.iconUiEvent.postForDefault=false
+#isis.reflector.facet.domainObjectLayoutAnnotation.titleUiEvent.postForDefault=false
+
+isis.reflector.facet.domainObjectAnnotation.createdLifecycleEvent.postForDefault=false
+isis.reflector.facet.domainObjectAnnotation.persistingLifecycleEvent.postForDefault=false
+isis.reflector.facet.domainObjectAnnotation.persistedLifecycleEvent.postForDefault=false
+isis.reflector.facet.domainObjectAnnotation.loadedLifecycleEvent.postForDefault=false
+isis.reflector.facet.domainObjectAnnotation.updatingLifecycleEvent.postForDefault=false
+isis.reflector.facet.domainObjectAnnotation.updatedLifecycleEvent.postForDefault=false
+isis.reflector.facet.domainObjectAnnotation.removingLifecycleEvent.postForDefault=false
+
+#################################################################################
+#
+# Domain Service configuration
+#
+#################################################################################
+
+#
+# required by EmailServiceDefault
+#
+#isis.service.email.sender.address=some.valid@email.address
+#isis.service.email.sender.password=the.password.for-isis.service.email.sender.address
+
+
+#
+# whether ExceptionRecognizers should also log any recognized exceptions
+# (default false; enable for diagnostics/debugging)
+#
+#isis.services.exceprecog.logRecognizedExceptions=true
+
+
+#
+# disable to (automatically registered) ExceptionRecognizerCompositeForJdoObjectStore service
+# almost all of this service should be registered. Since all exception recognizer implementations
+# are consulted in the event of an exception, it's not sufficient to override the implementation
+# (in isis.services); instead this configuration property disables this particular implementation.
+#
+#isis.services.ExceptionRecognizerCompositeForJdoObjectStore.disable=true
+
+
+################################################################################
+#
+# Auditing, Commands, Publishing
+#
+################################################################################
+
+#
+# Whether changes to objects should be audited; if not set, defaults to "none"
+# - if not set or set to "none", can explicitly enable using @DomainObject(auditing=Auditing.ENABLED)
+# - if set to "all", can explicitly disable using @Object(auditing=Auditing.DISABLED)
+#
+#isis.services.audit.objects=all|none
+
+
+#
+# Whether changes to objects should be published; if not set, defaults to "none"
+# - if not set or set to "none", can explicitly enable using @DomainObject(publishing=Publishing.ENABLED)
+# - if set to "all", can explicitly disable using @Object(publishing=Publishing.DISABLED)
+#
+#isis.services.publish.objects=all|none
+
+
+#
+# Whether all (or all non-query only) actions should be reified as commands; if not set, defaults to "none"
+# - if not set or set to "none", can explicitly enable using @Action(command=CommandReification.ENABLED)
+# - if set to "all", can explicitly disable using @Action(command=CommandReification.DISABLED)
+#
+#isis.services.command.actions=all|none|ignoreSafe
+
+
+#
+# Whether all (or all non-query only) action invocations should be published; if not set, defaults to "none"
+# - if not set or set to "none", can explicitly enable using @Action(publishing=Publishing.ENABLED)
+# - if set to "all", can explicitly disable using @Action(publishing=Publishing.DISABLED)
+#
+#isis.services.publish.actions=all|none|ignoreSafe
+
+
+#
+# Whether all property edits sshould be published; if not set, defaults to "none"
+# - if not set or set to "none", can explicitly enable using @Property(publishing=Publishing.ENABLED)
+# - if set to "all", can explicitly disable using @Property(publishing=Publishing.DISABLED)
+#
+#isis.services.publish.properties=all|none
+
+
+
+#
+# Whether the ApplicationFeatureRepository should eagerly initialize itself (increasing start-up times)
+# or initialize itself lazily. Default is lazy initialization.
+#
+#isis.services.applicationFeatures.init=lazy|eager
+
+
+#
+# Whether the framework supports inject...() and set...() styles of dependency injection. By default the former
+# is disabled, the latter is enabled. Disabling these settings can reduce application start-up times.
+#
+#isis.services.injector.injectPrefix=false|true
+#isis.services.injector.setPrefix=false|true
+isis.services.injector.setPrefix=false
+
+
+
+
+################################################################################
+#
+# Policies
+#
+#################################################################################
+
+#
+# Whether editing of object properties is allowed; if not set, defaults to "true"
+# - if not set or set to "true", can explicitly disable using @DomainObject(editing=Editing.DISABLED)
+# - if set to "false", can explicitly enable using @DomainObject(editing=Editing.ENABLED)
+#
+isis.objects.editing=false
+
+
+
+################################################################################
+#
+# i18n
+#
+#################################################################################
+
+#
+# force read translations, even if running in prototype mode
+#
+#isis.services.translation.po.mode=read
+
+
+
+################################################################################
+#
+# Viewer defaults
+#
+#################################################################################
+
+#
+# Specify viewer defaults
+#
+#isis.viewers.paged.standalone=30
+#isis.viewers.paged.parented=10
+
+
+#isis.viewers.propertyLayout.labelPosition=LEFT
+#isis.viewers.parameterLayout.labelPosition=LEFT
+
+
+#################################################################################
+#
+# Value facet defaults
+#
+# (see also viewer-specific config files, eg viewer_wicket.properties)
+#
+#################################################################################
+
+# as used by @Title of a date
+isis.value.format.date=dd-MM-yyyy
+
+
+
+
+#################################################################################
+#
+# Persistor
+#
+#################################################################################
+
+
+
+# generally speaking this should not be enabled
+isis.persistor.disableConcurrencyChecking=false
+
+
+#
+# hook to perform additional initialization when JDO class metadata is loaded
+# default implementation will attempt to run 'create schema' for the specified schema.
+#
+# this implementation is installed by default:
+#isis.persistor.datanucleus.classMetadataLoadedListener=org.apache.isis.objectstore.jdo.datanucleus.CreateSchemaObjectFromClassMetadata
+
+
+# whether to persist the event data as a "clob" or as a "zipped" byte[]
+# default is "zipped"
+#isis.persistor.datanucleus.PublishingService.serializedForm=zipped
+
+
+
+
+#####################################################################
+#
+# DataNucleus' configuration
+#
+# The 'isis.persistor.datanucleus.impl' prefix is stripped off,
+# remainder is passed through to DataNucleus
+#
+#####################################################################
+
+isis.persistor.datanucleus.impl.datanucleus.schema.autoCreateAll=true
+isis.persistor.datanucleus.impl.datanucleus.schema.validateTables=true
+isis.persistor.datanucleus.impl.datanucleus.schema.validateConstraints=true
+
+
+#
+# Require explicit persistence (since entities are Comparable and using ObjectContracts#compareTo).
+# see http://www.datanucleus.org/products/accessplatform_3_0/jdo/transaction_types.html
+#
+isis.persistor.datanucleus.impl.datanucleus.persistenceByReachabilityAtCommit=false
+
+
+#
+# How column names are identified
+# (http://www.datanucleus.org/products/datanucleus/jdo/orm/datastore_identifiers.html)
+#
+isis.persistor.datanucleus.impl.datanucleus.identifier.case=MixedCase
+
+#
+# L2 cache
+# off except if explicitly marked as cacheable
+# http://www.datanucleus.org/products/datanucleus/jdo/cache.html
+#
+isis.persistor.datanucleus.impl.datanucleus.cache.level2.type=none
+isis.persistor.datanucleus.impl.datanucleus.cache.level2.mode=ENABLE_SELECTIVE
+
+
+
+#
+# uncomment to use JNDI rather than direct JDBC
+#
+#isis.persistor.datanucleus.impl.datanucleus.ConnectionFactoryName=java:comp/env/jdbc/quickstart
+
+#
+# uncomment to use JTA resource
+#
+#isis.persistor.datanucleus.impl.datanucleus.ConnectionFactory2Name=java:comp/env/jdbc/quickstart-nontx
+#isis.persistor.datanucleus.impl.javax.jdo.option.TransactionType=JTA
+
+
+
+#
+#
+# JDBC connection details
+# ... are in persistor.properties
+#
+#
http://git-wip-us.apache.org/repos/asf/isis/blob/beed85af/example/application/simpleapp/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.java
----------------------------------------------------------------------
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 52e9fe9..22f099f 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
@@ -67,7 +67,7 @@ public class SimpleObject implements Comparable<SimpleObject> {
}
@javax.jdo.annotations.Column(allowsNull = "false", length = 40)
- @Property(editing = Editing.DISABLED)
+ @Property() // editing disabled by default, see isis.properties
@Getter @Setter
@Title(prepend = "Object: ")
private String name;
http://git-wip-us.apache.org/repos/asf/isis/blob/beed85af/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 c13db47..ebd601d 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
@@ -53,6 +53,8 @@ public abstract class SimpleModuleIntegTestAbstract extends IntegrationTestAbstr
Util.withJavaxJdoRunInMemoryProperties(map);
Util.withDataNucleusProperties(map);
Util.withIsisIntegTestProperties(map);
+ // same as in isis.properties
+ map.put("isis.objects.editing","false");
return map;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/beed85af/example/application/simpleapp/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/pom.xml b/example/application/simpleapp/pom.xml
index d9f5b76..0da4e9e 100644
--- a/example/application/simpleapp/pom.xml
+++ b/example/application/simpleapp/pom.xml
@@ -34,7 +34,7 @@
</prerequisites>
<properties>
- <isis.version>1.13.2</isis.version>
+ <isis.version>1.14.0-SNAPSHOT</isis.version>
<lombok.version>1.16.10</lombok.version>
<assertj-core.version>3.6.1</assertj-core.version>
http://git-wip-us.apache.org/repos/asf/isis/blob/beed85af/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/isis.properties
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/isis.properties b/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/isis.properties
index ffc07cc..5f1b54f 100644
--- a/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/isis.properties
+++ b/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/isis.properties
@@ -16,19 +16,12 @@
# under the License.
-#################################################################################
-#
-# use GlobSpec to specify modules, system components and fixtures
-#
-#################################################################################
+
#
# Specify the modules (= entities + services) and other components that make up
# this application.
#
-# alternatively, can provide the AppManifest programmatically by overriding
-# IsisWicketApplication#newIsisWicketModule()
-#
isis.appManifest=domainapp.application.manifest.DomainAppAppManifest
#isis.appManifest=domainapp.application.manifest.DomainAppAppManifestBypassSecurity
@@ -36,261 +29,8 @@ isis.appManifest=domainapp.application.manifest.DomainAppAppManifest
-#################################################################################
-#
-# MetaModel
-#
-# The metamodel typically does not require additional configuration, although
-# the system components (defined above) may refine the metamodel for their needs.
-#
-#################################################################################
-
-
-#
-# Additional programming model facet factories, or remove standard facet factories.
-# Comma separated list of fully qualified class names.
-#
-#isis.reflector.facets.include=
-#isis.reflector.facets.exclude=
-
-
-#
-# Metamodel validation (in addition to that automatically performed by the programming model facet factories)
-# Default implementation does nothing.
-#
-# Use a custom implementation to enforce additional constraints specific to your app/project/company.
-#
-#isis.reflector.validator=org.apache.isis.core.metamodel.metamodelvalidator.dflt.MetaModelValidatorDefault
-
-
-
-#
-# Whether to allow deprecated annotations/method prefixes (otherwise raise metamodel validation errors).
-# If not specified, default is to allow.
-#
-isis.reflector.validator.allowDeprecated=false
-
-
-#
-# Whether to ignore or honour (at least some of the) deprecated annotations/method prefixes.
-# If not specified, default is to honour
-#
-#isis.reflector.facets.ignoreDeprecated=false
-
-
-
-#
-# Implementation to use for reading dynamic layout.
-# Default implementation reads Xxx.layout.json files from classpath.
-#
-#isis.reflector.layoutMetadataReaders=org.apache.isis.core.metamodel.layoutmetadata.json.LayoutMetadataReaderFromJson
-
-
-#
-# patterns for applying CssClassFa facet (font-awesome icons), matching on action names
-#
-isis.reflector.facet.cssClassFa.patterns=\
- new.*:fa-plus,\
- add.*:fa-plus-square,\
- create.*:fa-plus,\
- update.*:fa-edit,\
- change.*:fa-edit,\
- remove.*:fa-minus-square,\
- move.*:fa-exchange,\
- first.*:fa-star,\
- find.*:fa-search,\
- lookup.*:fa-search,\
- clear.*:fa-remove,\
- previous.*:fa-step-backward,\
- next.*:fa-step-forward,\
- list.*:fa-list, \
- all.*:fa-list, \
- download.*:fa-download, \
- upload.*:fa-upload, \
- execute.*:fa-bolt, \
- run.*:fa-bolt, \
- calculate.*:fa-calculator, \
- verify.*:fa-check-circle, \
- refresh.*:fa-refresh, \
- install.*:fa-wrench
-
-
-#
-# patterns for applying CssClass facet (CSS styles), matching on member names
-#
-isis.reflector.facet.cssClass.patterns=\
- delete.*:btn-danger
-
-
-#
-# whether to suppress posting of events if not specified (left as Xxx.Default); defaults to true
-#
-
-#isis.reflector.facet.actionAnnotation.domainEvent.postForDefault=false
-#isis.reflector.facet.collectionAnnotation.domainEvent.postForDefault=false
-#isis.reflector.facet.propertyAnnotation.domainEvent.postForDefault=false
-
-#isis.reflector.facet.domainObjectLayoutAnnotation.cssClassUiEvent.postForDefault=false
-#isis.reflector.facet.domainObjectLayoutAnnotation.iconUiEvent.postForDefault=false
-#isis.reflector.facet.domainObjectLayoutAnnotation.titleUiEvent.postForDefault=false
-
-isis.reflector.facet.domainObjectAnnotation.createdLifecycleEvent.postForDefault=false
-isis.reflector.facet.domainObjectAnnotation.persistingLifecycleEvent.postForDefault=false
-isis.reflector.facet.domainObjectAnnotation.persistedLifecycleEvent.postForDefault=false
-isis.reflector.facet.domainObjectAnnotation.loadedLifecycleEvent.postForDefault=false
-isis.reflector.facet.domainObjectAnnotation.updatingLifecycleEvent.postForDefault=false
-isis.reflector.facet.domainObjectAnnotation.updatedLifecycleEvent.postForDefault=false
-isis.reflector.facet.domainObjectAnnotation.removingLifecycleEvent.postForDefault=false
-
-#################################################################################
#
-# Domain Service configuration
+# Remaining properties are loaded programmatically by the AppManifest
+# (they are unlikely to vary between dev/test/prod so can be "baked in")
#
-#################################################################################
-
-#
-# required by EmailServiceDefault
-#
-#isis.service.email.sender.address=some.valid@email.address
-#isis.service.email.sender.password=the.password.for-isis.service.email.sender.address
-
-
-#
-# whether ExceptionRecognizers should also log any recognized exceptions
-# (default false; enable for diagnostics/debugging)
-#
-#isis.services.exceprecog.logRecognizedExceptions=true
-
-
-#
-# disable to (automatically registered) ExceptionRecognizerCompositeForJdoObjectStore service
-# almost all of this service should be registered. Since all exception recognizer implementations
-# are consulted in the event of an exception, it's not sufficient to override the implementation
-# (in isis.services); instead this configuration property disables this particular implementation.
-#
-#isis.services.ExceptionRecognizerCompositeForJdoObjectStore.disable=true
-
-
-################################################################################
-#
-# Auditing, Commands, Publishing
-#
-################################################################################
-
-#
-# Whether changes to objects should be audited; if not set, defaults to "none"
-# - if not set or set to "none", can explicitly enable using @DomainObject(auditing=Auditing.ENABLED)
-# - if set to "all", can explicitly disable using @Object(auditing=Auditing.DISABLED)
-#
-#isis.services.audit.objects=all|none
-
-
-#
-# Whether changes to objects should be published; if not set, defaults to "none"
-# - if not set or set to "none", can explicitly enable using @DomainObject(publishing=Publishing.ENABLED)
-# - if set to "all", can explicitly disable using @Object(publishing=Publishing.DISABLED)
-#
-#isis.services.publish.objects=all|none
-
-
-#
-# Whether all (or all non-query only) actions should be reified as commands; if not set, defaults to "none"
-# - if not set or set to "none", can explicitly enable using @Action(command=CommandReification.ENABLED)
-# - if set to "all", can explicitly disable using @Action(command=CommandReification.DISABLED)
-#
-#isis.services.command.actions=all|none|ignoreSafe
-
-
-#
-# Whether all (or all non-query only) action invocations should be published; if not set, defaults to "none"
-# - if not set or set to "none", can explicitly enable using @Action(publishing=Publishing.ENABLED)
-# - if set to "all", can explicitly disable using @Action(publishing=Publishing.DISABLED)
-#
-#isis.services.publish.actions=all|none|ignoreSafe
-
-
-#
-# Whether all property edits sshould be published; if not set, defaults to "none"
-# - if not set or set to "none", can explicitly enable using @Property(publishing=Publishing.ENABLED)
-# - if set to "all", can explicitly disable using @Property(publishing=Publishing.DISABLED)
-#
-#isis.services.publish.properties=all|none
-
-
-
-#
-# Whether the ApplicationFeatureRepository should eagerly initialize itself (increasing start-up times)
-# or initialize itself lazily. Default is lazy initialization.
-#
-#isis.services.applicationFeatures.init=lazy|eager
-
-
-#
-# Whether the framework supports inject...() and set...() styles of dependency injection. By default the former
-# is disabled, the latter is enabled. Disabling these settings can reduce application start-up times.
-#
-#isis.services.injector.injectPrefix=false|true
-#isis.services.injector.setPrefix=false|true
-isis.services.injector.setPrefix=false
-
-
-
-
-################################################################################
-#
-# Policies
-#
-#################################################################################
-
-#
-# Whether editing of object properties is allowed; if not set, defaults to "true"
-# - if not set or set to "true", can explicitly disable using @DomainObject(editing=Editing.DISABLED)
-# - if set to "false", can explicitly enable using @DomainObject(editing=Editing.ENABLED)
-#
-#isis.objects.editing=true|false
-
-
-
-################################################################################
-#
-# i18n
-#
-#################################################################################
-
-#
-# force read translations, even if running in prototype mode
-#
-#isis.services.translation.po.mode=read
-
-
-
-################################################################################
-#
-# Viewer defaults
-#
-#################################################################################
-
-#
-# Specify viewer defaults
-#
-#isis.viewers.paged.standalone=30
-#isis.viewers.paged.parented=10
-
-
-#isis.viewers.propertyLayout.labelPosition=LEFT
-#isis.viewers.parameterLayout.labelPosition=LEFT
-
-
-#################################################################################
-#
-# Value facet defaults
-#
-# (see also viewer-specific config files, eg viewer_wicket.properties)
-#
-#################################################################################
-
-# as used by @Title of a date
-isis.value.format.date=dd-MM-yyyy
-
-
http://git-wip-us.apache.org/repos/asf/isis/blob/beed85af/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/persistor.properties
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/persistor.properties b/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/persistor.properties
index c73af73..763f17e 100644
--- a/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/persistor.properties
+++ b/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/persistor.properties
@@ -19,27 +19,12 @@
#################################################################################
#
-# Persistor
-#
-#################################################################################
-
-
-
-# generally speaking this should not be enabled
-isis.persistor.disableConcurrencyChecking=false
-
-
-
-
-#################################################################################
-#
# JDBC configuration
#
#################################################################################
#
# configuration file holding the JDO objectstore's JDBC configuration
-# (this is a bit of a hack... just exploiting fact that Isis also loads this file)
#
http://git-wip-us.apache.org/repos/asf/isis/blob/beed85af/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties b/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties
deleted file mode 100644
index 366ba82..0000000
--- a/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties
+++ /dev/null
@@ -1,91 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-#
-# configuration file for the JDO/DataNucleus objectstore
-#
-
-
-#
-# hook to perform additional initialization when JDO class metadata is loaded
-# default implementation will attempt to run 'create schema' for the specified schema.
-#
-# this implementation is installed by default:
-#isis.persistor.datanucleus.classMetadataLoadedListener=org.apache.isis.objectstore.jdo.datanucleus.CreateSchemaObjectFromClassMetadata
-
-
-# whether to persist the event data as a "clob" or as a "zipped" byte[]
-# default is "zipped"
-#isis.persistor.datanucleus.PublishingService.serializedForm=zipped
-
-
-#####################################################################
-#
-# DataNucleus' configuration
-#
-# The 'isis.persistor.datanucleus.impl' prefix is stripped off,
-# remainder is passed through to DataNucleus
-#
-#####################################################################
-
-isis.persistor.datanucleus.impl.datanucleus.schema.autoCreateAll=true
-isis.persistor.datanucleus.impl.datanucleus.schema.validateTables=true
-isis.persistor.datanucleus.impl.datanucleus.schema.validateConstraints=true
-
-
-#
-# Require explicit persistence (since entities are Comparable and using ObjectContracts#compareTo).
-# see http://www.datanucleus.org/products/accessplatform_3_0/jdo/transaction_types.html
-#
-isis.persistor.datanucleus.impl.datanucleus.persistenceByReachabilityAtCommit=false
-
-
-#
-# How column names are identified
-# (http://www.datanucleus.org/products/datanucleus/jdo/orm/datastore_identifiers.html)
-#
-isis.persistor.datanucleus.impl.datanucleus.identifier.case=MixedCase
-
-#
-# L2 cache
-# off except if explicitly marked as cacheable
-# http://www.datanucleus.org/products/datanucleus/jdo/cache.html
-#
-isis.persistor.datanucleus.impl.datanucleus.cache.level2.type=none
-isis.persistor.datanucleus.impl.datanucleus.cache.level2.mode=ENABLE_SELECTIVE
-
-
-
-#
-# uncomment to use JNDI rather than direct JDBC
-#
-#isis.persistor.datanucleus.impl.datanucleus.ConnectionFactoryName=java:comp/env/jdbc/quickstart
-
-#
-# uncomment to use JTA resource
-#
-#isis.persistor.datanucleus.impl.datanucleus.ConnectionFactory2Name=java:comp/env/jdbc/quickstart-nontx
-#isis.persistor.datanucleus.impl.javax.jdo.option.TransactionType=JTA
-
-
-
-#
-#
-# JDBC connection details
-# ... are in persistor.properties
-#
-#