You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2015/11/26 15:20:23 UTC

[2/3] isis git commit: ISIS-1243: minor refactorings while researching the issue to do with exception for action returning a Clob (now logged as ISIS-1264).

ISIS-1243: minor refactorings while researching the issue to do with exception for action returning a Clob (now logged as ISIS-1264).

Main changes are factoring out of some methods in ActionPanel (to make more symmetrical for no-arg vs with-arg cases), and also changing of an overloaded method signature in BulkActionsLinkFactory.


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/6a67f769
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/6a67f769
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/6a67f769

Branch: refs/heads/master
Commit: 6a67f769dea0177e329cb059196ac51f42e7016d
Parents: 26fd2cb
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Nov 26 13:56:07 2015 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Nov 26 13:56:07 2015 +0000

----------------------------------------------------------------------
 .../Persistable_downloadJdoMetadata.java        |  3 +-
 .../viewer/wicket/model/models/ActionModel.java |  2 -
 .../ActionResultResponseHandlingStrategy.java   | 13 ++--
 .../entityactions/EntityActionLinkFactory.java  |  4 +-
 .../entityactions/EntityActionUtil.java         |  2 +-
 .../actionmenu/serviceactions/CssMenuItem.java  |  4 +-
 .../ServiceActionLinkFactory.java               |  5 +-
 .../ui/components/actions/ActionPanel.java      | 72 +++++++++++---------
 .../collection/bulk/BulkActionsLinkFactory.java |  5 +-
 .../StandaloneCollectionPanel.java              |  2 +-
 .../widgets/linkandlabel/ActionLinkFactory.java |  5 +-
 .../linkandlabel/ActionLinkFactoryAbstract.java |  3 +
 12 files changed, 66 insertions(+), 54 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/6a67f769/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/jdosupport/Persistable_downloadJdoMetadata.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/jdosupport/Persistable_downloadJdoMetadata.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/jdosupport/Persistable_downloadJdoMetadata.java
index 1fdb08e..1040e79 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/jdosupport/Persistable_downloadJdoMetadata.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/jdosupport/Persistable_downloadJdoMetadata.java
@@ -55,7 +55,7 @@ public class Persistable_downloadJdoMetadata {
             cssClassFa = "fa-download"
     )
     @MemberOrder(sequence = "800.1")
