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/16 12:51:50 UTC
[isis] branch 2112_SpringBoot updated: ISIS-2112: refactoring
'Specloader' to a Spring Managed Bean
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 cf95ca1 ISIS-2112: refactoring 'Specloader' to a Spring Managed Bean
cf95ca1 is described below
commit cf95ca1144899124777c716aed430023bfcb0795
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu May 16 14:51:43 2019 +0200
ISIS-2112: refactoring 'Specloader' to a Spring Managed Bean
- disentangles and removes the complex factory code
Task-Url: https://issues.apache.org/jira/browse/ISIS-2112
---
.../applib/services/jaxb/JaxbServiceDefault.java | 4 +-
.../progmodel/ProgrammingModelService.java | 28 ++++++++
.../MetaModelValidatorServiceDefault.java | 77 ++++++++++++++++++++++
.../specloader/ProgrammingModelServiceDefault.java | 56 ++++++++++++++++
.../specloader/SpecificationLoaderDefault.java | 49 ++++++++++----
.../validator/MetaModelValidatorService.java | 28 ++++++++
.../isis/progmodels/dflt/JavaReflectorHelper.java | 53 ---------------
.../SpecificationLoaderTestAbstract.java | 2 +-
.../system/session/SpecificationLoaderFactory.java | 77 ----------------------
.../session/SpecificationLoaderProducerBean.java | 59 -----------------
10 files changed, 228 insertions(+), 205 deletions(-)
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/jaxb/JaxbServiceDefault.java b/core/applib/src/main/java/org/apache/isis/applib/services/jaxb/JaxbServiceDefault.java
index e15b826..06cde39 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/jaxb/JaxbServiceDefault.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/jaxb/JaxbServiceDefault.java
@@ -64,7 +64,7 @@ public class JaxbServiceDefault extends JaxbService.Simple {
DomainObjectList list = (DomainObjectList) domainObject;
try {
final String elementObjectType = list.getElementObjectType();
- final Class<?> elementType = metaModelService5.fromObjectType(elementObjectType);
+ final Class<?> elementType = metaModelService.fromObjectType(elementObjectType);
if (elementType.getAnnotation(XmlJavaTypeAdapter.class) == null) {
return JAXBContext.newInstance(domainClass, elementType);
} else {
@@ -102,6 +102,6 @@ public class JaxbServiceDefault extends JaxbService.Simple {
ServiceInjector serviceInjector;
@javax.inject.Inject
- MetaModelService metaModelService5;
+ MetaModelService metaModelService;
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodel/ProgrammingModelService.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodel/ProgrammingModelService.java
new file mode 100644
index 0000000..d81a354
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodel/ProgrammingModelService.java
@@ -0,0 +1,28 @@
+/*
+ * 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.core.metamodel.progmodel;
+
+import java.util.function.Supplier;
+
+/**
+ * @since 2.0.0
+ */
+public interface ProgrammingModelService extends Supplier<ProgrammingModel> {
+
+}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/MetaModelValidatorServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/MetaModelValidatorServiceDefault.java
new file mode 100644
index 0000000..6f44cfc
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/MetaModelValidatorServiceDefault.java
@@ -0,0 +1,77 @@
+/*
+ * 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.core.metamodel.specloader;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+import org.apache.isis.commons.internal.base._Lazy;
+import org.apache.isis.config.IsisConfiguration;
+import org.apache.isis.core.commons.factory.InstanceUtil;
+import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
+import org.apache.isis.core.metamodel.progmodel.ProgrammingModelService;
+import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidator;
+import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
+import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorService;
+
+import lombok.val;
+
+/**
+ * @since 2.0.0
+ */
+@Singleton
+public class MetaModelValidatorServiceDefault implements MetaModelValidatorService {
+
+ @Override
+ public MetaModelValidator get() {
+ return metaModelValidator.get();
+ }
+
+ // -- HELPER
+
+ @Inject private IsisConfiguration configuration;
+ @Inject private ProgrammingModelService programmingModelService;
+
+ private _Lazy<MetaModelValidator> metaModelValidator =
+ _Lazy.threadSafe(this::createMetaModelValidator);
+
+ private MetaModelValidator createMetaModelValidator() {
+
+ final String metaModelValidatorClassName =
+ configuration.getString(
+ ReflectorConstants.META_MODEL_VALIDATOR_CLASS_NAME,
+ ReflectorConstants.META_MODEL_VALIDATOR_CLASS_NAME_DEFAULT);
+ val mmValidator = InstanceUtil.createInstance(metaModelValidatorClassName, MetaModelValidator.class);
+ val mmValidatorComposite = MetaModelValidatorComposite.asComposite(mmValidator);
+
+ val programmingModel = programmingModelService.get();
+ val metaModelRefiners = MetaModelRefiner.getAll();
+
+ for (MetaModelRefiner metaModelRefiner : metaModelRefiners) {
+ metaModelRefiner.refineProgrammingModel(programmingModel);
+ metaModelRefiner.refineMetaModelValidator(mmValidatorComposite);
+ }
+
+ programmingModel.refineMetaModelValidator(mmValidatorComposite);
+
+ return mmValidator;
+ }
+
+}
+
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ProgrammingModelServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ProgrammingModelServiceDefault.java
new file mode 100644
index 0000000..63fd267
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ProgrammingModelServiceDefault.java
@@ -0,0 +1,56 @@
+/*
+ * 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.core.metamodel.specloader;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+import org.apache.isis.commons.internal.base._Lazy;
+import org.apache.isis.config.IsisConfiguration;
+import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
+import org.apache.isis.core.metamodel.progmodel.ProgrammingModelAbstract.DeprecatedPolicy;
+import org.apache.isis.core.metamodel.progmodel.ProgrammingModelService;
+import org.apache.isis.progmodels.dflt.ProgrammingModelFacetsJava5;
+
+@Singleton
+public class ProgrammingModelServiceDefault implements ProgrammingModelService {
+
+ @Override
+ public ProgrammingModel get() {
+ return programmingModel.get();
+ }
+
+ // -- HELPER
+
+ @Inject private IsisConfiguration configuration;
+
+ private _Lazy<ProgrammingModel> programmingModel =
+ _Lazy.threadSafe(this::createProgrammingModel);
+
+ private ProgrammingModel createProgrammingModel() {
+
+ final DeprecatedPolicy deprecatedPolicy = DeprecatedPolicy.parse(configuration);
+
+ final ProgrammingModel programmingModel = new ProgrammingModelFacetsJava5(deprecatedPolicy);
+ ProgrammingModel.Util.includeFacetFactories(configuration, programmingModel);
+ ProgrammingModel.Util.excludeFacetFactories(configuration, programmingModel);
+ return programmingModel;
+ }
+
+}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderDefault.java
index 7c58cbb..3e84a23 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderDefault.java
@@ -6,7 +6,9 @@ import java.util.stream.Collectors;
import java.util.stream.Stream;
import javax.annotation.Nullable;
-import javax.enterprise.inject.Vetoed;
+import javax.annotation.PostConstruct;
+import javax.inject.Inject;
+import javax.inject.Singleton;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.NatureOfService;
@@ -24,7 +26,7 @@ import org.apache.isis.core.metamodel.MetaModelContext;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet;
import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
-import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.progmodel.ProgrammingModelService;
import org.apache.isis.core.metamodel.spec.FreeStandingList;
import org.apache.isis.core.metamodel.spec.ObjectSpecId;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -37,6 +39,7 @@ import org.apache.isis.core.metamodel.specloader.specimpl.ObjectSpecificationAbs
import org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault;
import org.apache.isis.core.metamodel.specloader.specimpl.standalonelist.ObjectSpecificationOnStandaloneList;
import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidator;
+import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorService;
import org.apache.isis.core.metamodel.specloader.validator.ValidationFailures;
import org.apache.isis.core.runtime.threadpool.ThreadPoolExecutionMode;
import org.apache.isis.core.runtime.threadpool.ThreadPoolSupport;
@@ -63,37 +66,52 @@ import lombok.extern.slf4j.Slf4j;
* </ul>
* </p>
*/
-@Vetoed // has a producer
+@Singleton
@Slf4j
public class SpecificationLoaderDefault implements SpecificationLoader {
private final ClassSubstitutor classSubstitutor = new ClassSubstitutor();
- private final ProgrammingModel programmingModel;
- private final FacetProcessor facetProcessor;
+ private ProgrammingModel programmingModel;
+ private FacetProcessor facetProcessor;
- private final MetaModelValidator metaModelValidator;
+ private MetaModelValidator metaModelValidator;
private final SpecificationCacheDefault cache = new SpecificationCacheDefault();
- private final PostProcessor postProcessor;
+ private PostProcessor postProcessor;
+ @PostConstruct
+ public void preInit() {
+ this.programmingModel = programmingModelService.get();
+ this.metaModelValidator = metaModelValidatorService.get();
- public SpecificationLoaderDefault(
+ this.facetProcessor = new FacetProcessor(programmingModel);
+ this.postProcessor = new PostProcessor(programmingModel);
+ }
+
+ /** JUnit Test Support */
+ public static SpecificationLoaderDefault getInstance (
final ProgrammingModel programmingModel,
final MetaModelValidator metaModelValidator) {
- this.programmingModel = programmingModel;
- this.metaModelValidator = metaModelValidator;
+ val instance = new SpecificationLoaderDefault();
+
+ instance.programmingModel = programmingModel;
+ instance.metaModelValidator = metaModelValidator;
- this.facetProcessor = new FacetProcessor(programmingModel);
- this.postProcessor = new PostProcessor(programmingModel);
+ instance.facetProcessor = new FacetProcessor(programmingModel);
+ instance.postProcessor = new PostProcessor(programmingModel);
+
+ return instance;
}
+
+
// -- LIVE CYCLE
/**
* Initializes and wires up, and primes the cache based on any service
- * classes (provided by the {@link ServicesInjector}).
+ * classes (provided by the {@link IsisBeanTypeRegistry}).
*/
@Override
public void init() {
@@ -484,6 +502,11 @@ public class SpecificationLoaderDefault implements SpecificationLoader {
cache.recache(newSpec);
}
+ // -- DEPS
+
+ private @Inject ProgrammingModelService programmingModelService;
+ private @Inject MetaModelValidatorService metaModelValidatorService;
+
// -- DEPRECATED
// /**
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorService.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorService.java
new file mode 100644
index 0000000..2102a47
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorService.java
@@ -0,0 +1,28 @@
+/*
+ * 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.core.metamodel.specloader.validator;
+
+import java.util.function.Supplier;
+
+/**
+ * @since 2.0.0
+ */
+public interface MetaModelValidatorService extends Supplier<MetaModelValidator>{
+
+}
diff --git a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorHelper.java b/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorHelper.java
deleted file mode 100644
index e897c9c..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorHelper.java
+++ /dev/null
@@ -1,53 +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.progmodels.dflt;
-
-import java.util.Collection;
-
-import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
-import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoaderDefault;
-import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidator;
-import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
-
-public final class JavaReflectorHelper {
-
- private JavaReflectorHelper(){}
-
- public static SpecificationLoader createSpecificationLoader(
- final ProgrammingModel programmingModel,
- final Collection<MetaModelRefiner> metaModelRefiners,
- final MetaModelValidator mmValidator) {
-
- MetaModelValidatorComposite metaModelValidator = MetaModelValidatorComposite.asComposite(mmValidator);
- for (MetaModelRefiner metaModelRefiner : metaModelRefiners) {
- metaModelRefiner.refineProgrammingModel(programmingModel);
- metaModelRefiner.refineMetaModelValidator(metaModelValidator);
- }
-
- programmingModel.refineMetaModelValidator(metaModelValidator);
-
- return new SpecificationLoaderDefault(programmingModel, metaModelValidator);
- }
-
-
-
-}
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 e6d556b..85580f5 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
@@ -82,7 +82,7 @@ abstract class SpecificationLoaderTestAbstract {
//@Produces
SpecificationLoader getSpecificationLoader() {
- return new SpecificationLoaderDefault(
+ return SpecificationLoaderDefault.getInstance(
new ProgrammingModelFacetsJava5(DeprecatedPolicy.HONOUR),
new MetaModelValidatorDefault());
}
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/SpecificationLoaderFactory.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/SpecificationLoaderFactory.java
deleted file mode 100644
index 425fdaf..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/SpecificationLoaderFactory.java
+++ /dev/null
@@ -1,77 +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.core.runtime.system.session;
-
-import static org.apache.isis.config.internal._Config.getConfiguration;
-
-import org.apache.isis.config.IsisConfiguration;
-import org.apache.isis.core.commons.factory.InstanceUtil;
-import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
-import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
-import org.apache.isis.core.metamodel.progmodel.ProgrammingModelAbstract.DeprecatedPolicy;
-import org.apache.isis.core.metamodel.specloader.ReflectorConstants;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidator;
-import org.apache.isis.progmodels.dflt.JavaReflectorHelper;
-import org.apache.isis.progmodels.dflt.ProgrammingModelFacetsJava5;
-
-import lombok.val;
-
-/**
- *
- */
-final class SpecificationLoaderFactory {
-
- // -- CREATE SPECIFICATION LOADER
-
- public SpecificationLoader createSpecificationLoader() {
-
- val metaModelRefiners = MetaModelRefiner.getAll();
- val configuration = getConfiguration();
- val programmingModel = createProgrammingModel(configuration);
- val mmValidator = createMetaModelValidator(configuration);
-
- return JavaReflectorHelper.createSpecificationLoader(
- programmingModel, metaModelRefiners, mmValidator);
- }
-
- // -- HELPER
-
- private MetaModelValidator createMetaModelValidator(IsisConfiguration configuration) {
-
- final String metaModelValidatorClassName =
- configuration.getString(
- ReflectorConstants.META_MODEL_VALIDATOR_CLASS_NAME,
- ReflectorConstants.META_MODEL_VALIDATOR_CLASS_NAME_DEFAULT);
- return InstanceUtil.createInstance(metaModelValidatorClassName, MetaModelValidator.class);
- }
-
- private ProgrammingModel createProgrammingModel(IsisConfiguration configuration) {
-
- final DeprecatedPolicy deprecatedPolicy = DeprecatedPolicy.parse(configuration);
-
- final ProgrammingModel programmingModel = new ProgrammingModelFacetsJava5(deprecatedPolicy);
- ProgrammingModel.Util.includeFacetFactories(configuration, programmingModel);
- ProgrammingModel.Util.excludeFacetFactories(configuration, programmingModel);
- return programmingModel;
- }
-
-
-}
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/SpecificationLoaderProducerBean.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/SpecificationLoaderProducerBean.java
deleted file mode 100644
index b123d8c..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/SpecificationLoaderProducerBean.java
+++ /dev/null
@@ -1,59 +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.core.runtime.system.session;
-
-import javax.enterprise.inject.Produces;
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-import org.springframework.context.annotation.Bean;
-
-import org.apache.isis.applib.services.registry.ServiceRegistry;
-import org.apache.isis.commons.internal.context._Context;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.core.runtime.system.IsisSystemException;
-
-/**
- * @deprecated TODO [2033] convert SpecificationLoaderDefault to Singleton
- * Currently `SpecificationLoader` is not life-cycle
- * managed by CDI/Spring, instead we provide a 'Producer Method' for it.
- *
- * Consequently the framework is responsible for its life-cycle.
- *
- * We want to have CDI/Spring also manage these, which can be achieved by finally
- * removing the `SpecificationLoaderProducerBean` singleton.
- *
- */
-@Singleton
-public class SpecificationLoaderProducerBean {
-
- @Inject ServiceRegistry serviceRegistry; //depends on
-
- // let Spring manage destruction , init is handled by isisSessionFactory internally
- @Bean(destroyMethod = "shutdown")
- @Produces @Singleton
- //XXX note: the resulting singleton is not life-cycle managed by CDI/Spring,
- //neither are InjectionPoints resolved by CDI/Spring
- public SpecificationLoader produceSpecificationLoader() throws IsisSystemException {
- return _Context.computeIfAbsent(SpecificationLoader.class,
- ()-> new SpecificationLoaderFactory().createSpecificationLoader());
- }
-
-}