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 2021/03/05 14:32:31 UTC

[isis] branch master updated: ISIS-2553: ApplicationFeatureRepository: inline method from cooperating factory

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 2a3bb53  ISIS-2553: ApplicationFeatureRepository: inline method from cooperating factory
2a3bb53 is described below

commit 2a3bb532ce1fe4ce0fa0c2459eba77ddac8535b6
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Mar 5 15:32:18 2021 +0100

    ISIS-2553: ApplicationFeatureRepository: inline method from cooperating
    factory
    
    also removes the cooperating factory
---
 .../appfeat/ApplicationFeatureRepository.java      |  2 +
 .../core/metamodel/IsisModuleCoreMetamodel.java    |  2 -
 .../appfeat/ApplicationFeatureFactory.java         | 43 ----------------------
 .../ApplicationFeatureRepositoryDefault.java       | 38 +++++++++----------
 .../ApplicationFeatureRepositoryDefaultTest.java   |  5 +--
 5 files changed, 22 insertions(+), 68 deletions(-)

diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/appfeat/ApplicationFeatureRepository.java b/api/applib/src/main/java/org/apache/isis/applib/services/appfeat/ApplicationFeatureRepository.java
index b5ec09f..76df03d 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/appfeat/ApplicationFeatureRepository.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/appfeat/ApplicationFeatureRepository.java
@@ -29,6 +29,8 @@ import java.util.Map;
  * @since 1.x revised for 2.0 {@index}
  */
 public interface ApplicationFeatureRepository  {
+    
+    ApplicationFeature newApplicationFeature(ApplicationFeatureId featureId);
 
     Map<String, ApplicationFeatureId> getFeatureIdentifiersByName();
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java
index 434903f..bc487ae 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java
@@ -30,7 +30,6 @@ import org.apache.isis.core.metamodel.inspect.IsisModuleCoreMetamodelInspection;
 import org.apache.isis.core.metamodel.objectmanager.ObjectManagerDefault;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModelInitFilterDefault;
 import org.apache.isis.core.metamodel.services.ServiceInjectorDefault;
-import org.apache.isis.core.metamodel.services.appfeat.ApplicationFeatureFactory;
 import org.apache.isis.core.metamodel.services.appfeat.ApplicationFeatureRepositoryDefault;
 import org.apache.isis.core.metamodel.services.classsubstitutor.ClassSubstitutorDefault;
 import org.apache.isis.core.metamodel.services.classsubstitutor.ClassSubstitutorForCollections;
@@ -81,7 +80,6 @@ import org.apache.isis.core.security.IsisModuleCoreSecurity;
         // @Service's
         ObjectManagerDefault.class,
         ServiceInjectorDefault.class,
-        ApplicationFeatureFactory.class,
         MetamodelEventService.class,
         ExceptionRecognizerForRecoverableException.class,
         GridLoaderServiceDefault.class,
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureFactory.java
deleted file mode 100644
index 5502d77..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureFactory.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.core.metamodel.services.appfeat;
-
-import javax.inject.Named;
-
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.context.annotation.Primary;
-import org.springframework.core.annotation.Order;
-import org.springframework.stereotype.Service;
-
-import org.apache.isis.applib.annotation.OrderPrecedence;
-import org.apache.isis.applib.services.appfeat.ApplicationFeature;
-import org.apache.isis.applib.services.appfeat.ApplicationFeatureId;
-
-@Service
-@Named("isis.metamodel.ApplicationFeatureFactory")
-@Order(OrderPrecedence.MIDPOINT)
-@Primary
-@Qualifier("Default")
-public class ApplicationFeatureFactory {
-
-    public ApplicationFeature newApplicationFeature(ApplicationFeatureId featId) {
-        return new ApplicationFeatureDefault(featId); // value type
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
index c9d38a0..eb4c88e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
@@ -82,16 +82,13 @@ implements ApplicationFeatureRepository {
 
     private final IsisConfiguration configuration;
     private final SpecificationLoader specificationLoader;
-    private final ApplicationFeatureFactory applicationFeatureFactory;
 
     @Inject
     public ApplicationFeatureRepositoryDefault(
             IsisConfiguration configuration,
-            SpecificationLoader specificationLoader,
-            ApplicationFeatureFactory applicationFeatureFactory) {
+            SpecificationLoader specificationLoader) {
         this.configuration = configuration;
         this.specificationLoader = specificationLoader;
-        this.applicationFeatureFactory = applicationFeatureFactory;
     }
 
     // -- init
@@ -159,13 +156,13 @@ implements ApplicationFeatureRepository {
         }
 
         final String logicalTypeName = spec.getLogicalTypeName();
-        final ApplicationFeatureId classFeatureId = ApplicationFeatureId.newType(logicalTypeName);
+        final ApplicationFeatureId typeFeatureId = ApplicationFeatureId.newType(logicalTypeName);
 
         // add class to our map
         // (later on it may get removed if the class turns out to have no features,
         // but we require it in the map for the next bit).
-        final ApplicationFeature classFeature = newFeature(classFeatureId);
-        typeFeatures.put(classFeatureId, classFeature);
+        final ApplicationFeature typeFeature = newApplicationFeature(typeFeatureId);
+        typeFeatures.put(typeFeatureId, typeFeature);
 
         // add members
         boolean addedMembers = false;
@@ -174,28 +171,28 @@ implements ApplicationFeatureRepository {
             final Integer maxLength = returnType == String.class ? valueOf(property, MaxLengthFacet.class) : null;
             final Integer typicalLength = returnType == String.class ? valueOf(property, TypicalLengthFacet.class) : null;
             final boolean derived = !property.containsNonFallbackFacet(PropertySetterFacet.class);
-            addedMembers = newProperty(classFeatureId, property, returnType, maxLength, typicalLength, derived) || addedMembers;
+            addedMembers = newProperty(typeFeatureId, property, returnType, maxLength, typicalLength, derived) || addedMembers;
         }
         for (final ObjectAssociation collection : collections) {
             final boolean derived = false;
             final Class<?> elementType = correspondingClassFor(collection.getSpecification());
-            addedMembers = newCollection(classFeatureId, collection, elementType, derived) || addedMembers;
+            addedMembers = newCollection(typeFeatureId, collection, elementType, derived) || addedMembers;
         }
         for (final ObjectAction action : actions) {
             final Class<?> returnType = correspondingClassFor(action.getReturnType());
             final SemanticsOf actionSemantics = action.getSemantics();
-            addedMembers = newAction(classFeatureId, action, returnType, actionSemantics) || addedMembers;
+            addedMembers = newAction(typeFeatureId, action, returnType, actionSemantics) || addedMembers;
         }
 
         if (!addedMembers) {
             // remove this class feature, since it turned out to have no members
-            typeFeatures.remove(classFeatureId);
+            typeFeatures.remove(typeFeatureId);
             return;
         }
 
         // leave the class as is and (as there were indeed members for this class)
         // add all of its parent packages
-        final ApplicationFeatureId classParentPackageId = addClassParent(classFeatureId);
+        final ApplicationFeatureId classParentPackageId = addClassParent(typeFeatureId);
         addParents(classParentPackageId);
     }
 
@@ -243,7 +240,7 @@ implements ApplicationFeatureRepository {
     }
 
     private ApplicationFeature newPackage(final ApplicationFeatureId packageId) {
-        final ApplicationFeature parentPackage = newFeature(packageId);
+        final ApplicationFeature parentPackage = newApplicationFeature(packageId);
         namespaceFeatures.put(packageId, parentPackage);
         return parentPackage;
     }
@@ -300,7 +297,8 @@ implements ApplicationFeatureRepository {
             final @Nullable SemanticsOf actionSemantics) {
         final ApplicationFeatureId featureId = ApplicationFeatureId.newMember(classFeatureId.getFullyQualifiedName(), memberId);
 
-        final ApplicationFeatureDefault memberFeature = (ApplicationFeatureDefault)newFeature(featureId);
+        final ApplicationFeatureDefault memberFeature = 
+                (ApplicationFeatureDefault)newApplicationFeature(featureId);
         memberFeature.setMemberSort(Optional.of(memberSort));
 
         memberFeature.setActionReturnType(Optional.ofNullable(returnType));
@@ -329,10 +327,6 @@ implements ApplicationFeatureRepository {
         }
     }
 
-    private ApplicationFeature newFeature(final ApplicationFeatureId featureId) {
-        return applicationFeatureFactory.newApplicationFeature(featureId);
-    }
-
     protected boolean exclude(final ObjectSpecification spec) {
 
         val excluded = spec.isMixin() || spec.isAbstract() ||
@@ -365,7 +359,13 @@ implements ApplicationFeatureRepository {
         return className.startsWith("java") || className.startsWith("org.joda");
     }
 
-
+    // -- FACTORY
+    
+    @Override
+    public ApplicationFeature newApplicationFeature(ApplicationFeatureId featId) {
+        return new ApplicationFeatureDefault(featId); // value type
+    }
+    
     // -- packageFeatures, classFeatures, memberFeatures
 
     @Override
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefaultTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefaultTest.java
index 40f4789..bfa50bc 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefaultTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefaultTest.java
@@ -82,12 +82,9 @@ public class ApplicationFeatureRepositoryDefaultTest {
     @Before
     public void setUp() throws Exception {
 
-        final ApplicationFeatureFactory applicationFeatureFactory = new ApplicationFeatureFactory();
-
         applicationFeatureRepository = new ApplicationFeatureRepositoryDefault(
                 /*configuration*/ null, 
-                mockSpecificationLoader, 
-                applicationFeatureFactory);
+                mockSpecificationLoader);
 
         mockActThatIsHidden = context.mock(ObjectAction.class, "mockActThatIsHidden");
     }