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/02 07:17:17 UTC

[isis] 09/11: ISIS-2553: remove ObjectSpecId

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

commit ea93a645289e2da13a251738c6bd58c0fd42c037
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Mar 2 07:22:11 2021 +0100

    ISIS-2553: remove ObjectSpecId
---
 .../org/apache/isis/applib/id/HasLogicalType.java  | 14 +----
 .../org/apache/isis/applib/id/LogicalType.java     | 26 +++++++++
 .../org/apache/isis/applib/id/ObjectSpecId.java    | 65 ----------------------
 .../services/appfeat/ApplicationFeatureId.java     |  1 -
 .../metamodel/MetaModelServiceDefault.java         |  1 -
 .../resources/DomainObjectResourceServerside.java  |  1 -
 .../bookmarkedpages/BookmarkedPagesPanel.java      |  1 -
 7 files changed, 27 insertions(+), 82 deletions(-)

diff --git a/api/applib/src/main/java/org/apache/isis/applib/id/HasLogicalType.java b/api/applib/src/main/java/org/apache/isis/applib/id/HasLogicalType.java
index 60bd6f8..3b33a31 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/id/HasLogicalType.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/id/HasLogicalType.java
@@ -18,8 +18,6 @@
  */
 package org.apache.isis.applib.id;
 
-import org.apache.isis.applib.annotation.DomainObject;
-
 /**
  * @since 2.0 {@index}
  */
