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 2016/12/21 13:10:54 UTC

[01/12] isis git commit: ISIS-1555: DomainChangeJdoAbstract no longer fails if the target bookmark is now an unknown type

Repository: isis
Updated Branches:
  refs/heads/maint-1.13.3 43a7fc281 -> 7c2ca9933


ISIS-1555: DomainChangeJdoAbstract no longer fails if the target bookmark is now an unknown type


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

Branch: refs/heads/maint-1.13.3
Commit: ae74bc952ae918027a8af72929198bac6e852be1
Parents: 43a7fc2
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Dec 21 11:38:13 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Dec 21 11:40:14 2016 +0000

----------------------------------------------------------------------
 .../applib/service/DomainChangeJdoAbstract.java   |  5 +++--
 .../metamodel/MetaModelServiceDefault.java        | 18 +++++++++++++++++-
 2 files changed, 20 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/ae74bc95/core/applib/src/main/java/org/apache/isis/objectstore/jdo/applib/service/DomainChangeJdoAbstract.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/objectstore/jdo/applib/service/DomainChangeJdoAbstract.java b/core/applib/src/main/java/org/apache/isis/objectstore/jdo/applib/service/DomainChangeJdoAbstract.java
index 0307bfa..22c8cd9 100644
--- a/core/applib/src/main/java/org/apache/isis/objectstore/jdo/applib/service/DomainChangeJdoAbstract.java
+++ b/core/applib/src/main/java/org/apache/isis/objectstore/jdo/applib/service/DomainChangeJdoAbstract.java
@@ -39,6 +39,7 @@ import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.applib.services.bookmark.BookmarkService2;
 import org.apache.isis.applib.services.message.MessageService;
 import org.apache.isis.applib.services.metamodel.MetaModelService2;
+import org.apache.isis.applib.services.metamodel.MetaModelService3;
 import org.apache.isis.applib.services.publish.PublisherService;
 import org.apache.isis.applib.services.publish.PublishingService;
 import org.apache.isis.applib.util.ObjectContracts;
