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/03/06 06:04:47 UTC

[isis] branch master updated: ISIS-1841 applib: makes core-plugin scanning more verbose on failure

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 de11fe0  ISIS-1841 applib: makes core-plugin scanning more verbose on failure
de11fe0 is described below

commit de11fe0fb527fd858ad291d8a595ec888127997d
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Mar 6 07:04:42 2018 +0100

    ISIS-1841 applib: makes core-plugin scanning more verbose on failure
---
 .../isis/applib/internal/context/_Plugin.java      | 26 ++++++++++++
 .../services/eventbus/EventBusImplementation.java  | 47 ++++++++++++++--------
 .../core/metamodel/IsisJdoMetamodelPlugin.java     |  7 ++--
 .../isis/core/metamodel/IsisJdoRuntimePlugin.java  |  5 +--
 .../services/eventbus/EventBusServiceDefault.java  | 10 +----
 .../applib/client/UriBuilderPlugin.java            |  7 ++--
 .../server/IsisJaxrsServerPlugin.java              |  7 ++--
 7 files changed, 68 insertions(+), 41 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/internal/context/_Plugin.java b/core/applib/src/main/java/org/apache/isis/applib/internal/context/_Plugin.java
index 395c1e0..65c149a 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/internal/context/_Plugin.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/internal/context/_Plugin.java
@@ -24,7 +24,10 @@ import java.util.ServiceLoader;
 import java.util.Set;
 import java.util.function.Function;
 import java.util.function.Supplier;
+import java.util.stream.Collectors;
 
+import org.apache.isis.applib.NonRecoverableException;
+import org.apache.isis.applib.internal.base._NullSafe;
 import org.apache.isis.applib.internal.collections._Sets;
 
 /**
@@ -94,8 +97,31 @@ public final class _Plugin {
 			
 		});
 		
+	}
+	
+	// -- CONVENIENT EXCEPTION FACTORIES
+
+	public static <T> NonRecoverableException ambiguityNonRecoverable(
+			Class<T> pluginInterfaceClass, 
+			Set<? extends T> ambigousPlugins) {
 		
+		return new NonRecoverableException(
+				String.format("Ambigous plugins implementing %s found on class path.\n{%s}", 
+						pluginInterfaceClass.getName(),
+						
+						_NullSafe.stream(ambigousPlugins)
+						.map(Object::getClass)
+						.map(Class::getName)
+						.collect(Collectors.joining(", "))
+						
+						));
+	}
+
+	public static NonRecoverableException absenceNonRecoverable(Class<?> pluginInterfaceClass) {
 		
+		return new NonRecoverableException(
+				String.format("No plugin implementing %s found on class path.", 
+						pluginInterfaceClass.getName() ));
 	}
 	
 }
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/EventBusImplementation.java b/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/EventBusImplementation.java
index 6b9df50..0f2fb9e 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/EventBusImplementation.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/EventBusImplementation.java
@@ -16,6 +16,7 @@
  */
 package org.apache.isis.applib.services.eventbus;
 
