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/12/09 16:06:19 UTC

[isis] branch master updated: ISIS-2911: cleaning up debug code

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 642ca1d  ISIS-2911: cleaning up debug code
642ca1d is described below

commit 642ca1d9c9f75697353daa082efddf3694d3d332
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Dec 9 17:06:07 2021 +0100

    ISIS-2911: cleaning up debug code
---
 .../commons/internal/base/debug/XrayUiTest.java    |  1 +
 ...ableObjectFacetForXmlRootElementAnnotation.java |  9 +-
 .../managed/PropertyNegotiationModel.java          |  5 +-
 .../identify/ObjectBookmarker_builtinHandlers.java | 32 +++----
 .../legacy/JavaUtilDateValueSemantics.java         |  2 +-
 .../command/SchemaValueMarshallerDefault.java      |  7 --
 .../viewers/jdo/wkt/InteractionTestJdoWkt.java     |  4 +-
 .../viewers/jpa/wkt/InteractionTestJpaWkt.java     |  4 +-
 .../models/interaction/BookmarkedObjectWkt.java    |  5 --
 .../model/models/interaction/_Experiments.java     | 99 ----------------------
 .../IsisWicketAjaxRequestListenerUtil.java         |  5 +-
 11 files changed, 29 insertions(+), 144 deletions(-)

diff --git a/commons/src/test/java/org/apache/isis/commons/internal/base/debug/XrayUiTest.java b/commons/src/test/java/org/apache/isis/commons/internal/base/debug/XrayUiTest.java
index 0f921ae..0a0644e 100644
--- a/commons/src/test/java/org/apache/isis/commons/internal/base/debug/XrayUiTest.java
+++ b/commons/src/test/java/org/apache/isis/commons/internal/base/debug/XrayUiTest.java
@@ -57,6 +57,7 @@ class XrayUiTest {
             .forEach(this::log);
         }
 
