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

ahuber pushed a commit to branch ISIS-1779-jax-rs-2
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 1c9e21f898fb4bac431da4c6c6ef4f2574e75d9d
Author: Andi Huber <ahu...@apache.org>
AuthorDate: Mon Feb 19 16:51:41 2018 +0100

    ISIS-1779 rebase jax-rs-2 on top of 2.0.0-M2
---
 .../isis/applib/internal/context/_Context.java     | 29 +++++++++-
 .../isis/applib/internal/reflection/_Reflect.java  |  5 +-
 .../internal/reflection/_Reflect_Discovery.java    | 25 +--------
 .../apache/isis/applib/query/QueryAbstract.java    |  4 +-
 .../applib/services/hsqldb/HsqlDbManagerMenu.java  |  3 +-
 .../apache/isis/schema/utils/CommonDtoUtils.java   | 51 +++++++----------
 .../isis/core/commons/encoding/FieldType.java      |  3 +-
 .../isis/core/commons/factory/InstanceUtil.java    |  9 +--
 .../apache/isis/core/commons/lang/ClassUtil.java   |  6 +-
 .../isis/core/commons/lang/ResourceUtil.java       | 13 ++++-
 ...ResourceStreamSourceContextLoaderClassPath.java |  3 +-
 core/pom.xml                                       |  6 +-
 .../core/runtime/services/ServiceInstantiator.java |  4 +-
 .../core/runtime/system/context/IsisContext.java   | 15 ++---
 .../persistence/PersistenceSessionFactory.java     | 10 +---
 .../IsisComponentProvider.java                     | 33 +++++------
 .../PersistenceCapableTypeFinder.java              | 65 ++++++++++++++++++++++
 .../datanucleus/DataNucleusLifeCycleHelper.java    | 52 -----------------
 .../persistence/spi/JdoObjectIdSerializer.java     |  7 ++-
 .../scenarios/ScenarioExecutionScope.java          |  3 +-
 .../wicket/viewer/IsisWicketApplication.java       |  5 +-
 .../wicket/AuthenticatedWebSessionForIsis.java     | 62 ++++++++++++++-------
 .../WicketObjectModule_bindingsStandard.java       | 63 +++++++++++++--------
 ...thenticatedWebSessionForIsis_Instantiation.java |  2 +-
 ...ageClassListDefault_RegistrationAndCaching.java |  2 +-
 .../ui/components/about/JarManifestModel.java      |  3 +-
 26 files changed, 269 insertions(+), 214 deletions(-)

diff --git 
a/core/applib/src/main/java/org/apache/isis/applib/internal/context/_Context.java
 
b/core/applib/src/main/java/org/apache/isis/applib/internal/context/_Context.java
index adb6d01..589805a 100644
--- 
a/core/applib/src/main/java/org/apache/isis/applib/internal/context/_Context.java
+++ 
b/core/applib/src/main/java/org/apache/isis/applib/internal/context/_Context.java
@@ -24,6 +24,8 @@ import java.util.Map;
 import java.util.Objects;
 import java.util.function.Supplier;
 
+import javax.validation.constraints.NotNull;
+
 import org.apache.isis.applib.internal.base._Casts;
 
 /**
@@ -137,10 +139,35 @@ public final class _Context {
         * Will be set by the framework's bootstrapping mechanism if required.
         * @return the default class loader
         */