+import org.apache.isis.applib.internal.context._Plugin;
 
 /**
  * Common interface for all Event Bus implementations.
@@ -31,22 +32,34 @@ package org.apache.isis.applib.services.eventbus;
  */
 public interface EventBusImplementation {
 
-    /**
-     * For {@link org.apache.isis.applib.services.eventbus.EventBusService} to call on
-     * {@link org.apache.isis.applib.services.eventbus.EventBusService#register(Object)}.
-     */
-    void register(Object domainService);
-
-    /**
-     * For {@link org.apache.isis.applib.services.eventbus.EventBusService} to call on
-     * {@link org.apache.isis.applib.services.eventbus.EventBusService#unregister(Object)}.
-     */
-    void unregister(Object domainService);
-
-    /**
-     * For {@link org.apache.isis.applib.services.eventbus.EventBusService} to call on
-     * {@link org.apache.isis.applib.services.eventbus.EventBusService#post(Object)}.
-     */
-    void post(Object event);
+	/**
+	 * For {@link org.apache.isis.applib.services.eventbus.EventBusService} to call on
+	 * {@link org.apache.isis.applib.services.eventbus.EventBusService#register(Object)}.
+	 */
+	void register(Object domainService);
+
+	/**
+	 * For {@link org.apache.isis.applib.services.eventbus.EventBusService} to call on
+	 * {@link org.apache.isis.applib.services.eventbus.EventBusService#unregister(Object)}.
+	 */
+	void unregister(Object domainService);
+
+	/**
+	 * For {@link org.apache.isis.applib.services.eventbus.EventBusService} to call on
+	 * {@link org.apache.isis.applib.services.eventbus.EventBusService#post(Object)}.
+	 */
+	void post(Object event);
+
+	// -- LOOKUP
+
+	public static EventBusImplementation get() {
+		return _Plugin.getOrElse(EventBusImplementation.class, 
+				ambigousPlugins->{
+					throw _Plugin.ambiguityNonRecoverable(EventBusImplementation.class, ambigousPlugins); 
+				}, 
+				()->{
+					throw _Plugin.absenceNonRecoverable(EventBusImplementation.class);
+				});
+	}
 
 }
\ No newline at end of file
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisJdoMetamodelPlugin.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisJdoMetamodelPlugin.java
index 41f2a24..fa79f1d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisJdoMetamodelPlugin.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisJdoMetamodelPlugin.java
@@ -4,7 +4,6 @@ import java.lang.reflect.Method;
 
 import javax.annotation.Nullable;
 
-import org.apache.isis.applib.NonRecoverableException;
 import org.apache.isis.applib.internal.context._Plugin;
 
 public interface IsisJdoMetamodelPlugin {
@@ -29,11 +28,11 @@ public interface IsisJdoMetamodelPlugin {
 	public static IsisJdoMetamodelPlugin get() {
 		return _Plugin.getOrElse(IsisJdoMetamodelPlugin.class, 
 				ambigousPlugins->{
-					throw new NonRecoverableException("Ambigous plugins implementing IsisJdoMetamodelPlugin found on class path.");
+					throw _Plugin.ambiguityNonRecoverable(IsisJdoMetamodelPlugin.class, ambigousPlugins); 
 				}, 
 				()->{
-					throw new NonRecoverableException("No plugin implementing IsisJdoMetamodelPlugin found on class path.");
-				}); 
+					throw _Plugin.absenceNonRecoverable(IsisJdoMetamodelPlugin.class);
+				});
 	}
 	
 }
diff --git a/core/runtime/src/main/java/org/apache/isis/core/metamodel/IsisJdoRuntimePlugin.java b/core/runtime/src/main/java/org/apache/isis/core/metamodel/IsisJdoRuntimePlugin.java
index cf028b8..a40cad1 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/metamodel/IsisJdoRuntimePlugin.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/metamodel/IsisJdoRuntimePlugin.java
@@ -1,6 +1,5 @@
 package org.apache.isis.core.metamodel;
 
-import org.apache.isis.applib.NonRecoverableException;
 import org.apache.isis.applib.internal.context._Plugin;
 import org.apache.isis.core.metamodel.services.configinternal.ConfigurationServiceInternal;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