-    public Object $$(final String fileName) throws JAXBException, IOException {
+    public Clob $$(final String fileName) throws JAXBException, IOException {
 
         final Class<? extends Persistable> objClass = persistable.getClass();
         final String objClassName = objClass.getName();
@@ -66,7 +66,6 @@ public class Persistable_downloadJdoMetadata {
         return new Clob(Util.withSuffix(fileName, "jdo"), "text/xml", xml);
     }
 
-
     public String default0$$() {
         return Util.withSuffix(persistable.getClass().getName(), "jdo");
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/6a67f769/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
index 84d1152..96f61ed 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
@@ -51,7 +51,6 @@ import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.value.Blob;
 import org.apache.isis.applib.value.Clob;
 import org.apache.isis.applib.value.NamedWithMimeType;
-import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager.ConcurrencyChecking;
 import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
@@ -463,7 +462,6 @@ public class ActionModel extends BookmarkableModel<ObjectAdapter> {
         final ObjectAdapter[] arguments = getArgumentsAsArray();
         final ObjectAction action = getActionMemento().getAction();
 
-        final AuthenticationSession session = getAuthenticationSession();
         final ObjectAdapter resultAdapter =
                 action.executeWithRuleChecking(
                         targetAdapter, arguments,

http://git-wip-us.apache.org/repos/asf/isis/blob/6a67f769/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/actionresponse/ActionResultResponseHandlingStrategy.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/actionresponse/ActionResultResponseHandlingStrategy.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/actionresponse/ActionResultResponseHandlingStrategy.java
index 3bc6e65..81a77ed 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/actionresponse/ActionResultResponseHandlingStrategy.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/actionresponse/ActionResultResponseHandlingStrategy.java
@@ -18,9 +18,6 @@ package org.apache.isis.viewer.wicket.ui.actionresponse;
 
 import java.net.URL;
 
-import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.viewer.wicket.model.models.VoidModel;
-import org.apache.isis.viewer.wicket.ui.pages.voidreturn.VoidReturnPage;
 import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.behavior.AbstractAjaxBehavior;
@@ -31,6 +28,10 @@ import org.apache.wicket.request.resource.ContentDisposition;
 import org.apache.wicket.util.resource.IResourceStream;
 import org.apache.wicket.util.time.Duration;
 
+import org.apache.isis.core.runtime.system.context.IsisContext;
+import org.apache.isis.viewer.wicket.model.models.VoidModel;
+import org.apache.isis.viewer.wicket.ui.pages.voidreturn.VoidReturnPage;
+
 public enum ActionResultResponseHandlingStrategy {
     REDIRECT_TO_VOID {
         @Override
@@ -55,10 +56,13 @@ public enum ActionResultResponseHandlingStrategy {
         public void handleResults(final Component component, final ActionResultResponse resultResponse) {
             RequestCycle requestCycle = component.getRequestCycle();
             AjaxRequestTarget target = requestCycle.find(AjaxRequestTarget.class);
+
             if (target == null) {
-                // normal (non-Ajax) request => just stream the Lob to the browser
+                // non-Ajax request => just stream the Lob to the browser
+                // or if this is a no-arg action, there also will be no parent for the component
                 requestCycle.scheduleRequestHandlerAfterCurrent(resultResponse.getHandler());
             } else {
+                // otherwise,
                 // Ajax request => respond with a redirect to be able to stream the Lob to the client
                 ResourceStreamRequestHandler scheduledHandler = (ResourceStreamRequestHandler) resultResponse.getHandler();
                 StreamAfterAjaxResponseBehavior streamingBehavior = new StreamAfterAjaxResponseBehavior(scheduledHandler);
@@ -66,6 +70,7 @@ public enum ActionResultResponseHandlingStrategy {
                 CharSequence callbackUrl = streamingBehavior.getCallbackUrl();
                 target.appendJavaScript("setTimeout(\"window.location.href='" + callbackUrl + "'\", 10);");
             }
+
         }
     },
     OPEN_URL_IN_BROWSER {

http://git-wip-us.apache.org/repos/asf/isis/blob/6a67f769/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/EntityActionLinkFactory.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/EntityActionLinkFactory.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/EntityActionLinkFactory.java
index 2816369..698dcf9 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/EntityActionLinkFactory.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/EntityActionLinkFactory.java
@@ -48,9 +48,9 @@ public final class EntityActionLinkFactory extends ActionLinkFactoryAbstract {
 
     @Override
     public LinkAndLabel newLink(
+            final String linkId,
             final ObjectAdapterMemento adapterMemento,
-            final ObjectAction action,
-            final String linkId) {
+            final ObjectAction action) {
 
         final ObjectAdapter objectAdapter = adapterMemento.getObjectAdapter(ConcurrencyChecking.NO_CHECK);
         

http://git-wip-us.apache.org/repos/asf/isis/blob/6a67f769/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/EntityActionUtil.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/EntityActionUtil.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/EntityActionUtil.java
index 1adb8e5..ed28333 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/EntityActionUtil.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/EntityActionUtil.java
@@ -113,7 +113,7 @@ public final class EntityActionUtil {
 
             @Override
             public LinkAndLabel apply(ObjectAction objectAction) {
-                return linkFactory.newLink(adapterMemento, objectAction, linkId);
+                return linkFactory.newLink(linkId, adapterMemento, objectAction);
             }
         });
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/6a67f769/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/CssMenuItem.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/CssMenuItem.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/CssMenuItem.java
index 45bb5f7..70f9a70 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/CssMenuItem.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/CssMenuItem.java
@@ -322,8 +322,8 @@ class CssMenuItem implements Serializable {
 
         // build the link
         final LinkAndLabel linkAndLabel = actionLinkFactory.newLink(
-                targetAdapterMemento, objectAction, PageAbstract.ID_MENU_LINK
-                );
+                PageAbstract.ID_MENU_LINK, targetAdapterMemento, objectAction
+        );
         if (linkAndLabel == null) {
             // can only get a null if invisible, so this should not happen given guard above
             return null;

http://git-wip-us.apache.org/repos/asf/isis/blob/6a67f769/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionLinkFactory.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionLinkFactory.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionLinkFactory.java
index 2aa97ba..d4a971f 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionLinkFactory.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionLinkFactory.java
@@ -34,9 +34,8 @@ class ServiceActionLinkFactory extends ActionLinkFactoryAbstract {
     
     @Override
     public LinkAndLabel newLink(
-            final ObjectAdapterMemento adapterMemento,
-            final ObjectAction action,
-            final String linkId) {
+            final String linkId, final ObjectAdapterMemento adapterMemento,
+            final ObjectAction action) {
         
         ObjectAdapter objectAdapter = adapterMemento.getObjectAdapter(ConcurrencyChecking.NO_CHECK);
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6a67f769/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionPanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionPanel.java
index eda9abd..fa2492f 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionPanel.java
@@ -81,7 +81,7 @@ public class ActionPanel extends PanelAbstract<ActionModel> implements ActionExe
     public ActionPanel(final String id, final ActionModel actionModel) {
         super(id, actionModel);
         actionModel.setExecutor(this);
-        buildGui(actionModel);
+        buildGui(getActionModel());
     }
 
     /**
@@ -100,24 +100,9 @@ public class ActionPanel extends PanelAbstract<ActionModel> implements ActionExe
 
     private void buildGui(final ActionModel actionModel) {
         if (actionModel.hasParameters()) {
-            buildGuiForParameters();
+            buildGuiForParameters(getActionModel());
         } else {
-
-            boolean succeeded = executeActionAndProcessResults(null, null);
-            if(succeeded) {
-                // nothing to do
-            } else {
-
-                // render the target entity again
-                //
-                // (One way this can occur is if an event subscriber has a defect and throws an exception; in which case
-                // the EventBus' exception handler will automatically veto.  This results in a growl message rather than
-                // an error page, but is probably 'good enough').
-                final ObjectAdapter targetAdapter = actionModel.getTargetAdapter();
-
-                ActionResultResponse resultResponse = ActionResultResponseType.OBJECT.interpretResult(this.getActionModel(), targetAdapter, null);
-                resultResponse.getHandlingStrategy().handleResults(this, resultResponse);
-            }
+            buildGuiForNoParameters(actionModel);
         }
     }
 
@@ -130,28 +115,20 @@ public class ActionPanel extends PanelAbstract<ActionModel> implements ActionExe
         return this;
     }
 
-    private void buildGuiForParameters() {
+    private void buildGuiForParameters(final ActionModel actionModel) {
 
-        WebMarkupContainer header = new WebMarkupContainer(ID_HEADER) {
-            @Override
-            protected void onConfigure() {
-                super.onConfigure();
-
-                setVisible(showHeader);
-            }
-        };
-        addOrReplace(header);
+        WebMarkupContainer header = addHeader();
 
         ObjectAdapter targetAdapter = null;
         try {
-            targetAdapter = getActionModel().getTargetAdapter();
-            
+            targetAdapter = actionModel.getTargetAdapter();
+
             getComponentFactoryRegistry().addOrReplaceComponent(this, ComponentType.PARAMETERS, getActionModel());
             getComponentFactoryRegistry().addOrReplaceComponent(header, ComponentType.ENTITY_ICON_AND_TITLE, new EntityModel(targetAdapter));
 
             final String actionName = getActionModel().getActionMemento().getAction().getName();
             header.add(new Label(ID_ACTION_NAME, Model.of(actionName)));
-            
+
         } catch (final ConcurrencyException ex) {
 
             // second attempt should succeed, because the Oid would have
@@ -168,6 +145,39 @@ public class ActionPanel extends PanelAbstract<ActionModel> implements ActionExe
         }
     }
 
+    private WebMarkupContainer addHeader() {
+        WebMarkupContainer header = new WebMarkupContainer(ID_HEADER) {
+            @Override
+            protected void onConfigure() {
+                super.onConfigure();
+
+                setVisible(showHeader);
+            }
+        };
+        addOrReplace(header);
+        return header;
+    }
+
+    private void buildGuiForNoParameters(final ActionModel actionModel) {
+
+        boolean succeeded = executeActionAndProcessResults(null, null);
+        if(succeeded) {
+            // nothing to do
+        } else {
+
+            // render the target entity again
+            //
+            // (One way this can occur is if an event subscriber has a defect and throws an exception; in which case
+            // the EventBus' exception handler will automatically veto.  This results in a growl message rather than
+            // an error page, but is probably 'good enough').
+            final ObjectAdapter targetAdapter = actionModel.getTargetAdapter();
+
+            ActionResultResponse resultResponse = ActionResultResponseType.OBJECT.interpretResult(this.getActionModel(), targetAdapter, null);
+            resultResponse.getHandlingStrategy().handleResults(this, resultResponse);
+        }
+    }
+
+
     protected void bookmarkPage(BookmarkableModel<?> model) {
         getBookmarkedPagesModel().bookmarkPage(model);
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/6a67f769/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/bulk/BulkActionsLinkFactory.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/bulk/BulkActionsLinkFactory.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/bulk/BulkActionsLinkFactory.java
index 6a113a0..7004c56 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/bulk/BulkActionsLinkFactory.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/bulk/BulkActionsLinkFactory.java
@@ -70,9 +70,8 @@ public final class BulkActionsLinkFactory implements ActionLinkFactory {
 
     @Override
     public LinkAndLabel newLink(
-            final ObjectAdapterMemento objectAdapterMemento,
-            final ObjectAction objectAction,
-            final String linkId) {
+            final String linkId, final ObjectAdapterMemento objectAdapterMemento,
+            final ObjectAction objectAction) {
 
         final ActionMemento actionMemento = new ActionMemento(objectAction);
         final AbstractLink link = new Link<Object>(linkId) {

http://git-wip-us.apache.org/repos/asf/isis/blob/6a67f769/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/standalonecollection/StandaloneCollectionPanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/standalonecollection/StandaloneCollectionPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/standalonecollection/StandaloneCollectionPanel.java
index 101f26e..196f061 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/standalonecollection/StandaloneCollectionPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/standalonecollection/StandaloneCollectionPanel.java
@@ -164,7 +164,7 @@ public class StandaloneCollectionPanel extends PanelAbstract<EntityCollectionMod
         List<LinkAndLabel> links = Lists.transform(bulkActions, new Function<ObjectAction, LinkAndLabel>(){
             @Override
             public LinkAndLabel apply(ObjectAction objectAction) {
-                return linkFactory.newLink(null, objectAction, ID_ADDITIONAL_LINK);
+                return linkFactory.newLink(ID_ADDITIONAL_LINK, null, objectAction);
             }
         });
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6a67f769/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLinkFactory.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLinkFactory.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLinkFactory.java
index 6c07221..c3c76b6 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLinkFactory.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLinkFactory.java
@@ -27,7 +27,6 @@ import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
 public interface ActionLinkFactory extends Serializable {
 
     LinkAndLabel newLink(
-            final ObjectAdapterMemento adapter,
-            final ObjectAction noAction,
-            final String linkId);
+            final String linkId, final ObjectAdapterMemento adapter,
+            final ObjectAction noAction);
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/6a67f769/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLinkFactoryAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLinkFactoryAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLinkFactoryAbstract.java
index e81de3d..1ff6bfc 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLinkFactoryAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLinkFactoryAbstract.java
@@ -53,6 +53,9 @@ public abstract class ActionLinkFactoryAbstract implements ActionLinkFactory {
 
         final ActionModel actionModel = ActionModel.create(objectAdapter, action);
 
+        // this returns non-null if the action is no-arg and returns a URL or a Blob or a Clob.  Otherwise can use default handling
+        // TODO: the method looks at the actual compile-time return type; cannot see a way to check at runtime what is returned.
+        // TODO: see https://issues.apache.org/jira/browse/ISIS-1264 for further detail.
         final AjaxDeferredBehaviour ajaxDeferredBehaviour = determineDeferredBehaviour(action, actionModel);
 
         final AbstractLink link = new AjaxLink<Object>(linkId) {