[isis] branch master updated: ISIS-1929: gives IsisWicketApplication precedence when registering CL
This is an automated email from the ASF dual-hosted git repository. ahuber pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/isis.git The following commit(s) were added to refs/heads/master by this push: new 2a7c035 ISIS-1929: gives IsisWicketApplication precedence when registering CL 2a7c035 is described below commit 2a7c0356b246b3922c292d8a4904bcb8c4117676 Author: Andi HuberAuthorDate: Thu May 17 14:35:10 2018 +0200 ISIS-1929: gives IsisWicketApplication precedence when registering CL Task-Url: https://issues.apache.org/jira/browse/ISIS-1929 --- .../org/apache/isis/applib/internal/context/_Context.java | 14 ++ .../restfulobjects/server/RestfulObjectsApplication.java | 3 ++- .../isis/viewer/wicket/viewer/IsisWicketApplication.java | 2 +- 3 files changed, 13 insertions(+), 6 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 c600225..93bf27c 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 @@ -207,11 +207,17 @@ public final class _Context { /** * Set by the framework's bootstrapping mechanism. +* @param classLoader the framework's default class loader +* @param override whether to override if already registered */ - public static void setDefaultClassLoaderIfAbsent(ClassLoader classLoader) { - if(_Context.getIfAny(ClassLoader.class)==null) { - _Context.putSingleton(ClassLoader.class, Objects.requireNonNull(classLoader, "classLoader required")); -} + public static void setDefaultClassLoader(ClassLoader classLoader, boolean override) { + final boolean alreadyRegistered = _Context.getIfAny(ClassLoader.class)!=null; + if(!alreadyRegistered || override) { + // let writes to the map be atomic + synchronized (singletonMap) { + singletonMap.put(toKey(ClassLoader.class), Objects.requireNonNull(classLoader, "classLoader required")); + } + } } // -- CLASS LOADING SHORTCUTS diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/RestfulObjectsApplication.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/RestfulObjectsApplication.java index e82d6f0..3f5864a 100644 --- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/RestfulObjectsApplication.java +++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/RestfulObjectsApplication.java @@ -49,7 +49,8 @@ public class RestfulObjectsApplication extends AbstractJaxRsApplication { addClass(SwaggerSpecResource.class); - _Context.setDefaultClassLoaderIfAbsent(this.getClass().getClassLoader()); +//override=false, allows for IsisWicketApplication to take precedence +_Context.setDefaultClassLoader(this.getClass().getClassLoader(), /*override*/false); addSingleton(IsisJaxrsServerPlugin.get().newRestfulObjectsJaxbWriterForXml()); 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 4984b24..17719fa 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 @@ -337,7 +337,7 @@ public class IsisWicketApplication try { super.init(); - _Context.setDefaultClassLoaderIfAbsent(this.getClass().getClassLoader()); +_Context.setDefaultClassLoader(this.getClass().getClassLoader(), true); futures = startBackgroundInitializationThreads(); -- To stop receiving notification emails like this one, please contact ahu...@apache.org.
[isis] branch master updated: ISIS-1929: Lets RestfulObjectsApplication also register the default CL
This is an automated email from the ASF dual-hosted git repository. ahuber pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/isis.git The following commit(s) were added to refs/heads/master by this push: new 8f13a87 ISIS-1929: Lets RestfulObjectsApplication also register the default CL 8f13a87 is described below commit 8f13a87c7e869e660346e04a511c05a45af97b25 Author: Andi HuberAuthorDate: Thu May 17 13:07:20 2018 +0200 ISIS-1929: Lets RestfulObjectsApplication also register the default CL Who ever get bootstrapped first, RestfulObjectsApplication or IsisWicketApplication, will regesiter the frameworks default class-loader. Task-Url: https://issues.apache.org/jira/browse/ISIS-1929 --- .../org/apache/isis/applib/internal/context/_Context.java | 11 ++- .../restfulobjects/server/RestfulObjectsApplication.java | 2 ++ .../isis/viewer/wicket/viewer/IsisWicketApplication.java | 2 +- 3 files changed, 13 insertions(+), 2 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 85278bc..c600225 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 @@ -198,13 +198,22 @@ public final class _Context { Thread.currentThread()::getContextClassLoader; /** -* Will be set by the framework's bootstrapping mechanism if required. +* As set by the framework's bootstrapping mechanism. * @return the default class loader */ public static @NotNull ClassLoader getDefaultClassLoader() { return getOrElse(ClassLoader.class, FALLBACK_CLASSLOADER); } + /** +* Set by the framework's bootstrapping mechanism. +*/ + public static void setDefaultClassLoaderIfAbsent(ClassLoader classLoader) { + if(_Context.getIfAny(ClassLoader.class)==null) { + _Context.putSingleton(ClassLoader.class, Objects.requireNonNull(classLoader, "classLoader required")); +} + } + // -- CLASS LOADING SHORTCUTS /** diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/RestfulObjectsApplication.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/RestfulObjectsApplication.java index f42ebbd..e82d6f0 100644 --- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/RestfulObjectsApplication.java +++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/RestfulObjectsApplication.java @@ -18,6 +18,7 @@ */ package org.apache.isis.viewer.restfulobjects.server; +import org.apache.isis.applib.internal.context._Context; import org.apache.isis.viewer.restfulobjects.rendering.service.acceptheader.AcceptHeaderServiceForRest; import org.apache.isis.viewer.restfulobjects.server.mappers.ExceptionMapperForObjectNotFound; import org.apache.isis.viewer.restfulobjects.server.mappers.ExceptionMapperForRestfulObjectsApplication; @@ -48,6 +49,7 @@ public class RestfulObjectsApplication extends AbstractJaxRsApplication { addClass(SwaggerSpecResource.class); + _Context.setDefaultClassLoaderIfAbsent(this.getClass().getClassLoader()); addSingleton(IsisJaxrsServerPlugin.get().newRestfulObjectsJaxbWriterForXml()); 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 9cc168b..4984b24 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 @@ -337,7 +337,7 @@ public class IsisWicketApplication try { super.init(); -_Context.putSingleton(ClassLoader.class, this.getClass().getClassLoader()); + _Context.setDefaultClassLoaderIfAbsent(this.getClass().getClassLoader()); futures = startBackgroundInitializationThreads(); -- To stop receiving notification emails like this one, please contact ahu...@apache.org.