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 2019/05/11 07:41:56 UTC
[isis] branch 2112_SpringBoot updated: ISIS-2112: further fixing
'metamodel' tests
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch 2112_SpringBoot
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/2112_SpringBoot by this push:
new c4e03ee ISIS-2112: further fixing 'metamodel' tests
c4e03ee is described below
commit c4e03eef567c7c38d084307a4b84552517fd459e
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sat May 11 09:41:47 2019 +0200
ISIS-2112: further fixing 'metamodel' tests
... by provisioning a minimal MetaModelContext for testing
Task-Url: https://issues.apache.org/jira/browse/ISIS-2112
---
.../isis/core/metamodel/MetaModelContext.java | 7 +-
.../metamodel/MetaModelContext_forTesting.java | 120 +++++++
.../core/metamodel/MetaModelContext_usingCDI.java | 139 +++++++++
.../metamodel/MetaModelContext_usingSpring.java | 139 +++++++++
.../isis/core/metamodel/MetaModelContexts.java | 346 +--------------------
...esting.java => ServiceInjector_forTesting.java} | 7 +-
...esting.java => ServiceRegistry_forTesting.java} | 16 +-
.../services/events/MetamodelEventService.java | 5 +-
.../metamodel/facets/AbstractFacetFactoryTest.java | 8 -
.../ValueSemanticsProviderAbstractTestCase.java | 22 +-
.../SpecificationLoaderTestAbstract.java | 4 -
11 files changed, 430 insertions(+), 383 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/MetaModelContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/MetaModelContext.java
index 01a5ee8..aa8c13a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/MetaModelContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/MetaModelContext.java
@@ -29,8 +29,7 @@ import org.apache.isis.applib.services.xactn.TransactionService;
import org.apache.isis.applib.services.xactn.TransactionState;
import org.apache.isis.commons.internal.context._Context;
import org.apache.isis.config.IsisConfiguration;
-import org.apache.isis.core.metamodel.MetaModelContexts.MetaModelContextBean;
-import org.apache.isis.core.metamodel.MetaModelContexts.MetaModelContextBean.MetaModelContextBeanBuilder;
+import org.apache.isis.core.metamodel.MetaModelContext_forTesting.MetaModelContext_forTestingBuilder;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -95,8 +94,8 @@ public interface MetaModelContext {
_Context.putSingleton(MetaModelContext.class, metaModelContext);
}
- static MetaModelContextBeanBuilder builder() {
- return MetaModelContextBean.builder();
+ static MetaModelContext_forTestingBuilder builder() {
+ return MetaModelContext_forTesting.builder();
}
// -- DELEGATION - FOR THOSE THAT IMPLEMENT THROUGH DELEGATION
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/MetaModelContext_forTesting.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/MetaModelContext_forTesting.java
new file mode 100644
index 0000000..3f38a9f
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/MetaModelContext_forTesting.java
@@ -0,0 +1,120 @@
+package org.apache.isis.core.metamodel;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Stream;
+
+import org.apache.isis.applib.services.i18n.TranslationService;
+import org.apache.isis.applib.services.inject.ServiceInjector;
+import org.apache.isis.applib.services.registry.ServiceRegistry;
+import org.apache.isis.applib.services.repository.RepositoryService;
+import org.apache.isis.applib.services.title.TitleService;
+import org.apache.isis.applib.services.xactn.TransactionService;
+import org.apache.isis.applib.services.xactn.TransactionState;
+import org.apache.isis.commons.internal.base._NullSafe;
+import org.apache.isis.commons.internal.collections._Lists;
+import org.apache.isis.config.IsisConfiguration;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
+import org.apache.isis.core.metamodel.services.events.MetamodelEventService;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
+import org.apache.isis.core.security.authentication.AuthenticationSession;
+import org.apache.isis.core.security.authentication.AuthenticationSessionProvider;
+import org.apache.isis.core.security.authentication.manager.AuthenticationManager;
+import org.apache.isis.core.security.authorization.manager.AuthorizationManager;
+
+import lombok.Builder;
+import lombok.Getter;
+import lombok.Singular;
+import lombok.val;
+
+@Builder @Getter
+final class MetaModelContext_forTesting implements MetaModelContext {
+
+ private IsisConfiguration configuration;
+
+ private ObjectAdapterProvider objectAdapterProvider;
+
+ @Builder.Default
+ private ServiceInjector serviceInjector = new ServiceInjector_forTesting();
+
+ @Builder.Default
+ private ServiceRegistry serviceRegistry = new ServiceRegistry_forTesting();
+
+ @Builder.Default
+ private MetamodelEventService metamodelEventService =
+ MetamodelEventService.builder()
+ .build();
+
+ private SpecificationLoader specificationLoader;
+
+ private AuthenticationSessionProvider authenticationSessionProvider;
+
+ private TranslationService translationService;
+
+ private AuthenticationSession authenticationSession;
+
+ private AuthorizationManager authorizationManager;
+
+ private AuthenticationManager authenticationManager;
+
+ private TitleService titleService;
+
+ private RepositoryService repositoryService;
+
+ private TransactionService transactionService;
+
+ private TransactionState transactionState;
+
+ private Map<String, ObjectAdapter> serviceAdaptersById;
+
+ @Singular
+ private List<Object> singletons;
+
+ @Override
+ public ObjectSpecification getSpecification(Class<?> type) {
+ return specificationLoader.loadSpecification(type);
+ }
+
+ @Override
+ public Stream<ObjectAdapter> streamServiceAdapters() {
+
+ if(serviceAdaptersById==null) {
+ return Stream.empty();
+ }
+ return serviceAdaptersById.values().stream();
+ }
+
+ @Override
+ public ObjectAdapter lookupServiceAdapterById(String serviceId) {
+ if(serviceAdaptersById==null) {
+ return null;
+ }
+ return serviceAdaptersById.get(serviceId);
+ }
+
+ public Stream<Object> streamSingletons() {
+
+ val fields = _Lists.of(
+ configuration,
+ objectAdapterProvider,
+ serviceInjector,
+ serviceRegistry,
+ metamodelEventService,
+ specificationLoader,
+ authenticationSessionProvider,
+ translationService,
+ authenticationSession,
+ authorizationManager,
+ authenticationManager,
+ titleService,
+ repositoryService,
+ transactionService,
+ transactionState);
+
+ return Stream.concat(fields.stream(), getSingletons().stream())
+ .filter(_NullSafe::isPresent);
+ }
+
+}
\ No newline at end of file
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/MetaModelContext_usingCDI.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/MetaModelContext_usingCDI.java
new file mode 100644
index 0000000..764f6f8
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/MetaModelContext_usingCDI.java
@@ -0,0 +1,139 @@
+package org.apache.isis.core.metamodel;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import org.apache.isis.applib.services.i18n.TranslationService;
+import org.apache.isis.applib.services.inject.ServiceInjector;
+import org.apache.isis.applib.services.registry.ServiceRegistry;
+import org.apache.isis.applib.services.repository.RepositoryService;
+import org.apache.isis.applib.services.title.TitleService;
+import org.apache.isis.applib.services.xactn.TransactionService;
+import org.apache.isis.applib.services.xactn.TransactionState;
+import org.apache.isis.commons.internal.base._Lazy;
+import org.apache.isis.commons.internal.cdi._CDI;
+import org.apache.isis.commons.internal.exceptions._Exceptions;
+import org.apache.isis.config.IsisConfiguration;
+import org.apache.isis.config.internal._Config;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
+import org.apache.isis.core.metamodel.services.ServiceUtil;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
+import org.apache.isis.core.security.authentication.AuthenticationSession;
+import org.apache.isis.core.security.authentication.AuthenticationSessionProvider;
+import org.apache.isis.core.security.authentication.manager.AuthenticationManager;
+import org.apache.isis.core.security.authorization.manager.AuthorizationManager;
+
+import lombok.Getter;
+import lombok.val;
+
+class MetaModelContext_usingCDI implements MetaModelContext {
+
+ @Getter(lazy=true)
+ private final IsisConfiguration configuration =
+ _Config.getConfiguration();
+
+ @Getter(lazy=true)
+ private final ObjectAdapterProvider objectAdapterProvider =
+ _CDI.getSingletonElseFail(ObjectAdapterProvider.class);
+
+ @Getter(lazy=true)
+ private final ServiceInjector serviceInjector =
+ _CDI.getSingletonElseFail(ServiceInjector.class);
+
+ @Getter(lazy=true)
+ private final ServiceRegistry serviceRegistry =
+ _CDI.getSingletonElseFail(ServiceRegistry.class);
+
+ @Getter(lazy=true)
+ private final SpecificationLoader specificationLoader =
+ _CDI.getSingletonElseFail(SpecificationLoader.class);
+
+ @Getter(lazy=true)
+ private final AuthenticationSessionProvider authenticationSessionProvider =
+ _CDI.getSingletonElseFail(AuthenticationSessionProvider.class);
+
+ @Getter(lazy=true)
+ private final TranslationService translationService =
+ _CDI.getSingletonElseFail(TranslationService.class);
+
+ @Getter(lazy=true)
+ private final AuthorizationManager authorizationManager =
+ _CDI.getSingletonElseFail(AuthorizationManager.class);
+
+ @Getter(lazy=true)
+ private final AuthenticationManager authenticationManager =
+ _CDI.getSingletonElseFail(AuthenticationManager.class);
+
+ @Getter(lazy=true)
+ private final TitleService titleService =
+ _CDI.getSingletonElseFail(TitleService.class);
+
+// @Getter(lazy=true)
+// private final ObjectAdapterService objectAdapterService =
+// _CDI.getSingletonElseFail(ObjectAdapterService.class);
+
+ @Getter(lazy=true)
+ private final RepositoryService repositoryService =
+ _CDI.getSingletonElseFail(RepositoryService.class);
+
+ @Getter(lazy=true)
+ private final TransactionService transactionService =
+ _CDI.getSingletonElseFail(TransactionService.class);
+
+
+ @Override
+ public final AuthenticationSession getAuthenticationSession() {
+ return getAuthenticationSessionProvider().getAuthenticationSession();
+ }
+
+ @Override
+ public final ObjectSpecification getSpecification(final Class<?> type) {
+ return type != null ? getSpecificationLoader().loadSpecification(type) : null;
+ }
+
+ @Override
+ public final TransactionState getTransactionState() {
+ return getTransactionService().getTransactionState();
+ }
+
+ // -- SERVICE SUPPORT
+
+ @Override
+ public Stream<ObjectAdapter> streamServiceAdapters() {
+ return serviceAdapters.get().values().stream();
+ }
+
+ @Override
+ public ObjectAdapter lookupServiceAdapterById(final String serviceId) {
+ return serviceAdapters.get().get(serviceId);
+ }
+
+
+ // -- HELPER
+
+ private final _Lazy<Map<String, ObjectAdapter>> serviceAdapters = _Lazy.of(this::initServiceAdapters);
+
+ private Map<String, ObjectAdapter> initServiceAdapters() {
+
+ val objectAdapterProvider = getObjectAdapterProvider();
+
+ return getServiceRegistry().streamServices()
+ .map(objectAdapterProvider::adapterFor)
+ .peek(serviceAdapter->{
+ val oid = serviceAdapter.getOid();
+ if(oid.isTransient()) {
+ val msg = "ObjectAdapter for 'Bean' is expected not to be 'transient' " + oid;
+ throw _Exceptions.unrecoverable(msg);
+ }
+ })
+ .collect(Collectors.toMap(ServiceUtil::idOfAdapter, v->v, (o,n)->n, LinkedHashMap::new));
+ }
+
+ // -------------------------------------------------------------------------------
+
+
+ }
\ No newline at end of file
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/MetaModelContext_usingSpring.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/MetaModelContext_usingSpring.java
new file mode 100644
index 0000000..ffededf
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/MetaModelContext_usingSpring.java
@@ -0,0 +1,139 @@
+package org.apache.isis.core.metamodel;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import org.apache.isis.applib.services.i18n.TranslationService;
+import org.apache.isis.applib.services.inject.ServiceInjector;
+import org.apache.isis.applib.services.registry.ServiceRegistry;
+import org.apache.isis.applib.services.repository.RepositoryService;
+import org.apache.isis.applib.services.title.TitleService;
+import org.apache.isis.applib.services.xactn.TransactionService;
+import org.apache.isis.applib.services.xactn.TransactionState;
+import org.apache.isis.commons.internal.base._Lazy;
+import org.apache.isis.commons.internal.exceptions._Exceptions;
+import org.apache.isis.commons.internal.spring._Spring;
+import org.apache.isis.config.IsisConfiguration;
+import org.apache.isis.config.internal._Config;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
+import org.apache.isis.core.metamodel.services.ServiceUtil;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
+import org.apache.isis.core.security.authentication.AuthenticationSession;
+import org.apache.isis.core.security.authentication.AuthenticationSessionProvider;
+import org.apache.isis.core.security.authentication.manager.AuthenticationManager;
+import org.apache.isis.core.security.authorization.manager.AuthorizationManager;
+
+import lombok.Getter;
+import lombok.val;
+
+class MetaModelContext_usingSpring implements MetaModelContext {
+
+ @Getter(lazy=true)
+ private final IsisConfiguration configuration =
+ _Config.getConfiguration();
+
+ @Getter(lazy=true)
+ private final ObjectAdapterProvider objectAdapterProvider =
+ _Spring.getSingletonElseFail(ObjectAdapterProvider.class);
+
+ @Getter(lazy=true)
+ private final ServiceInjector serviceInjector =
+ _Spring.getSingletonElseFail(ServiceInjector.class);
+
+ @Getter(lazy=true)
+ private final ServiceRegistry serviceRegistry =
+ _Spring.getSingletonElseFail(ServiceRegistry.class);
+
+ @Getter(lazy=true)
+ private final SpecificationLoader specificationLoader =
+ _Spring.getSingletonElseFail(SpecificationLoader.class);
+
+ @Getter(lazy=true)
+ private final AuthenticationSessionProvider authenticationSessionProvider =
+ _Spring.getSingletonElseFail(AuthenticationSessionProvider.class);
+
+ @Getter(lazy=true)
+ private final TranslationService translationService =
+ _Spring.getSingletonElseFail(TranslationService.class);
+
+ @Getter(lazy=true)
+ private final AuthorizationManager authorizationManager =
+ _Spring.getSingletonElseFail(AuthorizationManager.class);
+
+ @Getter(lazy=true)
+ private final AuthenticationManager authenticationManager =
+ _Spring.getSingletonElseFail(AuthenticationManager.class);
+
+ @Getter(lazy=true)
+ private final TitleService titleService =
+ _Spring.getSingletonElseFail(TitleService.class);
+
+// @Getter(lazy=true)
+// private final ObjectAdapterService objectAdapterService =
+// _CDI.getSingletonElseFail(ObjectAdapterService.class);
+
+ @Getter(lazy=true)
+ private final RepositoryService repositoryService =
+ _Spring.getSingletonElseFail(RepositoryService.class);
+
+ @Getter(lazy=true)
+ private final TransactionService transactionService =
+ _Spring.getSingletonElseFail(TransactionService.class);
+
+
+ @Override
+ public final AuthenticationSession getAuthenticationSession() {
+ return getAuthenticationSessionProvider().getAuthenticationSession();
+ }
+
+ @Override
+ public final ObjectSpecification getSpecification(final Class<?> type) {
+ return type != null ? getSpecificationLoader().loadSpecification(type) : null;
+ }
+
+ @Override
+ public final TransactionState getTransactionState() {
+ return getTransactionService().getTransactionState();
+ }
+
+ // -- SERVICE SUPPORT
+
+ @Override
+ public Stream<ObjectAdapter> streamServiceAdapters() {
+ return serviceAdapters.get().values().stream();
+ }
+
+ @Override
+ public ObjectAdapter lookupServiceAdapterById(final String serviceId) {
+ return serviceAdapters.get().get(serviceId);
+ }
+
+
+ // -- HELPER
+
+ private final _Lazy<Map<String, ObjectAdapter>> serviceAdapters = _Lazy.of(this::initServiceAdapters);
+
+ private Map<String, ObjectAdapter> initServiceAdapters() {
+
+ val objectAdapterProvider = getObjectAdapterProvider();
+
+ return getServiceRegistry().streamServices()
+ .map(objectAdapterProvider::adapterFor)
+ .peek(serviceAdapter->{
+ val oid = serviceAdapter.getOid();
+ if(oid.isTransient()) {
+ val msg = "ObjectAdapter for 'Bean' is expected not to be 'transient' " + oid;
+ throw _Exceptions.unrecoverable(msg);
+ }
+ })
+ .collect(Collectors.toMap(ServiceUtil::idOfAdapter, v->v, (o,n)->n, LinkedHashMap::new));
+ }
+
+ // -------------------------------------------------------------------------------
+
+
+ }
\ No newline at end of file
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/MetaModelContexts.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/MetaModelContexts.java
index 0d67723..b152aff 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/MetaModelContexts.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/MetaModelContexts.java
@@ -18,359 +18,19 @@
*/
package org.apache.isis.core.metamodel;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-import org.apache.isis.applib.services.i18n.TranslationService;
-import org.apache.isis.applib.services.inject.ServiceInjector;
-import org.apache.isis.applib.services.registry.ServiceRegistry;
-import org.apache.isis.applib.services.repository.RepositoryService;
-import org.apache.isis.applib.services.title.TitleService;
-import org.apache.isis.applib.services.xactn.TransactionService;
-import org.apache.isis.applib.services.xactn.TransactionState;
-import org.apache.isis.commons.internal.base._Lazy;
-import org.apache.isis.commons.internal.base._NullSafe;
-import org.apache.isis.commons.internal.cdi._CDI;
-import org.apache.isis.commons.internal.collections._Lists;
-import org.apache.isis.commons.internal.exceptions._Exceptions;
-import org.apache.isis.commons.internal.spring._Spring;
-import org.apache.isis.config.IsisConfiguration;
-import org.apache.isis.config.internal._Config;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
-import org.apache.isis.core.metamodel.services.ServiceUtil;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.core.security.authentication.AuthenticationSession;
-import org.apache.isis.core.security.authentication.AuthenticationSessionProvider;
-import org.apache.isis.core.security.authentication.manager.AuthenticationManager;
-import org.apache.isis.core.security.authorization.manager.AuthorizationManager;
-
-import lombok.Builder;
-import lombok.Getter;
-import lombok.Singular;
-import lombok.val;
-
/**
*
- * @since 2.0.0-M3
+ * @since 2.0.0
*
*/
public final class MetaModelContexts {
- static class MetaModelContextUsingCDI implements MetaModelContext {
-
- @Getter(lazy=true)
- private final IsisConfiguration configuration =
- _Config.getConfiguration();
-
- @Getter(lazy=true)
- private final ObjectAdapterProvider objectAdapterProvider =
- _CDI.getSingletonElseFail(ObjectAdapterProvider.class);
-
- @Getter(lazy=true)
- private final ServiceInjector serviceInjector =
- _CDI.getSingletonElseFail(ServiceInjector.class);
-
- @Getter(lazy=true)
- private final ServiceRegistry serviceRegistry =
- _CDI.getSingletonElseFail(ServiceRegistry.class);
-
- @Getter(lazy=true)
- private final SpecificationLoader specificationLoader =
- _CDI.getSingletonElseFail(SpecificationLoader.class);
-
- @Getter(lazy=true)
- private final AuthenticationSessionProvider authenticationSessionProvider =
- _CDI.getSingletonElseFail(AuthenticationSessionProvider.class);
-
- @Getter(lazy=true)
- private final TranslationService translationService =
- _CDI.getSingletonElseFail(TranslationService.class);
-
- @Getter(lazy=true)
- private final AuthorizationManager authorizationManager =
- _CDI.getSingletonElseFail(AuthorizationManager.class);
-
- @Getter(lazy=true)
- private final AuthenticationManager authenticationManager =
- _CDI.getSingletonElseFail(AuthenticationManager.class);
-
- @Getter(lazy=true)
- private final TitleService titleService =
- _CDI.getSingletonElseFail(TitleService.class);
-
-// @Getter(lazy=true)
-// private final ObjectAdapterService objectAdapterService =
-// _CDI.getSingletonElseFail(ObjectAdapterService.class);
-
- @Getter(lazy=true)
- private final RepositoryService repositoryService =
- _CDI.getSingletonElseFail(RepositoryService.class);
-
- @Getter(lazy=true)
- private final TransactionService transactionService =
- _CDI.getSingletonElseFail(TransactionService.class);
-
-
- @Override
- public final AuthenticationSession getAuthenticationSession() {
- return getAuthenticationSessionProvider().getAuthenticationSession();
- }
-
- @Override
- public final ObjectSpecification getSpecification(final Class<?> type) {
- return type != null ? getSpecificationLoader().loadSpecification(type) : null;
- }
-
- @Override
- public final TransactionState getTransactionState() {
- return getTransactionService().getTransactionState();
- }
-
- // -- SERVICE SUPPORT
-
- @Override
- public Stream<ObjectAdapter> streamServiceAdapters() {
- return serviceAdapters.get().values().stream();
- }
-
- @Override
- public ObjectAdapter lookupServiceAdapterById(final String serviceId) {
- return serviceAdapters.get().get(serviceId);
- }
-
-
- // -- HELPER
-
- private final _Lazy<Map<String, ObjectAdapter>> serviceAdapters = _Lazy.of(this::initServiceAdapters);
-
- private Map<String, ObjectAdapter> initServiceAdapters() {
-
- val objectAdapterProvider = getObjectAdapterProvider();
-
- return getServiceRegistry().streamServices()
- .map(objectAdapterProvider::adapterFor)
- .peek(serviceAdapter->{
- val oid = serviceAdapter.getOid();
- if(oid.isTransient()) {
- val msg = "ObjectAdapter for 'Bean' is expected not to be 'transient' " + oid;
- throw _Exceptions.unrecoverable(msg);
- }
- })
- .collect(Collectors.toMap(ServiceUtil::idOfAdapter, v->v, (o,n)->n, LinkedHashMap::new));
- }
-
- // -------------------------------------------------------------------------------
-
-
- }
-
final static MetaModelContext usingCDI() {
- return new MetaModelContextUsingCDI();
+ return new MetaModelContext_usingCDI();
}
- static class MetaModelContextUsingSpring implements MetaModelContext {
-
- @Getter(lazy=true)
- private final IsisConfiguration configuration =
- _Config.getConfiguration();
-
- @Getter(lazy=true)
- private final ObjectAdapterProvider objectAdapterProvider =
- _Spring.getSingletonElseFail(ObjectAdapterProvider.class);
-
- @Getter(lazy=true)
- private final ServiceInjector serviceInjector =
- _Spring.getSingletonElseFail(ServiceInjector.class);
-
- @Getter(lazy=true)
- private final ServiceRegistry serviceRegistry =
- _Spring.getSingletonElseFail(ServiceRegistry.class);
-
- @Getter(lazy=true)
- private final SpecificationLoader specificationLoader =
- _Spring.getSingletonElseFail(SpecificationLoader.class);
-
- @Getter(lazy=true)
- private final AuthenticationSessionProvider authenticationSessionProvider =
- _Spring.getSingletonElseFail(AuthenticationSessionProvider.class);
-
- @Getter(lazy=true)
- private final TranslationService translationService =
- _Spring.getSingletonElseFail(TranslationService.class);
-
- @Getter(lazy=true)
- private final AuthorizationManager authorizationManager =
- _Spring.getSingletonElseFail(AuthorizationManager.class);
-
- @Getter(lazy=true)
- private final AuthenticationManager authenticationManager =
- _Spring.getSingletonElseFail(AuthenticationManager.class);
-
- @Getter(lazy=true)
- private final TitleService titleService =
- _Spring.getSingletonElseFail(TitleService.class);
-
-// @Getter(lazy=true)
-// private final ObjectAdapterService objectAdapterService =
-// _CDI.getSingletonElseFail(ObjectAdapterService.class);
-
- @Getter(lazy=true)
- private final RepositoryService repositoryService =
- _Spring.getSingletonElseFail(RepositoryService.class);
-
- @Getter(lazy=true)
- private final TransactionService transactionService =
- _Spring.getSingletonElseFail(TransactionService.class);
-
-
- @Override
- public final AuthenticationSession getAuthenticationSession() {
- return getAuthenticationSessionProvider().getAuthenticationSession();
- }
-
- @Override
- public final ObjectSpecification getSpecification(final Class<?> type) {
- return type != null ? getSpecificationLoader().loadSpecification(type) : null;
- }
-
- @Override
- public final TransactionState getTransactionState() {
- return getTransactionService().getTransactionState();
- }
-
- // -- SERVICE SUPPORT
-
- @Override
- public Stream<ObjectAdapter> streamServiceAdapters() {
- return serviceAdapters.get().values().stream();
- }
-
- @Override
- public ObjectAdapter lookupServiceAdapterById(final String serviceId) {
- return serviceAdapters.get().get(serviceId);
- }
-
-
- // -- HELPER
-
- private final _Lazy<Map<String, ObjectAdapter>> serviceAdapters = _Lazy.of(this::initServiceAdapters);
-
- private Map<String, ObjectAdapter> initServiceAdapters() {
-
- val objectAdapterProvider = getObjectAdapterProvider();
-
- return getServiceRegistry().streamServices()
- .map(objectAdapterProvider::adapterFor)
- .peek(serviceAdapter->{
- val oid = serviceAdapter.getOid();
- if(oid.isTransient()) {
- val msg = "ObjectAdapter for 'Bean' is expected not to be 'transient' " + oid;
- throw _Exceptions.unrecoverable(msg);
- }
- })
- .collect(Collectors.toMap(ServiceUtil::idOfAdapter, v->v, (o,n)->n, LinkedHashMap::new));
- }
-
- // -------------------------------------------------------------------------------
-
-
- }
-
-
final static MetaModelContext usingSpring() {
- return new MetaModelContextUsingSpring();
- }
-
- // -- JUNIT TEST SUPPORT
-
- @Builder @Getter
- public final static class MetaModelContextBean implements MetaModelContext {
-
- private IsisConfiguration configuration;
-
- private ObjectAdapterProvider objectAdapterProvider;
-
- @Builder.Default
- private ServiceInjector serviceInjector = new ServiceInjectorForTesting();
-
- @Builder.Default
- private ServiceRegistry serviceRegistry = new ServiceRegistryForTesting();
-
- private SpecificationLoader specificationLoader;
-
- private AuthenticationSessionProvider authenticationSessionProvider;
-
- private TranslationService translationService;
-
- private AuthenticationSession authenticationSession;
-
- private AuthorizationManager authorizationManager;
-
- private AuthenticationManager authenticationManager;
-
- private TitleService titleService;
-
- private RepositoryService repositoryService;
-
- private TransactionService transactionService;
-
- private TransactionState transactionState;
-
- private Map<String, ObjectAdapter> serviceAdaptersById;
-
- @Singular
- private List<Object> singletons;
-
- @Override
- public ObjectSpecification getSpecification(Class<?> type) {
- return specificationLoader.loadSpecification(type);
- }
-
- @Override
- public Stream<ObjectAdapter> streamServiceAdapters() {
- if(serviceAdaptersById==null) {
- return Stream.empty();
- }
- return serviceAdaptersById.values().stream();
- }
-
- @Override
- public ObjectAdapter lookupServiceAdapterById(String serviceId) {
- if(serviceAdaptersById==null) {
- return null;
- }
- return serviceAdaptersById.get(serviceId);
- }
-
- public Stream<Object> streamSingletons() {
-
- val fields = _Lists.of(
- configuration,
- objectAdapterProvider,
- serviceInjector,
- serviceRegistry,
- specificationLoader,
- authenticationSessionProvider,
- translationService,
- authenticationSession,
- authorizationManager,
- authenticationManager,
- titleService,
- repositoryService,
- transactionService,
- transactionState);
-
- return Stream.concat(fields.stream(), getSingletons().stream())
- .filter(_NullSafe::isPresent);
- }
-
+ return new MetaModelContext_usingSpring();
}
-
-
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/ServiceInjectorForTesting.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/ServiceInjector_forTesting.java
similarity index 88%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/ServiceInjectorForTesting.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/ServiceInjector_forTesting.java
index 33ffed4..72857c0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/ServiceInjectorForTesting.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/ServiceInjector_forTesting.java
@@ -21,13 +21,12 @@ package org.apache.isis.core.metamodel;
import static java.util.Objects.requireNonNull;
import org.apache.isis.applib.services.inject.ServiceInjector;
-import org.apache.isis.core.metamodel.MetaModelContexts.MetaModelContextBean;
import org.apache.isis.core.metamodel.services.ServiceInjectorDefault;
import org.apache.isis.core.metamodel.specloader.InjectorMethodEvaluatorDefault;
import lombok.val;
-class ServiceInjectorForTesting implements ServiceInjector {
+class ServiceInjector_forTesting implements ServiceInjector {
private ServiceInjector delegate;
@@ -38,11 +37,11 @@ class ServiceInjectorForTesting implements ServiceInjector {
// lookup the MetaModelContextBean's list of singletons
val mmc = MetaModelContext.current();
- if(!(mmc instanceof MetaModelContextBean)) {
+ if(!(mmc instanceof MetaModelContext_forTesting)) {
return null;
}
- val mmcb = (MetaModelContextBean) mmc;
+ val mmcb = (MetaModelContext_forTesting) mmc;
val configuration = requireNonNull(mmcb.getConfiguration());
val serviceRegistry = requireNonNull(mmcb.getServiceRegistry());
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/ServiceRegistryForTesting.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/ServiceRegistry_forTesting.java
similarity index 89%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/ServiceRegistryForTesting.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/ServiceRegistry_forTesting.java
index 20f226d..fb6d108 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/ServiceRegistryForTesting.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/ServiceRegistry_forTesting.java
@@ -18,6 +18,7 @@
*/
package org.apache.isis.core.metamodel;
+import java.lang.annotation.Annotation;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Stream;
@@ -31,23 +32,26 @@ import org.apache.isis.commons.internal.exceptions._Exceptions;
import org.apache.isis.commons.internal.spring._Spring;
import org.apache.isis.commons.ioc.BeanAdapter;
import org.apache.isis.core.commons.collections.Bin;
-import org.apache.isis.core.metamodel.MetaModelContexts.MetaModelContextBean;
import org.apache.isis.core.metamodel.services.registry.ServiceRegistryDefault;
import lombok.Builder;
import lombok.Value;
import lombok.val;
-class ServiceRegistryForTesting implements ServiceRegistry {
+class ServiceRegistry_forTesting implements ServiceRegistry {
private final Set<BeanAdapter> registeredBeans = _Sets.newHashSet();
private final ServiceRegistry delegate = new ServiceRegistryDefault();
@Override
- public <T> Bin<T> select(Class<T> type) {
+ public <T> Bin<T> select(Class<T> type, Annotation[] qualifiers) {
if(_Spring.isContextAvailable()) {
- return ServiceRegistry.super.select(type);
+ return ServiceRegistry.super.select(type, qualifiers);
+ }
+
+ if(qualifiers!=null && qualifiers.length>0) {
+ throw _Exceptions.notImplemented();
}
Optional<T> match = streamSingletons()
@@ -104,8 +108,8 @@ class ServiceRegistryForTesting implements ServiceRegistry {
private Stream<Object> streamSingletons() {
// lookup the MetaModelContextBean's list of singletons
val mmc = MetaModelContext.current();
- if(mmc instanceof MetaModelContextBean) {
- val mmcb = (MetaModelContextBean) mmc;
+ if(mmc instanceof MetaModelContext_forTesting) {
+ val mmcb = (MetaModelContext_forTesting) mmc;
return mmcb.streamSingletons();
}
return Stream.empty();
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/events/MetamodelEventService.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/events/MetamodelEventService.java
index df2ff2e..ea6e7ed 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/events/MetamodelEventService.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/events/MetamodelEventService.java
@@ -12,12 +12,15 @@ import org.apache.isis.applib.events.ui.IconUiEvent;
import org.apache.isis.applib.events.ui.LayoutUiEvent;
import org.apache.isis.applib.events.ui.TitleUiEvent;
+import lombok.Builder;
+
/**
*
* @since 2.0.0-M3
*
*/
-@Singleton
+@Singleton
+@Builder //for JUnit Test support
public class MetamodelEventService {
@Inject Event<CssClassUiEvent<Object>> cssClassUiEvents;
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java
index 9399461..af29016 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java
@@ -27,8 +27,6 @@ import org.junit.Rule;
import org.apache.isis.applib.Identifier;
import org.apache.isis.applib.services.i18n.TranslationService;
-import org.apache.isis.applib.services.inject.ServiceInjector;
-import org.apache.isis.applib.services.registry.ServiceRegistry;
import org.apache.isis.config.internal._Config;
import org.apache.isis.core.metamodel.MetaModelContext;
import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
@@ -64,8 +62,6 @@ public abstract class AbstractFacetFactoryTest extends TestCase {
}
protected ObjectAdapterProvider mockObjectAdapterProvider;
- protected ServiceRegistry mockServiceRegistry;
- protected ServiceInjector mockServiceInjector;
protected TranslationService mockTranslationService;
protected AuthenticationSessionProvider mockAuthenticationSessionProvider;
protected AuthenticationSession mockAuthenticationSession;
@@ -117,15 +113,11 @@ public abstract class AbstractFacetFactoryTest extends TestCase {
mockSpecificationLoader = context.mock(SpecificationLoader.class);
- mockServiceRegistry = context.mock(ServiceRegistry.class);
- mockServiceInjector = context.mock(ServiceInjector.class);
mockObjectAdapterProvider = context.mock(ObjectAdapterProvider.class);
MetaModelContext.preset(MetaModelContext.builder()
.configuration(_Config.getConfiguration())
.specificationLoader(mockSpecificationLoader)
- .serviceInjector(mockServiceInjector)
- .serviceRegistry(mockServiceRegistry)
.translationService(mockTranslationService)
.objectAdapterProvider(mockPersistenceSessionServiceInternal)
.authenticationSessionProvider(mockAuthenticationSessionProvider)
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java
index 204bc4a..fc27351 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java
@@ -31,6 +31,7 @@ import java.util.Locale;
import org.apache.isis.applib.services.inject.ServiceInjector;
import org.apache.isis.applib.services.registry.ServiceRegistry;
import org.apache.isis.config.internal._Config;
+import org.apache.isis.core.metamodel.MetaModelContext;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacet;
@@ -63,10 +64,6 @@ public abstract class ValueSemanticsProviderAbstractTestCase {
@Mock
protected FacetHolder mockFacetHolder;
@Mock
- protected ServiceInjector mockServicesInjector;
- @Mock
- private ServiceRegistry mockServiceRegistry;
- @Mock
protected ObjectAdapterService mockSessionServiceInternal;
@Mock
protected SpecificationLoader mockSpecificationLoader;
@@ -81,20 +78,19 @@ public abstract class ValueSemanticsProviderAbstractTestCase {
_Config.clear();
Locale.setDefault(Locale.UK);
+ MetaModelContext.preset(MetaModelContext.builder()
+ .configuration(_Config.getConfiguration())
+ .specificationLoader(mockSpecificationLoader)
+// .translationService(mockTranslationService)
+// .objectAdapterProvider(mockPersistenceSessionServiceInternal)
+ .authenticationSessionProvider(mockAuthenticationSessionProvider)
+ .build());
+
context.checking(new Expectations() {
{
-
-// allowing(mockServicesInjector).getAuthenticationSessionProvider();
-// will(returnValue(mockAuthenticationSessionProvider));
-//
// allowing(mockServicesInjector).getPersistenceSessionServiceInternal();
// will(returnValue(mockSessionServiceInternal));
- allowing(mockServiceRegistry).lookupService(AuthenticationSessionProvider.class);
- will(returnValue(mockAuthenticationSessionProvider));
-
- allowing(mockServicesInjector).injectServicesInto(with(any(Object.class)));
-
never(mockAuthenticationSessionProvider);
never(mockSessionServiceInternal);
}
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTestAbstract.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTestAbstract.java
index 50955cd..7e78e5a 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTestAbstract.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTestAbstract.java
@@ -45,7 +45,6 @@ import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
import org.apache.isis.core.metamodel.facets.object.plural.PluralFacet;
import org.apache.isis.core.metamodel.metamodelvalidator.dflt.MetaModelValidatorDefault;
import org.apache.isis.core.metamodel.progmodel.ProgrammingModelAbstract.DeprecatedPolicy;
-import org.apache.isis.core.metamodel.services.events.MetamodelEventService;
import org.apache.isis.core.metamodel.services.persistsession.ObjectAdapterService;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.security.authentication.AuthenticationSessionProvider;
@@ -123,11 +122,8 @@ abstract class SpecificationLoaderTestAbstract {
.authenticationSessionProvider(mockAuthenticationSessionProvider = producers.mockAuthenticationSessionProvider())
.singleton(mockMessageService = producers.mockMessageService())
.singleton(mockGridService = producers.mockGridService())
- .singleton(new MetamodelEventService())
.build());
-
-
// BeanTypeRegistry.instance().setDomainServiceTypes(_Sets.newHashSet());
// BeanTypeRegistry.instance().setFixtureScriptTypes(_Sets.newHashSet());
// BeanTypeRegistry.instance().setDomainObjectTypes(_Sets.newHashSet());