@@ -268,7 +269,7 @@ public abstract class DomainChangeJdoAbstract {
         if (targetObject == null) {
             return null;
         }
-        final MetaModelService2.Sort sortOfObject = metaModelService.sortOf(getTarget());
+        final MetaModelService2.Sort sortOfObject = metaModelService.sortOf(getTarget(), MetaModelService3.Mode.RELAXED);
         return !(sortOfObject.isViewModel() || sortOfObject.isJdoEntity())
                 ? "Can only open view models or entities"
                 : null;
@@ -381,6 +382,6 @@ public abstract class DomainChangeJdoAbstract {
     protected MessageService messageService;
 
     @javax.inject.Inject
-    protected MetaModelService2 metaModelService;
+    protected MetaModelService3 metaModelService;
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/ae74bc95/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
index e20b751..9f45b8f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
@@ -205,7 +205,23 @@ public class MetaModelServiceDefault implements MetaModelService3 {
         if(bookmark == null) {
             return null;
         }
-        final Class<?> domainType = this.fromObjectType(bookmark.getObjectType());
+
+        final Class<?> domainType;
+        switch (mode) {
+            case RELAXED:
+                try {
+                    domainType = this.fromObjectType(bookmark.getObjectType());
+                } catch (Exception e) {
+                    return Sort.UNKNOWN;
+                }
+                break;
+
+            case STRICT:
+                // fall through to...
+            default:
+                domainType = this.fromObjectType(bookmark.getObjectType());
+                break;
+        }
         return sortOf(domainType, mode);
     }
 


[12/12] isis git commit: ISIS-1557: adds email configuration keys to allow the to, cc and bcc email addresses to be overridden.

Posted by da...@apache.org.
ISIS-1557: adds email configuration keys to allow the to, cc and bcc email addresses to be overridden.


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

Branch: refs/heads/maint-1.13.3
Commit: 7c2ca9933e9200aee4f93b04f4e08c331575fece
Parents: 07b0ecf
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Dec 21 13:08:45 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Dec 21 13:08:45 2016 +0000

----------------------------------------------------------------------
 .../guides/_rgcfg_configuring-core.adoc         | 28 +++++++++
 .../guides/_rgsvc_api_EmailService.adoc         | 12 ++++
 .../services/email/EmailServiceDefault.java     | 53 ++++++++++++++---
 .../email/EmailServiceDefaultTest_actually.java | 61 ++++++++++++++++++++
 .../email/EmailServiceDefaultTest_notEmpty.java | 45 +++++++++++++++
 5 files changed, 191 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/7c2ca993/adocs/documentation/src/main/asciidoc/guides/_rgcfg_configuring-core.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_rgcfg_configuring-core.adoc b/adocs/documentation/src/main/asciidoc/guides/_rgcfg_configuring-core.adoc
index 7223385..3a6e1c2 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_rgcfg_configuring-core.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_rgcfg_configuring-core.adoc
@@ -247,6 +247,34 @@ If no configuration property is available, then the defaults is determined by th
 
 | `isis.service.` +
 `email.` +
+`override.bcc` +
+| email address
+|(`1.13.3-SNAPSHOT`) intended to simplify testing, if specified then the email's `bcc` address will be that specified (rather than the email address(es) passed in as an argument to `EmailService#send(...)`).  +
+
+NB: note that the key is mis-spelt, (`isis.service.email` rather than `isis.services.email`)
+
+
+| `isis.service.` +
+`email.` +
+`override.cc` +
+| email address
+|(`1.13.3-SNAPSHOT`) intended to simplify testing, if specified then the email's `cc` address will be that specified (rather than the email address(es) passed in as an argument to `EmailService#send(...)`).  +
+
+NB: note that the key is mis-spelt, (`isis.service.email` rather than `isis.services.email`)
+
+
+| `isis.service.` +
+`email.` +
+`override.to` +
+| email address
+|(`1.13.3-SNAPSHOT`) intended to simplify testing, if specified then the email's `to` address will be that specified (rather than the email address(es) passed in as an argument to `EmailService#send(...)`).  +
+
+NB: note that the key is mis-spelt, (`isis.service.email` rather than `isis.services.email`)
+
+
+
+| `isis.service.` +
+`email.` +
 `port` +
 | port number (`_587_`)
 |The port number for the SMTP service on the the external SMTP host (used by xref:rgsvc.adoc#_rgsvc_api_EmailService[`EmailService`]).  +

http://git-wip-us.apache.org/repos/asf/isis/blob/7c2ca993/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_EmailService.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_EmailService.adoc b/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_EmailService.adoc
index 7c58b40..9215dd9 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_EmailService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_EmailService.adoc
@@ -73,6 +73,18 @@ In addition (as of `1.13.3-SNAPSHOT`), the following properties can be set:
 Whether to throw an exception if there the email cannot be sent (probably because of some misconfiguration).
 This behaviour is (now) the default; the old behaviour (of just returning `false` from the `send()` method) can be re-enabled by setting this property to `false`.
 
+* `isis.service.email.override.to` +
++
+Intended to simplify testing, if specified then the email's `to` address will be that specified (rather than the email address(es) passed in as an argument to `EmailService#send(...)`).
+
+* `isis.service.email.override.cc` +
++
+Similarly, to override the `cc` email address.
+
+* `isis.service.email.override.to` +
++
+Similarly, to override the `bcc` email address.
+
 * `isis.service.email.socketTimeout` +
 +
 The socket timeout, defaulting to 2000ms.

http://git-wip-us.apache.org/repos/asf/isis/blob/7c2ca993/core/runtime/src/main/java/org/apache/isis/core/runtime/services/email/EmailServiceDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/email/EmailServiceDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/email/EmailServiceDefault.java
index 76d7d02..5b01331 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/email/EmailServiceDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/email/EmailServiceDefault.java
@@ -18,6 +18,7 @@
  */
 package org.apache.isis.core.runtime.services.email;
 
+import java.util.Collections;
 import java.util.List;
 import java.util.Properties;
 
@@ -79,6 +80,10 @@ public class EmailServiceDefault implements EmailService {
     private static final String ISIS_SERVICE_EMAIL_SOCKET_CONNECTION_TIMEOUT = "isis.service.email.socketConnectionTimeout";
     private static final int ISIS_SERVICE_EMAIL_SOCKET_CONNECTION_TIMEOUT_DEFAULT = 2000;
 
+    private static final String ISIS_SERVICE_EMAIL_OVERRIDE_TO = "isis.service.email.override.to";
+    private static final String ISIS_SERVICE_EMAIL_OVERRIDE_CC = "isis.service.email.override.cc";
+    private static final String ISIS_SERVICE_EMAIL_OVERRIDE_BCC = "isis.service.email.override.bcc";
+
     //endregion
 
     //region > init
@@ -135,6 +140,19 @@ public class EmailServiceDefault implements EmailService {
     protected int getSocketConnectionTimeout() {
         return configuration.getInteger(ISIS_SERVICE_EMAIL_SOCKET_CONNECTION_TIMEOUT, ISIS_SERVICE_EMAIL_SOCKET_CONNECTION_TIMEOUT_DEFAULT);
     }
+
+    protected String getEmailOverrideTo() {
+        return configuration.getString(ISIS_SERVICE_EMAIL_OVERRIDE_TO);
+    }
+
+    protected String getEmailOverrideCc() {
+        return configuration.getString(ISIS_SERVICE_EMAIL_OVERRIDE_CC);
+    }
+
+    protected String getEmailOverrideBcc() {
+        return configuration.getString(ISIS_SERVICE_EMAIL_OVERRIDE_BCC);
+    }
+
     //endregion
 
     //region > isConfigured
@@ -194,14 +212,22 @@ public class EmailServiceDefault implements EmailService {
                 }
             }
 
-            if(notEmpty(toList)) {
-                email.addTo(toList.toArray(new String[toList.size()]));
+
+            final String overrideTo = getEmailOverrideTo();
+            final String overrideCc = getEmailOverrideCc();
+            final String overrideBcc = getEmailOverrideBcc();
+
+            final String[] toListElseOverride = actually(toList, overrideTo);
+            if(notEmpty(toListElseOverride)) {
+                email.addTo(toListElseOverride);
             }
-            if(notEmpty(ccList)) {
-                email.addCc(ccList.toArray(new String[ccList.size()]));
+            final String[] ccListElseOverride = actually(ccList, overrideCc);
+            if(notEmpty(ccListElseOverride)) {
+                email.addCc(ccListElseOverride);
             }
-            if(notEmpty(bccList)) {
-                email.addBcc(bccList.toArray(new String[bccList.size()]));
+            final String[] bccListElseOverride = actually(bccList, overrideBcc);
+            if(notEmpty(bccListElseOverride)) {
+                email.addBcc(bccListElseOverride);
             }
 
             email.send();
@@ -219,9 +245,20 @@ public class EmailServiceDefault implements EmailService {
     }
     //endregion
 
+
     //region > helper methods
-    private boolean notEmpty(final List<String> toList) {
-        return toList != null && !toList.isEmpty();
+
+    static String[] actually(final List<String> original, final String overrideIfAny) {
+        final List<String> addresses = Strings.isNullOrEmpty(overrideIfAny)
+                ? original == null
+                    ? Collections.<String>emptyList()
+                    : original
+                : Collections.singletonList(overrideIfAny);
+        return addresses.toArray(new String[addresses.size()]);
+    }
+
+    static boolean notEmpty(final String[] addresses) {
+        return addresses != null && addresses.length > 0;
     }
     //endregion
 

http://git-wip-us.apache.org/repos/asf/isis/blob/7c2ca993/core/runtime/src/test/java/org/apache/isis/core/runtime/services/email/EmailServiceDefaultTest_actually.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/services/email/EmailServiceDefaultTest_actually.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/services/email/EmailServiceDefaultTest_actually.java
new file mode 100644
index 0000000..cfbd748
--- /dev/null
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/services/email/EmailServiceDefaultTest_actually.java
@@ -0,0 +1,61 @@
+/*
+ *  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.runtime.services.email;
+
+import com.google.common.collect.Lists;
+
+import org.junit.Test;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.not;
+import static org.hamcrest.CoreMatchers.nullValue;
+import static org.junit.Assert.assertThat;
+
+public class EmailServiceDefaultTest_actually {
+
+    @Test
+    public void when_null() throws Exception {
+
+        final String[] actually = EmailServiceDefault.actually(null, null);
+
+        assertThat(actually, is(not(nullValue())));
+        assertThat(actually.length, is(0));
+    }
+
+    @Test
+    public void when_not_null_but_no_override() throws Exception {
+
+        final String[] actually = EmailServiceDefault.actually(Lists.newArrayList("joey@tribiani.com", "rachel@green.com"), null);
+
+        assertThat(actually, is(not(nullValue())));
+        assertThat(actually.length, is(2));
+    }
+
+    @Test
+    public void when_not_null_but_with_override() throws Exception {
+
+        final String[] actually = EmailServiceDefault.actually(Lists.newArrayList("joey@tribiani.com", "rachel@green.com"), "ross@geller.com");
+
+        assertThat(actually, is(not(nullValue())));
+        assertThat(actually.length, is(1));
+        assertThat(actually[0], is(equalTo("ross@geller.com")));
+    }
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/7c2ca993/core/runtime/src/test/java/org/apache/isis/core/runtime/services/email/EmailServiceDefaultTest_notEmpty.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/services/email/EmailServiceDefaultTest_notEmpty.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/services/email/EmailServiceDefaultTest_notEmpty.java
new file mode 100644
index 0000000..e4b00ff
--- /dev/null
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/services/email/EmailServiceDefaultTest_notEmpty.java
@@ -0,0 +1,45 @@
+/*
+ *  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.runtime.services.email;
+
+import org.junit.Test;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+public class EmailServiceDefaultTest_notEmpty {
+
+    @Test
+    public void when_not_empty() throws Exception {
+        assertThat(EmailServiceDefault.notEmpty(new String[] { "joey@tribiani.com", "rachel@green.com" }), is(true));
+        assertThat(EmailServiceDefault.notEmpty(new String[] { "rachel@green.com" }), is(true));
+    }
+
+    @Test
+    public void when_null() throws Exception {
+        assertThat(EmailServiceDefault.notEmpty(null), is(false));
+    }
+
+    @Test
+    public void when_empty() throws Exception {
+        assertThat(EmailServiceDefault.notEmpty(new String[]{}), is(false));
+    }
+
+
+}
\ No newline at end of file


[02/12] isis git commit: ISIS-1556: fixes DomainAppFixtureScriptsSpecificationProvider...

Posted by da...@apache.org.
ISIS-1556: fixes DomainAppFixtureScriptsSpecificationProvider...

use DomainAppDemo fixture script rather than RecreateSimpleObjects fixture script


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

Branch: refs/heads/maint-1.13.3
Commit: 8b106237eea87274078421773974f46f0fe41d7c
Parents: ae74bc9
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Dec 21 11:58:31 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Dec 21 11:58:31 2016 +0000

----------------------------------------------------------------------
 .../fixture/DomainAppFixtureScriptsSpecificationProvider.java  | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/8b106237/example/application/simpleapp/application/src/main/java/domainapp/application/fixture/DomainAppFixtureScriptsSpecificationProvider.java
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/application/src/main/java/domainapp/application/fixture/DomainAppFixtureScriptsSpecificationProvider.java b/example/application/simpleapp/application/src/main/java/domainapp/application/fixture/DomainAppFixtureScriptsSpecificationProvider.java
index aa48811..703c42f 100644
--- a/example/application/simpleapp/application/src/main/java/domainapp/application/fixture/DomainAppFixtureScriptsSpecificationProvider.java
+++ b/example/application/simpleapp/application/src/main/java/domainapp/application/fixture/DomainAppFixtureScriptsSpecificationProvider.java
@@ -24,7 +24,7 @@ import org.apache.isis.applib.fixturescripts.FixtureScripts;
 import org.apache.isis.applib.services.fixturespec.FixtureScriptsSpecification;
 import org.apache.isis.applib.services.fixturespec.FixtureScriptsSpecificationProvider;
 
-import domainapp.modules.simple.fixture.scenario.RecreateSimpleObjects;
+import domainapp.application.fixture.scenarios.DomainAppDemo;
 
 /**
  * Specifies where to find fixtures, and other settings.
@@ -36,9 +36,9 @@ public class DomainAppFixtureScriptsSpecificationProvider implements FixtureScri
         return FixtureScriptsSpecification
                 .builder(DomainAppFixtureScriptsSpecificationProvider.class)
                 .with(FixtureScripts.MultipleExecutionStrategy.EXECUTE)
-                .withRunScriptDefault(RecreateSimpleObjects.class)
+                .withRunScriptDefault(DomainAppDemo.class)
                 .withRunScriptDropDown(FixtureScriptsSpecification.DropDownPolicy.CHOICES)
-                .withRecreate(RecreateSimpleObjects.class)
+                .withRecreate(DomainAppDemo.class)
                 .build();
     }
 }


[10/12] isis git commit: ISIS-1557: formats adoc, table of service config properties

Posted by da...@apache.org.
ISIS-1557: formats adoc,  table of service config properties


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

Branch: refs/heads/maint-1.13.3
Commit: c074b8b9afa6bacca505867eda8b50c0c2fe5e20
Parents: 15b30aa
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Dec 21 12:35:07 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Dec 21 12:35:07 2016 +0000

----------------------------------------------------------------------
 .../guides/_rgcfg_configuring-core.adoc         | 60 +++++++++++++-------
 1 file changed, 40 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/c074b8b9/adocs/documentation/src/main/asciidoc/guides/_rgcfg_configuring-core.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_rgcfg_configuring-core.adoc b/adocs/documentation/src/main/asciidoc/guides/_rgcfg_configuring-core.adoc
index 6656a86..eb7dffa 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_rgcfg_configuring-core.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_rgcfg_configuring-core.adoc
@@ -191,7 +191,8 @@ This property is IGNORED if the xref:rgcfg.adoc#_rgcfg_configuring-components[`i
 
 
 |`isis.services.` +
-`applicationFeatures.init`
+`applicationFeatures.` +
+`init`
 | `lazy`, `eager` +
 (`lazy`)
 |Whether the application features repository (which surfaces the framework's metamodel) should be
@@ -201,27 +202,31 @@ Lazy initialization can speed up bootstrapping, useful while developing and runn
 
 
 |`isis.services.` +
-`audit.objects`
+`audit.` +
+`objects`
 | `all`, `none` +
 (`all`)
 |Whether the changed properties of objects should be automatically audited (for objects annotated with xref:rgant.adoc#_rgant-DomainObject_auditing[`@DomainObject(auditing=Auditing.AS_CONFIGURED)`].
 
 
 |`isis.services.` +
-`command.actions`
+`command.` +
+`actions`
 | `all`, `ignoreSafe`, `none` (`all`)
 |Whether action invocations should be automatically reified into commands (for actions annotated with xref:rgant.adoc#_rgant-Action_command[`@Action(command=CommandReification.AS_CONFIGURED)`].  +
 
 `ignoreQueryOnly` is an alias for `ignoreSafe`.
 
 |`isis.services.` +
-`command.properties`
+`command.` +
+`properties`
 | `all`, `none` (`all`)
 |(Whether property edits should be automatically reified into commands (for properties annotated with xref:rgant.adoc#_rgant-Property_command[`@Property(command=CommandReification.AS_CONFIGURED)`].  +
 
 
 |`isis.services.` +
-`container.disableAutoFlush`
+`container.` +
+`disableAutoFlush`
 |`true`,`false` +
 (`false`)
 |Whether the `DomainObjectContainer` should automatically flush pending changes prior to querying (via `allMatches()`, `firstMatch()` and so on).
@@ -241,7 +246,8 @@ If no configuration property is available, then the defaults is determined by th
 
 
 | `isis.service.` +
-`email.port` +
+`email.` +
+`port` +
 | port number (`_587_`)
 |The port number for the SMTP service on the the external SMTP host (used by xref:rgsvc.adoc#_rgsvc_api_EmailService[`EmailService`]).  +
 
@@ -249,7 +255,8 @@ NB: note that the key is mis-spelt, (`isis.service.email` rather than `isis.serv
 
 
 | `isis.service.` +
-`email.sender.address` +
+`email.` +
+`sender.address` +
 | email address
 |The email address to use for sending out email (used by xref:rgsvc.adoc#_rgsvc_api_EmailService[`EmailService`]).
 *Mandatory*.  +
@@ -258,7 +265,8 @@ NB: note that the key is mis-spelt, (`isis.service.email` rather than `isis.serv
 
 
 | `isis.service.` +
-`email.sender.hostname` +
+`email.` +
+`sender.hostname` +
 | host (`_smtp.gmail.com_`)
 |The hostname of the external SMTP provider (used by xref:rgsvc.adoc#_rgsvc_api_EmailService[`EmailService`]).  +
 
@@ -266,7 +274,8 @@ NB: note that the key is mis-spelt, (`isis.service.email` rather than `isis.serv
 
 
 | `isis.service.` +
-`email.sender.password` +
+`email.` +
+`sender.password` +
 | email password
 |The corresponding password for the email address to use for sending out email (used by xref:rgsvc.adoc#_rgsvc_api_EmailService[`EmailService`]).
 *Mandatory*.  +
@@ -287,7 +296,8 @@ NB: note that the key is mis-spelt, (`isis.service.email` rather than `isis.serv
 
 
 | `isis.service.` +
-`email.tls.enabled`
+`email.` +
+`tls.enabled`
 |`true`,`false` +
 (`true`)
 |Whether to enable TLS for the email SMTP connection (used by xref:rgsvc.adoc#_rgsvc_api_EmailService[`EmailService`]).  +
@@ -296,13 +306,15 @@ NB: note that the key is mis-spelt, (`isis.service.email` rather than `isis.serv
 
 
 | `isis.services.` +
-`eventbus.implementation` +
+`eventbus.` +
+`implementation` +
 | `guava`, `axon`, +
 FQCN (`_guava_`)
 |which implementation to use by the xref:rgsvc.adoc#_rgsvc_api_EventBusService[`EventBusService`] as the underlying event bus.
 
 | `isis.services.` +
-`eventbus.allowLateRegistration` +
+`eventbus.` +
+`allowLateRegistration` +
 |`true`,`false` +
 (`false`)
 |whether a domain service can register with the xref:rgsvc.adoc#_rgsvc_api_EventBusService[`EventBusService`] after any events have posted. +
@@ -311,7 +323,8 @@ Since this almost certainly constitutes a bug in application code, by default th
 
 
 | `isis.services.` +
-`exceprecog.logRecognizedExceptions` +
+`exceprecog.` +
+`logRecognizedExceptions` +
 |`true`,`false` +
 (`false`)
 |whether recognized exceptions should also be logged. +
@@ -322,7 +335,8 @@ This property logs the exception anyway, useful for debugging.
 
 | `isis.services.` +
 `ExceptionRecognizerComposite-` +
-`ForJdoObjectStore.disable` +
+`ForJdoObjectStore.` +
+`disable` +
 |`true`,`false` +
 (`false`)
 |whether to disable the default recognizers registered by `ExceptionRecognizerCompositeForJdoObjectStore`. +
@@ -332,7 +346,8 @@ In the (probably remote) chance that this functionality isn't required, they can
 
 
 |`isis.services.` +
-`injector.injectPrefix`
+`injector.` +
+`injectPrefix`
 | `true`,`false`  +
 (`false`)
 |(Whether the framework should support `inject...()` as a prefix for injecting domain services into other domain objects.
@@ -343,7 +358,8 @@ If the setting is left as disabled then this may reduce application start-up tim
 
 
 |`isis.services.` +
-`injector.setPrefix`
+`injector.` +
+`setPrefix`
 | `true`,`false`  +
 (`true`)
 |Whether the framework should support `set...()` as a prefix for injecting domain services into other domain objects.
@@ -355,19 +371,22 @@ If the setting is changed to disabled then this may reduce application start-up
 
 
 |`isis.services.` +
-`publish.objects`
+`publish.` +
+`objects`
 | `all`, `none` +
 (`all`)
 |Whether changed objects should be automatically published (for objects annotated with xref:rgant.adoc#_rgant-DomainObject_publishing[`@DomainObject(publishing=Publishing.AS_CONFIGURED)`].
 
 
 |`isis.services.` +
-`publish.actions`
+`publish.` +
+`actions`
 | `all`, `ignoreSafe`, `none` (`none`)
 |Whether actions should be automatically published (for actions annotated with xref:rgant.adoc#_rgant-Action_publishing[`@Action(publishing=Publishing.AS_CONFIGURED)`]. +
 
 |`isis.services.` +
-`publish.properties`
+`publish.` +
+`properties`
 | `all`, `none` (`none`)
 |Whether properties should be automatically published (for properties annotated with xref:rgant.adoc#_rgant-Action_publishing[`@Property(publishing=Publishing.AS_CONFIGURED)`]. +
 
@@ -382,7 +401,8 @@ This property is IGNORED if the xref:rgcfg.adoc#_rgcfg_configuring-components[`i
 
 
 |`isis.services.` +
-`translation.po.mode`
+`translation.` +
+`po.mode`
 | `read`,`write`
 |Whether to force the `TranslationService` into either read or write mode. +
 


[05/12] isis git commit: EST-1557: reformats EmailService.adoc, each sentence on its own line.

Posted by da...@apache.org.
EST-1557: reformats EmailService.adoc, each sentence on its own line.


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

Branch: refs/heads/maint-1.13.3
Commit: 6b1dd2f6be5c586b0d4496cf74ab0b0e8565e1c6
Parents: 66ff503
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Dec 21 12:16:00 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Dec 21 12:16:00 2016 +0000

----------------------------------------------------------------------
 .../guides/_rgsvc_api_EmailService.adoc         | 29 +++++++++++---------
 1 file changed, 16 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/6b1dd2f6/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_EmailService.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_EmailService.adoc b/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_EmailService.adoc
index 71c4993..1c090c0 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_EmailService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_EmailService.adoc
@@ -8,7 +8,9 @@
 
 The `EmailService` provides the ability to send HTML emails, with attachments, to one or more recipients.
 
-Apache Isis provides a default implementation to send emails using an external SMTP provider.  Note that this must be configured (using a number of configuration properties) before it can be used.  The that sends email as an HTML message, using an external SMTP provider.
+Apache Isis provides a default implementation to send emails using an external SMTP provider.
+Note that this must be configured (using a number of configuration properties) before it can be used.
+The that sends email as an HTML message, using an external SMTP provider.
 
 
 
@@ -27,10 +29,12 @@ public interface EmailService {
     boolean isConfigured();                                         // <4>
 }
 ----
-<1> is the main API to send the email (and optional attachments). Will return `false` if failed to send
+<1> is the main API to send the email (and optional attachments).
+Will return `false` if failed to send
 <2> pass either `null` or `Collections.emptyList()` if not required
 <3> should be HTML text
-<4> indicates whether the implementation was configured and initialized correctly.  If this returns `false` then any attempt to call `send(...)` will fail.
+<4> indicates whether the implementation was configured and initialized correctly.
+If this returns `false` then any attempt to call `send(...)` will fail.
 
 As noted in the introduction, the core framework provides a default implementation (`EmailServiceDefault`) that sends email as an HTML message, using an external SMTP provider.
 
@@ -51,7 +55,8 @@ and these properties may optionally be configured (each has a default to use gma
 
 These configuration properties can be specified either in `isis.properties` or in an xref:ugbtb.adoc#_ugbtb_deployment_externalized-configuration[external configuration file].
 
-If prototyping (that is, running the app using `org.apache.isis.WebServer`), the configuration properties can also be specified as system properties. For example, if you create a test email account on gmail, you can configure the service using:
+If prototyping (that is, running the app using `org.apache.isis.WebServer`), the configuration properties can also be specified as system properties.
+For example, if you create a test email account on gmail, you can configure the service using:
 
 [source,ini]
 ----
@@ -67,10 +72,13 @@ where "xxx" is the gmail user account and "yyy" is its password
 
 If you wish to write an alternative implementation, be aware that it should process the message body as HTML (as opposed to plain text or any other format).
 
-Also, note that (unlike most Apache Isis domain services) the implementation is also instantiated and injected by Google Guice. This is because `EmailService` is used as part of the xref:ugvw.adoc#_ugvw_features_user-registration[user registration] functionality and is used by Wicket pages that are accessed outside of the usual Apache Isis runtime. This implies a couple of additional constraints:
+Also, note that (unlike most Apache Isis domain services) the implementation is also instantiated and injected by Google Guice.
+This is because `EmailService` is used as part of the xref:ugvw.adoc#_ugvw_features_user-registration[user registration] functionality and is used by Wicket pages that are accessed outside of the usual Apache Isis runtime.
+This implies a couple of additional constraints:
 
 * first, implementation class should also be annotated with `@com.google.inject.Singleton`
-* second, there may not be any Apache Isis session running. (If necessary, one can be created on the fly using `IsisContext.doInSession(...)`)
+* second, there may not be any Apache Isis session running.
+(If necessary, one can be created on the fly using `IsisContext.doInSession(...)`)
 
 To ensure that your alternative implementation takes the place of the default implementation, register it explicitly in `isis.properties`.
 
@@ -78,14 +86,9 @@ To ensure that your alternative implementation takes the place of the default im
 
 == Registering the Services
 
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the
-`AppManifest` to xref:rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' core
-implementation of `EmailService` service is automatically registered and injected (it is annotated with
-`@DomainService`) so no further configuration is required.
+Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the `AppManifest` to xref:rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' core implementation of `EmailService` service is automatically registered and injected (it is annotated with `@DomainService`) so no further configuration is required.
 
-To use an alternative implementation, use
-xref:rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained
-in the xref:rgsvc.adoc#_rgsvc_intro_overriding-the-services[introduction] to this guide).
+To use an alternative implementation, use xref:rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rgsvc.adoc#_rgsvc_intro_overriding-the-services[introduction] to this guide).
 
 
 == Related Services


[04/12] isis git commit: ISIS-1557: adds the throwExceptionOnFail config property for EmailServiceDefault

Posted by da...@apache.org.
ISIS-1557: adds the throwExceptionOnFail config property for EmailServiceDefault


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

Branch: refs/heads/maint-1.13.3
Commit: 66ff503427afb40e091dc3e54b81a18628b95a9b
Parents: a942d1b
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Dec 21 12:14:16 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Dec 21 12:14:16 2016 +0000

----------------------------------------------------------------------
 .../services/email/EmailServiceDefault.java     | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/66ff5034/core/runtime/src/main/java/org/apache/isis/core/runtime/services/email/EmailServiceDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/email/EmailServiceDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/email/EmailServiceDefault.java
index 28a12ed..f40bb2d 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/email/EmailServiceDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/email/EmailServiceDefault.java
@@ -50,6 +50,13 @@ public class EmailServiceDefault implements EmailService {
 
     private static final Logger LOG = LoggerFactory.getLogger(EmailServiceDefault.class);
 
+    public static class EmailServiceException extends RuntimeException {
+        static final long serialVersionUID = 1L;
+        public EmailServiceException(final EmailException cause) {
+            super(cause);
+        }
+    }
+
     //region > constants
     private static final String ISIS_SERVICE_EMAIL_SENDER_ADDRESS = "isis.service.email.sender.address";
     private static final String ISIS_SERVICE_EMAIL_SENDER_PASSWORD = "isis.service.email.sender.password";
@@ -63,6 +70,9 @@ public class EmailServiceDefault implements EmailService {
     private static final String ISIS_SERVICE_EMAIL_TLS_ENABLED = "isis.service.email.tls.enabled";
     private static final boolean ISIS_SERVICE_EMAIL_TLS_ENABLED_DEFAULT = true;
 
+    private static final String ISIS_SERVICE_EMAIL_THROW_EXCEPTION_ON_FAIL = "isis.service.email.throwExceptionOnFail";
+    private static final boolean ISIS_SERVICE_EMAIL_THROW_EXCEPTION_ON_FAIL_DEFAULT = true;
+
     //endregion
 
     //region > init
@@ -107,6 +117,10 @@ public class EmailServiceDefault implements EmailService {
     protected Boolean getSenderEmailTlsEnabled() {
         return configuration.getBoolean(ISIS_SERVICE_EMAIL_TLS_ENABLED, ISIS_SERVICE_EMAIL_TLS_ENABLED_DEFAULT);
     }
+
+    protected Boolean isThrowExceptionOnFail() {
+        return configuration.getBoolean(ISIS_SERVICE_EMAIL_THROW_EXCEPTION_ON_FAIL, ISIS_SERVICE_EMAIL_THROW_EXCEPTION_ON_FAIL_DEFAULT);
+    }
     //endregion
 
     //region > isConfigured
@@ -174,7 +188,11 @@ public class EmailServiceDefault implements EmailService {
             email.send();
 
         } catch (EmailException ex) {
-            LOG.error("An error occurred while trying to send an email about user email verification", ex);
+            LOG.error("An error occurred while trying to send an email", ex);
+            final Boolean throwExceptionOnFail = isThrowExceptionOnFail();
+            if(throwExceptionOnFail) {
+                throw new EmailServiceException(ex);
+            }
             return false;
         }
 


[06/12] isis git commit: ISIS-1557: updates _rgcfg_configuring_core.adoc, each sentence to its own line.

Posted by da...@apache.org.
ISIS-1557: updates _rgcfg_configuring_core.adoc, each sentence to its own line.


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

Branch: refs/heads/maint-1.13.3
Commit: ac2907dfe80a3a118bc096c35dece291d25dc6ce
Parents: 6b1dd2f
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Dec 21 12:19:48 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Dec 21 12:19:48 2016 +0000

----------------------------------------------------------------------
 .../guides/_rgcfg_configuring-core.adoc         | 54 +++++++++++---------
 1 file changed, 29 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/ac2907df/adocs/documentation/src/main/asciidoc/guides/_rgcfg_configuring-core.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_rgcfg_configuring-core.adoc b/adocs/documentation/src/main/asciidoc/guides/_rgcfg_configuring-core.adoc
index bdc1a3d..e4f894e 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_rgcfg_configuring-core.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_rgcfg_configuring-core.adoc
@@ -299,7 +299,8 @@ Since this almost certainly constitutes a bug in application code, by default th
 (`false`)
 |whether recognized exceptions should also be logged. +
 
-Generally a recognized exception is one that is expected (for example a uniqueness constraint violated in the database) and which does not represent an error condition.  This property logs the exception anyway, useful for debugging.
+Generally a recognized exception is one that is expected (for example a uniqueness constraint violated in the database) and which does not represent an error condition.
+This property logs the exception anyway, useful for debugging.
 
 
 | `isis.services.` +
@@ -309,7 +310,8 @@ Generally a recognized exception is one that is expected (for example a uniquene
 (`false`)
 |whether to disable the default recognizers registered by `ExceptionRecognizerCompositeForJdoObjectStore`. +
 
-This implementation provides a default set of recognizers to convert RDBMS constraints into user-friendly messages.  In the (probably remote) chance that this functionality isn't required, they can be disabled through this flag.
+This implementation provides a default set of recognizers to convert RDBMS constraints into user-friendly messages.
+In the (probably remote) chance that this functionality isn't required, they can be disabled through this flag.
 
 
 |`isis.services.` +
@@ -318,7 +320,9 @@ This implementation provides a default set of recognizers to convert RDBMS const
 (`false`)
 |(Whether the framework should support `inject...()` as a prefix for injecting domain services into other domain objects.
 +
-By default this is disabled.  The default prior to `1.13.0` was enabled.  If the setting is left as disabled then this may reduce application start-up times.
+By default this is disabled.
+The default prior to `1.13.0` was enabled.
+If the setting is left as disabled then this may reduce application start-up times.
 
 
 |`isis.services.` +
@@ -327,7 +331,8 @@ By default this is disabled.  The default prior to `1.13.0` was enabled.  If the
 (`true`)
 |Whether the framework should support `set...()` as a prefix for injecting domain services into other domain objects.
 +
-By default this is enabled (no change in `1.13.0`).  If the setting is changed to disabled then this may reduce application start-up times.
+By default this is enabled (no change in `1.13.0`).
+If the setting is changed to disabled then this may reduce application start-up times.
 
 
 
@@ -426,7 +431,8 @@ See xref:rgcfg.adoc#_rgcfg_configuring-core_filterVisibility[section below] for
 |`FQCN`
 |This property is now ignored.  +
 +
-To customize the programming model, use `facets.exclude` and `facets.include`. See xref:ugbtb.adoc#_ugbtb_programming-model_finetuning[finetuning the programming model] for more details.
+To customize the programming model, use `facets.exclude` and `facets.include`.
+See xref:ugbtb.adoc#_ugbtb_programming-model_finetuning[finetuning the programming model] for more details.
 
 
 
@@ -446,13 +452,12 @@ See xref:ugbtb.adoc#_ugbtb_programming-model_finetuning[finetuning the programmi
 (`false`)
 |Whether deprecated facets should be ignored or honoured.  +
 +
-By default all deprecated facets are honoured; they remain part of the metamodel.  If instead this property is set to
-`true` then the facets are simply not loaded into the metamodel and their semantics will be excluded.  +
+By default all deprecated facets are honoured; they remain part of the metamodel.
+If instead this property is set to `true` then the facets are simply not loaded into the metamodel and their semantics will be excluded.  +
 +
-In most cases this should reduce the start-up times for the application.  However, be aware that this could also
-substantially alter the semantics of your application.  To be safe, we recommend that you first run your application
-using `isis.reflector.validator.allowDeprecated` set to `false`; if any deprecated annotations etc. are in use, then
-the app will fail-fast and refuse to start.
+In most cases this should reduce the start-up times for the application.
+However, be aware that this could also substantially alter the semantics of your application.
+To be safe, we recommend that you first run your application using `isis.reflector.validator.allowDeprecated` set to `false`; if any deprecated annotations etc. are in use, then the app will fail-fast and refuse to start.
 
 
 |`isis.reflector.facets.` +
@@ -481,7 +486,8 @@ See xref:ugbtb.adoc#_ugbtb_programming-model_custom-validator[Custom Validator]
 `allowDeprecated`
 |`true`,`false` +
 (`true`)
-| Whether deprecated annotations or naming conventions are tolerated or not.  If not, then a metamodel validation error will be triggered, meaning the app won't boot (fail-fast). +
+| Whether deprecated annotations or naming conventions are tolerated or not.
+If not, then a metamodel validation error will be triggered, meaning the app won't boot (fail-fast). +
 +
 See also `isis.reflector.facets.ignoreDeprecated`.
 
@@ -515,7 +521,8 @@ The framework provides the `isis.reflector.facet.filterVisibility` configuration
 
 * Action invocations: +
 
-If an action returns a collection that includes the object, then the object will be excluded from the list when rendered. If it returns a single object and the user does not have access to that object, then the action will seemingly return `null`
+If an action returns a collection that includes the object, then the object will be excluded from the list when rendered.
+If it returns a single object and the user does not have access to that object, then the action will seemingly return `null`
 
 * Collections: +
 
@@ -529,7 +536,8 @@ If an parent object has a (scalar) reference some other object to which the user
 
 If an object is returned in a list of choices or within an auto-complete list, and the user does not have access, then it is excluded from the rendered list.
 
-The original motivation for this feature was to transparently support such features as multi-tenancy (as per the (non-ASF) http://github.com/isisaddons/isis-module-security[Isis addons' security] module).  That is, if an entity is logically "owned" by a user, then the multi-tenancy support can be arranged to prevent some other user from viewing that object.
+The original motivation for this feature was to transparently support such features as multi-tenancy (as per the (non-ASF) http://github.com/isisaddons/isis-module-security[Isis addons' security] module).
+That is, if an entity is logically "owned" by a user, then the multi-tenancy support can be arranged to prevent some other user from viewing that object.
 
 By default this configuration property is enabled.  To disable the visibility filtering, set the appropriate configuration property to `false`:
 
@@ -538,18 +546,14 @@ By default this configuration property is enabled.  To disable the visibility fi
 isis.reflector.facet.filterVisibility=false
 ----
 
-Filtering is supported by the xref:ugvw.adoc#[Wicket viewer] and the xref:ugvro.adoc#[Restful Objects viewer], and also
-by the xref:rgsvc.adoc#_rgsvc_api_WrapperFactory[`WrapperFactory`] domain service (provided the wrapper's execution
-mode is __not__ "skip rules").
+Filtering is supported by the xref:ugvw.adoc#[Wicket viewer] and the xref:ugvro.adoc#[Restful Objects viewer], and also by the xref:rgsvc.adoc#_rgsvc_api_WrapperFactory[`WrapperFactory`] domain service (provided the wrapper's execution mode is __not__ "skip rules").
 
 [NOTE]
 ====
-In order for the framework to perform this filtering of collections, be aware that the framework takes a _copy_ of the
-original collection, filters on the collection, and returns that filtered collection rather than the original.
+In order for the framework to perform this filtering of collections, be aware that the framework takes a _copy_ of the original collection, filters on the collection, and returns that filtered collection rather than the original.
 
-There are no major side-effects from this algorithm, other than the fact that the referenced objects will (most likely)
-need to be resolved in order to determine if they are visible.  This could conceivably have a performance impact in
-some cases.
+There are no major side-effects from this algorithm, other than the fact that the referenced objects will (most likely) need to be resolved in order to determine if they are visible.
+This could conceivably have a performance impact in some cases.
 ====
 
 
@@ -572,8 +576,7 @@ We recommend enabling this feature; it will help drive out the underlying busine
 [[_rgcfg_configuring-core_isis-viewers-propertyLayout-labelPosition]]
 === `propertyLayout.labelPosition`
 
-If you want a consistent look-n-feel throughout the app, eg all property labels to the top, then it'd be rather
-frustrating to have to annotate every property.
+If you want a consistent look-n-feel throughout the app, eg all property labels to the top, then it'd be rather frustrating to have to annotate every property.
 
 Instead, a default can be specified in `isis.properties`:
 
@@ -589,4 +592,5 @@ or
 isis.viewers.propertyLayout.labelPosition=LEFT
 ----
 
-If these are not present then Apache Isis will render according to internal defaults. At the time of writing, this means labels are to the left for all datatypes except multiline strings.
+If these are not present then Apache Isis will render according to internal defaults.
+At the time of writing, this means labels are to the left for all datatypes except multiline strings.


[03/12] isis git commit: ISIS-1557: refactors EmailServiceDefault, tidying up only (no functional change)

Posted by da...@apache.org.
ISIS-1557: refactors EmailServiceDefault, tidying up only (no functional change)


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

Branch: refs/heads/maint-1.13.3
Commit: a942d1bea258f922d5e49c3de549213eb2b55b72
Parents: 8b10623
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Dec 21 12:05:28 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Dec 21 12:05:28 2016 +0000

----------------------------------------------------------------------
 .../services/email/EmailServiceDefault.java     | 23 ++++++++++----------
 1 file changed, 12 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/a942d1be/core/runtime/src/main/java/org/apache/isis/core/runtime/services/email/EmailServiceDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/email/EmailServiceDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/email/EmailServiceDefault.java
index 96e9562..28a12ed 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/email/EmailServiceDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/email/EmailServiceDefault.java
@@ -63,9 +63,6 @@ public class EmailServiceDefault implements EmailService {
     private static final String ISIS_SERVICE_EMAIL_TLS_ENABLED = "isis.service.email.tls.enabled";
     private static final boolean ISIS_SERVICE_EMAIL_TLS_ENABLED_DEFAULT = true;
 
-    private String senderEmailAddress;
-    private String senderEmailPassword;
-    private Integer senderEmailPort;
     //endregion
 
     //region > init
@@ -82,10 +79,6 @@ public class EmailServiceDefault implements EmailService {
             return;
         }
 
-        senderEmailAddress = getSenderEmailAddress();
-        senderEmailPassword = getSenderEmailPassword();
-        senderEmailPort = getSenderEmailPort();
-
         initialized = true;
 
         if(!isConfigured()) {
@@ -120,6 +113,8 @@ public class EmailServiceDefault implements EmailService {
 
     @Override
     public boolean isConfigured() {
+        final String senderEmailAddress = getSenderEmailAddress();
+        final String senderEmailPassword = getSenderEmailPassword();
         return !Strings.isNullOrEmpty(senderEmailAddress) && !Strings.isNullOrEmpty(senderEmailPassword);
     }
     //endregion
@@ -132,22 +127,28 @@ public class EmailServiceDefault implements EmailService {
 
         try {
             final ImageHtmlEmail email = new ImageHtmlEmail();
+
+            final String senderEmailAddress = getSenderEmailAddress();
+            final String senderEmailPassword = getSenderEmailPassword();
+            final String senderEmailHostName = getSenderEmailHostName();
+            final Integer senderEmailPort = getSenderEmailPort();
+            final Boolean senderEmailTlsEnabled = getSenderEmailTlsEnabled();
+
             email.setAuthenticator(new DefaultAuthenticator(senderEmailAddress, senderEmailPassword));
-            email.setHostName(getSenderEmailHostName());
+            email.setHostName(senderEmailHostName);
             email.setSmtpPort(senderEmailPort);
-            email.setStartTLSEnabled(getSenderEmailTlsEnabled());
+            email.setStartTLSEnabled(senderEmailTlsEnabled);
             email.setDataSourceResolver(new DataSourceClassPathResolver("/", true));
 
             final Properties properties = email.getMailSession().getProperties();
 
-            // TODO ISIS-987: check whether all these are required and extract as configuration settings
             properties.put("mail.smtps.auth", "true");
             properties.put("mail.debug", "true");
             properties.put("mail.smtps.port", "" + senderEmailPort);
             properties.put("mail.smtps.socketFactory.port", "" + senderEmailPort);
             properties.put("mail.smtps.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
             properties.put("mail.smtps.socketFactory.fallback", "false");
-            properties.put("mail.smtp.starttls.enable", "" + getSenderEmailTlsEnabled());
+            properties.put("mail.smtp.starttls.enable", "" + senderEmailTlsEnabled);
 
             email.setFrom(senderEmailAddress);
 


[07/12] isis git commit: ISIS-1557: reorders configuration properties alphabetically.

Posted by da...@apache.org.
ISIS-1557: reorders configuration properties alphabetically.


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

Branch: refs/heads/maint-1.13.3
Commit: 0e4f1ffa66547642fe89b82e2eb959544d3d8ea5
Parents: ac2907d
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Dec 21 12:28:15 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Dec 21 12:28:15 2016 +0000

----------------------------------------------------------------------
 .../guides/_rgcfg_configuring-core.adoc         | 33 +++++++++++---------
 1 file changed, 18 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/0e4f1ffa/adocs/documentation/src/main/asciidoc/guides/_rgcfg_configuring-core.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_rgcfg_configuring-core.adoc b/adocs/documentation/src/main/asciidoc/guides/_rgcfg_configuring-core.adoc
index e4f894e..213f000 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_rgcfg_configuring-core.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_rgcfg_configuring-core.adoc
@@ -241,21 +241,6 @@ If no configuration property is available, then the defaults is determined by th
 
 
 | `isis.service.` +
-`email.tls.enabled`
-|`true`,`false` +
-(`true`)
-|Whether to enable TLS for the email SMTP connection (used by xref:rgsvc.adoc#_rgsvc_api_EmailService[`EmailService`]).  +
-
-NB: note that the key is mis-spelt, (`isis.service.email` rather than `isis.services.email`)
-
-| `isis.service.` +
-`email.sender.hostname` +
-| host (`_smtp.gmail.com_`)
-|The hostname of the external SMTP provider (used by xref:rgsvc.adoc#_rgsvc_api_EmailService[`EmailService`]).  +
-
-NB: note that the key is mis-spelt, (`isis.service.email` rather than `isis.services.email`)
-
-| `isis.service.` +
 `email.port` +
 | port number (`_587_`)
 |The port number for the SMTP service on the the external SMTP host (used by xref:rgsvc.adoc#_rgsvc_api_EmailService[`EmailService`]).  +
@@ -270,6 +255,15 @@ NB: note that the key is mis-spelt, (`isis.service.email` rather than `isis.serv
 
 NB: note that the key is mis-spelt, (`isis.service.email` rather than `isis.services.email`)
 
+
+| `isis.service.` +
+`email.sender.hostname` +
+| host (`_smtp.gmail.com_`)
+|The hostname of the external SMTP provider (used by xref:rgsvc.adoc#_rgsvc_api_EmailService[`EmailService`]).  +
+
+NB: note that the key is mis-spelt, (`isis.service.email` rather than `isis.services.email`)
+
+
 | `isis.service.` +
 `email.sender.password` +
 | email password
@@ -278,6 +272,15 @@ NB: note that the key is mis-spelt, (`isis.service.email` rather than `isis.serv
 NB: note that the key is mis-spelt, (`isis.service.email` rather than `isis.services.email`)
 
 
+| `isis.service.` +
+`email.tls.enabled`
+|`true`,`false` +
+(`true`)
+|Whether to enable TLS for the email SMTP connection (used by xref:rgsvc.adoc#_rgsvc_api_EmailService[`EmailService`]).  +
+
+NB: note that the key is mis-spelt, (`isis.service.email` rather than `isis.services.email`)
+
+
 | `isis.services.` +
 `eventbus.implementation` +
 | `guava`, `axon`, +


[08/12] isis git commit: ISIS-1557: more reformatting, each sentence on its own line.

Posted by da...@apache.org.
ISIS-1557: more reformatting, each sentence on its own line.


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

Branch: refs/heads/maint-1.13.3
Commit: a6959fa90f021d45e77650d120b5f5fa89291660
Parents: 0e4f1ff
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Dec 21 12:29:08 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Dec 21 12:29:08 2016 +0000

----------------------------------------------------------------------
 .../src/main/asciidoc/guides/_rgcfg_configuring-core.adoc      | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/a6959fa9/adocs/documentation/src/main/asciidoc/guides/_rgcfg_configuring-core.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_rgcfg_configuring-core.adoc b/adocs/documentation/src/main/asciidoc/guides/_rgcfg_configuring-core.adoc
index 213f000..4b2b83c 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_rgcfg_configuring-core.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_rgcfg_configuring-core.adoc
@@ -251,7 +251,8 @@ NB: note that the key is mis-spelt, (`isis.service.email` rather than `isis.serv
 | `isis.service.` +
 `email.sender.address` +
 | email address
-|The email address to use for sending out email (used by xref:rgsvc.adoc#_rgsvc_api_EmailService[`EmailService`]).  *Mandatory*.  +
+|The email address to use for sending out email (used by xref:rgsvc.adoc#_rgsvc_api_EmailService[`EmailService`]).
+*Mandatory*.  +
 
 NB: note that the key is mis-spelt, (`isis.service.email` rather than `isis.services.email`)
 
@@ -267,7 +268,8 @@ NB: note that the key is mis-spelt, (`isis.service.email` rather than `isis.serv
 | `isis.service.` +
 `email.sender.password` +
 | email password
-|The corresponding password for the email address to use for sending out email (used by xref:rgsvc.adoc#_rgsvc_api_EmailService[`EmailService`]).  *Mandatory*.  +
+|The corresponding password for the email address to use for sending out email (used by xref:rgsvc.adoc#_rgsvc_api_EmailService[`EmailService`]).
+*Mandatory*.  +
 
 NB: note that the key is mis-spelt, (`isis.service.email` rather than `isis.services.email`)
 


[11/12] isis git commit: ISIS-1557: adds in configuration properties for email service to set socket timeout and socket connection timeout

Posted by da...@apache.org.
ISIS-1557: adds in configuration properties for email service to set socket timeout and socket connection timeout


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

Branch: refs/heads/maint-1.13.3
Commit: 07b0ecfa0544560b381d7f3483acdce699de7a06
Parents: c074b8b
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Dec 21 12:44:55 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Dec 21 12:44:55 2016 +0000

----------------------------------------------------------------------
 .../guides/_rgcfg_configuring-core.adoc         | 21 ++++++++++++++++++++
 .../guides/_rgsvc_api_EmailService.adoc         |  7 +++++++
 .../services/email/EmailServiceDefault.java     | 19 ++++++++++++++++++
 3 files changed, 47 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/07b0ecfa/adocs/documentation/src/main/asciidoc/guides/_rgcfg_configuring-core.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_rgcfg_configuring-core.adoc b/adocs/documentation/src/main/asciidoc/guides/_rgcfg_configuring-core.adoc
index eb7dffa..7223385 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_rgcfg_configuring-core.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_rgcfg_configuring-core.adoc
@@ -285,6 +285,27 @@ NB: note that the key is mis-spelt, (`isis.service.email` rather than `isis.serv
 
 | `isis.service.` +
 `email.` +
+`socketConnectionTimeout`
+|milliseconds +
+(2000)
+|(`1.13.3-SNAPSHOT`) The socket connection timeout
+
+NB: note that the key is mis-spelt, (`isis.service.email` rather than `isis.services.email`)
+
+
+| `isis.service.` +
+`email.` +
+`socketTimeout`
+|milliseconds +
+(2000)
+|(`1.13.3-SNAPSHOT`) The socket timeout
+
+NB: note that the key is mis-spelt, (`isis.service.email` rather than `isis.services.email`)
+
+
+
+| `isis.service.` +
+`email.` +
 `throwExceptionOnFail`
 |`true`,`false` +
 (`true`)

http://git-wip-us.apache.org/repos/asf/isis/blob/07b0ecfa/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_EmailService.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_EmailService.adoc b/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_EmailService.adoc
index f05c63e..7c58b40 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_EmailService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_EmailService.adoc
@@ -73,6 +73,13 @@ In addition (as of `1.13.3-SNAPSHOT`), the following properties can be set:
 Whether to throw an exception if there the email cannot be sent (probably because of some misconfiguration).
 This behaviour is (now) the default; the old behaviour (of just returning `false` from the `send()` method) can be re-enabled by setting this property to `false`.
 
+* `isis.service.email.socketTimeout` +
++
+The socket timeout, defaulting to 2000ms.
+
+* `isis.service.email.socketConnectionTimeout` +
++
+The socket connection timeout, defaulting to 2000ms.
 
 
 == Alternative Implementations

http://git-wip-us.apache.org/repos/asf/isis/blob/07b0ecfa/core/runtime/src/main/java/org/apache/isis/core/runtime/services/email/EmailServiceDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/email/EmailServiceDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/email/EmailServiceDefault.java
index f40bb2d..76d7d02 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/email/EmailServiceDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/email/EmailServiceDefault.java
@@ -73,6 +73,12 @@ public class EmailServiceDefault implements EmailService {
     private static final String ISIS_SERVICE_EMAIL_THROW_EXCEPTION_ON_FAIL = "isis.service.email.throwExceptionOnFail";
     private static final boolean ISIS_SERVICE_EMAIL_THROW_EXCEPTION_ON_FAIL_DEFAULT = true;
 
+    private static final String ISIS_SERVICE_EMAIL_SOCKET_TIMEOUT = "isis.service.email.socketTimeout";
+    private static final int ISIS_SERVICE_EMAIL_SOCKET_TIMEOUT_DEFAULT = 2000;
+
+    private static final String ISIS_SERVICE_EMAIL_SOCKET_CONNECTION_TIMEOUT = "isis.service.email.socketConnectionTimeout";
+    private static final int ISIS_SERVICE_EMAIL_SOCKET_CONNECTION_TIMEOUT_DEFAULT = 2000;
+
     //endregion
 
     //region > init
@@ -121,6 +127,14 @@ public class EmailServiceDefault implements EmailService {
     protected Boolean isThrowExceptionOnFail() {
         return configuration.getBoolean(ISIS_SERVICE_EMAIL_THROW_EXCEPTION_ON_FAIL, ISIS_SERVICE_EMAIL_THROW_EXCEPTION_ON_FAIL_DEFAULT);
     }
+
+    protected int getSocketTimeout() {
+        return configuration.getInteger(ISIS_SERVICE_EMAIL_SOCKET_TIMEOUT, ISIS_SERVICE_EMAIL_SOCKET_TIMEOUT_DEFAULT);
+    }
+
+    protected int getSocketConnectionTimeout() {
+        return configuration.getInteger(ISIS_SERVICE_EMAIL_SOCKET_CONNECTION_TIMEOUT, ISIS_SERVICE_EMAIL_SOCKET_CONNECTION_TIMEOUT_DEFAULT);
+    }
     //endregion
 
     //region > isConfigured
@@ -147,6 +161,8 @@ public class EmailServiceDefault implements EmailService {
             final String senderEmailHostName = getSenderEmailHostName();
             final Integer senderEmailPort = getSenderEmailPort();
             final Boolean senderEmailTlsEnabled = getSenderEmailTlsEnabled();
+            final int socketTimeout = getSocketTimeout();
+            final int socketConnectionTimeout = getSocketConnectionTimeout();
 
             email.setAuthenticator(new DefaultAuthenticator(senderEmailAddress, senderEmailPassword));
             email.setHostName(senderEmailHostName);
@@ -154,6 +170,9 @@ public class EmailServiceDefault implements EmailService {
             email.setStartTLSEnabled(senderEmailTlsEnabled);
             email.setDataSourceResolver(new DataSourceClassPathResolver("/", true));
 
+            email.setSocketTimeout(socketTimeout);
+            email.setSocketConnectionTimeout(socketConnectionTimeout);
+
             final Properties properties = email.getMailSession().getProperties();
 
             properties.put("mail.smtps.auth", "true");


[09/12] isis git commit: ISIS-1557: adds docs for isis.service.email.throwExceptionOnFail

Posted by da...@apache.org.
ISIS-1557: adds docs for isis.service.email.throwExceptionOnFail


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

Branch: refs/heads/maint-1.13.3
Commit: 15b30aa0a2afd2ff0b6511e0980a6a4ceb0f0d04
Parents: a6959fa
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Dec 21 12:32:09 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Dec 21 12:32:09 2016 +0000

----------------------------------------------------------------------
 .../main/asciidoc/guides/_rgcfg_configuring-core.adoc   | 12 ++++++++++++
 .../main/asciidoc/guides/_rgsvc_api_EmailService.adoc   |  7 +++++++
 2 files changed, 19 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/15b30aa0/adocs/documentation/src/main/asciidoc/guides/_rgcfg_configuring-core.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_rgcfg_configuring-core.adoc b/adocs/documentation/src/main/asciidoc/guides/_rgcfg_configuring-core.adoc
index 4b2b83c..6656a86 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_rgcfg_configuring-core.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_rgcfg_configuring-core.adoc
@@ -275,6 +275,18 @@ NB: note that the key is mis-spelt, (`isis.service.email` rather than `isis.serv
 
 
 | `isis.service.` +
+`email.` +
+`throwExceptionOnFail`
+|`true`,`false` +
+(`true`)
+|(`1.13.3-SNAPSHOT`) Whether to throw an exception if there the email cannot be sent (probably because of some misconfiguration).
+
+This behaviour is (now) the default; the old behaviour (of just returning `false` from the `send()` method) can be re-enabled by setting this property to `false`.
+
+NB: note that the key is mis-spelt, (`isis.service.email` rather than `isis.services.email`)
+
+
+| `isis.service.` +
 `email.tls.enabled`
 |`true`,`false` +
 (`true`)

http://git-wip-us.apache.org/repos/asf/isis/blob/15b30aa0/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_EmailService.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_EmailService.adoc b/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_EmailService.adoc
index 1c090c0..f05c63e 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_EmailService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_EmailService.adoc
@@ -66,6 +66,13 @@ For example, if you create a test email account on gmail, you can configure the
 where "xxx" is the gmail user account and "yyy" is its password
 
 
+In addition (as of `1.13.3-SNAPSHOT`), the following properties can be set:
+
+* `isis.service.email.throwExceptionOnFail` +
++
+Whether to throw an exception if there the email cannot be sent (probably because of some misconfiguration).
+This behaviour is (now) the default; the old behaviour (of just returning `false` from the `send()` method) can be re-enabled by setting this property to `false`.
+
 
 
 == Alternative Implementations