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/01/26 17:08:52 UTC

[isis] branch master updated: ISIS-2431: ObjectSpecId to support (logical) namespace

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 2134376  ISIS-2431: ObjectSpecId to support (logical) namespace
2134376 is described below

commit 2134376897561fa93f6c945260df84a132da1dbd
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Jan 26 18:08:36 2021 +0100

    ISIS-2431: ObjectSpecId to support (logical) namespace
---
 .../services/appfeat/ApplicationFeatureRepository.java      |  2 ++
 .../appfeat/ApplicationFeatureRepositoryDefault.java        | 13 ++++++++++++-
 .../org/apache/isis/core/metamodel/spec/ObjectSpecId.java   |  9 ++++++---
 3 files changed, 20 insertions(+), 4 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 7909b24..d0b17b1 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
@@ -26,6 +26,8 @@ import java.util.SortedSet;
  */
 public interface ApplicationFeatureRepository  {
 
+    SortedSet<String> namespaces();
+    
     SortedSet<String> packageNames();
 
     SortedSet<String> packageNamesContainingClasses(
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 6b70d00..a69e7e0 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
@@ -71,6 +71,7 @@ public class ApplicationFeatureRepositoryDefault implements ApplicationFeatureRe
     private final SortedMap<ApplicationFeatureId, ApplicationFeature> propertyFeatures = _Maps.newTreeMap();
     private final SortedMap<ApplicationFeatureId, ApplicationFeature> collectionFeatures = _Maps.newTreeMap();
     private final SortedMap<ApplicationFeatureId, ApplicationFeature> actionFeatures = _Maps.newTreeMap();
+    private final SortedSet<String> namespaces = _Sets.newTreeSet();
 
     private final IsisConfiguration configuration;
     private final SpecificationLoader specificationLoader;
@@ -176,6 +177,8 @@ public class ApplicationFeatureRepositoryDefault implements ApplicationFeatureRe
         // and add all of its parent packages
         final ApplicationFeatureId classParentPackageId = addClassParent(classFeatureId);
         addParents(classParentPackageId);
+        
+        namespaces.add(spec.getSpecId().getNamespace());
     }
 
     private static Class<?> correspondingClassFor(final ObjectSpecification objectSpec) {
@@ -473,8 +476,16 @@ public class ApplicationFeatureRepositoryDefault implements ApplicationFeatureRe
         return actionFeatures.values();
     }
 
-
+    // -- namespaces
+    
+    @Override
+    public SortedSet<String> namespaces() {
+        initializeIfRequired();
+        return Collections.unmodifiableSortedSet(namespaces);
+    }
+    
     // -- packageNames, packageNamesContainingClasses, classNamesContainedIn, memberNamesOf
+    
     @Override
     public SortedSet<String> packageNames() {
         initializeIfRequired();
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecId.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecId.java
index 7fab054..3057234 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecId.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecId.java
@@ -20,6 +20,7 @@ package org.apache.isis.core.metamodel.spec;
 
 import java.io.Serializable;
 
+import org.apache.isis.commons.internal.base._Refs;
 import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet;
 
 import static org.apache.isis.commons.internal.base._With.requiresNotEmpty;
@@ -43,10 +44,13 @@ public final class ObjectSpecId implements Serializable {
     private static final long serialVersionUID = 1L;
 
     @NonNull private final String specId;
+    @NonNull private final String namespace;
 
-    public static ObjectSpecId of(String specId) {
+    public static ObjectSpecId of(final @NonNull String specId) {
         requiresNotEmpty(specId, "specId");
-        return new ObjectSpecId(specId);
+        return new ObjectSpecId(
+                specId, 
+                _Refs.stringRef(specId).cutAtLastIndexOf("."));
     }
 
     public String asString() {
@@ -58,5 +62,4 @@ public final class ObjectSpecId implements Serializable {
         return asString();
     }
 
-
 }