-       public static ClassLoader getDefaultClassLoader() {
+       public static @NotNull ClassLoader getDefaultClassLoader() {
                return getOrElse(ClassLoader.class, FALLBACK_CLASSLOADER);
        }
+       
+       // -- CLASS LOADING SHORTCUTS
+       
+       /**
+        * Uses the frameworks default-ClassLoader to load a class by name.
+        * @param className
+        * @return class by name
+        * @throws ClassNotFoundException
+        */
+       public static Class<?> loadClass(String className) throws 
ClassNotFoundException{
+               return getDefaultClassLoader().loadClass(className);
+       }
 
+       /**
+        * Uses the frameworks default-ClassLoader to load and initialize a 
class by name.<br/>
+        * <b>Initialize</b> the class, that is, all static initializers will 
be run. <br/>
+        * (For details on initialize see Section 12.4 of The Java Language 
Specification)
+        * @param className
+        * @return
+        * @throws ClassNotFoundException
+        */
+       public static Class<?> loadClassAndInitialize(String className) throws 
ClassNotFoundException{
+               return Class.forName(className, true, getDefaultClassLoader());
+       }
+       
+       
        // -- HELPER
        
        private static String toKey(Class<?> type) {
diff --git 
a/core/applib/src/main/java/org/apache/isis/applib/internal/reflection/_Reflect.java
 
b/core/applib/src/main/java/org/apache/isis/applib/internal/reflection/_Reflect.java
index e0b213d..20d63e5 100644
--- 
a/core/applib/src/main/java/org/apache/isis/applib/internal/reflection/_Reflect.java
+++ 
b/core/applib/src/main/java/org/apache/isis/applib/internal/reflection/_Reflect.java
@@ -23,11 +23,10 @@ import java.lang.annotation.Annotation;
 import java.util.List;
 import java.util.Set;
 
+import org.apache.isis.applib.internal.context._Context;
 import org.reflections.scanners.SubTypesScanner;
 import org.reflections.util.ClasspathHelper;
 
-import org.apache.isis.applib.internal.context._Context;
-
 /**
  * <h1>- internal use only -</h1>
  * <p>
@@ -56,8 +55,6 @@ public final class _Reflect {
                //TODO missing java-doc
                public <T> Set<Class<? extends T>> getSubTypesOf(Class<T> type);
 
-               public Set<Class<?>> findPersistenceCapableTypes();
-
        }
 
        //TODO missing java-doc
diff --git 
a/core/applib/src/main/java/org/apache/isis/applib/internal/reflection/_Reflect_Discovery.java
 
b/core/applib/src/main/java/org/apache/isis/applib/internal/reflection/_Reflect_Discovery.java
index 5db08e5..fe7db50 100644
--- 
a/core/applib/src/main/java/org/apache/isis/applib/internal/reflection/_Reflect_Discovery.java
+++ 
b/core/applib/src/main/java/org/apache/isis/applib/internal/reflection/_Reflect_Discovery.java
@@ -8,15 +8,11 @@ import java.util.Set;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
-import javax.jdo.annotations.PersistenceCapable;
 import javax.validation.constraints.NotNull;
 
-import com.google.common.collect.Sets;
-
-import org.reflections.Reflections;
-
 import org.apache.isis.applib.internal.base._NullSafe;
 import org.apache.isis.applib.internal.reflection._Reflect.Discovery;
+import org.reflections.Reflections;
 
 /**
  * 
@@ -84,24 +80,5 @@ class _Reflect_Discovery implements _Reflect.Discovery {
                                .filter(_NullSafe::isPresent);
        }
 
-       public Set<Class<?>> findPersistenceCapableTypes() {
-
-               Set<Class<?>> pcSet = Sets.newLinkedHashSet();
-
-               Set<Class<?>> persistenceCapables = 
reflections.getTypesAnnotatedWith(PersistenceCapable.class);
-               persistenceCapables.stream()
-                               .filter(x -> !x.isAnnotation())
-                               .forEach(pcSet::add);
-
-               Stream<Class<? extends Annotation>> pcMetaAnnotStream =
-                               (Stream)persistenceCapables.stream().filter(x 
-> x.isAnnotation());
-               pcMetaAnnotStream.map(metaAnnot -> 
reflections.getTypesAnnotatedWith(metaAnnot).stream())
-                               .flatMap(x -> x)
-                               .filter(x -> !x.isAnnotation())
-                               .forEach(pcSet::add);
-
-               return pcSet;
-       }
-
        
 }
diff --git 
a/core/applib/src/main/java/org/apache/isis/applib/query/QueryAbstract.java 
b/core/applib/src/main/java/org/apache/isis/applib/query/QueryAbstract.java
index 7c2497e..d16f908 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/query/QueryAbstract.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/query/QueryAbstract.java
@@ -19,6 +19,8 @@
 
 package org.apache.isis.applib.query;
 
+import org.apache.isis.applib.internal.context._Context;
+
 /**
  * Convenience adapter class for {@link Query}.
  * 
@@ -67,7 +69,7 @@ public abstract class QueryAbstract<T> implements Query<T> {
     public Class<T> getResultType() {
         if (resultType == null) {
             try {
-                resultType = (Class<T>) 
Thread.currentThread().getContextClassLoader().loadClass(resultTypeName);
+                resultType = (Class<T>) _Context.loadClass(resultTypeName);
             } catch (final ClassNotFoundException e) {
                 throw new IllegalStateException(e);
             }
diff --git 
a/core/applib/src/main/java/org/apache/isis/applib/services/hsqldb/HsqlDbManagerMenu.java
 
b/core/applib/src/main/java/org/apache/isis/applib/services/hsqldb/HsqlDbManagerMenu.java
index 48843ae..bc0586f 100644
--- 
a/core/applib/src/main/java/org/apache/isis/applib/services/hsqldb/HsqlDbManagerMenu.java
+++ 
b/core/applib/src/main/java/org/apache/isis/applib/services/hsqldb/HsqlDbManagerMenu.java
@@ -34,6 +34,7 @@ import org.apache.isis.applib.annotation.DomainServiceLayout;
 import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.annotation.RestrictTo;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.internal.context._Context;
 
 @DomainService(
         nature = NatureOfService.VIEW_MENU_ONLY,
@@ -73,7 +74,7 @@ public class HsqlDbManagerMenu {
     public boolean hideHsqlDbManager() {
         try {
             // hsqldb is configured as optional in the applib's pom.xml
-            
Thread.currentThread().getContextClassLoader().loadClass(DatabaseManagerSwing.class.getCanonicalName());
+               
_Context.loadClass(DatabaseManagerSwing.class.getCanonicalName());
         } catch (ClassNotFoundException e) {
             return true;
         }
diff --git 
a/core/applib/src/main/java/org/apache/isis/schema/utils/CommonDtoUtils.java 
b/core/applib/src/main/java/org/apache/isis/schema/utils/CommonDtoUtils.java
index d3f0159..1ba83ab 100644
--- a/core/applib/src/main/java/org/apache/isis/schema/utils/CommonDtoUtils.java
+++ b/core/applib/src/main/java/org/apache/isis/schema/utils/CommonDtoUtils.java
@@ -22,19 +22,8 @@ import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.util.Collection;
 
-import com.google.common.base.Function;
-import com.google.common.base.Objects;
-import com.google.common.base.Optional;
-import com.google.common.base.Predicate;
-import com.google.common.base.Strings;
-import com.google.common.collect.FluentIterable;
-import com.google.common.collect.ImmutableMap;
-
-import org.joda.time.DateTime;
-import org.joda.time.LocalDate;
-import org.joda.time.LocalDateTime;
-import org.joda.time.LocalTime;
 import org.apache.isis.applib.internal.base._Casts;
+import org.apache.isis.applib.internal.context._Context;
 import org.apache.isis.applib.internal.exceptions._Exceptions;
 import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.applib.services.bookmark.BookmarkService;
@@ -55,6 +44,18 @@ import 
org.apache.isis.schema.utils.jaxbadapters.JodaDateTimeXMLGregorianCalenda
 import 
org.apache.isis.schema.utils.jaxbadapters.JodaLocalDateTimeXMLGregorianCalendarAdapter;
 import 
org.apache.isis.schema.utils.jaxbadapters.JodaLocalDateXMLGregorianCalendarAdapter;
 import 
org.apache.isis.schema.utils.jaxbadapters.JodaLocalTimeXMLGregorianCalendarAdapter;
+import org.joda.time.DateTime;
+import org.joda.time.LocalDate;
+import org.joda.time.LocalDateTime;
+import org.joda.time.LocalTime;
+
+import com.google.common.base.Function;
+import com.google.common.base.Objects;
+import com.google.common.base.Optional;
+import com.google.common.base.Predicate;
+import com.google.common.base.Strings;
+import com.google.common.collect.FluentIterable;
+import com.google.common.collect.ImmutableMap;
 
 public final class CommonDtoUtils {
 
@@ -374,28 +375,18 @@ public final class CommonDtoUtils {
 
     private static <T> Class<T> loadClassElseThrow(final String className) {
         try {
-            return _Casts.uncheckedCast(loadClass(className));
+            return 
_Casts.uncheckedCast(_Context.loadClassAndInitialize(className));
         } catch (ClassNotFoundException e) {
-            throw new RuntimeException(e);
+               
+               // [ahuber] fallback to pre 2.0.0 behavior, not sure if needed  
+               try {
+                               return 
_Casts.uncheckedCast(Class.forName(className));
+                       } catch (ClassNotFoundException e1) {
+                               throw new RuntimeException(e);
+                       }
         }
     }
 
-    private static Class<?> loadClass(String className) throws 
ClassNotFoundException {
-        ClassLoader ccl = Thread.currentThread().getContextClassLoader();
-        if(ccl == null) {
-            return loadClass(className, (ClassLoader)null);
-        } else {
-            try {
-                return loadClass(className, ccl);
-            } catch (ClassNotFoundException var3) {
-                return loadClass(className, (ClassLoader)null);
-            }
-        }
-    }
-
-    private static Class<?> loadClass(String className, ClassLoader 
classLoader) throws ClassNotFoundException {
-        return classLoader == 
null?Class.forName(className):Class.forName(className, true, classLoader);
-    }
     //endregion
 
     //region > newValueWithTypeDto
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/commons/encoding/FieldType.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/commons/encoding/FieldType.java
index d834b18..9309746 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/commons/encoding/FieldType.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/commons/encoding/FieldType.java
@@ -31,6 +31,7 @@ import java.lang.reflect.InvocationTargetException;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.isis.applib.internal.context._Context;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -969,7 +970,7 @@ public abstract class FieldType<T> {
                 Class<?> cls;
                 try {
                     // ...obtain constructor
-                    cls = 
Thread.currentThread().getContextClassLoader().loadClass(className);
+                    cls = _Context.loadClass(className);
 
                     final Constructor<?> constructor = cls.getConstructor(new 
Class[] { DataInputExtended.class });
 
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/commons/factory/InstanceUtil.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/commons/factory/InstanceUtil.java
index e4f04ae..e581d56 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/commons/factory/InstanceUtil.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/commons/factory/InstanceUtil.java
@@ -22,6 +22,7 @@ package org.apache.isis.core.commons.factory;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
 
+import org.apache.isis.applib.internal.context._Context;
 import org.apache.isis.core.commons.ensure.Assert;
 import org.apache.isis.core.commons.lang.ObjectExtensions;
 
@@ -54,7 +55,7 @@ public final class InstanceUtil {
         Class<? extends T> defaultType = null;
         if (defaultTypeName != null) {
             try {
-                defaultType = 
ObjectExtensions.asT(Thread.currentThread().getContextClassLoader().loadClass(defaultTypeName));
+                defaultType = 
ObjectExtensions.asT(_Context.loadClass(defaultTypeName));
                 if (defaultType == null) {
                     throw new 
InstanceCreationClassException(String.format("Failed to load default type 
'%s'", defaultTypeName));
                 }
@@ -76,7 +77,7 @@ public final class InstanceUtil {
         if (defaultTypeName != null) {
             defaultType = loadClass(defaultTypeName, requiredType);
             try {
-                defaultType = 
ObjectExtensions.asT(Thread.currentThread().getContextClassLoader().loadClass(defaultTypeName));
+                defaultType = 
ObjectExtensions.asT(_Context.loadClass(defaultTypeName));
                 if (defaultType == null) {
                     throw new 
InstanceCreationClassException(String.format("Failed to load default type 
'%s'", defaultTypeName));
                 }
@@ -96,7 +97,7 @@ public final class InstanceUtil {
             Object... args) {
         Assert.assertNotNull("Class to instantiate must be specified", 
className);
         try {
-            final Class<?> cls = 
Thread.currentThread().getContextClassLoader().loadClass(className);
+            final Class<?> cls = _Context.loadClass(className);
             if (cls == null) {
                 throw new InstanceCreationClassException(String.format("Failed 
to load class '%s'", className));
             }
@@ -149,7 +150,7 @@ public final class InstanceUtil {
     public static Class<?> loadClass(final String className) {
         Assert.assertNotNull("Class to instantiate must be specified", 
className);
         try {
-            return 
Thread.currentThread().getContextClassLoader().loadClass(className);
+            return _Context.loadClass(className);
         } catch (final ClassNotFoundException e) {
             throw new UnavailableClassException(String.format("The type '%s' 
cannot be found", className));
         } catch (final NoClassDefFoundError e) {
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/ClassUtil.java 
b/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/ClassUtil.java
index 9bd70b5..1c1f75f 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/ClassUtil.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/ClassUtil.java
@@ -24,6 +24,8 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.isis.applib.internal.context._Context;
+
 import com.google.common.collect.Maps;
 
 public final class ClassUtil {
@@ -149,7 +151,7 @@ public final class ClassUtil {
             return primitiveCls;
         }
         try {
-            return 
Thread.currentThread().getContextClassLoader().loadClass(fullName);
+            return _Context.loadClass(fullName);
         } catch (final ClassNotFoundException e) {
             throw new RuntimeException(e);
         }
@@ -160,7 +162,7 @@ public final class ClassUtil {
             return null;
         }
         try {
-            return 
Thread.currentThread().getContextClassLoader().loadClass(fullName);
+            return _Context.loadClass(fullName);
         } catch (final ClassNotFoundException e) {
             return null;
         }
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/ResourceUtil.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/ResourceUtil.java
index 7e5fc77..276adcf 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/ResourceUtil.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/ResourceUtil.java
@@ -21,6 +21,8 @@ package org.apache.isis.core.commons.lang;
 
 import java.io.InputStream;
 
+import org.apache.isis.applib.internal.context._Context;
+
 /**
  * Adapted from Ibatis Common, now with some additional guava stuff.
  */
@@ -29,10 +31,17 @@ public class ResourceUtil {
     private ResourceUtil(){}
 
     public static InputStream getResourceAsStream(final String resource) {
+       
+        // try Isis's classloader
+        ClassLoader classLoader = _Context.getDefaultClassLoader();
+        InputStream is = classLoader.getResourceAsStream(resource);
+        if (is != null) {
+            return is;
+        }
 
         // try thread's classloader
-        ClassLoader classLoader = 
Thread.currentThread().getContextClassLoader();
-        InputStream is = classLoader.getResourceAsStream(resource);
+        classLoader = Thread.currentThread().getContextClassLoader();
+        is = classLoader.getResourceAsStream(resource);
         if (is != null) {
             return is;
         }
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/commons/resource/ResourceStreamSourceContextLoaderClassPath.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/commons/resource/ResourceStreamSourceContextLoaderClassPath.java
index b92a82a..2cad737 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/commons/resource/ResourceStreamSourceContextLoaderClassPath.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/commons/resource/ResourceStreamSourceContextLoaderClassPath.java
@@ -21,6 +21,7 @@ package org.apache.isis.core.commons.resource;
 
 import java.io.InputStream;
 
+import org.apache.isis.applib.internal.context._Context;
 import org.apache.isis.core.commons.lang.StringExtensions;
 
 /**
@@ -49,7 +50,7 @@ public class ResourceStreamSourceContextLoaderClassPath 
extends ResourceStreamSo
 
     @Override
     protected InputStream doReadResource(final String resourcePath) {
-        final ClassLoader classLoader = 
Thread.currentThread().getContextClassLoader();
+        final ClassLoader classLoader = _Context.getDefaultClassLoader();
         final String path = StringExtensions.combinePath(prefix, resourcePath);
         return classLoader.getResourceAsStream(path);
     }
diff --git a/core/pom.xml b/core/pom.xml
index ab17458..56215ae 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -90,10 +90,10 @@
         <!-- Datanucleus Objectstore -->
         <jdo-api.version>3.2.0-m7</jdo-api.version>
 
-        <datanucleus-core.version>5.1.5</datanucleus-core.version>
+        <datanucleus-core.version>5.1.6</datanucleus-core.version>
         <datanucleus-api-jdo.version>5.1.4</datanucleus-api-jdo.version>
-        <datanucleus-jdo-query.version>5.0.2</datanucleus-jdo-query.version>
-        <datanucleus-rdbms.version>5.1.5</datanucleus-rdbms.version>
+        <datanucleus-jdo-query.version>5.0.4</datanucleus-jdo-query.version>
+        <datanucleus-rdbms.version>5.1.6</datanucleus-rdbms.version>
         
<datanucleus-jodatime.version>5.1.0-release</datanucleus-jodatime.version>
        <!--
            ISIS-1288: seen integration tests to fail;
diff --git 
a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServiceInstantiator.java
 
b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServiceInstantiator.java
index f48bdcf..e002a81 100644
--- 
a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServiceInstantiator.java
+++ 
b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServiceInstantiator.java
@@ -33,7 +33,7 @@ import com.google.common.collect.Sets;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-
+import org.apache.isis.applib.internal.context._Context;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.exceptions.IsisException;
 import org.apache.isis.core.commons.factory.InstanceCreationClassException;
@@ -111,7 +111,7 @@ public final class ServiceInstantiator {
     private Class<?> loadClass(final String className) {
         try {
             LOG.debug("loading class for service: {}", className);
-            return IsisContext.getClassLoader().loadClass(className);
+            return _Context.loadClassAndInitialize(className);
         } catch (final ClassNotFoundException ex) {
             throw new InitialisationException(String.format("Cannot find class 
'%s' for service", className));
         }
diff --git 
a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
 
b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
index 546dcc4..a213323 100644
--- 
a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
+++ 
b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
@@ -59,10 +59,6 @@ public interface IsisContext {
        public static ClassLoader getClassLoader() {
                return _Context.getDefaultClassLoader();
        }
-    public static void setClassLoader(ClassLoader classLoader) {
-           _Context.putSingleton(ClassLoader.class, classLoader);
-    }
-
 
        // -- LIFE-CYCLING
     
@@ -72,6 +68,7 @@ public interface IsisContext {
      */
     public static void clear() {
        _Context.clear();
+       resetLogging();
     }
     
     // -- DEPRECATIONS
@@ -90,11 +87,15 @@ public interface IsisContext {
 
        /**
         * TODO [andi-huber] not sure if required, initial idea was to force 
log4j
-        * re-configuration on an undeploy/deploy cycle
+        * to re-configure on an undeploy/deploy cycle
         */
        static void resetLogging() {
-               org.apache.log4j.Logger.getRootLogger().removeAllAppenders();
-               BasicConfigurator.resetConfiguration();
+               try {
+                       BasicConfigurator.resetConfiguration();
+                       
org.apache.log4j.Logger.getRootLogger().removeAllAppenders();
+               } catch (Exception e) {
+                       // at least we tried
+               }
        }
 
 
diff --git 
a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
 
b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
index e9565f8..b3026da 100644
--- 
a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
+++ 
b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
@@ -168,15 +168,7 @@ public class PersistenceSessionFactory implements 
ApplicationScopedComponent, Fi
      */
     @Programmatic
     public final void shutdown() {
-        if(!isInitialized()) {
-            return;
-        }
-
-       //XXX ISIS-1756 purge any DataNucleus State
-       if(applicationComponents != null) {
-               // applicationComponents.shutdown();
-            applicationComponents = null;
-       }
+        applicationComponents = null;
     }
 
     /**
diff --git 
a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProvider.java
 
b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProvider.java
index 7d9322b..9b2936a 100644
--- 
a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProvider.java
+++ 
b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProvider.java
@@ -23,17 +23,9 @@ import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.stream.Collectors;
 
 import javax.annotation.Nullable;
 
-import com.google.common.base.Function;
-import com.google.common.base.Joiner;
-import com.google.common.collect.FluentIterable;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Sets;
-
 import org.apache.isis.applib.AppManifest;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.DomainService;
@@ -64,6 +56,13 @@ import 
org.apache.isis.objectstore.jdo.service.RegisterEntities;
 import org.apache.isis.progmodels.dflt.JavaReflectorHelper;
 import org.apache.isis.progmodels.dflt.ProgrammingModelFacetsJava5;
 
+import com.google.common.base.Function;
+import com.google.common.base.Joiner;
+import com.google.common.collect.FluentIterable;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
+
 /**
  * 
  */
@@ -137,23 +136,19 @@ public abstract class IsisComponentProvider {
         final Discovery discovery = 
_Reflect.discover(moduleAndFrameworkPackages);
 
         final Set<Class<?>> domainServiceTypes = 
discovery.getTypesAnnotatedWith(DomainService.class);
-        final Set<Class<?>> persistenceCapableTypes = 
discovery.findPersistenceCapableTypes();
+        final Set<Class<?>> persistenceCapableTypes = 
PersistenceCapableTypeFinder.find(discovery);
         final Set<Class<? extends FixtureScript>> fixtureScriptTypes = 
discovery.getSubTypesOf(FixtureScript.class);
 
         final Set<Class<?>> mixinTypes = Sets.newHashSet();
         mixinTypes.addAll(discovery.getTypesAnnotatedWith(Mixin.class));
 
         final Set<Class<?>> domainObjectTypes = 
discovery.getTypesAnnotatedWith(DomainObject.class);
-        mixinTypes.addAll(
-                domainObjectTypes.stream().filter(input -> {
-                    if (input == null) {
-                        return false;
-                    }
-                    final DomainObject annotation = 
input.getAnnotation(DomainObject.class);
-                    return annotation.nature() == Nature.MIXIN;
-                }).collect(Collectors.toList())
-        );
-        
+        domainObjectTypes.stream()
+        .filter(input -> {
+            final DomainObject annotation = 
input.getAnnotation(DomainObject.class);
+            return annotation.nature() == Nature.MIXIN;
+        })
+        .forEach(mixinTypes::add);
         
         // add in any explicitly registered services...
         domainServiceTypes.addAll(appManifest.getAdditionalServices());
diff --git 
a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/PersistenceCapableTypeFinder.java
 
b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/PersistenceCapableTypeFinder.java
new file mode 100644
index 0000000..1fbf533
--- /dev/null
+++ 
b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/PersistenceCapableTypeFinder.java
@@ -0,0 +1,65 @@
+/*
+ *  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.systemusinginstallers;
+
+import java.lang.annotation.Annotation;
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+import javax.jdo.annotations.PersistenceCapable;
+
+import org.apache.isis.applib.internal.reflection._Reflect.Discovery;
+
+/**
+ * 
+ * Package private helper class. Finds PersistenceCapable types.
+ *
+ */
+class PersistenceCapableTypeFinder {
+
+       @SuppressWarnings("unchecked")
+       static Set<Class<?>> find(Discovery discovery) {
+
+               final Set<Class<?>> types = new LinkedHashSet<>();
+
+               
discovery.getTypesAnnotatedWith(PersistenceCapable.class).stream()
+               .forEach(type->{
+
+                       if(type.isAnnotation()) {
+
+                               // We have an annotation, that is annotated 
with @PersistenceCapable,
+                               // this requires special treatment: 
+                               // Search for any classes annotated with this 
(meta-)annotation.
+                               
+                               discovery.getTypesAnnotatedWith((Class<? 
extends Annotation>) type).stream()
+                               .filter(x->!x.isAnnotation())
+                               .forEach(types::add);
+
+                       } else {
+
+                               types.add(type);
+
+                       }       
+               });
+
+               return types;
+       }
+
+}
diff --git 
a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusLifeCycleHelper.java
 
b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusLifeCycleHelper.java
index 398c30f..4547a49 100644
--- 
a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusLifeCycleHelper.java
+++ 
b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusLifeCycleHelper.java
@@ -49,29 +49,6 @@ public class DataNucleusLifeCycleHelper {
                try {
                        
                        final ClassLoader cl = IsisContext.getClassLoader();
-
-//          XXX not needed according to 
https://github.com/datanucleus/datanucleus-core/issues/272 
-//                     
-//                     if(persistenceManagerFactory instanceof 
JDOPersistenceManagerFactory) {
-//                             
-//                             final JDOPersistenceManagerFactory jdoPMF = 
-//                                             (JDOPersistenceManagerFactory) 
persistenceManagerFactory;
-//                             final PersistenceNucleusContext nucleusContext 
= jdoPMF.getNucleusContext();
-//                             final AbstractStoreManager storeManager = 
-//                                             
(AbstractStoreManager)nucleusContext.getStoreManager();
-//                             
-//                     
-//                             persistenceManagerFactory.getManagedClasses()
-//                             .forEach(clazz->{
-//                             final ClassLoaderResolver clr = 
nucleusContext.getClassLoaderResolver(cl);
-//                                                     
-//                             // Un-manage from the store
-//                             storeManager.unmanageClass(clr, 
clazz.getName(), false);
-//                             
-//                                      // Unload the meta-data for this class
-//                             
nucleusContext.getMetaDataManager().unloadMetaDataForClass(clazz.getName());
-//                             });
-//                     }
                        
                        persistenceManagerFactory.close();
                        
@@ -84,35 +61,6 @@ public class DataNucleusLifeCycleHelper {
                }
 
        }
-    
-
-    // -- LOW LEVEL REFLECTION
-    
-       // TODO remove once DN v5.1.5 is released
-       private final static MethodHandle getRegisteredClassesMH;
-       static {
-               MethodHandle mh;                
-               try {
-                       Field registeredClasses = 
EnhancementHelper.class.getDeclaredField("registeredClasses");
-                       registeredClasses.setAccessible(true);
-                       mh = 
MethodHandles.lookup().unreflectGetter(registeredClasses);
-                       registeredClasses.setAccessible(false);
-               } catch (Exception e) {
-                       mh = null;
-                       e.printStackTrace();
-               }
-               getRegisteredClassesMH = mh;
-       }
-       
-       // TODO remove once DN v5.1.5 is released
-       private static void visitDNRegisteredClasses(Consumer<Map<Class<?>, ?>> 
visitor){
-               try {
-                       visitor.accept( (Map<Class<?>, ?>) 
getRegisteredClassesMH.invoke() );
-               } catch (Throwable e) {
-                       LOG.warn("Failed to access DataNucleus' 
EnhancementHelper via reflection.", e);
-               }
-       }
-
 
 
 }
diff --git 
a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/spi/JdoObjectIdSerializer.java
 
b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/spi/JdoObjectIdSerializer.java
index ebb4d40..e185908 100644
--- 
a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/spi/JdoObjectIdSerializer.java
+++ 
b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/spi/JdoObjectIdSerializer.java
@@ -25,13 +25,15 @@ import java.math.BigInteger;
 import java.util.Arrays;
 import java.util.List;
 import java.util.UUID;
+
 import javax.jdo.annotations.IdentityType;
 import javax.jdo.identity.ByteIdentity;
 import javax.jdo.identity.IntIdentity;
 import javax.jdo.identity.LongIdentity;
 import javax.jdo.identity.ObjectIdentity;
 import javax.jdo.identity.StringIdentity;
-import org.datanucleus.identity.DatastoreId;
+
+import org.apache.isis.applib.internal.context._Context;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -39,6 +41,7 @@ import 
org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.session.IsisSessionFactory;
 import 
org.apache.isis.objectstore.jdo.metamodel.facets.object.persistencecapable.JdoPersistenceCapableFacet;
+import org.datanucleus.identity.DatastoreId;
 
 public final class JdoObjectIdSerializer {
     
@@ -164,7 +167,7 @@ public final class JdoObjectIdSerializer {
 
             final String clsName = distinguisher;
             try {
-                final Class<?> cls = 
Thread.currentThread().getContextClassLoader().loadClass(clsName);
+                final Class<?> cls = _Context.loadClass(clsName);
                 final Constructor<?> cons = cls.getConstructor(String.class);
                 final Object dnOid = cons.newInstance(keyStr);
                 return dnOid.toString();
diff --git 
a/core/specsupport/src/main/java/org/apache/isis/core/specsupport/scenarios/ScenarioExecutionScope.java
 
b/core/specsupport/src/main/java/org/apache/isis/core/specsupport/scenarios/ScenarioExecutionScope.java
index 0b28cf4..42a3e54 100644
--- 
a/core/specsupport/src/main/java/org/apache/isis/core/specsupport/scenarios/ScenarioExecutionScope.java
+++ 
b/core/specsupport/src/main/java/org/apache/isis/core/specsupport/scenarios/ScenarioExecutionScope.java
@@ -16,6 +16,7 @@
  */
 package org.apache.isis.core.specsupport.scenarios;
 
+import org.apache.isis.applib.internal.context._Context;
 
 /**
  * The scope at which the specification will run; acts as a factory to create
@@ -39,7 +40,7 @@ public class ScenarioExecutionScope {
     public ScenarioExecutionScope(String scenarioExecutionClassName) {
         try {
             this.scenarioExecutionClass = (Class<? extends ScenarioExecution>) 
-                    
Thread.currentThread().getContextClassLoader().loadClass(scenarioExecutionClassName);
+                    _Context.loadClass(scenarioExecutionClassName);
         } catch (ClassNotFoundException e) {
             throw new RuntimeException(e);
         }
diff --git 
a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
 
b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
index 9114767..ecf8d4c 100644
--- 
a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
+++ 
b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
@@ -30,6 +30,7 @@ import java.util.UUID;
 import java.util.concurrent.Callable;
 import java.util.concurrent.Future;
 
+import org.apache.isis.applib.internal.context._Context;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.config.IsisConfigurationDefault;
@@ -334,7 +335,7 @@ public class IsisWicketApplication
         try {
             super.init();
             
-            IsisContext.setClassLoader(this.getClass().getClassLoader());
+            _Context.putSingleton(ClassLoader.class, 
this.getClass().getClassLoader());
 
             futures = startBackgroundInitializationThreads();
 
@@ -864,7 +865,7 @@ public class IsisWicketApplication
             }
             
getServletContext().setAttribute(WebAppConstants.ISIS_SESSION_FACTORY, null);
             super.onDestroy();
-            IsisContext.destroy();
+            IsisContext.clear();
         } catch(final RuntimeException ex) {
             // symmetry with #init()
             LOG.error("Failed to destroy", ex);
diff --git 
a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/AuthenticatedWebSessionForIsis.java
 
b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/AuthenticatedWebSessionForIsis.java
index d3470db..7c1fd0c 100644
--- 
a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/AuthenticatedWebSessionForIsis.java
+++ 
b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/AuthenticatedWebSessionForIsis.java
@@ -22,11 +22,7 @@ package 
org.apache.isis.viewer.wicket.viewer.integration.wicket;
 import java.util.Arrays;
 import java.util.List;
 
-import org.apache.wicket.Session;
-import org.apache.wicket.authroles.authentication.AuthenticatedWebSession;
-import org.apache.wicket.authroles.authorization.strategies.role.Roles;
-import org.apache.wicket.request.Request;
-import org.apache.wicket.request.cycle.RequestCycle;
+import javax.validation.constraints.NotNull;
 
 import org.apache.isis.applib.clock.Clock;
 import org.apache.isis.applib.services.session.SessionLoggingService;
@@ -40,6 +36,11 @@ import 
org.apache.isis.viewer.wicket.model.models.BookmarkedPagesModel;
 import 
org.apache.isis.viewer.wicket.ui.components.widgets.breadcrumbs.BreadcrumbModel;
 import 
org.apache.isis.viewer.wicket.ui.components.widgets.breadcrumbs.BreadcrumbModelProvider;
 import org.apache.isis.viewer.wicket.ui.pages.BookmarkedPagesModelProvider;
+import org.apache.wicket.Session;
+import org.apache.wicket.authroles.authentication.AuthenticatedWebSession;
+import org.apache.wicket.authroles.authorization.strategies.role.Roles;
+import org.apache.wicket.request.Request;
+import org.apache.wicket.request.cycle.RequestCycle;
 
 /**
  * Viewer-specific implementation of {@link AuthenticatedWebSession}, which
@@ -169,21 +170,35 @@ public class AuthenticatedWebSessionForIsis extends 
AuthenticatedWebSession impl
             final SessionLoggingService.Type type,
             final String username,
             final SessionLoggingService.CausedBy causedBy) {
+       
+       
+       final IsisSessionFactory isisSessionFactory = 
getIsisSessionFactoryIfAny();
         final SessionLoggingService sessionLoggingService = 
getSessionLoggingService();
-        if (sessionLoggingService != null) {
-            getIsisSessionFactory().doInSession(new Runnable() {
-                    @Override
-                    public void run() {
-                        // use hashcode as session identifier, to avoid 
re-binding http sessions if using Session#getId()
-                        int sessionHashCode = 
System.identityHashCode(AuthenticatedWebSessionForIsis.this);
-                        sessionLoggingService.log(type, username, 
Clock.getTimeAsDateTime().toDate(), causedBy, 
Integer.toString(sessionHashCode));
-                    }
-                });
-        }
+               
+       final Runnable loggingTask = ()->{
+            // use hashcode as session identifier, to avoid re-binding http 
sessions if using Session#getId()
+            int sessionHashCode = 
System.identityHashCode(AuthenticatedWebSessionForIsis.this);
+            sessionLoggingService.log(type, username, 
Clock.getTimeAsDateTime().toDate(), causedBy, 
Integer.toString(sessionHashCode));                        
+       };
+       
+       if(isisSessionFactory!=null) {
+               isisSessionFactory.doInSession(loggingTask);
+       } else {
+               loggingTask.run();
+       }
+        
     }
 
-    protected SessionLoggingService getSessionLoggingService() {
-        return 
getIsisSessionFactory().getServicesInjector().lookupService(SessionLoggingService.class);
+    protected @NotNull SessionLoggingService getSessionLoggingService() {
+       try {
+               final SessionLoggingService service = 
getIsisSessionFactory().getServicesInjector()
+                               .lookupService(SessionLoggingService.class);
+               return (service!=null) ? service : new 
SessionLoggingService.Stderr();
+       } catch (Exception e) {
+               // fallback to System.err
+               return new SessionLoggingService.Stderr(); 
+               }
+       
     }
 
     @Override
@@ -191,11 +206,20 @@ public class AuthenticatedWebSessionForIsis extends 
AuthenticatedWebSession impl
         // do nothing here because this will lead to problems with Shiro
         // see https://issues.apache.org/jira/browse/ISIS-1018
     }
+    
+    // -- HELPER
 
-
-    IsisSessionFactory getIsisSessionFactory() {
+    private IsisSessionFactory getIsisSessionFactory() {
         return IsisContext.getSessionFactory();
     }
+    
+    private IsisSessionFactory getIsisSessionFactoryIfAny() {
+       try { 
+               return getIsisSessionFactory();
+       } catch (Exception e) {
+               return null;
+               }
+    }
 
 
 }
diff --git 
a/core/viewer-wicket-impl/src/test/java/org/apache/isis/viewer/wicket/viewer/WicketObjectModule_bindingsStandard.java
 
b/core/viewer-wicket-impl/src/test/java/org/apache/isis/viewer/wicket/viewer/WicketObjectModule_bindingsStandard.java
index 6121101..d9cb9e3 100644
--- 
a/core/viewer-wicket-impl/src/test/java/org/apache/isis/viewer/wicket/viewer/WicketObjectModule_bindingsStandard.java
+++ 
b/core/viewer-wicket-impl/src/test/java/org/apache/isis/viewer/wicket/viewer/WicketObjectModule_bindingsStandard.java
@@ -26,6 +26,7 @@ import static org.junit.Assert.assertThat;
 import java.util.Arrays;
 import java.util.Collection;
 
+import com.google.inject.AbstractModule;
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
@@ -34,7 +35,8 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
 import org.junit.runners.Parameterized.Parameters;
-
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistrar;
 import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistry;
 import org.apache.isis.viewer.wicket.ui.pages.PageClassList;
@@ -47,32 +49,45 @@ import 
org.apache.isis.viewer.wicket.viewer.registries.pages.PageClassRegistryDe
 @RunWith(Parameterized.class)
 public class WicketObjectModule_bindingsStandard {
 
-    private IsisWicketModule wicketObjectsModule;
-    private Injector injector;
-    private final Class<?> from;
-    private final Class<?> to;
+       private IsisWicketModule wicketObjectsModule;
+       private Injector injector;
+       private final Class<?> from;
+       private final Class<?> to;
+
+       @Parameters
+       public static Collection<Object[]> params() {
+               return Arrays.asList(new Object[][] { 
+                       { ComponentFactoryRegistrar.class, 
ComponentFactoryRegistrarDefault.class }, 
+                       { ComponentFactoryRegistry.class, 
ComponentFactoryRegistryDefault.class }, 
+                       { PageClassList.class, PageClassListDefault.class },
+                       { PageClassRegistry.class, 
PageClassRegistryDefault.class }, 
+               });
+       }
+
+       public WicketObjectModule_bindingsStandard(final Class<?> from, final 
Class<?> to) {
+               this.from = from;
+               this.to = to;
+       }
 
-    @Parameters
-    public static Collection<Object[]> params() {
-        return Arrays.asList(new Object[][] { { 
ComponentFactoryRegistrar.class, ComponentFactoryRegistrarDefault.class }, { 
ComponentFactoryRegistry.class, ComponentFactoryRegistryDefault.class }, { 
PageClassList.class, PageClassListDefault.class },
-                { PageClassRegistry.class, PageClassRegistryDefault.class }, 
});
-    }
+       @Before
+       public void setUp() throws Exception {
+               wicketObjectsModule = new IsisWicketModule();
+               injector = Guice.createInjector(wicketObjectsModule, new 
ConfigModule());
+       }
 
-    public WicketObjectModule_bindingsStandard(final Class<?> from, final 
Class<?> to) {
-        this.from = from;
-        this.to = to;
-    }
+       @Test
+       public void binding() {
+               final Object instance = injector.getInstance(from);
+               assertThat(instance, is(instanceOf(to)));
+       }
 
-    @Before
-    public void setUp() throws Exception {
-        wicketObjectsModule = new IsisWicketModule();
-        injector = Guice.createInjector(wicketObjectsModule);
-    }
+       // -- CONFIGURATION BINDING
 
-    @Test
-    public void binding() {
-        final Object instance = injector.getInstance(from);
-        assertThat(instance, is(instanceOf(to)));
-    }
+       private static class ConfigModule extends AbstractModule {
+               @Override 
+               protected void configure() {
+                       
bind(IsisConfiguration.class).to(IsisConfigurationDefault.class);
+               }
+       }
 
 }
diff --git 
a/core/viewer-wicket-impl/src/test/java/org/apache/isis/viewer/wicket/viewer/app/wicket/AuthenticatedWebSessionForIsis_Instantiation.java
 
b/core/viewer-wicket-impl/src/test/java/org/apache/isis/viewer/wicket/viewer/app/wicket/AuthenticatedWebSessionForIsis_Instantiation.java
index 4f5c860..0c5efde 100644
--- 
a/core/viewer-wicket-impl/src/test/java/org/apache/isis/viewer/wicket/viewer/app/wicket/AuthenticatedWebSessionForIsis_Instantiation.java
+++ 
b/core/viewer-wicket-impl/src/test/java/org/apache/isis/viewer/wicket/viewer/app/wicket/AuthenticatedWebSessionForIsis_Instantiation.java
@@ -55,7 +55,7 @@ public class AuthenticatedWebSessionForIsis_Instantiation {
         new AuthenticatedWebSessionForIsis(stubRequest);
     }
 
-    @Test(expected = IllegalArgumentException.class)
+    @Test(expected = Exception.class)
     public void requestMustBeProvided() {
         new AuthenticatedWebSessionForIsis(null);
     }
diff --git 
a/core/viewer-wicket-impl/src/test/java/org/apache/isis/viewer/wicket/viewer/pages/PageClassListDefault_RegistrationAndCaching.java
 
b/core/viewer-wicket-impl/src/test/java/org/apache/isis/viewer/wicket/viewer/pages/PageClassListDefault_RegistrationAndCaching.java
index b482435..1898edd 100644
--- 
a/core/viewer-wicket-impl/src/test/java/org/apache/isis/viewer/wicket/viewer/pages/PageClassListDefault_RegistrationAndCaching.java
+++ 
b/core/viewer-wicket-impl/src/test/java/org/apache/isis/viewer/wicket/viewer/pages/PageClassListDefault_RegistrationAndCaching.java
@@ -62,7 +62,7 @@ public class PageClassListDefault_RegistrationAndCaching {
         registryImpl.registerPage(PageType.ACTION_PROMPT, 
TestingActionPage.class);
 
         final Class<? extends Page> pageClass = 
registryImpl.getPageClass(PageType.ACTION_PROMPT);
-        assertThat(pageClass, is(instanceOf(TestingActionPage.class)));
+        assertThat(pageClass, 
is(org.hamcrest.Matchers.equalTo(TestingActionPage.class)));
     }
 
 }
diff --git 
a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/about/JarManifestModel.java
 
b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/about/JarManifestModel.java
index d78a290..c2187d0 100644
--- 
a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/about/JarManifestModel.java
+++ 
b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/about/JarManifestModel.java
@@ -35,6 +35,7 @@ import com.google.common.base.CharMatcher;
 import com.google.common.base.Splitter;
 import com.google.common.collect.Lists;
 
+import org.apache.isis.applib.internal.context._Context;
 import org.apache.isis.core.commons.lang.CloseableExtensions;
 import org.apache.isis.viewer.wicket.model.models.ModelAbstract;
 
@@ -75,7 +76,7 @@ public class JarManifestModel extends 
ModelAbstract<JarManifestModel> {
         
         Enumeration<?> resEnum;
         try {
-            resEnum = 
Thread.currentThread().getContextClassLoader().getResources(JarFile.MANIFEST_NAME);
+            resEnum = 
_Context.getDefaultClassLoader().getResources(JarFile.MANIFEST_NAME);
         } catch (IOException e) {
             return;
         }

-- 
To stop receiving notification emails like this one, please contact
ahu...@apache.org.

Reply via email to