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 03ebe04fc7 ISIS-3119: purge IdStringifier.Abstract
03ebe04fc7 is described below

commit 03ebe04fc753d2ddde0d5ce8a2920ba20f7a5c32
Author: Andi Huber <[email protected]>
AuthorDate: Thu Aug 11 14:42:38 2022 +0200

    ISIS-3119: purge IdStringifier.Abstract
---
 .../applib/services/bookmark/IdStringifier.java    | 57 ++++++++--------------
 .../ValueSemanticsBasedOnIdStringifier.java        |  4 +-
 ...nIdStringifierWithTargetEntityClassSupport.java |  5 +-
 .../idstringifier/IdStringifierLookupService.java  |  4 +-
 .../IsisModulePersistenceJdoDatanucleus.java       | 28 +++++------
 .../changetracking/JdoLifecycleListener.java       |  4 --
 .../valuetypes/JdoDatastoreIdValueSemantics.java   |  4 +-
 .../jpa/integration/entity/JpaEntityFacet.java     |  3 +-
 8 files changed, 44 insertions(+), 65 deletions(-)

diff --git 
a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/IdStringifier.java
 
b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/IdStringifier.java
index 5b0a0d0f5e..f8ad36560c 100644
--- 
a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/IdStringifier.java
+++ 
b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/IdStringifier.java
@@ -85,7 +85,18 @@ public interface IdStringifier<T> {
         }
     }
 
