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 2013/11/21 18:16:30 UTC

git commit: ISIS-599: config property to enable logging in exception recognizers

Updated Branches:
  refs/heads/master 3a629128d -> e0dd1c868


ISIS-599: config property to enable logging in exception recognizers

Thus, if "isis.services.exceprecog.logRecognizedExceptions" set to true,
then a stack trace of any recognized exceptions will be logged.

If the exception is NOT recognized, then no stack trace is logged; the
assumption is that if none of the recognizers recognize the exception,
then it will bubble up and its stack trace be logged anyway as a
unexpected exception.

In addition:
- simplified the ExceptionRecognizer hierarchy
- made ExceptionRecognizers be init/shutdown via @PostConstruct methods etc
  (to read the configuration)
- updated the example isis.properties files for the archetypes.


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

Branch: refs/heads/master
Commit: e0dd1c868f643734050fdf23a56c2ffbbc04cbe7
Parents: 3a62912
Author: Dan Haywood <da...@apache.org>
Authored: Thu Nov 21 17:01:06 2013 +0000
Committer: Dan Haywood <da...@apache.org>
Committed: Thu Nov 21 17:01:06 2013 +0000

----------------------------------------------------------------------
 ...ionRecognizerCompositeForJdoObjectStore.java |  1 +
 .../exceprecog/ExceptionRecognizer.java         | 13 ++++
 .../exceprecog/ExceptionRecognizerAbstract.java | 82 +++++++++++++++++++-
 .../ExceptionRecognizerComposite.java           | 25 +++++-
 .../ExceptionRecognizerDelegating.java          | 39 ----------
 .../exceprecog/ExceptionRecognizerForType.java  |  5 +-
 .../exceprecog/ExceptionRecognizerGeneral.java  | 64 ---------------
 .../ExceptionRecognizerCompositeTest.java       |  9 +++
 .../ExceptionRecognizerGeneralTest.java         |  8 +-
 .../container/DomainObjectContainerDefault.java | 21 ++++-
 .../src/main/webapp/WEB-INF/isis.properties     | 21 +++++
 .../src/main/webapp/WEB-INF/isis.properties     | 21 +++++
 12 files changed, 194 insertions(+), 115 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/e0dd1c86/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/objectstore/jdo/applib/service/exceprecog/ExceptionRecognizerCompositeForJdoObjectStore.java
