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/10/31 18:57:06 UTC
[isis] branch v2 updated: ISIS-2158: remove static references to
IsisBeanTypeRegistry
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch v2
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/v2 by this push:
new 68eb511 ISIS-2158: remove static references to IsisBeanTypeRegistry
68eb511 is described below
commit 68eb5114e6613f6ccece727f18e00c272440fd6f
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Oct 31 19:56:54 2019 +0100
ISIS-2158: remove static references to IsisBeanTypeRegistry
---
.../beantyperegistry/BeanTypeRegistryPlugin.java | 43 ----------------------
.../IsisBeanFactoryPostProcessorForSpring.java | 14 +++----
.../config/beans/IsisBeanTypeRegistryHolder.java | 9 +++++
.../isis/config/registry/IsisBeanTypeRegistry.java | 8 +---
.../IsisBeanTypeRegistry_UnitTestSupport.java | 38 -------------------
.../services/registry/ServiceRegistryDefault.java | 5 ++-
.../specloader/SpecificationLoaderDefault.java | 13 +++++--
.../specimpl/ObjectSpecificationAbstract.java | 11 +++++-
.../metamodel/MetaModelContext_forTesting.java | 24 +++++++++++-
.../isis/metamodel/ServiceRegistry_forTesting.java | 7 +---
...InjectorDefaultTest_validateServices_happy.java | 6 ++-
.../SpecificationLoaderTestAbstract.java | 1 -
.../service/JdoPersistenceLifecycleService.java | 6 ++-
.../isis/jdo/entities/JdoEntityTypeRegistry.java | 18 +++++----
.../persistence/PersistenceSessionFactory5.java | 10 ++++-
.../homepage/HomePageResolverServiceDefault.java | 11 +++---
.../AbstractApplyToAllContractTest.java | 10 ++---
.../bootstrapping/AutoConfigurationTest.java | 4 +-
18 files changed, 102 insertions(+), 136 deletions(-)
diff --git a/core/commons/src/main/java/org/apache/isis/commons/internal/plugins/beantyperegistry/BeanTypeRegistryPlugin.java b/core/commons/src/main/java/org/apache/isis/commons/internal/plugins/beantyperegistry/BeanTypeRegistryPlugin.java
deleted file mode 100644
index eae5601..0000000
--- a/core/commons/src/main/java/org/apache/isis/commons/internal/plugins/beantyperegistry/BeanTypeRegistryPlugin.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.isis.commons.internal.plugins.beantyperegistry;
-
-import java.util.Set;
-
-import org.apache.isis.commons.internal.context._Plugin;
-
-public interface BeanTypeRegistryPlugin {
-
- // -- INTERFACE
-
- Set<Class<?>> getEntityTypes();
-
- // -- LOOKUP
-
- public static BeanTypeRegistryPlugin get() {
- return _Plugin.getOrElse(BeanTypeRegistryPlugin.class,
- ambiguousPlugins->{
- return _Plugin.pickAnyAndWarn(BeanTypeRegistryPlugin.class, ambiguousPlugins);
- },
- ()->{
- throw _Plugin.absenceNonRecoverable(BeanTypeRegistryPlugin.class);
- });
- }
-
-}
diff --git a/core/config/src/main/java/org/apache/isis/config/beans/IsisBeanFactoryPostProcessorForSpring.java b/core/config/src/main/java/org/apache/isis/config/beans/IsisBeanFactoryPostProcessorForSpring.java
index 47761cd..f05e7dd 100644
--- a/core/config/src/main/java/org/apache/isis/config/beans/IsisBeanFactoryPostProcessorForSpring.java
+++ b/core/config/src/main/java/org/apache/isis/config/beans/IsisBeanFactoryPostProcessorForSpring.java
@@ -46,16 +46,17 @@ import lombok.extern.log4j.Log4j2;
*
*/
@Log4j2 @Component
-public class IsisBeanFactoryPostProcessorForSpring implements BeanFactoryPostProcessor {
+public class IsisBeanFactoryPostProcessorForSpring
+implements BeanFactoryPostProcessor, IsisBeanTypeRegistryHolder {
- @Getter(lazy=true)
- private final IsisComponentScanInterceptor interceptor = IsisBeanTypeRegistry.current();
+ @Getter(onMethod = @__(@Override))
+ private final IsisBeanTypeRegistry isisBeanTypeRegistry = new IsisBeanTypeRegistry();
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
val registry = (BeanDefinitionRegistry) beanFactory;
- val interceptor = getInterceptor();
+ val interceptor = isisBeanTypeRegistry;
for (String beanDefinitionName : registry.getBeanDefinitionNames()) {
@@ -93,10 +94,5 @@ public class IsisBeanFactoryPostProcessorForSpring implements BeanFactoryPostPro
}
}
-
-
-
-
-
}
diff --git a/core/config/src/main/java/org/apache/isis/config/beans/IsisBeanTypeRegistryHolder.java b/core/config/src/main/java/org/apache/isis/config/beans/IsisBeanTypeRegistryHolder.java
new file mode 100644
index 0000000..2a644f8
--- /dev/null
+++ b/core/config/src/main/java/org/apache/isis/config/beans/IsisBeanTypeRegistryHolder.java
@@ -0,0 +1,9 @@
+package org.apache.isis.config.beans;
+
+import org.apache.isis.config.registry.IsisBeanTypeRegistry;
+
+public interface IsisBeanTypeRegistryHolder {
+
+ IsisBeanTypeRegistry getIsisBeanTypeRegistry();
+
+}
diff --git a/core/config/src/main/java/org/apache/isis/config/registry/IsisBeanTypeRegistry.java b/core/config/src/main/java/org/apache/isis/config/registry/IsisBeanTypeRegistry.java
index 6ec1bdf..954b00e 100644
--- a/core/config/src/main/java/org/apache/isis/config/registry/IsisBeanTypeRegistry.java
+++ b/core/config/src/main/java/org/apache/isis/config/registry/IsisBeanTypeRegistry.java
@@ -41,7 +41,6 @@ import org.apache.isis.commons.internal.collections._Sets;
import org.apache.isis.commons.internal.components.ApplicationScopedComponent;
import org.apache.isis.commons.internal.components.SessionScopedComponent;
import org.apache.isis.commons.internal.components.TransactionScopedComponent;
-import org.apache.isis.commons.internal.context._Context;
import org.apache.isis.commons.internal.ioc.BeanSort;
import org.apache.isis.commons.internal.reflection._Reflect;
import org.apache.isis.config.beans.IsisComponentScanInterceptor;
@@ -49,7 +48,6 @@ import org.apache.isis.config.beans.IsisComponentScanInterceptor;
import static org.apache.isis.commons.internal.base._With.requires;
import static org.apache.isis.commons.internal.reflection._Annotations.findNearestAnnotation;
-import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.val;
@@ -59,13 +57,9 @@ import lombok.extern.log4j.Log4j2;
* Holds the set of domain services, persistent entities and fixture scripts.services etc.
* @since 2.0
*/
-@NoArgsConstructor(access = AccessLevel.PRIVATE) @Log4j2
+@NoArgsConstructor @Log4j2
public final class IsisBeanTypeRegistry implements IsisComponentScanInterceptor, AutoCloseable {
- public static IsisBeanTypeRegistry current() {
- return _Context.computeIfAbsent(IsisBeanTypeRegistry.class, IsisBeanTypeRegistry::new);
- }
-
/**
* Inbox for introspection, as used by the SpecificationLoader
*/
diff --git a/core/config/src/main/java/org/apache/isis/config/registry/IsisBeanTypeRegistry_UnitTestSupport.java b/core/config/src/main/java/org/apache/isis/config/registry/IsisBeanTypeRegistry_UnitTestSupport.java
deleted file mode 100644
index b5b05ee..0000000
--- a/core/config/src/main/java/org/apache/isis/config/registry/IsisBeanTypeRegistry_UnitTestSupport.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.isis.config.registry;
-
-import java.util.Set;
-
-import org.apache.isis.commons.internal.plugins.beantyperegistry.BeanTypeRegistryPlugin;
-
-/**
- * Required workaround, to provide module 'unittestsupport' access into {@link IsisBeanTypeRegistry}
- * without creating a module dependency cycle.
- *
- * @since 2.0
- */
-public class IsisBeanTypeRegistry_UnitTestSupport implements BeanTypeRegistryPlugin {
-
- @Override
- public Set<Class<?>> getEntityTypes() {
- return IsisBeanTypeRegistry.current().getEntityTypes();
- }
-
-}
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 524749e..ab91be2 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
@@ -36,7 +36,7 @@ import org.apache.isis.commons.internal.collections._Maps;
import org.apache.isis.commons.internal.environment.IsisSystemEnvironment;
import org.apache.isis.commons.internal.ioc.ManagedBeanAdapter;
import org.apache.isis.commons.internal.ioc.spring._Spring;
-import org.apache.isis.config.registry.IsisBeanTypeRegistry;
+import org.apache.isis.config.beans.IsisBeanTypeRegistryHolder;
import lombok.val;
@@ -48,6 +48,7 @@ public final class ServiceRegistryDefault implements ServiceRegistry {
// enforces provisioning order (this is a depends-on relationship)
@Inject private IsisSystemEnvironment isisSystemEnvironment;
+ @Inject private IsisBeanTypeRegistryHolder isisBeanTypeRegistryHolder;
@Override
public Optional<ManagedBeanAdapter> lookupRegisteredBeanById(String id) {
@@ -72,7 +73,7 @@ public final class ServiceRegistryDefault implements ServiceRegistry {
private Map<String, ManagedBeanAdapter> enumerateManagedBeans() {
- val filter = IsisBeanTypeRegistry.current();
+ val filter = isisBeanTypeRegistryHolder.getIsisBeanTypeRegistry();
val managedBeanAdapterByName = _Maps.<String, ManagedBeanAdapter>newHashMap();
isisSystemEnvironment.getIocContainer().streamAllBeans()
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/SpecificationLoaderDefault.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/SpecificationLoaderDefault.java
index d7b672d..8d9606a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/SpecificationLoaderDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/SpecificationLoaderDefault.java
@@ -36,6 +36,7 @@ import org.apache.isis.commons.internal.base._Timing;
import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.commons.internal.environment.IsisSystemEnvironment;
import org.apache.isis.config.IsisConfiguration;
+import org.apache.isis.config.beans.IsisBeanTypeRegistryHolder;
import org.apache.isis.config.registry.IsisBeanTypeRegistry;
import org.apache.isis.metamodel.MetaModelContext;
import org.apache.isis.metamodel.facetapi.Facet;
@@ -85,6 +86,7 @@ public class SpecificationLoaderDefault implements SpecificationLoader {
@Inject private IsisConfiguration isisConfiguration;
@Inject private IsisSystemEnvironment isisSystemEnvironment;
@Inject private ServiceRegistry serviceRegistry;
+ @Inject private IsisBeanTypeRegistryHolder isisBeanTypeRegistryHolder;
private final ClassSubstitutor classSubstitutor = new ClassSubstitutor();
@@ -102,7 +104,8 @@ public class SpecificationLoaderDefault implements SpecificationLoader {
IsisSystemEnvironment isisSystemEnvironment,
ServiceRegistry serviceRegistry,
ServiceInjector serviceInjector,
- ProgrammingModel programmingModel) {
+ ProgrammingModel programmingModel,
+ IsisBeanTypeRegistryHolder isisBeanTypeRegistryHolder) {
val instance = new SpecificationLoaderDefault();
@@ -116,6 +119,8 @@ public class SpecificationLoaderDefault implements SpecificationLoader {
instance.facetProcessor = new FacetProcessor(programmingModel, instance.metaModelContext);
instance.postProcessor = new PostProcessor(programmingModel);
+ instance.isisBeanTypeRegistryHolder = isisBeanTypeRegistryHolder;
+
return instance;
}
@@ -146,7 +151,7 @@ public class SpecificationLoaderDefault implements SpecificationLoader {
facetProcessor.init();
postProcessor.init();
- val typeRegistry = IsisBeanTypeRegistry.current();
+ val typeRegistry = isisBeanTypeRegistryHolder.getIsisBeanTypeRegistry();
val scannedSpecs = _Lists.<ObjectSpecification>newArrayList();
val domainServiceSpecs = _Lists.<ObjectSpecification>newArrayList();
@@ -349,8 +354,10 @@ public class SpecificationLoaderDefault implements SpecificationLoader {
objectSpec.setMetaModelContext(metaModelContext);
} else {
+
+ val typeRegistry = isisBeanTypeRegistryHolder.getIsisBeanTypeRegistry();
- val managedBeanNameIfAny = IsisBeanTypeRegistry.current().getManagedBeanNameForType(cls);
+ val managedBeanNameIfAny = typeRegistry.getManagedBeanNameForType(cls);
objectSpec = new ObjectSpecificationDefault(
cls,
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
index c86f86a..63cd8c9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
@@ -42,6 +42,7 @@ import org.apache.isis.commons.internal.collections._Streams;
import org.apache.isis.commons.internal.ioc.BeanSort;
import org.apache.isis.commons.internal.ioc.ManagedBeanAdapter;
import org.apache.isis.commons.internal.reflection._Reflect;
+import org.apache.isis.config.beans.IsisBeanTypeRegistryHolder;
import org.apache.isis.config.registry.IsisBeanTypeRegistry;
import org.apache.isis.metamodel.commons.ClassExtensions;
import org.apache.isis.metamodel.commons.ToString;
@@ -805,7 +806,7 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
return Collections.emptyList();
}
- val mixinTypes = IsisBeanTypeRegistry.current().getMixinTypes();
+ val mixinTypes = getIsisBeanTypeRegistry().getMixinTypes();
if(_NullSafe.isEmpty(mixinTypes)) {
return Collections.emptyList();
}
@@ -912,7 +913,7 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
return Collections.emptyList();
}
- val mixinTypes = IsisBeanTypeRegistry.current().getMixinTypes();
+ val mixinTypes = getIsisBeanTypeRegistry().getMixinTypes();
if(_NullSafe.isEmpty(mixinTypes)) {
return Collections.emptyList();
}
@@ -1072,6 +1073,12 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
protected SpecificationLoader getSpecificationLoader() {
return getMetaModelContext().getSpecificationLoader();
}
+
+ protected IsisBeanTypeRegistry getIsisBeanTypeRegistry() {
+ return getMetaModelContext().getServiceRegistry()
+ .lookupServiceElseFail(IsisBeanTypeRegistryHolder.class)
+ .getIsisBeanTypeRegistry();
+ }
protected BeanSort sortOf(ObjectSpecification spec) {
diff --git a/core/metamodel/src/test/java/org/apache/isis/metamodel/MetaModelContext_forTesting.java b/core/metamodel/src/test/java/org/apache/isis/metamodel/MetaModelContext_forTesting.java
index d5307c6..6e28bbc 100644
--- a/core/metamodel/src/test/java/org/apache/isis/metamodel/MetaModelContext_forTesting.java
+++ b/core/metamodel/src/test/java/org/apache/isis/metamodel/MetaModelContext_forTesting.java
@@ -35,6 +35,8 @@ import org.apache.isis.commons.internal.base._NullSafe;
import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.commons.internal.environment.IsisSystemEnvironment;
import org.apache.isis.config.IsisConfiguration;
+import org.apache.isis.config.beans.IsisBeanTypeRegistryHolder;
+import org.apache.isis.config.registry.IsisBeanTypeRegistry;
import org.apache.isis.metamodel.adapter.ObjectAdapter;
import org.apache.isis.metamodel.objectmanager.ObjectManager;
import org.apache.isis.metamodel.progmodel.ProgrammingModel;
@@ -105,6 +107,8 @@ public final class MetaModelContext_forTesting implements MetaModelContext {
private TransactionService transactionService;
private TransactionState transactionState;
+
+ private IsisBeanTypeRegistryHolder isisBeanTypeRegistryHolder;
private Map<String, ObjectAdapter> serviceAdaptersById;
@@ -151,6 +155,7 @@ public final class MetaModelContext_forTesting implements MetaModelContext {
getConfigurationLegacy(),
getConfiguration(),
getObjectManager(),
+ getIsisBeanTypeRegistryHolder(),
systemEnvironment,
serviceInjector,
serviceRegistry,
@@ -206,6 +211,21 @@ public final class MetaModelContext_forTesting implements MetaModelContext {
return serviceInjector;
}
+ public IsisBeanTypeRegistryHolder getIsisBeanTypeRegistryHolder() {
+ if(isisBeanTypeRegistryHolder==null) {
+
+ val typeRegistry = new IsisBeanTypeRegistry();
+
+ isisBeanTypeRegistryHolder = new IsisBeanTypeRegistryHolder() {
+ @Override
+ public IsisBeanTypeRegistry getIsisBeanTypeRegistry() {
+ return typeRegistry;
+ }
+ };
+ }
+ return isisBeanTypeRegistryHolder;
+ }
+
@Override
public SpecificationLoader getSpecificationLoader() {
if(specificationLoader==null) {
@@ -215,13 +235,15 @@ public final class MetaModelContext_forTesting implements MetaModelContext {
val serviceRegistry = requireNonNull(getServiceRegistry());
val serviceInjector = requireNonNull(getServiceInjector());
val programmingModel = requireNonNull(getProgrammingModel());
+ val isisBeanTypeRegistryHolder = requireNonNull(getIsisBeanTypeRegistryHolder());
specificationLoader = SpecificationLoaderDefault.getInstance(
configuration,
environment,
serviceRegistry,
serviceInjector,
- programmingModel);
+ programmingModel,
+ isisBeanTypeRegistryHolder);
}
return specificationLoader;
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 70ed9b1..b53a62b 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
@@ -33,7 +33,6 @@ import org.apache.isis.commons.internal.exceptions._Exceptions;
import org.apache.isis.commons.internal.ioc.IocContainer;
import org.apache.isis.commons.internal.ioc.ManagedBeanAdapter;
import org.apache.isis.commons.internal.ioc.spring._Spring;
-import org.apache.isis.config.registry.IsisBeanTypeRegistry;
import lombok.Builder;
import lombok.Getter;
@@ -100,10 +99,8 @@ class ServiceRegistry_forTesting implements ServiceRegistry {
synchronized(registeredBeans) {
if(registeredBeans.isEmpty()) {
- val beanSortClassifier = IsisBeanTypeRegistry.current();
-
streamSingletons()
- .map(s->toBeanAdapter(s, beanSortClassifier))
+ .map(s->toBeanAdapter(s))
.filter(_NullSafe::isPresent)
.forEach(registeredBeans::add);
}
@@ -135,7 +132,7 @@ class ServiceRegistry_forTesting implements ServiceRegistry {
}
- private ManagedBeanAdapter toBeanAdapter(Object singleton, IsisBeanTypeRegistry beanSortClassifier) {
+ private ManagedBeanAdapter toBeanAdapter(Object singleton) {
return PojoBeanAdapter.builder()
.id(singleton.getClass().getName())
diff --git a/core/metamodel/src/test/java/org/apache/isis/metamodel/services/ServiceInjectorDefaultTest_validateServices_happy.java b/core/metamodel/src/test/java/org/apache/isis/metamodel/services/ServiceInjectorDefaultTest_validateServices_happy.java
index 4f497d5..b39d0d5 100644
--- a/core/metamodel/src/test/java/org/apache/isis/metamodel/services/ServiceInjectorDefaultTest_validateServices_happy.java
+++ b/core/metamodel/src/test/java/org/apache/isis/metamodel/services/ServiceInjectorDefaultTest_validateServices_happy.java
@@ -33,6 +33,7 @@ import org.springframework.test.context.ActiveProfiles;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.services.registry.ServiceRegistry;
import org.apache.isis.config.IsisConfigModule;
+import org.apache.isis.config.beans.IsisBeanFactoryPostProcessorForSpring;
import org.apache.isis.metamodel.services.registry.ServiceRegistryDefault;
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -44,7 +45,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
ServiceRegistryDefault.class,
ServiceInjectorLegacyTest.Producers.class,
ServiceInjectorDefaultTest_validateServices_happy.DomainServiceWithSomeId.class,
- ServiceInjectorDefaultTest_validateServices_happy.DomainServiceWithDifferentId.class
+ ServiceInjectorDefaultTest_validateServices_happy.DomainServiceWithDifferentId.class,
+
+ IsisBeanFactoryPostProcessorForSpring.class
+
},
properties = {
"isis.services.injector.setPrefix=true"
diff --git a/core/metamodel/src/test/java/org/apache/isis/metamodel/specloader/SpecificationLoaderTestAbstract.java b/core/metamodel/src/test/java/org/apache/isis/metamodel/specloader/SpecificationLoaderTestAbstract.java
index dff48ee..d07b81c 100644
--- a/core/metamodel/src/test/java/org/apache/isis/metamodel/specloader/SpecificationLoaderTestAbstract.java
+++ b/core/metamodel/src/test/java/org/apache/isis/metamodel/specloader/SpecificationLoaderTestAbstract.java
@@ -110,7 +110,6 @@ abstract class SpecificationLoaderTestAbstract {
protected MessageService mockMessageService;
protected MetaModelContext metaModelContext;
-
// is loaded by subclasses
protected ObjectSpecification specification;
diff --git a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/datanucleus/service/JdoPersistenceLifecycleService.java b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/datanucleus/service/JdoPersistenceLifecycleService.java
index a868a60..3824df6 100644
--- a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/datanucleus/service/JdoPersistenceLifecycleService.java
+++ b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/datanucleus/service/JdoPersistenceLifecycleService.java
@@ -26,7 +26,7 @@ import org.springframework.stereotype.Service;
import org.apache.isis.commons.internal.context._Context;
import org.apache.isis.commons.internal.exceptions._Exceptions;
-import org.apache.isis.config.registry.IsisBeanTypeRegistry;
+import org.apache.isis.config.beans.IsisBeanTypeRegistryHolder;
import org.apache.isis.metamodel.MetaModelContext;
import org.apache.isis.runtime.system.context.session.AppLifecycleEvent;
import org.apache.isis.runtime.system.context.session.SessionLifecycleEvent;
@@ -42,11 +42,13 @@ public class JdoPersistenceLifecycleService {
@Inject private MetaModelContext metaModelContext;
@Inject private PersistenceSessionFactory persistenceSessionFactory;
+ @Inject private IsisBeanTypeRegistryHolder isisBeanTypeRegistryHolder;
@PostConstruct
public void postConstr() {
if(log.isDebugEnabled()) {
- log.debug("init entity types {}", IsisBeanTypeRegistry.current().getEntityTypes());
+ log.debug("init entity types {}",
+ isisBeanTypeRegistryHolder.getIsisBeanTypeRegistry().getEntityTypes());
}
}
diff --git a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/entities/JdoEntityTypeRegistry.java b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/entities/JdoEntityTypeRegistry.java
index b5bfb68..51270e9 100644
--- a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/entities/JdoEntityTypeRegistry.java
+++ b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/entities/JdoEntityTypeRegistry.java
@@ -18,13 +18,13 @@
*/
package org.apache.isis.jdo.entities;
+import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.stream.Collectors;
import javax.jdo.annotations.PersistenceCapable;
-import org.apache.isis.commons.internal.base._Lazy;
import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.config.registry.IsisBeanTypeRegistry;
import org.apache.isis.jdo.metamodel.JdoMetamodelUtil;
@@ -32,25 +32,29 @@ import org.apache.isis.jdo.metamodel.JdoMetamodelUtil;
import static org.apache.isis.commons.internal.base._NullSafe.stream;
import lombok.NoArgsConstructor;
+import lombok.Synchronized;
import lombok.val;
@NoArgsConstructor
public class JdoEntityTypeRegistry {
- private final _Lazy<Set<String>> entityTypes = _Lazy.threadSafe(this::findEntityTypes);
+ private Set<String> entityTypes;
- public Set<String> getEntityTypes() {
- return entityTypes.get();
+ @Synchronized
+ public Set<String> getEntityTypes(IsisBeanTypeRegistry isisBeanTypeRegistry) {
+ if(entityTypes==null) {
+ entityTypes = Collections.unmodifiableSet(findEntityTypes(isisBeanTypeRegistry));
+ }
+ return entityTypes;
}
// -- HELPER
- private Set<String> findEntityTypes() {
+ private static Set<String> findEntityTypes(IsisBeanTypeRegistry isisBeanTypeRegistry) {
val entityTypes = new LinkedHashSet<String>();
- Set<Class<?>> persistenceCapableTypes =
- IsisBeanTypeRegistry.current().getEntityTypes();
+ Set<Class<?>> persistenceCapableTypes = isisBeanTypeRegistry.getEntityTypes();
val classNamesNotEnhanced = _Lists.<String>newArrayList();
for (Class<?> persistenceCapableType : persistenceCapableTypes) {
diff --git a/core/plugins/jdo/datanucleus-5/src/main/java/org/apache/isis/jdo/persistence/PersistenceSessionFactory5.java b/core/plugins/jdo/datanucleus-5/src/main/java/org/apache/isis/jdo/persistence/PersistenceSessionFactory5.java
index c58a867..6b9eeb2 100644
--- a/core/plugins/jdo/datanucleus-5/src/main/java/org/apache/isis/jdo/persistence/PersistenceSessionFactory5.java
+++ b/core/plugins/jdo/datanucleus-5/src/main/java/org/apache/isis/jdo/persistence/PersistenceSessionFactory5.java
@@ -22,6 +22,7 @@ package org.apache.isis.jdo.persistence;
import java.util.Map;
import java.util.Objects;
+import javax.inject.Inject;
import javax.inject.Singleton;
import javax.jdo.listener.StoreLifecycleListener;
@@ -32,6 +33,7 @@ import org.springframework.stereotype.Service;
import org.apache.isis.commons.internal.base._Blackhole;
import org.apache.isis.commons.internal.base._Lazy;
import org.apache.isis.config.IsisConfiguration;
+import org.apache.isis.config.beans.IsisBeanTypeRegistryHolder;
import org.apache.isis.jdo.datanucleus.DataNucleusSettings;
import org.apache.isis.jdo.datanucleus.JDOStateManagerForIsis;
import org.apache.isis.jdo.entities.JdoEntityTypeRegistry;
@@ -56,6 +58,8 @@ import lombok.extern.log4j.Log4j2;
@Service @Singleton @Log4j2
public class PersistenceSessionFactory5
implements PersistenceSessionFactory, FixturesInstalledStateHolder {
+
+ @Inject private IsisBeanTypeRegistryHolder isisBeanTypeRegistryHolder;
private final _Lazy<DataNucleusApplicationComponents5> applicationComponents =
_Lazy.threadSafe(this::createDataNucleusApplicationComponents);
@@ -95,7 +99,8 @@ implements PersistenceSessionFactory, FixturesInstalledStateHolder {
addDataNucleusPropertiesIfRequired(datanucleusProps);
- val classesToBePersisted = jdoEntityTypeRegistry.getEntityTypes();
+ val typeRegistry = isisBeanTypeRegistryHolder.getIsisBeanTypeRegistry();
+ val classesToBePersisted = jdoEntityTypeRegistry.getEntityTypes(typeRegistry);
return new DataNucleusApplicationComponents5(
configuration,
@@ -105,7 +110,8 @@ implements PersistenceSessionFactory, FixturesInstalledStateHolder {
@Override
public void catalogNamedQueries() {
- val classesToBePersisted = jdoEntityTypeRegistry.getEntityTypes();
+ val typeRegistry = isisBeanTypeRegistryHolder.getIsisBeanTypeRegistry();
+ val classesToBePersisted = jdoEntityTypeRegistry.getEntityTypes(typeRegistry);
DataNucleusApplicationComponents5.catalogNamedQueries(classesToBePersisted,
metaModelContext.getSpecificationLoader());
}
diff --git a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/homepage/HomePageResolverServiceDefault.java b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/homepage/HomePageResolverServiceDefault.java
index 2d130df..cf995c6 100644
--- a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/homepage/HomePageResolverServiceDefault.java
+++ b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/homepage/HomePageResolverServiceDefault.java
@@ -32,7 +32,7 @@ import org.apache.isis.applib.services.registry.ServiceRegistry;
import org.apache.isis.commons.internal.base._Lazy;
import org.apache.isis.commons.internal.base._NullSafe;
import org.apache.isis.commons.internal.exceptions._Exceptions;
-import org.apache.isis.config.registry.IsisBeanTypeRegistry;
+import org.apache.isis.config.beans.IsisBeanTypeRegistryHolder;
import org.apache.isis.metamodel.consent.Consent;
import org.apache.isis.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.metamodel.facets.actions.homepage.HomePageFacet;
@@ -49,9 +49,10 @@ import lombok.val;
@Service
public class HomePageResolverServiceDefault implements HomePageResolverService {
- @Inject FactoryService factoryService;
- @Inject ServiceRegistry serviceRegistry;
- @Inject SpecificationLoader specLoader;
+ @Inject private FactoryService factoryService;
+ @Inject private ServiceRegistry serviceRegistry;
+ @Inject private SpecificationLoader specLoader;
+ @Inject private IsisBeanTypeRegistryHolder isisBeanTypeRegistryHolder;
@Override
public HomePageAction getHomePageAction() {
@@ -62,7 +63,7 @@ public class HomePageResolverServiceDefault implements HomePageResolverService {
private HomePageAction lookupHomePageAction() {
- val viewModelTypes = IsisBeanTypeRegistry.current().getViewModelTypes();
+ val viewModelTypes = isisBeanTypeRegistryHolder.getIsisBeanTypeRegistry().getViewModelTypes();
// -- 1) lookup view-models that are type annotated with @HomePage
diff --git a/core/testsupport/unittestsupport/src/main/java/org/apache/isis/unittestsupport/AbstractApplyToAllContractTest.java b/core/testsupport/unittestsupport/src/main/java/org/apache/isis/unittestsupport/AbstractApplyToAllContractTest.java
index c4ea8e6..01d9d9d 100644
--- a/core/testsupport/unittestsupport/src/main/java/org/apache/isis/unittestsupport/AbstractApplyToAllContractTest.java
+++ b/core/testsupport/unittestsupport/src/main/java/org/apache/isis/unittestsupport/AbstractApplyToAllContractTest.java
@@ -21,16 +21,14 @@ package org.apache.isis.unittestsupport;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.io.Writer;
+import java.util.Collections;
import java.util.Comparator;
import java.util.Set;
import java.util.TreeSet;
-import javax.jdo.annotations.PersistenceCapable;
-
import org.junit.Test;
import org.apache.isis.commons.internal._Constants;
-import org.apache.isis.commons.internal.plugins.beantyperegistry.BeanTypeRegistryPlugin;
import org.apache.isis.unittestsupport.utils.IndentPrinter;
/**
@@ -39,12 +37,10 @@ import org.apache.isis.unittestsupport.utils.IndentPrinter;
*/
public abstract class AbstractApplyToAllContractTest {
- protected final BeanTypeRegistryPlugin beanTypes;
protected IndentPrinter out;
protected AbstractApplyToAllContractTest(
final String packagePrefix) {
- beanTypes = BeanTypeRegistryPlugin.get();
out = new IndentPrinter(_Constants.nopWriter);
}
@@ -83,13 +79,13 @@ public abstract class AbstractApplyToAllContractTest {
}
/**
- * By default, finds all entity types (ie annotated with {@link PersistenceCapable}).
+ * By default, finds nothing.
*
* <p>
* Can be overridden if need be.
*/
protected Set<Class<?>> findTypes() {
- return beanTypes.getEntityTypes();
+ return Collections.emptySet();
}
protected abstract void applyContractTest(Class<?> entityType);
diff --git a/examples/smoketests/src/test/java/org/apache/isis/testdomain/bootstrapping/AutoConfigurationTest.java b/examples/smoketests/src/test/java/org/apache/isis/testdomain/bootstrapping/AutoConfigurationTest.java
index 41dad24..3f89c0c 100644
--- a/examples/smoketests/src/test/java/org/apache/isis/testdomain/bootstrapping/AutoConfigurationTest.java
+++ b/examples/smoketests/src/test/java/org/apache/isis/testdomain/bootstrapping/AutoConfigurationTest.java
@@ -32,6 +32,7 @@ import org.springframework.test.context.TestPropertySource;
import org.apache.isis.commons.internal.environment.IsisSystemEnvironment;
import org.apache.isis.config.IsisPresets;
import org.apache.isis.config.beans.IsisBeanFactoryPostProcessorForSpring;
+import org.apache.isis.config.beans.IsisBeanTypeRegistryHolder;
import org.apache.isis.config.registry.IsisBeanTypeRegistry;
import org.apache.isis.metamodel.MetaModelContexts;
import org.apache.isis.testdomain.Incubating;
@@ -70,6 +71,7 @@ class AutoConfigurationTest {
@Inject private ApplicationContext applicationContext;
@Inject private IsisSystemEnvironment isisSystemEnvironment;
+ @Inject private IsisBeanTypeRegistryHolder isisBeanTypeRegistryHolder;
//XXX for debugging and experimenting
@Component
@@ -97,7 +99,7 @@ class AutoConfigurationTest {
@Test
void domainObjects_shouldBeDiscovered() {
- val registry = IsisBeanTypeRegistry.current();
+ val registry = isisBeanTypeRegistryHolder.getIsisBeanTypeRegistry();
val discoveredTypes = registry.snapshotIntrospectableTypes().keySet();
for(val cls : nonManaged()) {