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/04/15 18:36:19 UTC

[isis] branch master updated: ISIS-2569: remove Oid.empty()

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 eb37524  ISIS-2569: remove Oid.empty()
eb37524 is described below

commit eb37524fde468dcc8bfad016a2d33868053b6ded
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Apr 15 20:36:02 2021 +0200

    ISIS-2569: remove Oid.empty()
    
    also fixes issue with BookmarkService after having converted return
    types to Optional
---
 .../isis/applib/services/bookmark/Bookmark.java    |  3 +-
 .../isis/core/metamodel/adapter/oid/Oid.java       | 10 ----
 .../isis/core/metamodel/adapter/oid/_EmptyOid.java | 70 ----------------------
 .../core/metamodel/adapter/oid/_OidMarshaller.java |  2 -
 .../metamodel/commons/CanonicalParameterUtil.java  |  2 +-
 ...ObjectFacetDeclarativeInitializingAbstract.java | 17 ++----
 .../identify/ObjectIdentifier_builtinHandlers.java |  4 +-
 .../bookmarks/BookmarkServiceDefault.java          |  2 +-
 8 files changed, 12 insertions(+), 98 deletions(-)

diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/Bookmark.java b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/Bookmark.java
index b37b410..8af8f16 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/Bookmark.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/Bookmark.java
@@ -95,8 +95,7 @@ public class Bookmark implements Serializable {
     
     /**
      * The canonical form of the {@link Bookmark}, that is 
-     * &quot;{@link #getLogicalTypeName() logical-type-name}{@value #SEPARATOR}{@link #getIdentifier()}&quot;.
-     *
+     * {@link #getLogicalTypeName() logical-type-name}{@value #SEPARATOR}{@link #getIdentifier() identifier}.
      * <p>
      * This is parseable by the {@link #parse(String)}.
      */
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/Oid.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/Oid.java
index 486970e..b4f9cb7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/Oid.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/Oid.java
@@ -45,10 +45,6 @@ public interface Oid extends Serializable {
 
     // -- FACTORIES
 
-    public static Oid empty() {
-        return _EmptyOid.INSTANCE;
-    }
-
     public static Oid of(final LogicalType logicalType, final String identifier) {
         return _SimpleOid.of(
                 logicalType.getLogicalTypeName(), 
@@ -121,12 +117,6 @@ public interface Oid extends Serializable {
         
     }
     
-    // -- EMPTY OID 
-    
-    default boolean isEmpty() {
-        return false; // default, only overridden by Oid_Value
-    }
-    
     // -- CONVERSION
     
     public default Bookmark asBookmark() {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/_EmptyOid.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/_EmptyOid.java
deleted file mode 100644
index b7abe85..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/_EmptyOid.java
+++ /dev/null
@@ -1,70 +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.adapter.oid;
-
-import org.apache.isis.applib.services.bookmark.Bookmark;
-
-final class _EmptyOid implements Oid {
-
-    private static final long serialVersionUID = 2L;
-
-    static final _EmptyOid INSTANCE = new _EmptyOid();
-
-    @Override
-    public String stringify() {
-        return null;
-    }
-
-    @Override
-    public boolean isEmpty() { 
-        return true; 
-    }
-
-    @Override
-    public String getLogicalTypeName() {
-        return null;
-    }
-
-    @Override
-    public String getIdentifier() {
-        return null;
-    }
-
-    @Override
-    public String toString() {
-        return "EMPTY_OID";
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        return obj == INSTANCE;
-    }
-    
-    @Override
-    public int hashCode() {
-        return 0;
-    }
-
-    @Override
-    public Bookmark asBookmark() {
-        return null;
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/_OidMarshaller.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/_OidMarshaller.java
index 01456c5..2a50c6e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/_OidMarshaller.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/_OidMarshaller.java
@@ -24,7 +24,6 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.stream.Stream;
 
-import org.apache.isis.commons.internal.assertions._Assert;
 import org.apache.isis.commons.internal.base._Casts;
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.commons.internal.collections._Lists;
@@ -116,7 +115,6 @@ final class _OidMarshaller {
     // -- MARSHAL / STRINGIFY
 
     static final String marshal(final @NonNull Oid oid) {
-        _Assert.assertFalse(oid.isEmpty(), "cannot marshal an empty OID");
         return oid.getLogicalTypeName() + SEPARATOR + oid.getIdentifier();
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/CanonicalParameterUtil.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/CanonicalParameterUtil.java
index e446de5..f5c9f62 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/CanonicalParameterUtil.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/CanonicalParameterUtil.java
@@ -180,7 +180,7 @@ public final class CanonicalParameterUtil {
                     final String expected = parameterType.getName();
                     final String actual = parameterValueTypeLiteral;
                     
-                    sb.append(String.format("param-type[%d]: '%s', got '%s'\n",
+                    sb.append(String.format("param-type[%d]: expected '%s', got '%s'\n",
                         j, expected, actual));
                 }
             }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java
index 3e9cb08..c9a8a3d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java
@@ -19,8 +19,6 @@
 
 package org.apache.isis.core.metamodel.facets.object.recreatable;
 
-import java.util.stream.Stream;
-
 import org.apache.isis.applib.services.urlencoding.UrlEncodingService;
 import org.apache.isis.commons.internal.memento._Mementos;
 import org.apache.isis.commons.internal.memento._Mementos.SerializingAdapter;
@@ -30,7 +28,6 @@ import org.apache.isis.core.metamodel.facets.PostConstructMethodCache;
 import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacet;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.feature.MixedIn;
-import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
 
 import lombok.val;
 
@@ -66,10 +63,9 @@ extends RecreatableObjectFacetAbstract {
 
         super.getServiceInjector().injectServicesInto(viewModelPojo);
         
-        val propertiesStream = spec.streamProperties(MixedIn.EXCLUDED)
-                .filter(property->mementoKeys.contains(property.getId()));
-
-        propertiesStream.forEach(property->{
+        spec.streamProperties(MixedIn.EXCLUDED)
+        .filter(property->mementoKeys.contains(property.getId()))
+        .forEach(property->{
 
             val propertyId = property.getId();
             val propertyType = property.getSpecification().getCorrespondingClass();
@@ -99,9 +95,7 @@ extends RecreatableObjectFacetAbstract {
         val viewModelAdapter = objectManager.adapt(viewModelPojo);
         val spec = viewModelAdapter.getSpecification();
 
-        final Stream<OneToOneAssociation> properties = spec.streamProperties(MixedIn.EXCLUDED);
-
-        properties
+        spec.streamProperties(MixedIn.EXCLUDED)
         // ignore read-only
         .filter(property->property.containsNonFallbackFacet(PropertySetterFacet.class))
         // ignore those explicitly annotated as @NotPersisted
@@ -109,7 +103,8 @@ extends RecreatableObjectFacetAbstract {
         .forEach(property->{
             final ManagedObject propertyValue = 
                     property.get(viewModelAdapter, InteractionInitiatedBy.FRAMEWORK);
-            if(propertyValue != null && propertyValue.getPojo()!=null) {
+            if(propertyValue != null 
+                    && propertyValue.getPojo()!=null) {
                 memento.put(property.getId(), propertyValue.getPojo());
             }
         });
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/identify/ObjectIdentifier_builtinHandlers.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/identify/ObjectIdentifier_builtinHandlers.java
index a56a61a..3a3fa13 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/identify/ObjectIdentifier_builtinHandlers.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/identify/ObjectIdentifier_builtinHandlers.java
@@ -100,7 +100,9 @@ class ObjectIdentifier_builtinHandlers {
 
         @Override
         public Oid handle(ManagedObject managedObject) {
-            return Oid.empty();
+            throw _Exceptions.illegalArgument("cannot 'identify' the value type %s, "
+                    + "as values have no identifier",
+                    managedObject.getSpecification().getCorrespondingClass().getName());
         }
 
     }
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/bookmarks/BookmarkServiceDefault.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/bookmarks/BookmarkServiceDefault.java
index 72e41aa..d1cf544 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/bookmarks/BookmarkServiceDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/bookmarks/BookmarkServiceDefault.java
@@ -145,7 +145,7 @@ public class BookmarkServiceDefault implements BookmarkService, SerializingAdapt
 
         if(Bookmark.class.isAssignableFrom(value.getClass())) {
             final Bookmark valueBookmark = (Bookmark) value;
-            return _Casts.uncheckedCast(lookup(valueBookmark));
+            return _Casts.uncheckedCast(lookup(valueBookmark).orElse(null));
         }
 
         return _Casts.uncheckedCast(value);