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;