You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2018/05/17 12:35:15 UTC
[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 Huber <ah...@apache.org>
AuthorDate: 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
ahuber@apache.org.