+        @SuppressWarnings("deprecation")
         private void log(final String x) {
             _Debug.log(x);
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForXmlRootElementAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForXmlRootElementAnnotation.java
index 89384e3..39ea36d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForXmlRootElementAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForXmlRootElementAnnotation.java
@@ -19,7 +19,6 @@
 package org.apache.isis.core.metamodel.facets.object.recreatable;
 
 import java.util.Optional;
-import java.util.UUID;
 
 import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.applib.services.jaxb.JaxbService;
@@ -43,7 +42,6 @@ extends RecreatableObjectFacetAbstract {
         super(holder, RecreationMechanism.INSTANTIATES, postConstructMethodCache, Precedence.HIGH);
     }
 
-
     @Override
     protected Object doInstantiate(final Class<?> viewModelClass, final @NonNull Optional<Bookmark> bookmark) {
         final String xmlStr = getUrlEncodingService().decodeToString(bookmark.map(Bookmark::getIdentifier).orElse(null));
@@ -55,13 +53,8 @@ extends RecreatableObjectFacetAbstract {
     protected String serialize(final ManagedObject managedObject) {
         final String xml = getJaxbService().toXml(managedObject.getPojo());
         final String encoded = getUrlEncodingService().encodeString(xml);
-        //FIXME[ISIS-2903] gets called about 4 times per same object, why?
         _Debug.onCondition(XrayUi.isXrayEnabled(), ()->{
-            _Debug.log("%s => %s",
-                    super.getMetaModelContext().getInteractionProvider().getInteractionId()
-                    .map(UUID::toString)
-                    .orElse("no-interaction"),
-                    encoded);
+            _Debug.log("[JAXB] serializing viewmodel %s", managedObject.getSpecification().getLogicalTypeName());
         });
         return encoded;
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/PropertyNegotiationModel.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/PropertyNegotiationModel.java
index 3dbc93f..27daed1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/PropertyNegotiationModel.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/PropertyNegotiationModel.java
@@ -27,6 +27,7 @@ import org.apache.isis.commons.internal.binding._Observables;
 import org.apache.isis.commons.internal.binding._Observables.BooleanObservable;
 import org.apache.isis.commons.internal.binding._Observables.LazyObservable;
 import org.apache.isis.commons.internal.debug._Debug;
+import org.apache.isis.commons.internal.debug.xray.XrayUi;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ManagedObjects;
@@ -157,7 +158,9 @@ public class PropertyNegotiationModel implements ManagedValue {
 
     public void submit() {
 
-        _Debug.log("[PENDING MODEL] submit pending property value '%s' into owning object", getValue().getValue());
+        _Debug.onCondition(XrayUi.isXrayEnabled(), ()->{
+            _Debug.log("[PENDING MODEL] submit pending property value '%s' into owning object", getValue().getValue());
+        });
 
         managedProperty.modifyProperty(getValue().getValue());
         isCurrentValueAbsent.invalidate();
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/identify/ObjectBookmarker_builtinHandlers.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/identify/ObjectBookmarker_builtinHandlers.java
index e9e6257..4fddfc3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/identify/ObjectBookmarker_builtinHandlers.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/identify/ObjectBookmarker_builtinHandlers.java
@@ -32,17 +32,14 @@ import org.apache.isis.commons.internal.debug._Debug;
 import org.apache.isis.commons.internal.debug.xray.XrayUi;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
 import org.apache.isis.core.metamodel.facets.object.entity.EntityFacet;
-import org.apache.isis.core.metamodel.facets.object.entity.PersistenceStandard;
 import org.apache.isis.core.metamodel.facets.object.value.ValueFacet;
 import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
 import org.apache.isis.core.metamodel.objectmanager.identify.ObjectBookmarker.Handler;
-import org.apache.isis.core.metamodel.objectmanager.memento.ObjectMementoService;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
-import org.apache.isis.core.metamodel.spec.ManagedObjects.EntityUtil;
-import org.apache.isis.core.metamodel.spec.PackedManagedObject;
 
 import lombok.SneakyThrows;
 import lombok.val;
+import lombok.extern.log4j.Log4j2;
 
 class ObjectBookmarker_builtinHandlers {
 
@@ -81,7 +78,7 @@ class ObjectBookmarker_builtinHandlers {
 
     }
 
-    //@Log4j2
+    @Log4j2
     static class BookmarkForEntities implements Handler {
 
         @Override
@@ -103,33 +100,28 @@ class ObjectBookmarker_builtinHandlers {
                 throw _Exceptions.unrecoverable(msg);
             }
 
-            // special code path (on JDO), when detached entity with its OID not previously memoized
+            // fail early when detached entities are detected
+            // should have been re-fetched at start of this request-cycle
             if(!managedObject.isBookmarkMemoized()
-                    && EntityUtil.getPersistenceStandard(managedObject)
-                        .map(PersistenceStandard::isJdo)
-                        .orElse(false)
+//                    && EntityUtil.getPersistenceStandard(managedObject)
+//                        .map(PersistenceStandard::isJdo)
+//                        .orElse(false)
                     && !entityFacet.getEntityState(entityPojo).isAttached()) {
 
                 _Debug.onCondition(XrayUi.isXrayEnabled(), ()->{
                     _Debug.log("detached entity detected %s", entityPojo);
                 });
 
-                throw _Exceptions.illegalArgument(
+                val msg = String.format(
                         "The persistence layer does not recognize given object of type %s, "
                         + "meaning the object has no identifier that associates it with the persistence layer. "
                         + "(most likely, because the object is detached, eg. was not persisted after being new-ed up)",
                         entityPojo.getClass().getName());
 
-//                // fail early, if re-fetch failed
-//                _Assert.assertTrue(
-//                        entityFacet.getEntityState(entityPojo).isAttached(),
-//                        ()->{
-//                            val msg = String.format("failed to re-attach (persist) JDO entity %s, "
-//                                    + "while creating a Bookmark",
-//                                    spec.getLogicalTypeName());
-//                            log.error(msg); // in case exception gets swallowed
-//                            return msg;
-//                        });
+                // in case of the exception getting swallowed, also write a log
+                log.error(msg);
+
+                throw _Exceptions.illegalArgument(msg);
             }
 
             val identifier = entityFacet.identifierFor(spec, entityPojo);
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/legacy/JavaUtilDateValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/legacy/JavaUtilDateValueSemantics.java
index f32c240..8d9ccc0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/legacy/JavaUtilDateValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/legacy/JavaUtilDateValueSemantics.java
@@ -41,7 +41,7 @@ import org.apache.isis.core.metamodel.valuetypes.TemporalSemanticsAdapter;
 @Component
 @Named("isis.val.JavaUtilDateValueSemantics")
 public class JavaUtilDateValueSemantics
-extends TemporalSemanticsAdapter<Date, LocalDateTime>  {
+extends TemporalSemanticsAdapter<java.util.Date, LocalDateTime>  {
 
     @Inject LocalDateTimeValueSemantics localDateTimeValueSemantics;
 
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/command/SchemaValueMarshallerDefault.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/command/SchemaValueMarshallerDefault.java
index c3e03c4..5a2dab3 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/command/SchemaValueMarshallerDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/command/SchemaValueMarshallerDefault.java
@@ -35,8 +35,6 @@ import org.apache.isis.commons.internal.base._Casts;
 import org.apache.isis.commons.internal.base._NullSafe;
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.commons.internal.context._Context;
-import org.apache.isis.commons.internal.debug._Debug;
-import org.apache.isis.commons.internal.debug.xray.XrayUi;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.actions.action.invocation.IdentifierUtil;
@@ -418,11 +416,6 @@ implements SchemaValueMarshaller {
             return valueDto;
         }
         case REFERENCE: {
-
-            _Debug.onCondition(XrayUi.isXrayEnabled(), ()->{
-                _Debug.log("NULL reference detected %s", pojo);
-            });
-
             // at this point, we know the value has no bookmark
             // so leave the DTO empty (representing a null reference)
             return valueDto;
diff --git a/regressiontests/stable-viewers-jdo/src/test/java/org/apache/isis/testdomain/viewers/jdo/wkt/InteractionTestJdoWkt.java b/regressiontests/stable-viewers-jdo/src/test/java/org/apache/isis/testdomain/viewers/jdo/wkt/InteractionTestJdoWkt.java
index a3a7dbf..4baec2b 100644
--- a/regressiontests/stable-viewers-jdo/src/test/java/org/apache/isis/testdomain/viewers/jdo/wkt/InteractionTestJdoWkt.java
+++ b/regressiontests/stable-viewers-jdo/src/test/java/org/apache/isis/testdomain/viewers/jdo/wkt/InteractionTestJdoWkt.java
@@ -162,7 +162,9 @@ class InteractionTestJdoWkt extends RegressionTestAbstract {
             wktTester.executeAjaxEvent(INLINE_PROMPT_FORM_OK, "click");
         });
 
-        _Debug.log("[TEST] form submitted");
+        _Debug.onCondition(XrayUi.isXrayEnabled(), ()->{
+            _Debug.log("[TEST] form submitted");
+        });
 
         // ... should yield a new Title containing 'Bookstore2'
         run(()->{
diff --git a/regressiontests/stable-viewers-jpa/src/test/java/org/apache/isis/testdomain/viewers/jpa/wkt/InteractionTestJpaWkt.java b/regressiontests/stable-viewers-jpa/src/test/java/org/apache/isis/testdomain/viewers/jpa/wkt/InteractionTestJpaWkt.java
index 220fda5..dbc2aea 100644
--- a/regressiontests/stable-viewers-jpa/src/test/java/org/apache/isis/testdomain/viewers/jpa/wkt/InteractionTestJpaWkt.java
+++ b/regressiontests/stable-viewers-jpa/src/test/java/org/apache/isis/testdomain/viewers/jpa/wkt/InteractionTestJpaWkt.java
@@ -162,7 +162,9 @@ class InteractionTestJpaWkt extends RegressionTestAbstract {
             wktTester.executeAjaxEvent(INLINE_PROMPT_FORM_OK, "click");
         });
 
-        _Debug.log("[TEST] form submitted");
+        _Debug.onCondition(XrayUi.isXrayEnabled(), ()->{
+            _Debug.log("[TEST] form submitted");
+        });
 
         // ... should yield a new Title containing 'Bookstore2'
         run(()->{
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/interaction/BookmarkedObjectWkt.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/interaction/BookmarkedObjectWkt.java
index c996e03..c2b334c 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/interaction/BookmarkedObjectWkt.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/interaction/BookmarkedObjectWkt.java
@@ -145,11 +145,6 @@ extends ModelAbstract<ManagedObject> {
     public final ManagedObject getObjectAndRefetch() {
         //EntityUtil.assertAttachedWhenEntity()//guard
         val entityOrViewmodel = super.getObject();
-
-        if(_Experiments.appliesTo(entityOrViewmodel)) {
-            return _Experiments.refetch(entityOrViewmodel, this::reload);
-        }
-
         return EntityUtil.computeIfDetached(entityOrViewmodel, this::reload);
     }
 
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/interaction/_Experiments.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/interaction/_Experiments.java
deleted file mode 100644
index 44c8fdb..0000000
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/interaction/_Experiments.java
+++ /dev/null
@@ -1,99 +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.viewer.wicket.model.models.interaction;
-
-import java.util.UUID;
-import java.util.function.UnaryOperator;
-
-import org.apache.isis.commons.internal.debug._Debug;
-import org.apache.isis.core.metamodel.spec.ManagedObject;
-
-import lombok.val;
-import lombok.experimental.UtilityClass;
-
-@Deprecated
-@UtilityClass
-final class _Experiments {
-
-    public static boolean appliesTo(final ManagedObject entityOrViewmodel) {
-        val spec = entityOrViewmodel.getSpecification();
-        //FIXME actually we are interested in whether the viewmodel contains entities or not
-        if(!spec.getCorrespondingClass()
-                .getSimpleName().contains("InventoryJaxb")) {
-            return false;
-        }
-        return false;
-    }
-
-    public static ManagedObject refetch(
-            final ManagedObject viewmodel,
-            final UnaryOperator<ManagedObject> onDetachedEntity) {
-
-        val spec = viewmodel.getSpecification();
-
-        val currentInteractionId = spec.getMetaModelContext().getInteractionProvider().getInteractionId().get();
-
-        // check whether we have done this already for this request-cycle, and if so skip
-        if(canSkip(currentInteractionId)){
-            return viewmodel;
-        }
-
-        _Debug.log("JAXB reload from bookmark (ia: %s)", currentInteractionId.toString());
-
-//        spec.streamAssociations(MixedIn.EXCLUDED)
-//        .forEach(assoc->{
-//            if(assoc.isOneToOneAssociation()) {
-//                val prop = assoc.get(viewmodel);
-//                EntityUtil.reattach(prop);
-//                System.err.printf("reattached (prop) %s->%s%n", assoc.getId(), prop);
-//            } else {
-//                val coll = assoc.get(viewmodel);
-//                EntityUtil.reattach(coll);
-//                System.err.printf("reattached (coll) %s->%s%n", assoc.getId(), coll);
-//            }
-//        });
-
-        return onDetachedEntity.apply(viewmodel);
-    }
-
-    // -- HELPER
-
-    /**
-     * keeps track of the latest interactionId, for which re-attaching was executed;
-     * such that we do that only once per interaction;
-     * @implNote future work might use the current interaction and set a custom flag active
-     */
-    private static final ThreadLocal<UUID> THREAD_LOCAL =
-            InheritableThreadLocal.withInitial(()->null);
-
-    /**
-     * Returns whether we have done this already for this request-cycle.
-     */
-    private static boolean canSkip(final UUID currentInteractionId) {
-        val previousInteractionId = THREAD_LOCAL.get();
-        if(previousInteractionId!=null
-                && previousInteractionId.equals(currentInteractionId)) {
-            // skip
-            return true;
-        }
-        THREAD_LOCAL.set(currentInteractionId);
-        return false;
-    }
-
-}
diff --git a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/wicketapp/IsisWicketAjaxRequestListenerUtil.java b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/wicketapp/IsisWicketAjaxRequestListenerUtil.java
index 4343808..f079967 100644
--- a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/wicketapp/IsisWicketAjaxRequestListenerUtil.java
+++ b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/wicketapp/IsisWicketAjaxRequestListenerUtil.java
@@ -28,6 +28,7 @@ import org.apache.wicket.request.Request;
 import org.apache.wicket.request.http.WebRequest;
 
 import org.apache.isis.commons.internal.debug._Debug;
+import org.apache.isis.commons.internal.debug.xray.XrayUi;
 import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
 import org.apache.isis.core.runtime.context.IsisAppCommonContext;
 import org.apache.isis.viewer.wicket.model.models.EntityModel;
@@ -88,7 +89,9 @@ public final class IsisWicketAjaxRequestListenerUtil {
                 return lirqh;
             }
 
-            _Debug.log("[IRequestHandler] recreate model %s", spec.getCorrespondingClass().getSimpleName());
+            _Debug.onCondition(XrayUi.isXrayEnabled(), ()->{
+                _Debug.log("[IRequestHandler] recreate model %s", spec.getCorrespondingClass().getSimpleName());
+            });
 
             val viewmodel = entityModel.getBookmarkedOwner();
             if(viewmodel.isBookmarkMemoized()) {