----------------------------------------------------------------------
diff --git a/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/objectstore/jdo/applib/service/exceprecog/ExceptionRecognizerCompositeForJdoObjectStore.java b/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/objectstore/jdo/applib/service/exceprecog/ExceptionRecognizerCompositeForJdoObjectStore.java
index d7a4a2e..a985243 100644
--- a/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/objectstore/jdo/applib/service/exceprecog/ExceptionRecognizerCompositeForJdoObjectStore.java
+++ b/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/objectstore/jdo/applib/service/exceprecog/ExceptionRecognizerCompositeForJdoObjectStore.java
@@ -34,6 +34,7 @@ import org.apache.isis.applib.services.exceprecog.ExceptionRecognizerComposite;
 @Hidden
 public class ExceptionRecognizerCompositeForJdoObjectStore extends ExceptionRecognizerComposite {
     
+    
     public ExceptionRecognizerCompositeForJdoObjectStore() {
         // most specific ones first
         add(new ExceptionRecognizerForSQLIntegrityConstraintViolationUniqueOrIndexException());

http://git-wip-us.apache.org/repos/asf/isis/blob/e0dd1c86/core/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizer.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizer.java b/core/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizer.java
index 1cbbd66..d74bd37 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizer.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizer.java
@@ -18,6 +18,12 @@
  */
 package org.apache.isis.applib.services.exceprecog;
 
+import java.util.Map;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+
+
 
 /**
  * Domain service to (attempt) to recognize certain
@@ -55,4 +61,11 @@ public interface ExceptionRecognizer {
      * @return user-friendly message to render, or <tt>null</tt> otherwise.
      */
     public String recognize(Throwable ex);
+
+    @PostConstruct
+    public void init(Map<String, String> properties);
+
+    @PreDestroy
+    public void shutdown();
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/e0dd1c86/core/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerAbstract.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerAbstract.java b/core/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerAbstract.java
index 6e60c33..dcf80f4 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerAbstract.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerAbstract.java
@@ -18,14 +18,45 @@
  */
 package org.apache.isis.applib.services.exceprecog;
 
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+
 import com.google.common.base.Function;
+import com.google.common.base.Functions;
+import com.google.common.base.Predicate;
+import com.google.common.base.Throwables;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.isis.applib.annotation.Hidden;
 
 /**
- * Convenience implementation of {@link ExceptionRecognizer} that provides some
- * utility methods to subclasses.
+ * Abstract implementation of {@link ExceptionRecognizer} that looks 
+ * exceptions meeting the {@link Predicate} supplied in the constructor
+ * and, if found anywhere in the {@link Throwables#getCausalChain(Throwable) causal chain},
+ * then returns a non-null message indicating that the exception has been recognized.
+ * 
+ * <p>
+ * If a messaging-parsing {@link Function} is provided through the constructor,
+ * then the message can be altered.  Otherwise the exception's {@link Throwable#getMessage() message} is returned as-is.
  */
+@Hidden
 public abstract class ExceptionRecognizerAbstract implements ExceptionRecognizer {
 
+    public static final Logger LOG = LoggerFactory.getLogger(ExceptionRecognizerAbstract.class);
+
+    /**
+     * Normally recognized exceptions are not logged (because they are expected and handled).  
+     * 
+     * <p>
+     * This key is primarily for diagnostic purposes, to log the exception regardless.
+     */
+    private static final String KEY_LOG_RECOGNIZED_EXCEPTIONS = "isis.services.exceprecog.logRecognizedExceptions";
+
     /**
      * Convenience for subclass implementations that always return a fixed message.
      */
@@ -52,5 +83,52 @@ public abstract class ExceptionRecognizerAbstract implements ExceptionRecognizer
             }
         };
     }
+    
+    // //////////////////////////////////////
+
+    
+    private final Predicate<Throwable> predicate;
+    private final Function<String,String> messageParser;
+    
+    private boolean logRecognizedExceptions;
 
+    // //////////////////////////////////////
+
+    public ExceptionRecognizerAbstract(Predicate<Throwable> predicate, final Function<String,String> messageParser) {
+        this.predicate = predicate;
+        this.messageParser = messageParser != null? messageParser: Functions.<String>identity();
+    }
+
+    public ExceptionRecognizerAbstract(Predicate<Throwable> predicate) {
+        this(predicate, null);
+    }
+
+    
+    @PostConstruct
+    public void init(Map<String, String> properties) {
+        final String prop = properties.get(KEY_LOG_RECOGNIZED_EXCEPTIONS);
+        this.logRecognizedExceptions = Boolean.parseBoolean(prop);
+    }
+
+    @PreDestroy
+    public void shutdown() {
+    }
+
+    // //////////////////////////////////////
+
+    public String recognize(Throwable ex) {
+        List<Throwable> causalChain = Throwables.getCausalChain(ex);
+        for (Throwable throwable : causalChain) {
+            if(predicate.apply(throwable)) {
+                if(logRecognizedExceptions) {
+                    LOG.info("Recognized exception, stacktrace : ", throwable);
+                }
+                final Throwable rootCause = Throwables.getRootCause(throwable);
+                final String rootCauseMessage = rootCause.getMessage();
+                final String parsedMessage = messageParser.apply(rootCauseMessage);
+                return parsedMessage;
+            }
+        }
+        return null;
+    }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/e0dd1c86/core/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerComposite.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerComposite.java b/core/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerComposite.java
index f075b00..af31fc9 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerComposite.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerComposite.java
@@ -20,6 +20,10 @@ package org.apache.isis.applib.services.exceprecog;
 
 import java.util.Arrays;
 import java.util.List;