@@ -28,17 +26,7 @@ public interface HasLogicalType {
     LogicalType getLogicalType();
 
     /**
-     * Returns the (unique) logical-type-name, as per the {@link ObjectSpecIdFacet}.
-     *
-     * <p>
-     * This will typically be the value of the {@link DomainObject#objectType()} annotation attribute.
-     * If none has been specified then will default to the fully qualified class name (with
-     * {@link ClassSubstitutorRegistry class name substituted} if necessary to allow for runtime 
-     * bytecode enhancement.
-     *
-     * <p> 
-     * The {@link ObjectSpecification} can be retrieved using 
-     * {@link SpecificationLoader#lookupBySpecIdElseLoad(String)}} passing the logical-type-name as argument.
+     * @see LogicalType#getLogicalTypeName()
      */
     default String getLogicalTypeName() {
         return getLogicalType().getLogicalTypeName();
diff --git a/api/applib/src/main/java/org/apache/isis/applib/id/LogicalType.java b/api/applib/src/main/java/org/apache/isis/applib/id/LogicalType.java
index 360f1e8..7b73426 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/id/LogicalType.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/id/LogicalType.java
@@ -26,6 +26,7 @@ import java.util.function.Supplier;
 
 import javax.annotation.Nullable;
 
+import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
 
@@ -37,6 +38,12 @@ import lombok.val;
 
 /**
  * A generalization of Java's class type to also hold a logical name, which can be supplied lazily.
+ * <p>
+ * Equality is driven by the corresponding class exclusively, meaning the logical name is ignored 
+ * in order to not cause any side-effects on logical name memoization eg. it happening too early.
+ * Meta-model validators will take care, that there is no logical name ambiguity, that is, 
+ * there can no LogicalTypes sharing the same corresponding class but having different logical names. 
+ * 
  * @apiNote thread-safe and serializable
  * @since 2.0 {@index}
  */
@@ -120,6 +127,25 @@ implements
         return getCorrespondingClass().getCanonicalName();
     }
     
+    /**
+     * Returns the (unique) logical-type-name, as per the 
+     * {@link ObjectSpecIdFacet}.
+     *
+     * <p>
+     * This will typically be the value of the {@link DomainObject#objectType()} annotation attribute.
+     * If none has been specified then will default to the fully qualified class name (with
+     * {@link ClassSubstitutorRegistry class name substituted} if necessary to allow for runtime 
+     * bytecode enhancement.
+     *
+     * <p> 
+     * The {@link ObjectSpecification} can be retrieved using 
+     * {@link SpecificationLoader#lookupBySpecIdElseLoad(String)}} passing the logical-type-name as argument.
+     * 
+     * @see ClassSubstitutorRegistry
+     * @see ObjectSpecIdFacet
+     * @see ObjectSpecification
+     * @see SpecificationLoader
+     */
     @Synchronized
     public String getLogicalTypeName() {
         if(logicalName == null) {
diff --git a/api/applib/src/main/java/org/apache/isis/applib/id/ObjectSpecId.java b/api/applib/src/main/java/org/apache/isis/applib/id/ObjectSpecId.java
deleted file mode 100644
index ba9d81b..0000000
--- a/api/applib/src/main/java/org/apache/isis/applib/id/ObjectSpecId.java
+++ /dev/null
@@ -1,65 +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.applib.id;
-
-import java.io.Serializable;
-
-import org.apache.isis.commons.internal.base._Refs;
-
-import static org.apache.isis.commons.internal.base._With.requiresNotEmpty;
-
-import lombok.AccessLevel;
-import lombok.NonNull;
-import lombok.RequiredArgsConstructor;
-import lombok.Value;
-
-/**
- * Represents an {@link org.apache.isis.core.metamodel.spec.ObjectSpecification}, as determined by
- * an {@link org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet}.
- *
- * <p>
- * Has value semantics.
- * @deprecated use {@link LogicalType} instead
- */
-@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
-@Value
-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(final @NonNull String specId) {
-        requiresNotEmpty(specId, "specId");
-        return new ObjectSpecId(
-                specId, 
-                _Refs.stringRef(specId).cutAtLastIndexOf("."));
-    }
-
-    public String asString() {
-        return specId;
-    }
-
-    @Override
-    public String toString() {
-        return asString();
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureId.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureId.java
index ac3ed55..5197607 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureId.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureId.java
@@ -33,7 +33,6 @@ import static java.util.Comparator.nullsFirst;
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.annotation.Value;
-import org.apache.isis.applib.id.ObjectSpecId;
 import org.apache.isis.applib.services.appfeat.ApplicationMemberType;
 import org.apache.isis.applib.util.Equality;
 import org.apache.isis.applib.util.Hashing;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
index 72c25f6..0648106 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
@@ -30,7 +30,6 @@ import org.springframework.core.annotation.Order;
 import org.springframework.stereotype.Service;
 
 import org.apache.isis.applib.annotation.OrderPrecedence;
-import org.apache.isis.applib.id.ObjectSpecId;
 import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.applib.services.commanddto.processor.CommandDtoProcessor;
 import org.apache.isis.applib.services.grid.GridService;
diff --git a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainObjectResourceServerside.java b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainObjectResourceServerside.java
index 8474e2c..be54907 100644
--- a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainObjectResourceServerside.java
+++ b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainObjectResourceServerside.java
@@ -39,7 +39,6 @@ import javax.ws.rs.core.Response;
 import org.springframework.stereotype.Component;
 
 import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.applib.id.ObjectSpecId;
 import org.apache.isis.applib.layout.component.ActionLayoutData;
 import org.apache.isis.applib.layout.component.CollectionLayoutData;
 import org.apache.isis.applib.layout.component.DomainObjectLayoutData;
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/bookmarkedpages/BookmarkedPagesPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/bookmarkedpages/BookmarkedPagesPanel.java
index 6379bc5..ca9d985 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/bookmarkedpages/BookmarkedPagesPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/bookmarkedpages/BookmarkedPagesPanel.java
@@ -43,7 +43,6 @@ import org.apache.wicket.request.resource.ResourceReference;
 import org.apache.wicket.util.string.Strings;
 
 import org.apache.isis.applib.exceptions.unrecoverable.ObjectNotFoundException;
-import org.apache.isis.applib.id.ObjectSpecId;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.viewer.wicket.model.models.BookmarkTreeNode;