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 2015/08/07 12:11:40 UTC

[13/17] isis git commit: ISIS-848: provide the ability to specify the AppManifest programmatically within the IsisWicketApplication subclass.

ISIS-848: provide the ability to specify the AppManifest programmatically within the IsisWicketApplication subclass.


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

Branch: refs/heads/master
Commit: b286e57af2d0a55e78b3418a4d8de69d1620fb06
Parents: 0778019
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Aug 7 10:30:18 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Aug 7 10:30:18 2015 +0100

----------------------------------------------------------------------
 .../IsisComponentProviderDefault.java           | 10 +--
 .../core/runtime/runner/IsisInjectModule.java   | 12 +++-
 .../core/runtime/system/IsisSystemFactory.java  |  3 +-
 .../IsisComponentProviderAbstract.java          | 14 ++++
 .../IsisComponentProviderUsingInstallers.java   | 21 ++++--
 .../IsisSystemThatUsesInstallersFactory.java    |  5 +-
 .../viewer/wicket/viewer/IsisWicketModule.java  |  4 +-
 .../domainapp/webapp/SimpleApplication.java     | 60 ++---------------
 .../src/main/webapp/WEB-INF/isis.properties     | 69 ++++++++++----------
 9 files changed, 91 insertions(+), 107 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/b286e57a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisComponentProviderDefault.java
----------------------------------------------------------------------
diff --git a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisComponentProviderDefault.java b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisComponentProviderDefault.java
index 343306e..5f8b9c1 100644
--- a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisComponentProviderDefault.java
+++ b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisComponentProviderDefault.java
@@ -53,7 +53,6 @@ import org.apache.isis.core.runtime.services.ServicesInstallerFromConfiguration;
 import org.apache.isis.core.runtime.services.ServicesInstallerFromConfigurationAndAnnotation;
 import org.apache.isis.core.runtime.system.DeploymentType;
 import org.apache.isis.core.runtime.system.IsisSystemException;
-import org.apache.isis.core.runtime.system.SystemConstants;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
 import org.apache.isis.core.runtime.systemusinginstallers.IsisComponentProviderAbstract;
 import org.apache.isis.core.runtime.transaction.facetdecorator.standard.StandardTransactionFacetDecorator;