@@ -16,10 +15,10 @@ public interface IsisJdoRuntimePlugin {
 	public static IsisJdoRuntimePlugin get() {
 		return _Plugin.getOrElse(IsisJdoRuntimePlugin.class, 
 				ambigousPlugins->{
-					throw new NonRecoverableException("Ambigous plugins implementing IsisJdoRuntimePlugin found on class path.");
+					throw _Plugin.ambiguityNonRecoverable(IsisJdoRuntimePlugin.class, ambigousPlugins); 
 				}, 
 				()->{
-					throw new NonRecoverableException("No plugin implementing IsisJdoRuntimePlugin found on class path.");
+					throw _Plugin.absenceNonRecoverable(IsisJdoRuntimePlugin.class);
 				}); 
 	}
 
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/eventbus/EventBusServiceDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/eventbus/EventBusServiceDefault.java
index 8733648..249d8a1 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/eventbus/EventBusServiceDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/eventbus/EventBusServiceDefault.java
@@ -23,7 +23,6 @@ import javax.enterprise.context.RequestScoped;
 
 import org.apache.isis.applib.NonRecoverableException;
 import org.apache.isis.applib.annotation.Programmatic;
-import org.apache.isis.applib.internal.context._Plugin;
 import org.apache.isis.applib.services.eventbus.EventBusImplementation;
 import org.apache.isis.applib.services.eventbus.EventBusService;
 import org.apache.isis.applib.services.registry.ServiceRegistry;
@@ -135,14 +134,7 @@ public abstract class EventBusServiceDefault extends EventBusService {
     	
     	if( "plugin".equals(implementation) || "auto".equals(implementation) ) {
     		
-    		return _Plugin.getOrElse(EventBusImplementation.class, 
-        			ambiguousPlugins->{
-        				throw new NonRecoverableException(
-        		                "Ambiguity: Could not instantiate event bus implementation '" + implementation + "'");
-        			}, ()->{
-        				throw new NonRecoverableException(
-        		                "Missing Plugin: Could not instantiate event bus implementation '" + implementation + "'");
-        			});
+    		return EventBusImplementation.get();
     		
     	} else if("guava".equals(implementation)) {
             // legacy of return new EventBusImplementationForGuava();
diff --git a/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/client/UriBuilderPlugin.java b/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/client/UriBuilderPlugin.java
index 63bf33b..baf85ac 100644
--- a/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/client/UriBuilderPlugin.java
+++ b/core/viewer-restfulobjects-applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/client/UriBuilderPlugin.java
@@ -2,7 +2,6 @@ package org.apache.isis.viewer.restfulobjects.applib.client;
 
 import javax.ws.rs.core.UriBuilder;
 
-import org.apache.isis.applib.NonRecoverableException;
 import org.apache.isis.applib.internal.context._Plugin;
 
 public interface UriBuilderPlugin {
@@ -16,11 +15,11 @@ public interface UriBuilderPlugin {
 	public static UriBuilderPlugin get() {
 		return _Plugin.getOrElse(UriBuilderPlugin.class, 
 				ambigousPlugins->{
-					throw new NonRecoverableException("Ambigous plugins implementing UriBuilderPlugin found on class path.");
+					throw _Plugin.ambiguityNonRecoverable(UriBuilderPlugin.class, ambigousPlugins); 
 				}, 
 				()->{
-					throw new NonRecoverableException("No plugin implementing UriBuilderPlugin found on class path.");
-				}); 
+					throw _Plugin.absenceNonRecoverable(UriBuilderPlugin.class);
+				});
 	}
 	
 }
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/IsisJaxrsServerPlugin.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/IsisJaxrsServerPlugin.java
index c09281d..5eafa72 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/IsisJaxrsServerPlugin.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/IsisJaxrsServerPlugin.java
@@ -1,6 +1,5 @@
 package org.apache.isis.viewer.restfulobjects.server;
 
-import org.apache.isis.applib.NonRecoverableException;
 import org.apache.isis.applib.internal.context._Plugin;
 import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.HttpStatusCode;
 
@@ -17,11 +16,11 @@ public interface IsisJaxrsServerPlugin {
 	public static IsisJaxrsServerPlugin get() {
 		return _Plugin.getOrElse(IsisJaxrsServerPlugin.class, 
 				ambigousPlugins->{
-					throw new NonRecoverableException("Ambigous plugins implementing IsisJaxrsServerPlugin found on class path.");
+					throw _Plugin.ambiguityNonRecoverable(IsisJaxrsServerPlugin.class, ambigousPlugins); 
 				}, 
 				()->{
-					throw new NonRecoverableException("No plugin implementing IsisJaxrsServerPlugin found on class path.");
-				}); 
+					throw _Plugin.absenceNonRecoverable(IsisJaxrsServerPlugin.class);
+				});
 	}
 
 }

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