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 2022/05/18 15:22:09 UTC
[isis] branch master updated: ISIS-3058: minor refactoring and comments
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 dd8ebbb776 ISIS-3058: minor refactoring and comments
dd8ebbb776 is described below
commit dd8ebbb7761406dcda6e585080a6e98bc123aa47
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed May 18 17:22:03 2022 +0200
ISIS-3058: minor refactoring and comments
---
.../ui/actionresponse/ActionResultResponse.java | 40 ++++++++++-
.../ui/actionresponse/PageRedirectRequest.java | 6 ++
.../isis/viewer/wicket/ui/pages/PageAbstract.java | 58 ++++++++++++++++
.../viewer/wicket/ui/pages/entity/EntityPage.java | 79 +++-------------------
.../wicket/ui/panels/FormExecutorDefault.java | 4 +-
.../IsisWicketAjaxRequestListenerUtil.java | 16 ++++-
6 files changed, 131 insertions(+), 72 deletions(-)
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/actionresponse/ActionResultResponse.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/actionresponse/ActionResultResponse.java
index ef6a2eabce..1e4ac16be2 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/actionresponse/ActionResultResponse.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/actionresponse/ActionResultResponse.java
@@ -100,14 +100,16 @@ public class ActionResultResponse {
}
/**
- * Populated only if {@link #getHandlingStrategy() handling strategy} is {@link ActionResultResponseHandlingStrategy#SCHEDULE_HANDLER}
+ * Populated only if {@link #getHandlingStrategy() handling strategy}
+ * is {@link ActionResultResponseHandlingStrategy#SCHEDULE_HANDLER}
*/
public IRequestHandler getHandler() {
return handler;
}
/**
- * Populated only if {@link #getHandlingStrategy() handling strategy} is {@link ActionResultResponseHandlingStrategy#REDIRECT_TO_PAGE}
+ * Populated only if {@link #getHandlingStrategy() handling strategy}
+ * is {@link ActionResultResponseHandlingStrategy#REDIRECT_TO_PAGE}
*/
public PageRedirectRequest<?> getPageRedirect() {
return pageRedirect;
@@ -130,4 +132,38 @@ public class ActionResultResponse {
public String getUrl() {
return url;
}
+
+ @Override
+ public String toString() {
+ return String.format("ActionResultResponse["
+ + "handlingStrategy=%s,"
+ + "requestHandler=%s,"
+ + "pageRedirect=%s,"
+ + "ajaxTarget=%s,"
+ + "url=%s"
+ + "]",
+ handlingStrategy.name(),
+ handler,
+ pageRedirect,
+ target,
+ url);
+ }
+
+ /** introduced for debugging */
+ public String toStringMultiline() {
+ return String.format("ActionResultResponse {\n"
+ + "\thandlingStrategy=%s,\n"
+ + "\trequestHandler=%s,\n"
+ + "\tpageRedirect=%s,\n"
+ + "\tajaxTarget=%s,\n"
+ + "\turl=%s\n"
+ + "}",
+ handlingStrategy.name(),
+ handler,
+ pageRedirect,
+ target,
+ url);
+ }
+
+
}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/actionresponse/PageRedirectRequest.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/actionresponse/PageRedirectRequest.java
index bcd9a3a3d4..2f865482e4 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/actionresponse/PageRedirectRequest.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/actionresponse/PageRedirectRequest.java
@@ -67,4 +67,10 @@ public class PageRedirectRequest<T extends IRequestablePage> {
requestCycle.setResponsePage(pageClass);
}
+ @Override
+ public String toString() {
+ return String.format("PageRedirectRequest[pageClass=%s,pageParameters=%s]",
+ pageClass.getName(), pageParameters);
+ }
+
}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
index 7558f84661..3db0cf0ccb 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
@@ -22,6 +22,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Optional;
+import java.util.UUID;
import org.apache.wicket.Component;
import org.apache.wicket.MarkupContainer;
@@ -53,6 +54,11 @@ import org.apache.isis.applib.annotation.PromptStyle;
import org.apache.isis.applib.services.exceprecog.ExceptionRecognizerService;
import org.apache.isis.applib.services.metamodel.BeanSort;
import org.apache.isis.commons.internal.base._Casts;
+import org.apache.isis.commons.internal.base._Refs;
+import org.apache.isis.commons.internal.base._Refs.ObjectReference;
+import org.apache.isis.commons.internal.base._Timing;
+import org.apache.isis.commons.internal.debug._Debug;
+import org.apache.isis.commons.internal.debug.xray.XrayUi;
import org.apache.isis.viewer.common.model.components.ComponentType;
import org.apache.isis.viewer.wicket.model.hints.IsisEnvelopeEvent;
import org.apache.isis.viewer.wicket.model.hints.IsisEventLetterAbstract;
@@ -496,5 +502,57 @@ implements ActionPromptProvider {
}
+ // -- RE-ATTACH ENTITIES
+
+ @Override
+ public void renderPage() {
+ if(XrayUi.isXrayEnabled()){
+ _Debug.log("about to render %s ..", this.getClass().getSimpleName());
+ val stopWatch = _Timing.now();
+ onNewRequestCycle();
+ super.renderPage();
+ stopWatch.stop();
+ _Debug.log(".. rendering took %s", stopWatch.toString());
+ } else {
+ onNewRequestCycle();
+ super.renderPage();
+ }
+ }
+
+ /**
+ * Hook to re-fetch entities for view-models, usually required once at begin of request.
+ * @apiNote ideally we would not need that hook at all;
+ * this is a hack that came after re-designing the entity-model
+ */
+ public void onNewRequestCycle() {
+ // implemented only by EntityPage
+ }
+
+ // -- HELPER
+
+ private transient ObjectReference<UUID> interactionId;
+ private ObjectReference<UUID> interactionIdRef() {
+ if(interactionId==null) {
+ interactionId = _Refs.objectRef(null);
+ }
+ return interactionId;
+ }
+
+ protected boolean isAlreadyRefreshedWithinThisInteraction() {
+ val currentInteractionId = getCommonContext()
+ .getInteractionProvider().getInteractionId().orElseThrow();
+
+ val alreadyRefreshedForThisInteraction =
+ interactionIdRef().getValue()
+ .map(currentInteractionId::equals)
+ .orElse(false);
+
+ if(alreadyRefreshedForThisInteraction) {
+ return true;
+ }
+
+ interactionIdRef().setValue(currentInteractionId);
+ return false;
+ }
}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java
index 110ab86d61..0ca6cf6b10 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java
@@ -18,8 +18,6 @@
*/
package org.apache.isis.viewer.wicket.ui.pages.entity;
-import java.util.UUID;
-
import org.apache.wicket.Application;
import org.apache.wicket.RestartResponseException;
import org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation;
@@ -28,14 +26,10 @@ import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.markup.repeater.RepeatingView;
-import org.apache.wicket.request.component.IRequestablePage;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.request.resource.CssResourceReference;
import org.apache.isis.applib.services.user.UserMemento;
-import org.apache.isis.commons.internal.base._Refs;
-import org.apache.isis.commons.internal.base._Refs.ObjectReference;
-import org.apache.isis.commons.internal.base._Timing;
import org.apache.isis.commons.internal.debug._Debug;
import org.apache.isis.commons.internal.debug.xray.XrayUi;
import org.apache.isis.core.metamodel.spec.ManagedObject;
@@ -136,22 +130,6 @@ public class EntityPage extends PageAbstract {
response.render(CssHeaderItem.forReference(ENTITY_PAGE_CSS));
}
- @Override
- public void renderPage() {
- if(XrayUi.isXrayEnabled()){
- _Debug.log("about to render EntityPage ..");
- val stopWatch = _Timing.now();
- viewmodelRefresh(this);
- super.renderPage();
- stopWatch.stop();
- _Debug.log(".. rendering took %s", stopWatch.toString());
- } else {
- viewmodelRefresh(this);
- super.renderPage();
- }
- }
-
-
@Override
public UiHintContainer getUiHintContainerIfAny() {
return model;
@@ -226,58 +204,23 @@ public class EntityPage extends PageAbstract {
}
- // -- UTILITIES
-
- /**
- * Re-fetch entities for view-models, usually required once at begin of request.
- */
- public static void viewmodelRefresh(
- final IRequestablePage iRequestablePage) {
- if(iRequestablePage instanceof EntityPage) {
-
- val entityPage = (EntityPage) iRequestablePage;
-
- // optimization, not strictly required
- if(entityPage.isAlreadyRefreshedWithinThisInteraction()) {
- return;
- }
-
- val entityModel = (EntityModel)entityPage.getUiHintContainerIfAny();
+ // -- RE-ATTACH ENTITIES
- ManagedObjects.refreshViewmodel(entityModel.getObject(),
- ()->PageParameterUtils
- .toBookmark(entityPage.getPageParameters())
- .orElseThrow());
+ @Override
+ public void onNewRequestCycle() {
+ // optimization, not strictly required
+ if(isAlreadyRefreshedWithinThisInteraction()) {
+ return;
}
+ val entityModel = (EntityModel) getUiHintContainerIfAny();
+ ManagedObjects.refreshViewmodel(entityModel.getObject(),
+ ()->PageParameterUtils
+ .toBookmark(getPageParameters())
+ .orElseThrow());
}
// -- HELPER
- private transient ObjectReference<UUID> interactionId;
- private ObjectReference<UUID> interactionIdRef() {
- if(interactionId==null) {
- interactionId = _Refs.objectRef(null);
- }
- return interactionId;
- }
-
- private boolean isAlreadyRefreshedWithinThisInteraction() {
- val currentInteractionId = getCommonContext()
- .getInteractionProvider().getInteractionId().orElseThrow();
-
- val alreadyRefreshedForThisInteraction =
- interactionIdRef().getValue()
- .map(currentInteractionId::equals)
- .orElse(false);
-
- if(alreadyRefreshedForThisInteraction) {
- return true;
- }
-
- interactionIdRef().setValue(currentInteractionId);
- return false;
- }
-
private void addBreadcrumbIfShown(final EntityModel entityModel) {
getBreadcrumbModel()
.ifPresent(breadcrumbModel->breadcrumbModel.visited(entityModel));
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorDefault.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorDefault.java
index cf440a8104..e06d6600d2 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorDefault.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorDefault.java
@@ -180,7 +180,9 @@ implements FormExecutor {
.handleResults(getCommonContext(), resultResponse);
_Debug.onCondition(XrayUi.isXrayEnabled(), ()->{
- _Debug.log("[EXECUTOR] ... return");
+ _Debug.log("[EXECUTOR] ... return\n"
+ + " - %s\n",
+ resultResponse.toStringMultiline());
});
return FormExecutionOutcome.SUCCESS_AND_REDIRECED_TO_RESULT_PAGE; // success (valid args), allow redirect
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 b5e727f5e6..1998424556 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
@@ -25,10 +25,13 @@ import org.apache.wicket.protocol.http.WebApplication;
import org.apache.wicket.request.IRequestHandler;
import org.apache.wicket.request.IRequestMapper;
import org.apache.wicket.request.Request;
+import org.apache.wicket.request.component.IRequestablePage;
import org.apache.isis.core.runtime.context.IsisAppCommonContext;
import org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage;
+import org.apache.isis.viewer.wicket.ui.pages.standalonecollection.StandaloneCollectionPage;
+import lombok.val;
import lombok.experimental.UtilityClass;
@@ -52,7 +55,18 @@ public final class IsisWicketAjaxRequestListenerUtil {
// _Debug.log("AJAX via ListenerRequestHandler");
// RequestCycle.get().getListeners().add(newRequestCycleListener());
- EntityPage.viewmodelRefresh(((ListenerRequestHandler)handler).getPage());
+ final IRequestablePage iRequestablePage =
+ ((ListenerRequestHandler)handler).getPage();
+
+ if(iRequestablePage instanceof StandaloneCollectionPage) {
+ val collectionPage = (StandaloneCollectionPage) iRequestablePage;
+ collectionPage.onNewRequestCycle();
+ }
+ else if(iRequestablePage instanceof EntityPage) {
+ val entityPage = (EntityPage) iRequestablePage;
+ entityPage.onNewRequestCycle();
+ }
+
}
return handler;