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 2016/06/09 07:08:50 UTC

[02/26] isis git commit: ISIS-1427: ServicesInjector additional lookup methods, and fail-fast lookup.

ISIS-1427: ServicesInjector additional lookup methods, and fail-fast lookup.


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

Branch: refs/heads/ISIS-1427
Commit: 5207999cbe92ad668c0510f61fd980f6f5fd74de
Parents: fd8613d
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Tue Jun 7 19:28:17 2016 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Tue Jun 7 19:28:17 2016 +0100

----------------------------------------------------------------------
 .../metamodel/services/ServicesInjector.java    | 42 ++++++++++++++++++--
 1 file changed, 39 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/5207999c/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjector.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjector.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjector.java
index 356d6af..c3c436b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjector.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjector.java
@@ -36,18 +36,21 @@ import com.google.common.collect.ListMultimap;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 
-import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.services.exceprecog.ExceptionRecognizer;
 import org.apache.isis.applib.services.publish.PublishingService;
+import org.apache.isis.core.commons.authentication.AuthenticationSession;
+import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
+import org.apache.isis.core.commons.authentication.MessageBroker;
 import org.apache.isis.core.commons.components.ApplicationScopedComponent;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 import org.apache.isis.core.commons.util.ToString;
+import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
+import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
 import org.apache.isis.core.metamodel.exceptions.MetaModelException;
 import org.apache.isis.core.metamodel.services.configinternal.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
@@ -446,6 +449,15 @@ public class ServicesInjector implements ApplicationScopedComponent {
         return !services.isEmpty() ? services.get(0) : null;
     }
 
+    @Programmatic
+    public <T> T lookupServiceElseFail(final Class<T> serviceClass) {
+        T service = lookupService(serviceClass);
+        if(service == null) {
+            throw new IllegalStateException("Could not locate service of type '" + serviceClass + "'");
+        }
+        return service;
+    }
+
     /**
      * Returns all domain services implementing the requested type, in the order
      * that they were registered in <tt>isis.properties</tt>.
@@ -492,7 +504,7 @@ public class ServicesInjector implements ApplicationScopedComponent {
 
     //endregion
 
-    //region > convenience lookups
+    //region > convenience lookups (singletons only)
 
     private SpecificationLoader specificationLoader;
 
@@ -535,6 +547,30 @@ public class ServicesInjector implements ApplicationScopedComponent {
                 : (configurationServiceInternal = lookupService(ConfigurationServiceInternal.class));
     }
 
+    /**
+     * Cannot be cached because is a derived property, not a registered service.
+     */
+    @Programmatic
+    public AuthenticationSession getAuthenticationSession() {
+        return getAuthenticationSessionProvider().getAuthenticationSession();
+    }
+
+    /**
+     * Cannot be cached because is a derived property, not a registered service.
+     */
+    @Programmatic
+    public MessageBroker getMessageBroker() {
+        return getAuthenticationSession().getMessageBroker();
+    }
+
+    /**
+     * Cannot be cached because is a derived property, not a registered service.
+     */
+    @Programmatic
+    public DeploymentCategory getDeploymentCategory() {
+        return getDeploymentCategoryProvider().getDeploymentCategory();
+    }
+
     //endregion
 
 }