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