@@ -82,14 +81,9 @@ public class IsisComponentProviderDefault extends IsisComponentProviderAbstract
         final String fixtureClassNamesCsv;
         if(appManifest != null) {
 
-            specifyServicesAndRegisteredEntitiesUsing(appManifest);
+            putAppManifestKey();
 
-            // required to prevent RegisterEntities validation from complaining
-            // if it can't find any @PersistenceCapable entities in a module
-            // that contains only services.
-            putConfigurationProperty(
-                    SystemConstants.APP_MANIFEST_KEY, appManifestIfAny.getClass().getName()
-            );
+            specifyServicesAndRegisteredEntitiesUsing(appManifest);
 
             List<Class<? extends FixtureScript>> fixtureClasses = appManifest.getFixtures();
             fixtureClassNamesCsv = classNamesFrom(fixtureClasses);

http://git-wip-us.apache.org/repos/asf/isis/blob/b286e57a/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/IsisInjectModule.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/IsisInjectModule.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/IsisInjectModule.java
index bdf5932..c963b91 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/IsisInjectModule.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/IsisInjectModule.java
@@ -20,11 +20,16 @@
 package org.apache.isis.core.runtime.runner;
 
 import java.util.List;
+
+import javax.annotation.Nullable;
+
 import com.google.common.collect.Lists;
 import com.google.inject.AbstractModule;
 import com.google.inject.Inject;
 import com.google.inject.Provides;
 import com.google.inject.Singleton;
+
+import org.apache.isis.applib.AppManifest;
 import org.apache.isis.core.commons.config.IsisConfigurationBuilder;
 import org.apache.isis.core.commons.config.IsisConfigurationBuilderDefault;
 import org.apache.isis.core.runtime.installerregistry.InstallerLookup;
@@ -128,8 +133,11 @@ public class IsisInjectModule extends AbstractModule {
     @Provides
     @Inject
     @Singleton
-    protected IsisSystem provideIsisSystem(final DeploymentType deploymentType, final IsisSystemFactory systemFactory) {
-        final IsisSystem system = systemFactory.createSystem(deploymentType);
+    protected IsisSystem provideIsisSystem(
+            final DeploymentType deploymentType,
+            final IsisSystemFactory systemFactory,
+            @Nullable final AppManifest appManifestIfAny) {
+        final IsisSystem system = systemFactory.createSystem(deploymentType, appManifestIfAny);
         system.init();
         return system;
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/b286e57a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystemFactory.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystemFactory.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystemFactory.java
index bac99bc..cd39b87 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystemFactory.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystemFactory.java
@@ -19,6 +19,7 @@
 
 package org.apache.isis.core.runtime.system;
 
+import org.apache.isis.applib.AppManifest;
 import org.apache.isis.core.commons.components.ApplicationScopedComponent;
 
 /**
@@ -26,6 +27,6 @@ import org.apache.isis.core.commons.components.ApplicationScopedComponent;
  */
 public interface IsisSystemFactory extends ApplicationScopedComponent {
 
-    IsisSystem createSystem(final DeploymentType deploymentType);
+    IsisSystem createSystem(final DeploymentType deploymentType, final AppManifest appManifestIfAny);
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/b286e57a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderAbstract.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderAbstract.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderAbstract.java
index a662371..4c4e75e 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderAbstract.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderAbstract.java
@@ -37,6 +37,7 @@ import org.apache.isis.core.runtime.fixtures.FixturesInstaller;
 import org.apache.isis.core.runtime.services.ServicesInstallerFromAnnotation;
 import org.apache.isis.core.runtime.services.ServicesInstallerFromConfiguration;
 import org.apache.isis.core.runtime.system.DeploymentType;
+import org.apache.isis.core.runtime.system.SystemConstants;
 import org.apache.isis.objectstore.jdo.service.RegisterEntities;
 
 import static org.apache.isis.core.commons.ensure.Ensure.ensureThatState;
@@ -79,6 +80,19 @@ public abstract class IsisComponentProviderAbstract implements IsisComponentProv
 
         this.deploymentType = deploymentType;
         this.appManifest = appManifest;
+
+    }
+
+    protected void putAppManifestKey() {
+        if (this.appManifest == null) {
+            return;
+        }
+        // required to prevent RegisterEntities validation from complaining
+        // if it can't find any @PersistenceCapable entities in a module
+        // that contains only services.
+        putConfigurationProperty(
+                SystemConstants.APP_MANIFEST_KEY, this.appManifest.getClass().getName()
+        );
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/isis/blob/b286e57a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderUsingInstallers.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderUsingInstallers.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderUsingInstallers.java
index e0fd90e..d1d58a7 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderUsingInstallers.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProviderUsingInstallers.java
@@ -57,8 +57,9 @@ public class IsisComponentProviderUsingInstallers extends IsisComponentProviderA
 
     public IsisComponentProviderUsingInstallers(
             final DeploymentType deploymentType,
+            final AppManifest appManifestIfAny,
             final InstallerLookup installerLookup) {
-        super(deploymentType, appManifestIfAny(installerLookup));
+        super(deploymentType, appManifestIfAny(appManifestIfAny, installerLookup));
 
         ensureThatArg(deploymentType, is(not(nullValue())));
         ensureThatArg(installerLookup, is(not(nullValue())));
@@ -67,6 +68,8 @@ public class IsisComponentProviderUsingInstallers extends IsisComponentProviderA
 
         if(appManifest != null) {
 
+            putAppManifestKey();
+
             specifyServicesAndRegisteredEntitiesUsing(appManifest);
 
             putConfigurationProperty(SystemConstants.SERVICES_INSTALLER_KEY, ServicesInstallerFromConfigurationAndAnnotation.NAME);
@@ -141,9 +144,19 @@ public class IsisComponentProviderUsingInstallers extends IsisComponentProviderA
         ensureInitialized();
     }
 
-    private static AppManifest appManifestIfAny(final InstallerLookup installerLookup) {
-        final String appManifestIfAny = installerLookup.getConfiguration().getString(SystemConstants.APP_MANIFEST_KEY);
-        return appManifestIfAny != null? InstanceUtil.createInstance(appManifestIfAny, AppManifest.class): null;
+    /**
+     * If an {@link AppManifest} was explicitly provided (eg from the Guice <tt>IsisWicketModule</tt> when running
+     * unde the Wicket viewer) then use that; otherwise read the <tt>isis.properties</tt> config file and look
+     * for an <tt>isis.appManifest</tt> entry instead.
+     */
+    private static AppManifest appManifestIfAny(
+            final AppManifest appManifestFromConstructor,
+            final InstallerLookup installerLookup) {
+        if(appManifestFromConstructor != null) {
+            return appManifestFromConstructor;
+        }
+        final String appManifestFromConfiguration = installerLookup.getConfiguration().getString(SystemConstants.APP_MANIFEST_KEY);
+        return appManifestFromConfiguration != null? InstanceUtil.createInstance(appManifestFromConfiguration, AppManifest.class): null;
     }
 
     protected void doPutConfigurationProperty(final String key, final String value) {

http://git-wip-us.apache.org/repos/asf/isis/blob/b286e57a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisSystemThatUsesInstallersFactory.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisSystemThatUsesInstallersFactory.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisSystemThatUsesInstallersFactory.java
index f0160ff..a668624 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisSystemThatUsesInstallersFactory.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisSystemThatUsesInstallersFactory.java
@@ -21,6 +21,7 @@ package org.apache.isis.core.runtime.systemusinginstallers;
 
 import com.google.inject.Inject;
 
+import org.apache.isis.applib.AppManifest;
 import org.apache.isis.core.runtime.installerregistry.InstallerLookup;
 import org.apache.isis.core.runtime.system.DeploymentType;
 import org.apache.isis.core.runtime.system.IsisSystem;
@@ -52,9 +53,9 @@ public class IsisSystemThatUsesInstallersFactory implements IsisSystemFactory {
     //endregion
 
     @Override
-    public IsisSystem createSystem(final DeploymentType deploymentType) {
+    public IsisSystem createSystem(final DeploymentType deploymentType, final AppManifest appManifestIfAny) {
         IsisComponentProviderUsingInstallers componentProvider =
-                new IsisComponentProviderUsingInstallers(deploymentType, installerLookup);
+                new IsisComponentProviderUsingInstallers(deploymentType, appManifestIfAny, installerLookup);
         return new IsisSystem(componentProvider);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/b286e57a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketModule.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketModule.java b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketModule.java
index 4d3ae8d..12ea8b6 100644
--- a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketModule.java
+++ b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketModule.java
@@ -22,10 +22,11 @@ package org.apache.isis.viewer.wicket.viewer;
 import com.google.inject.AbstractModule;
 import com.google.inject.name.Names;
 import com.google.inject.util.Providers;
+
 import org.apache.isis.applib.services.email.EmailService;
 import org.apache.isis.applib.services.userreg.EmailNotificationService;
-import org.apache.isis.core.runtime.services.userreg.EmailNotificationServiceDefault;
 import org.apache.isis.core.runtime.services.email.EmailServiceDefault;
+import org.apache.isis.core.runtime.services.userreg.EmailNotificationServiceDefault;
 import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
 import org.apache.isis.viewer.wicket.model.models.ImageResourceCache;
 import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistrar;
@@ -62,6 +63,7 @@ import org.apache.isis.viewer.wicket.viewer.settings.WicketViewerSettingsDefault
  *         bind(String.class).annotatedWith(Names.named("applicationJs")).toInstance("scripts/application.js");
  *         bind(String.class).annotatedWith(Names.named("welcomeMessage")).toInstance("Hello, welcome to my app");
  *         bind(String.class).annotatedWith(Names.named("aboutMessage")).toInstance("MyApp v1.0.0");
+ *         bind(AppManifest.class).toInstance(new MyAppManifest());
  *      }
  *  };
  * final Module overridden = Modules.override(isisDefaults).with(myAppOverrides);

http://git-wip-us.apache.org/repos/asf/isis/blob/b286e57a/example/application/simpleapp/webapp/src/main/java/domainapp/webapp/SimpleApplication.java
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/webapp/src/main/java/domainapp/webapp/SimpleApplication.java b/example/application/simpleapp/webapp/src/main/java/domainapp/webapp/SimpleApplication.java
index 57d1e0b..35a8984 100644
--- a/example/application/simpleapp/webapp/src/main/java/domainapp/webapp/SimpleApplication.java
+++ b/example/application/simpleapp/webapp/src/main/java/domainapp/webapp/SimpleApplication.java
@@ -23,8 +23,6 @@ import java.io.InputStream;
 import java.nio.charset.Charset;
 import java.util.List;
 
-import javax.servlet.http.HttpServletRequest;
-
 import com.google.common.base.Joiner;
 import com.google.common.io.Resources;
 import com.google.inject.AbstractModule;
@@ -33,20 +31,14 @@ import com.google.inject.name.Names;
 import com.google.inject.util.Modules;
 import com.google.inject.util.Providers;
 
-import org.apache.wicket.Session;
-import org.apache.wicket.request.IRequestParameters;
-import org.apache.wicket.request.Request;
-import org.apache.wicket.request.Response;
-import org.apache.wicket.request.http.WebRequest;
-
+import org.apache.isis.applib.AppManifest;
 import org.apache.isis.viewer.wicket.viewer.IsisWicketApplication;
-import org.apache.isis.viewer.wicket.viewer.integration.wicket.AuthenticatedWebSessionForIsis;
 
 import de.agilecoders.wicket.core.Bootstrap;
 import de.agilecoders.wicket.core.settings.IBootstrapSettings;
 import de.agilecoders.wicket.themes.markup.html.bootswatch.BootswatchTheme;
 import de.agilecoders.wicket.themes.markup.html.bootswatch.BootswatchThemeProvider;
-
+import domainapp.home.SimpleAppManifest;
 
 /**
  * As specified in <tt>web.xml</tt>.
@@ -69,16 +61,6 @@ public class SimpleApplication extends IsisWicketApplication {
 
     private static final long serialVersionUID = 1L;
 
-    /**
-     * uncomment for a (slightly hacky) way of allowing logins using query args, eg:
-     * 
-     * <tt>?user=sven&pass=pass</tt>
-     * 
-     * <p>
-     * for demos only, obvious.
-     */
-    private final static boolean DEMO_MODE_USING_CREDENTIALS_AS_QUERYARGS = false;
-
 
     @Override
     protected void init() {
@@ -89,39 +71,6 @@ public class SimpleApplication extends IsisWicketApplication {
     }
 
     @Override
-    public Session newSession(final Request request, final Response response) {
-        if(!DEMO_MODE_USING_CREDENTIALS_AS_QUERYARGS) {
-            return super.newSession(request, response);
-        } 
-        
-        // else demo mode
-        final AuthenticatedWebSessionForIsis s = (AuthenticatedWebSessionForIsis) super.newSession(request, response);
-        IRequestParameters requestParameters = request.getRequestParameters();
-        final org.apache.wicket.util.string.StringValue user = requestParameters.getParameterValue("user");
-        final org.apache.wicket.util.string.StringValue password = requestParameters.getParameterValue("pass");
-        s.signIn(user.toString(), password.toString());
-        return s;
-    }
-
-    @Override
-    public WebRequest newWebRequest(HttpServletRequest servletRequest, String filterPath) {
-        if(!DEMO_MODE_USING_CREDENTIALS_AS_QUERYARGS) {
-            return super.newWebRequest(servletRequest, filterPath);
-        } 
-
-        // else demo mode
-        try {
-            String uname = servletRequest.getParameter("user");
-            if (uname != null) {
-                servletRequest.getSession().invalidate();
-            }
-        } catch (Exception e) {
-        }
-        WebRequest request = super.newWebRequest(servletRequest, filterPath);
-        return request;
-    }
-    
-    @Override
     protected Module newIsisWicketModule() {
         final Module isisDefaults = super.newIsisWicketModule();
         
@@ -133,7 +82,10 @@ public class SimpleApplication extends IsisWicketApplication {
                 bind(String.class).annotatedWith(Names.named("applicationJs")).toInstance("scripts/application.js");
                 bind(String.class).annotatedWith(Names.named("welcomeMessage")).toInstance(readLines(getClass(), "welcome.html"));
                 bind(String.class).annotatedWith(Names.named("aboutMessage")).toInstance("Simple App");
-                bind(InputStream.class).annotatedWith(Names.named("metaInfManifest")).toProvider(Providers.of(getServletContext().getResourceAsStream("/META-INF/MANIFEST.MF")));
+                bind(InputStream.class).annotatedWith(Names.named("metaInfManifest")).toProvider(
+                        Providers.of(getServletContext().getResourceAsStream("/META-INF/MANIFEST.MF")));
+                // if uncommented, then overrides isis.appManifest in config file.
+                // bind(AppManifest.class).toInstance(new SimpleAppManifest());
             }
         };
 

http://git-wip-us.apache.org/repos/asf/isis/blob/b286e57a/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 4184589..1ce1f41 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
@@ -22,6 +22,13 @@
 #
 #################################################################################
 
+#
+# 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.home.SimpleAppManifest
 #isis.appManifest=domainapp.home.SimpleAppManifestBypassSecurity
@@ -29,8 +36,6 @@ isis.appManifest=domainapp.home.SimpleAppManifest
 
 
 
-
-
 #################################################################################
 #
 # MetaModel
@@ -66,14 +71,13 @@ isis.appManifest=domainapp.home.SimpleAppManifest
 isis.reflector.validator.allowDeprecated=false
 
 
-
 #
-# Implementation to use for reading dynamic layout.  Default implementation reads Xxx.layout.json files from classpath.
+# 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
 #
@@ -112,25 +116,10 @@ isis.reflector.facet.cssClass.patterns=\
 
 #################################################################################
 #
-# Value facet defaults
-#
-# (see also viewer-specific config files, eg viewer_wicket.properties)
+# Domain Service configuration
 #
 #################################################################################
 
-# as used by @Title of a date
-isis.value.format.date=dd-MM-yyyy
-
-
-
-#################################################################################
-#
-# Domain service Configuration
-#
-#################################################################################
-
-
-
 #
 # required by EmailServiceDefault
 #
@@ -138,7 +127,6 @@ isis.value.format.date=dd-MM-yyyy
 #isis.service.email.sender.password=the.password.for-isis.notification.email.sender.address
 
 
-
 #
 # whether ExceptionRecognizers should also log any recognized exceptions
 # (default false; enable for diagnostics/debugging)
@@ -157,7 +145,7 @@ isis.value.format.date=dd-MM-yyyy
 
 ################################################################################
 #
-# Auditing, Publishing, Command
+# Auditing, Commands, Publishing
 #
 ################################################################################
 
@@ -168,6 +156,7 @@ isis.value.format.date=dd-MM-yyyy
 #
 #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)
@@ -175,22 +164,21 @@ isis.value.format.date=dd-MM-yyyy
 #
 #isis.services.publish.objects=all|none
 
-#
-# Whether all (or all non-query only) actions 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|ignoreQueryOnly
-
 
 #
 # 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|ignoreQueryOnly
+#isis.services.command.actions=all|none|ignoreSafe
 
 
+#
+# Whether all (or all non-query only) actions 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
 
 
 
@@ -209,8 +197,6 @@ isis.value.format.date=dd-MM-yyyy
 
 
 
-
-
 ################################################################################
 #
 # i18n
@@ -224,8 +210,6 @@ isis.value.format.date=dd-MM-yyyy
 
 
 
-
-
 ################################################################################
 #
 # Viewer defaults
@@ -241,3 +225,18 @@ isis.value.format.date=dd-MM-yyyy
 
 #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
+
+
+