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");
}