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 2019/12/07 13:06:59 UTC

[isis] 02/02: ISIS-2216: further fix for disabled swagger menu service

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

danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit afb4339395697dcf90e058b9f3e805405d42d71b
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Sat Dec 7 13:02:07 2019 +0000

    ISIS-2216: further fix for disabled swagger menu service
    
    Need to lookup @Service by Id (not necessarily a @DomainService).
---
 .../apache/isis/applib/services/registry/ServiceRegistry.java  |  8 +++++---
 .../isis/applib/services/swagger/SwaggerServiceMenu.java       |  7 +++++--
 .../org/apache/isis/commons/internal/ioc/IocContainer.java     |  2 ++
 .../isis/commons/internal/ioc/spring/IocContainerSpring.java   | 10 +++++++++-
 .../org/apache/isis/config/beans/IsisBeanTypeRegistry.java     |  2 +-
 .../metamodel/services/registry/ServiceRegistryDefault.java    |  6 ++++++
 .../org/apache/isis/metamodel/ServiceRegistry_forTesting.java  |  5 +++++
 7 files changed, 33 insertions(+), 7 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/registry/ServiceRegistry.java b/core/applib/src/main/java/org/apache/isis/applib/services/registry/ServiceRegistry.java
index f319546..e0549e4 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/registry/ServiceRegistry.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/registry/ServiceRegistry.java
@@ -45,7 +45,7 @@ public interface ServiceRegistry {
 
 
     /**
-     * Obtains a Bin container containing any matching instances for the given required type 
+     * Obtains a {@link Can} container containing any matching instances for the given required type
      * and additional required qualifiers. 
      * @param type
      * @param qualifiers
@@ -55,7 +55,7 @@ public interface ServiceRegistry {
     public <T> Can<T> select(Class<T> type, Annotation[] qualifiers);
 
     /**
-     * Obtains a Bin container containing any matching instances for the given required type. 
+     * Obtains a {@link Can} container containing any matching instances for the given required type.
      * @param type
      * @return non-null
      * 
@@ -90,12 +90,14 @@ public interface ServiceRegistry {
      *   
      * @param id - corresponds to the ObjectSpecificationId of the bean's type
      */
-    public default ManagedBeanAdapter lookupRegisteredBeanByNameElseFail(String id) {
+    public default ManagedBeanAdapter lookupRegisteredBeanByIdElseFail(String id) {
         return lookupRegisteredBeanById(id).orElseThrow(
                 ()->_Exceptions.unrecoverable(
                         "Failed to lookup BeanAdapter by id '" + id + "'")); 
     }
 
+    public Optional<?> lookupBeanById(final String id);
+
     /**
      * Returns a domain service implementing the requested type.
      * <p>
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/swagger/SwaggerServiceMenu.java b/core/applib/src/main/java/org/apache/isis/applib/services/swagger/SwaggerServiceMenu.java
index 964f915..3a23019 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/swagger/SwaggerServiceMenu.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/swagger/SwaggerServiceMenu.java
@@ -18,6 +18,8 @@
  */
 package org.apache.isis.applib.services.swagger;
 
+import java.util.Optional;
+
 import javax.inject.Inject;
 import javax.inject.Named;
 
@@ -118,9 +120,10 @@ public class SwaggerServiceMenu {
     // -- HELPER
     
     private String disableReasonWhenRequiresROViewer() {
-        return serviceRegistry.lookupRegisteredBeanById("isisRoViewer.WebModuleRestfulObjects").isPresent()
+        final Optional<?> moduleIfAny = serviceRegistry.lookupBeanById("isisRoViewer.WebModuleRestfulObjects");
+        return moduleIfAny.isPresent()
                 ? null
-                        : "RestfulObjects viewer is not configured";
+                : "RestfulObjects viewer is not configured";
     }
     
     
diff --git a/core/commons/src/main/java/org/apache/isis/commons/internal/ioc/IocContainer.java b/core/commons/src/main/java/org/apache/isis/commons/internal/ioc/IocContainer.java
index 1f178bf..aecd551 100644
--- a/core/commons/src/main/java/org/apache/isis/commons/internal/ioc/IocContainer.java
+++ b/core/commons/src/main/java/org/apache/isis/commons/internal/ioc/IocContainer.java
@@ -38,6 +38,8 @@ public interface IocContainer {
 
     Stream<ManagedBeanAdapter> streamAllBeans();
 
+    Optional<?> lookupById(final String id);
+
     <T> Can<T> select(Class<T> requiredType);
     
     <T> Can<T> select(Class<T> requiredType, Set<Annotation> qualifiersRequired);
diff --git a/core/commons/src/main/java/org/apache/isis/commons/internal/ioc/spring/IocContainerSpring.java b/core/commons/src/main/java/org/apache/isis/commons/internal/ioc/spring/IocContainerSpring.java
index c10fdf7..63ce48b 100644
--- a/core/commons/src/main/java/org/apache/isis/commons/internal/ioc/spring/IocContainerSpring.java
+++ b/core/commons/src/main/java/org/apache/isis/commons/internal/ioc/spring/IocContainerSpring.java
@@ -19,6 +19,7 @@
 package org.apache.isis.commons.internal.ioc.spring;
 
 import java.lang.annotation.Annotation;
+import java.util.Optional;
 import java.util.Set;
 import java.util.stream.Stream;
 
@@ -72,7 +73,14 @@ public class IocContainerSpring implements IocContainer {
 
 
     }
-    
+
+    @Override
+    public Optional<?> lookupById(String id) {
+        return springContext.containsBean(id)
+                ? Optional.of(springContext.getBean(id))
+                : Optional.empty();
+    }
+
     @Override
     public <T> Can<T> select(final Class<T> requiredType) {
         requires(requiredType, "requiredType");
diff --git a/core/config/src/main/java/org/apache/isis/config/beans/IsisBeanTypeRegistry.java b/core/config/src/main/java/org/apache/isis/config/beans/IsisBeanTypeRegistry.java
index 15e715e..45a5f35 100644
--- a/core/config/src/main/java/org/apache/isis/config/beans/IsisBeanTypeRegistry.java
+++ b/core/config/src/main/java/org/apache/isis/config/beans/IsisBeanTypeRegistry.java
@@ -53,7 +53,7 @@ import lombok.val;
 import lombok.extern.log4j.Log4j2;
 
 /**
- * Holds the set of domain services, persistent entities and fixture scripts.services etc.
+ * Holds the set of domain services, persistent entities and fixture scripts etc.
  * @since 2.0
  */
 @NoArgsConstructor @Log4j2
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/registry/ServiceRegistryDefault.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/registry/ServiceRegistryDefault.java
index 8d0bdcc..652a80a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/registry/ServiceRegistryDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/registry/ServiceRegistryDefault.java
@@ -21,6 +21,7 @@ package org.apache.isis.metamodel.services.registry;
 
 import java.lang.annotation.Annotation;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Optional;
 import java.util.stream.Stream;
 
@@ -63,6 +64,11 @@ public final class ServiceRegistryDefault implements ServiceRegistry {
     }
 
     @Override
+    public Optional<?> lookupBeanById(final String id) {
+        return isisSystemEnvironment.getIocContainer().lookupById(id);
+    }
+
+    @Override
     public Stream<ManagedBeanAdapter> streamRegisteredBeans() {
         return managedBeansById.get().values().stream();
     }
diff --git a/core/metamodel/src/test/java/org/apache/isis/metamodel/ServiceRegistry_forTesting.java b/core/metamodel/src/test/java/org/apache/isis/metamodel/ServiceRegistry_forTesting.java
index 4d0d508..3ddb912 100644
--- a/core/metamodel/src/test/java/org/apache/isis/metamodel/ServiceRegistry_forTesting.java
+++ b/core/metamodel/src/test/java/org/apache/isis/metamodel/ServiceRegistry_forTesting.java
@@ -93,6 +93,11 @@ class ServiceRegistry_forTesting implements ServiceRegistry {
         throw _Exceptions.notImplemented();
     }
 
+    @Override
+    public Optional<?> lookupBeanById(String id) {
+        throw _Exceptions.notImplemented();
+    }
+
 
     // -- HELPER