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 2022/05/28 05:24:45 UTC

[isis] branch master updated: ISIS-3063: adds ObjectSpecification.getAliases()

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 261e7aa134 ISIS-3063: adds ObjectSpecification.getAliases()
261e7aa134 is described below

commit 261e7aa134fa5893aafeed39e3e6be57d1ab052c
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sat May 28 07:24:40 2022 +0200

    ISIS-3063: adds ObjectSpecification.getAliases()
---
 .../DomainServiceFacetForAnnotation.java           |  3 ++-
 .../core/metamodel/spec/ObjectSpecification.java   | 15 +++++++++++--
 .../specimpl/ObjectSpecificationAbstract.java      | 26 ++++++++++++++++------
 .../testspec/ObjectSpecificationStub.java          |  5 +++++
 4 files changed, 39 insertions(+), 10 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservice/annotation/DomainServiceFacetForAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservice/annotation/DomainServiceFacetForAnnotation.java
index 2ac899ca56..982f762880 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservice/annotation/DomainServiceFacetForAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservice/annotation/DomainServiceFacetForAnnotation.java
@@ -22,7 +22,8 @@ import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.domainservice.DomainServiceFacetAbstract;
 
-public class DomainServiceFacetForAnnotation extends DomainServiceFacetAbstract {
+public class DomainServiceFacetForAnnotation
+extends DomainServiceFacetAbstract {
 
     public DomainServiceFacetForAnnotation(
             final FacetHolder facetHolder,
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java
index 0487c62985..0a7c671487 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java
@@ -29,9 +29,13 @@ import java.util.stream.Stream;
 
 import org.springframework.lang.Nullable;
 
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.exceptions.UnrecoverableException;
 import org.apache.isis.applib.id.HasLogicalType;
+import org.apache.isis.applib.id.LogicalType;
 import org.apache.isis.applib.services.metamodel.BeanSort;
+import org.apache.isis.commons.collections.Can;
 import org.apache.isis.commons.internal.base._NullSafe;
 import org.apache.isis.commons.internal.collections._Streams;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
@@ -169,7 +173,6 @@ extends
 
     /**
      * Returns an (immutable) "full" identifier for this specification.
-     *
      * <p>
      * This will be the fully qualified name of the Class object that this
      * object represents (i.e. it includes the package name).
@@ -178,13 +181,21 @@ extends
 
     /**
      * Returns an (immutable) "short" identifier for this specification.
-     *
      * <p>
      * This will be the class name without the package; any text up to and
      * including the last period is removed.
      */
     String getShortIdentifier();
 
+    /**
+     * Immutable set of {@link LogicalType} aliases for corresponding
+     * domain object or service.
+     * <p>
+     * Corresponds to {@link DomainService#aliased()} and
+     * {@link DomainObject#aliased()}.
+     */
+    Can<LogicalType> getAliases();
+
     /**
      * Returns the (singular) name for objects of this specification.
      * <p>
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
index f63bb6abc6..ca46991de1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
@@ -64,6 +64,7 @@ import org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFactor
 import org.apache.isis.core.metamodel.facets.object.icon.IconFacet;
 import org.apache.isis.core.metamodel.facets.object.icon.ObjectIcon;
 import org.apache.isis.core.metamodel.facets.object.immutable.ImmutableFacet;
+import org.apache.isis.core.metamodel.facets.object.logicaltype.AliasedFacet;
 import org.apache.isis.core.metamodel.facets.object.mixin.MixinFacet;
 import org.apache.isis.core.metamodel.facets.object.navparent.NavigableParentFacet;
 import org.apache.isis.core.metamodel.facets.object.parented.ParentedCollectionFacet;
@@ -183,6 +184,7 @@ implements ObjectSpecification {
     private TitleFacet titleFacet;
     private IconFacet iconFacet;
     private NavigableParentFacet navigableParentFacet;
+    private AliasedFacet aliasedFacet;
     private CssClassFacet cssClassFacet;
 
     private IntrospectionState introspectionState = IntrospectionState.NOT_INTROSPECTED;
@@ -381,6 +383,7 @@ implements ObjectSpecification {
         iconFacet = getFacet(IconFacet.class);
         navigableParentFacet = getFacet(NavigableParentFacet.class);
         cssClassFacet = getFacet(CssClassFacet.class);
+        aliasedFacet = getFacet(AliasedFacet.class);
     }
 
     protected void postProcess() {
@@ -404,12 +407,12 @@ implements ObjectSpecification {
 
     @Override
     public String getIconName(final ManagedObject domainObject) {
-
         if(ManagedObjects.isSpecified(domainObject)) {
             _Assert.assertEquals(domainObject.getSpecification(), this);
         }
-
-        return iconFacet == null ? null : iconFacet.iconName(domainObject);
+        return iconFacet != null
+                ? iconFacet.iconName(domainObject)
+                : null;
     }
 
     @Override
@@ -420,14 +423,23 @@ implements ObjectSpecification {
 
     @Override
     public Object getNavigableParent(final Object object) {
-        return navigableParentFacet == null
-                ? null
-                : navigableParentFacet.navigableParent(object);
+        return navigableParentFacet != null
+                ? navigableParentFacet.navigableParent(object)
+                : null;
     }
 
     @Override
     public String getCssClass(final ManagedObject reference) {
-        return cssClassFacet == null ? null : cssClassFacet.cssClass(reference);
+        return cssClassFacet != null
+                ? cssClassFacet.cssClass(reference)
+                : null;
+    }
+
+    @Override
+    public Can<LogicalType> getAliases() {
+        return aliasedFacet != null
+                ? aliasedFacet.getAliases()
+                : Can.empty();
     }
 
     @Override
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java
index 584c44cc13..68c1a43533 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java
@@ -147,6 +147,11 @@ implements ObjectSpecification {
         return logicalType;
     }
 
+    @Override
+    public Can<LogicalType> getAliases() {
+        return Can.empty();
+    }
+
     @Override
     public String getIconName(final ManagedObject reference) {
         return null;