-    abstract class Abstract<T> implements SupportingTargetEntityClass<T> {
+    /**
+     * Provided for backward compatibility with some v1 Ids that used a prefix 
to determine their actual type.
+     * <p>
+     * (In v2 we provide this so in the constructor, so there's no need to 
encode the type in the stringified form
+     * of the value).
+     *
+     * @param <T>
+     *
+     * @deprecated not used within the framework; eventually remove
+     */
+    @Deprecated
+    abstract class AbstractWithPrefix<T> implements 
SupportingTargetEntityClass<T> {
 
         public final static char SEPARATOR = '_';
 
@@ -95,22 +106,22 @@ public interface IdStringifier<T> {
          */
         @Getter private final Class<T> correspondingClass;
 
-        protected Abstract(
-                final @NonNull Class<T> correspondingClass) {
+        private final String prefix;
+
+        public AbstractWithPrefix(
+                @NonNull final Class<T> correspondingClass,
+                @NonNull final String typeCode) {
             _Assert.assertFalse(correspondingClass.isPrimitive(),
                     ()->String.format("not allowed to be initialzed with a 
primitive class (%s), "
                             + "use the boxed variant instead",
                             correspondingClass));
             this.correspondingClass = correspondingClass;
+            this.prefix = typeCode + SEPARATOR;
         }
 
-        /**
-         * Overridable default implementation.
-         * @param value
-         */
         @Override
-        public String enstring(@NonNull final T value) {
-            return value.toString();
+        public final String enstring(final @NonNull T value) {
+            return prefix + doEnstring(value);
         }
 
         @Override
@@ -118,34 +129,6 @@ public interface IdStringifier<T> {
             throw _Exceptions.unsupportedOperation();
         }
 
-    }
-
-    /**
-     * Provided for backward compatibility with some v1 Ids that used a prefix 
to determine their actual type.
-     *
-     * <p>
-     * (In v2 we provide this so in the constructor, so there's no need to 
encode the type in the stringified form
-     * of the value).
-     * </p>
-     *
-     * @param <T>
-     */
-    abstract class AbstractWithPrefix<T> extends Abstract<T> {
-
-                private final String prefix;
-
-        public AbstractWithPrefix(
-                @NonNull final Class<T> handledClass,
-                @NonNull final String typeCode) {
-            super(handledClass);
-            this.prefix = typeCode + SEPARATOR;
-        }
-
-        @Override
-        public final String enstring(final @NonNull T value) {
-            return prefix + doEnstring(value);
-        }
-
         /**
          * Overridable hook
          */
diff --git 
a/api/applib/src/main/java/org/apache/isis/applib/value/semantics/ValueSemanticsBasedOnIdStringifier.java
 
b/api/applib/src/main/java/org/apache/isis/applib/value/semantics/ValueSemanticsBasedOnIdStringifier.java
index ff82a6d475..2ac4622ec1 100644
--- 
a/api/applib/src/main/java/org/apache/isis/applib/value/semantics/ValueSemanticsBasedOnIdStringifier.java
+++ 
b/api/applib/src/main/java/org/apache/isis/applib/value/semantics/ValueSemanticsBasedOnIdStringifier.java
@@ -27,7 +27,9 @@ import lombok.NonNull;
 import lombok.experimental.Accessors;
 
 /**
- * @since 2.x {@index}
+ * Convenient base class for value-semantics,
+ * that are basically inferred from an {@link IdStringifier}.
+ * @since 2.0
  */
 public abstract class ValueSemanticsBasedOnIdStringifier<T>
 extends ValueSemanticsAbstract<T>
diff --git 
a/api/applib/src/main/java/org/apache/isis/applib/value/semantics/ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport.java
 
b/api/applib/src/main/java/org/apache/isis/applib/value/semantics/ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport.java
index ccd179b90d..d37825569e 100644
--- 
a/api/applib/src/main/java/org/apache/isis/applib/value/semantics/ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport.java
+++ 
b/api/applib/src/main/java/org/apache/isis/applib/value/semantics/ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport.java
@@ -27,7 +27,10 @@ import lombok.NonNull;
 import lombok.experimental.Accessors;
 
 /**
- * @since 2.x {@index}
+ * Convenient base class for value-semantics,
+ * that are basically inferred from an {@link IdStringifier} with 
target-entity-class-support.
+ * @see 
org.apache.isis.applib.services.bookmark.IdStringifier.SupportingTargetEntityClass
+ * @since 2.0
  */
 public abstract class 
ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport<T>
 extends ValueSemanticsAbstract<T>
diff --git 
a/core/runtime/src/main/java/org/apache/isis/core/runtime/idstringifier/IdStringifierLookupService.java
 
b/core/runtime/src/main/java/org/apache/isis/core/runtime/idstringifier/IdStringifierLookupService.java
index e21c017a34..4bb0cebd6a 100644
--- 
a/core/runtime/src/main/java/org/apache/isis/core/runtime/idstringifier/IdStringifierLookupService.java
+++ 
b/core/runtime/src/main/java/org/apache/isis/core/runtime/idstringifier/IdStringifierLookupService.java
@@ -51,7 +51,7 @@ import lombok.val;
  *     This is intended for framework use, there is little reason to call it 
or override it.
  * </p>
  *
- * @since 2.x
+ * @since 2.0
  */
 @Service
 @Named(IsisModuleCoreRuntime.NAMESPACE + ".IdStringifierLookupService")
@@ -104,6 +104,8 @@ public class IdStringifierLookupService {
         return Optional.ofNullable(_Casts.uncheckedCast(idStringifier));
     }
 
+    // -- HELPER
+
     private boolean handles(final IdStringifier<?> idStringifier, final 
@NonNull Class<?> candidateValueClass) {
         return idStringifier.getCorrespondingClass()
                 
.isAssignableFrom(ClassUtils.resolvePrimitiveIfNecessary(candidateValueClass));
diff --git 
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/IsisModulePersistenceJdoDatanucleus.java
 
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/IsisModulePersistenceJdoDatanucleus.java
index b89a179f22..d20fe551e3 100644
--- 
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/IsisModulePersistenceJdoDatanucleus.java
+++ 
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/IsisModulePersistenceJdoDatanucleus.java
@@ -19,14 +19,10 @@
 package org.apache.isis.persistence.jdo.datanucleus;
 
 import java.util.Collections;
-import java.util.LinkedHashSet;
 import java.util.List;
-import java.util.Set;
 
-import javax.inject.Provider;
 import javax.jdo.JDOException;
 import javax.jdo.PersistenceManagerFactory;
-import javax.jdo.annotations.PersistenceCapable;
 import javax.sql.DataSource;
 
 import org.datanucleus.api.jdo.JDOPersistenceManagerFactory;
@@ -40,7 +36,6 @@ import org.springframework.context.annotation.Primary;
 import org.springframework.dao.support.PersistenceExceptionTranslator;
 import org.springframework.transaction.interceptor.TransactionInterceptor;
 
-import org.apache.isis.applib.services.iactnlayer.InteractionService;
 import org.apache.isis.commons.internal.assertions._Assert;
 import org.apache.isis.commons.internal.base._NullSafe;
 import org.apache.isis.core.config.IsisConfiguration;
@@ -48,7 +43,6 @@ import org.apache.isis.core.config.beans.IsisBeanTypeRegistry;
 import 
org.apache.isis.core.config.beans.aoppatch.TransactionInterceptorFactory;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import 
org.apache.isis.core.metamodel.services.objectlifecycle.ObjectLifecyclePublisher;
-import org.apache.isis.core.transaction.changetracking.EntityChangeTracker;
 import 
org.apache.isis.persistence.jdo.datanucleus.changetracking.JdoLifecycleListener;
 import org.apache.isis.persistence.jdo.datanucleus.config.DatanucleusSettings;
 import org.apache.isis.persistence.jdo.datanucleus.dialect.DnJdoDialect;
@@ -138,17 +132,17 @@ public class IsisModulePersistenceJdoDatanucleus {
         return new DnJdoDialect(dataSource);
     }
 
-    private static boolean ignore(final Class<?> entityType) {
-        try {
-            if(entityType.isAnonymousClass() || entityType.isLocalClass() || 
entityType.isMemberClass() || entityType.isInterface()) {
-                return true;
-            }
-            val persistenceCapable = 
entityType.getAnnotation(PersistenceCapable.class);
-            return persistenceCapable == null; // ignore if doesn't have 
@PersistenceCapable
-        } catch (NoClassDefFoundError ex) {
-            return true;
-        }
-    }
+//    private static boolean ignore(final Class<?> entityType) {
+//        try {
+//            if(entityType.isAnonymousClass() || entityType.isLocalClass() || 
entityType.isMemberClass() || entityType.isInterface()) {
+//                return true;
+//            }
+//            val persistenceCapable = 
entityType.getAnnotation(PersistenceCapable.class);
+//            return persistenceCapable == null; // ignore if doesn't have 
@PersistenceCapable
+//        } catch (NoClassDefFoundError ex) {
+//            return true;
+//        }
+//    }
 
     @Qualifier("local-pmf-proxy")
     @Bean
diff --git 
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/changetracking/JdoLifecycleListener.java
 
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/changetracking/JdoLifecycleListener.java
index 43f1c480e1..9a13c98b7b 100644
--- 
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/changetracking/JdoLifecycleListener.java
+++ 
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/changetracking/JdoLifecycleListener.java
@@ -19,7 +19,6 @@
 package org.apache.isis.persistence.jdo.datanucleus.changetracking;
 
 import javax.enterprise.inject.Vetoed;
-import javax.inject.Provider;
 import javax.jdo.listener.AttachLifecycleListener;
 import javax.jdo.listener.ClearLifecycleListener;
 import javax.jdo.listener.CreateLifecycleListener;
@@ -32,13 +31,11 @@ import javax.jdo.listener.StoreLifecycleListener;
 
 import org.datanucleus.enhancement.Persistable;
 
-import org.apache.isis.applib.services.iactnlayer.InteractionService;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import 
org.apache.isis.core.metamodel.facets.object.publish.entitychange.EntityChangePublishingFacet;
 import 
org.apache.isis.core.metamodel.objectmanager.ObjectManager.EntityAdaptingMode;
 import 
org.apache.isis.core.metamodel.services.objectlifecycle.ObjectLifecyclePublisher;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
-import org.apache.isis.core.transaction.changetracking.EntityChangeTracker;
 
 import lombok.NonNull;
 import lombok.RequiredArgsConstructor;
@@ -205,5 +202,4 @@ DetachLifecycleListener, DirtyLifecycleListener, 
LoadLifecycleListener, StoreLif
         return _Utils.adaptEntityAndInjectServices(metaModelContext, pojo, 
bookmarking);
     }
 
-
 }
diff --git 
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoDatastoreIdValueSemantics.java
 
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoDatastoreIdValueSemantics.java
index 2b9484b3c0..1447b7de1f 100644
--- 
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoDatastoreIdValueSemantics.java
+++ 
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoDatastoreIdValueSemantics.java
@@ -76,7 +76,7 @@ extends 
ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport<Datastore
         // re-create-able through the constructor
         //
         // to do this, we also need to capture the class of the Id value class 
itself, followed by the value (as a string)
-        return value.getClass().getName() + IdStringifier.Abstract.SEPARATOR + 
value.toString();
+        return value.getClass().getName() + 
IdStringifier.AbstractWithPrefix.SEPARATOR + value.toString();
     }
 
     @SneakyThrows
@@ -84,7 +84,7 @@ extends 
ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport<Datastore
     public DatastoreId destring(
             final @NonNull String stringified,
             final @Nullable Class<?> targetEntityClass) {
-        int idx = stringified.indexOf(IdStringifier.Abstract.SEPARATOR);
+        int idx = 
stringified.indexOf(IdStringifier.AbstractWithPrefix.SEPARATOR);
         String clsName = stringified.substring(0, idx);
         String keyStr = stringified.substring(idx + 1);
         final Class<?> cls = _Context.loadClass(clsName);
diff --git 
a/persistence/jpa/integration/src/main/java/org/apache/isis/persistence/jpa/integration/entity/JpaEntityFacet.java
 
b/persistence/jpa/integration/src/main/java/org/apache/isis/persistence/jpa/integration/entity/JpaEntityFacet.java
index 123e9c77c9..fa7097205b 100644
--- 
a/persistence/jpa/integration/src/main/java/org/apache/isis/persistence/jpa/integration/entity/JpaEntityFacet.java
+++ 
b/persistence/jpa/integration/src/main/java/org/apache/isis/persistence/jpa/integration/entity/JpaEntityFacet.java
@@ -70,8 +70,7 @@ public class JpaEntityFacet
         super(EntityFacet.class, holder, Precedence.HIGH);
         this.entityClass = entityClass;
         this.serviceRegistry = serviceRegistry;
-        this.idStringifierLookupService = 
serviceRegistry.lookupService(IdStringifierLookupService.class).orElseThrow();
-
+        this.idStringifierLookupService = 
serviceRegistry.lookupServiceElseFail(IdStringifierLookupService.class);
     }
 
     // -- ENTITY FACET

Reply via email to