+import java.util.Map;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
 
 import com.google.common.collect.Lists;
 
@@ -62,7 +66,7 @@ public class ExceptionRecognizerComposite implements ExceptionRecognizer {
      * before the more general ones.  See the <i>JDO object store</i> applib for
      * an example.
      */
-    public void add(ExceptionRecognizer ers) {
+    public final void add(ExceptionRecognizer ers) {
         services.add(ers);
     }
     
@@ -70,7 +74,7 @@ public class ExceptionRecognizerComposite implements ExceptionRecognizer {
      * Returns the non-<tt>null</tt> message of the first {@link #add(ExceptionRecognizer) add}ed 
      * {@link ExceptionRecognizer service} that recognizes the exception. 
      */
-    public String recognize(Throwable ex) {
+    public final  String recognize(Throwable ex) {
         for (ExceptionRecognizer ers : services) {
             String message = ers.recognize(ex);
             if(message != null) {
@@ -79,4 +83,21 @@ public class ExceptionRecognizerComposite implements ExceptionRecognizer {
         }
         return null;
     }
+    
+    @PostConstruct
+    @Override
+    public final void init(Map<String, String> properties) {
+        for (ExceptionRecognizer ers : services) {
+            ers.init(properties);
+        }
+    }
+
+    @PreDestroy
+    @Override
+    public final void shutdown() {
+        for (ExceptionRecognizer ers : services) {
+            ers.shutdown();
+        }
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/e0dd1c86/core/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerDelegating.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerDelegating.java b/core/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerDelegating.java
deleted file mode 100644
index e13ae45..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerDelegating.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.applib.services.exceprecog;
-
-
-/**
- * Convenience implementation of {@link ExceptionRecognizer} that simply
- * delegates to an underlying implementation.
- */
-public abstract class ExceptionRecognizerDelegating extends ExceptionRecognizerAbstract {
-
-    private final ExceptionRecognizer delegate;
-
-    public ExceptionRecognizerDelegating(ExceptionRecognizer delegate) {
-        this.delegate = delegate;
-    }
-
-    @Override
-    public String recognize(Throwable ex) {
-        return delegate.recognize(ex);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/e0dd1c86/core/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerForType.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerForType.java b/core/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerForType.java
index 4ed5a26..56908b0 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerForType.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerForType.java
@@ -38,7 +38,7 @@ import org.apache.isis.applib.annotation.Hidden;
  * then the message can be altered.  Otherwise the exception's {@link Throwable#getMessage() message} is returned as-is.
  */
 @Hidden
-public class ExceptionRecognizerForType extends ExceptionRecognizerDelegating {
+public class ExceptionRecognizerForType extends ExceptionRecognizerAbstract {
 
     protected final static Predicate<Throwable> ofTypeExcluding(final Class<? extends Throwable> exceptionType, final String... messages) {
         return Predicates.and(ofType(exceptionType), excluding(messages));
@@ -114,10 +114,11 @@ public class ExceptionRecognizerForType extends ExceptionRecognizerDelegating {
     }
     
     public ExceptionRecognizerForType(final Predicate<Throwable> predicate, final Function<String,String> messageParser) {
-        super(new ExceptionRecognizerGeneral(predicate, messageParser));
+        super(predicate, messageParser);
     }
     
     public ExceptionRecognizerForType(Class<? extends Exception> exceptionType) {
         this(exceptionType, null);
     }
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/e0dd1c86/core/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerGeneral.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerGeneral.java b/core/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerGeneral.java
deleted file mode 100644
index 79e50da..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerGeneral.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.applib.services.exceprecog;
-
-import java.util.List;
-
-import com.google.common.base.Function;
-import com.google.common.base.Functions;
-import com.google.common.base.Predicate;
-import com.google.common.base.Throwables;
-
-import org.apache.isis.applib.annotation.Hidden;
-
-/**
- * A general purpose implementation of {@link ExceptionRecognizer} that looks 
- * exceptions meeting the {@link Predicate} supplied in the constructor
- * and, if found anywhere in the {@link Throwables#getCausalChain(Throwable) causal chain},
- * then returns a non-null message indicating that the exception has been recognized.
- * 
- * <p>
- * If a messaging-parsing {@link Function} is provided through the constructor,
- * then the message can be altered.  Otherwise the exception's {@link Throwable#getMessage() message} is returned as-is.
- */
-@Hidden
-public class ExceptionRecognizerGeneral extends ExceptionRecognizerAbstract {
-
-    private final Predicate<Throwable> predicate;
-    private final Function<String,String> messageParser;
-
-    public ExceptionRecognizerGeneral(Predicate<Throwable> predicate, final Function<String,String> messageParser) {
-        this.predicate = predicate;
-        this.messageParser = messageParser != null? messageParser: Functions.<String>identity();
-    }
-
-    public ExceptionRecognizerGeneral(Predicate<Throwable> predicate) {
-        this(predicate, null);
-    }
-
-    public String recognize(Throwable ex) {
-        List<Throwable> causalChain = Throwables.getCausalChain(ex);
-        for (Throwable throwable : causalChain) {
-            if(predicate.apply(throwable)) {
-                return messageParser.apply(throwable.getMessage());
-            }
-        }
-        return null;
-    }
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/e0dd1c86/core/applib/src/test/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerCompositeTest.java
----------------------------------------------------------------------
diff --git a/core/applib/src/test/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerCompositeTest.java b/core/applib/src/test/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerCompositeTest.java
index dab5ff7..47a5341 100644
--- a/core/applib/src/test/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerCompositeTest.java
+++ b/core/applib/src/test/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerCompositeTest.java
@@ -23,6 +23,8 @@ import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.CoreMatchers.nullValue;
 import static org.junit.Assert.assertThat;
 
+import java.util.Map;
+
 import org.junit.Before;
 import org.junit.Test;
 
@@ -39,6 +41,13 @@ public class ExceptionRecognizerCompositeTest {
         public String recognize(Throwable ex) {
             return message;
         }
+        @Override
+        public void init(Map<String, String> properties) {
+        }
+
+        @Override
+        public void shutdown() {
+        }
     }
     
     @Before

http://git-wip-us.apache.org/repos/asf/isis/blob/e0dd1c86/core/applib/src/test/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerGeneralTest.java
----------------------------------------------------------------------
diff --git a/core/applib/src/test/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerGeneralTest.java b/core/applib/src/test/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerGeneralTest.java
index ff625e1..239e59c 100644
--- a/core/applib/src/test/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerGeneralTest.java
+++ b/core/applib/src/test/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerGeneralTest.java
@@ -30,7 +30,7 @@ import org.junit.Test;
 
 public class ExceptionRecognizerGeneralTest {
 
-    private ExceptionRecognizerGeneral ersGeneral;
+    private ExceptionRecognizerAbstract ersGeneral;
 
     static class FooException extends Exception {
         private static final long serialVersionUID = 1L;
@@ -49,19 +49,19 @@ public class ExceptionRecognizerGeneralTest {
     
     @Test
     public void whenRecognized() {
-        ersGeneral = new ExceptionRecognizerGeneral(Predicates.<Throwable>alwaysTrue());
+        ersGeneral = new ExceptionRecognizerAbstract(Predicates.<Throwable>alwaysTrue()){};
         assertThat(ersGeneral.recognize(new FooException()), is("foo"));
     }
 
     @Test
     public void whenDoesNotRecognize() {
-        ersGeneral = new ExceptionRecognizerGeneral(Predicates.<Throwable>alwaysFalse());
+        ersGeneral = new ExceptionRecognizerAbstract(Predicates.<Throwable>alwaysFalse()){};
         assertThat(ersGeneral.recognize(new FooException()), is(nullValue()));
     }
 
     @Test
     public void whenRecognizedWithMessageParser() {
-        ersGeneral = new ExceptionRecognizerGeneral(Predicates.<Throwable>alwaysTrue(), prepend);
+        ersGeneral = new ExceptionRecognizerAbstract(Predicates.<Throwable>alwaysTrue(), prepend){};
         assertThat(ersGeneral.recognize(new FooException()), is("pre: foo"));
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/e0dd1c86/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/container/DomainObjectContainerDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/container/DomainObjectContainerDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/container/DomainObjectContainerDefault.java
index 14ebbd6..855a764 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/container/DomainObjectContainerDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/container/DomainObjectContainerDefault.java
@@ -21,6 +21,10 @@ package org.apache.isis.core.metamodel.services.container;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
 
 import com.google.common.base.Predicate;
 
@@ -518,14 +522,25 @@ public class  DomainObjectContainerDefault implements DomainObjectContainer, Que
      */
     @Override
     public String recognize(Throwable ex) {
-        return getRecognizer().recognize(ex);
+        return recognizer.recognize(ex);
     }
     
     ExceptionRecognizer getRecognizer() {
         return recognizer;
     }
 
-    
+    @PostConstruct
+    @Override
+    public void init(Map<String, String> properties) {
+        recognizer.init(properties);
+    }
+
+    @PreDestroy
+    @Override
+    public void shutdown() {
+        recognizer.shutdown();
+    }
+
     // //////////////////////////////////////////////////////////////////
     // Dependencies
     // //////////////////////////////////////////////////////////////////
@@ -599,4 +614,6 @@ public class  DomainObjectContainerDefault implements DomainObjectContainer, Que
     }
 
 
+
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/e0dd1c86/example/application/quickstart_wicket_restful_jdo/webapp/src/main/webapp/WEB-INF/isis.properties
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/webapp/src/main/webapp/WEB-INF/isis.properties b/example/application/quickstart_wicket_restful_jdo/webapp/src/main/webapp/WEB-INF/isis.properties
index 3580607..b947bd2 100644
--- a/example/application/quickstart_wicket_restful_jdo/webapp/src/main/webapp/WEB-INF/isis.properties
+++ b/example/application/quickstart_wicket_restful_jdo/webapp/src/main/webapp/WEB-INF/isis.properties
@@ -197,3 +197,24 @@ isis.services = \
 isis.fixtures=fixture.todo.ToDoItemsFixture 
 
 
+#
+# whether ExceptionRecognizers should also log any recognized exceptions
+# (default false; enable for diagnostics/debugging)
+#
+#isis.services.exceprecog.logRecognizedExceptions=true
+
+
+
+
+################################################################################
+#
+# Viewer defaults
+#
+#################################################################################
+
+#
+# Specify viewer defaults
+# 
+#isis.viewers.paged.standalone=30
+#isis.viewers.paged.parented=10
+

http://git-wip-us.apache.org/repos/asf/isis/blob/e0dd1c86/example/application/simple_wicket_restful_jdo/webapp/src/main/webapp/WEB-INF/isis.properties
----------------------------------------------------------------------
diff --git a/example/application/simple_wicket_restful_jdo/webapp/src/main/webapp/WEB-INF/isis.properties b/example/application/simple_wicket_restful_jdo/webapp/src/main/webapp/WEB-INF/isis.properties
index c32d07f..cb633bf 100644
--- a/example/application/simple_wicket_restful_jdo/webapp/src/main/webapp/WEB-INF/isis.properties
+++ b/example/application/simple_wicket_restful_jdo/webapp/src/main/webapp/WEB-INF/isis.properties
@@ -193,3 +193,24 @@ isis.services = \
 isis.fixtures=fixture.simple.SimpleObjectsFixture 
 
 
+#
+# whether ExceptionRecognizers should also log any recognized exceptions
+# (default false; enable for diagnostics/debugging)
+#
+#isis.services.exceprecog.logRecognizedExceptions=true
+
+
+
+
+################################################################################
+#
+# Viewer defaults
+#
+#################################################################################
+
+#
+# Specify viewer defaults
+# 
+#isis.viewers.paged.standalone=30
+#isis.viewers.paged.parented=10
+