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/03/05 12:14:37 UTC

[3/4] isis git commit: ISIS-940: move setting up of the Command object from Wicket code and into core (so should work for Restful viewer also).

ISIS-940: move setting up of the Command object from Wicket code and into core (so should work for Restful viewer also).


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

Branch: refs/heads/master
Commit: 300e72ae698061e499fd3ecd7f5439ac2d20f86b
Parents: c9ca9aa
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Mar 4 17:58:02 2015 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Mar 5 11:06:38 2015 +0000

----------------------------------------------------------------------
 .../invocation/ActionInvocationFacet.java       |  2 +-
 ...onInvocationFacetForDomainEventAbstract.java |  2 +-
 .../update/PropertyModifyFacetFactory.java      | 11 +++++-
 .../PropertySetterFacetViaModifyMethod.java     | 40 ++++++++++++++++++--
 .../entity/properties/EntityPropertiesForm.java | 27 -------------
 ...rapperFactoryAbstractTest_wrappedObject.java |  2 +-
 6 files changed, 48 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/300e72ae/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacet.java
index c7887cc..04259ce 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacet.java
@@ -117,7 +117,7 @@ public interface ActionInvocationFacet extends Facet {
      * @deprecated - should instead use the {@link CommandContext} request.
      */
     @Deprecated
-    public static ThreadLocal<CurrentInvocation> currentInvocation = new ThreadLocal<CurrentInvocation>();
+    public static ThreadLocal<CurrentInvocation> currentInvocation = new ThreadLocal<>();
 
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/300e72ae/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
index efb3bff..e1439f4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
@@ -290,7 +290,7 @@ public abstract class ActionInvocationFacetForDomainEventAbstract
                     if(backgroundService != null) {
                         final Object targetObject = unwrap(targetAdapter);
                         final Object[] args = CommandUtil.objectsFor(arguments);
-                        ActionInvocationMemento aim = backgroundService.asActionInvocationMemento(method, targetObject, args);
+                        final ActionInvocationMemento aim = backgroundService.asActionInvocationMemento(method, targetObject, args);
 
                         if(aim != null) {
                             command.setMemento(aim.asMementoString());

http://git-wip-us.apache.org/repos/asf/isis/blob/300e72ae/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/PropertyModifyFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/PropertyModifyFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/PropertyModifyFacetFactory.java
index 18d8c8c..2495356 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/PropertyModifyFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/PropertyModifyFacetFactory.java
@@ -29,10 +29,13 @@ import org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactoryAbstra
 import org.apache.isis.core.metamodel.facets.MethodPrefixConstants;
 import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacetViaModifyMethod;
 import org.apache.isis.core.metamodel.methodutils.MethodScope;
+import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.runtimecontext.ServicesInjectorAware;
 
-public class PropertyModifyFacetFactory extends MethodPrefixBasedFacetFactoryAbstract {
+public class PropertyModifyFacetFactory extends MethodPrefixBasedFacetFactoryAbstract implements ServicesInjectorAware {
 
     private static final String[] PREFIXES = { MethodPrefixConstants.MODIFY_PREFIX };
+    private ServicesInjector servicesInjector;
 
     public PropertyModifyFacetFactory() {
         super(FeatureType.PROPERTIES_ONLY, OrphanValidation.VALIDATE, PREFIXES);
@@ -61,7 +64,11 @@ public class PropertyModifyFacetFactory extends MethodPrefixBasedFacetFactoryAbs
         processMethodContext.removeMethod(modifyMethod);
 
         final FacetHolder property = processMethodContext.getFacetHolder();
-        FacetUtil.addFacet(new PropertySetterFacetViaModifyMethod(modifyMethod, property));
+        FacetUtil.addFacet(new PropertySetterFacetViaModifyMethod(modifyMethod, property, servicesInjector));
     }
 
+    @Override
+    public void setServicesInjector(final ServicesInjector servicesInjector) {
+        this.servicesInjector = servicesInjector;
+    }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/300e72ae/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/modify/PropertySetterFacetViaModifyMethod.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/modify/PropertySetterFacetViaModifyMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/modify/PropertySetterFacetViaModifyMethod.java
index ddaae14..be89691 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/modify/PropertySetterFacetViaModifyMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/modify/PropertySetterFacetViaModifyMethod.java
@@ -22,18 +22,24 @@ package org.apache.isis.core.metamodel.facets.properties.update.modify;
 import java.lang.reflect.Method;
 import java.util.Collections;
 import java.util.List;
-
+import org.apache.isis.applib.clock.Clock;
+import org.apache.isis.applib.services.command.Command;
+import org.apache.isis.applib.services.command.CommandContext;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
+import org.apache.isis.core.metamodel.facets.actions.action.invocation.CommandUtil;
+import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
 
 public class PropertySetterFacetViaModifyMethod extends PropertySetterFacetAbstract implements ImperativeFacet {
 
     private final Method method;
+    private final ServicesInjector servicesInjector;
 
-    public PropertySetterFacetViaModifyMethod(final Method method, final FacetHolder holder) {
+    public PropertySetterFacetViaModifyMethod(final Method method, final FacetHolder holder, final ServicesInjector servicesInjector) {
         super(holder);
         this.method = method;
+        this.servicesInjector = servicesInjector;
     }
 
     /**
@@ -61,8 +67,29 @@ public class PropertySetterFacetViaModifyMethod extends PropertySetterFacetAbstr
     }
 
     @Override
-    public void setProperty(final ObjectAdapter adapter, final ObjectAdapter valueAdapter) {
-        ObjectAdapter.InvokeUtils.invoke(method, adapter, valueAdapter);
+    public void setProperty(final ObjectAdapter targetAdapter, final ObjectAdapter valueAdapter) {
+
+        final CommandContext commandContext = getServicesInjector().lookupService(CommandContext.class);
+        final Command command;
+
+        if (commandContext != null) {
+            command = commandContext.getCommand();
+
+            // cf similar code in ActionInvocationFacetForDomainEventFacet
+            command.setExecutor(Command.Executor.USER);
+
+            command.setTarget(CommandUtil.bookmarkFor(targetAdapter));
+            command.setTargetClass(CommandUtil.targetClassNameFor(targetAdapter));
+            command.setTargetAction("(edit)");
+            command.setMemberIdentifier("(edit)");
+
+            command.setExecuteIn(org.apache.isis.applib.annotation.Command.ExecuteIn.FOREGROUND);
+            command.setPersistence(org.apache.isis.applib.annotation.Command.Persistence.IF_HINTED);
+
+            command.setStartedAt(Clock.getTimeAsJavaSqlTimestamp());
+        }
+
+        ObjectAdapter.InvokeUtils.invoke(method, targetAdapter, valueAdapter);
     }
 
     @Override
@@ -70,4 +97,9 @@ public class PropertySetterFacetViaModifyMethod extends PropertySetterFacetAbstr
         return "method=" + method;
     }
 
+
+    private ServicesInjector getServicesInjector() {
+        return servicesInjector;
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/300e72ae/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java b/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java
index 01d41cd..dcd27e3 100644
--- a/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java
+++ b/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java
@@ -49,15 +49,12 @@ import org.apache.isis.applib.annotation.MemberGroupLayout.ColumnSpans;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.filter.Filter;
 import org.apache.isis.applib.filter.Filters;
-import org.apache.isis.applib.services.command.Command;
-import org.apache.isis.applib.services.command.CommandContext;
 import org.apache.isis.applib.services.exceprecog.ExceptionRecognizer;
 import org.apache.isis.applib.services.exceprecog.ExceptionRecognizerComposite;
 import org.apache.isis.core.commons.authentication.MessageBroker;
 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.version.ConcurrencyException;
-import org.apache.isis.core.metamodel.facets.actions.action.invocation.CommandUtil;
 import org.apache.isis.core.metamodel.facets.object.membergroups.MemberGroupLayoutFacet;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -424,30 +421,6 @@ public class EntityPropertiesForm extends FormAbstract<ObjectAdapter> implements
 
             doPreApply();
             if (applyFormChangesElse()) return;
-
-            final CommandContext commandContext = getServicesInjector().lookupService(CommandContext.class);
-            final Command command;
-
-            if (commandContext != null) {
-                command = commandContext.getCommand();
-
-                if (command.getTarget() != null) {
-                    // ?? is this needed ??
-                    // for symmetry with similar code in ObjectActionContributee
-                    // and ActionInvocationFacetForDomainEventAbstract, but might not be.
-                } else {
-                    command.setExecutor(Command.Executor.USER);
-
-                    final ObjectAdapter objectAdapter = getEntityModel().getObjectAdapterMemento().getObjectAdapter(ConcurrencyChecking.NO_CHECK);
-
-                    command.setTarget(CommandUtil.bookmarkFor(objectAdapter));
-                    command.setTargetClass(CommandUtil.targetClassNameFor(objectAdapter));
-                    command.setTargetAction("(edit)");
-                    command.setMemberIdentifier("(edit)");
-
-                }
-            }
-
             final Object redirectIfAny = doPostApply();
 
             if (flushChangesElse(target)) return;

http://git-wip-us.apache.org/repos/asf/isis/blob/300e72ae/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryAbstractTest_wrappedObject.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryAbstractTest_wrappedObject.java b/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryAbstractTest_wrappedObject.java
index 76a46f2..13fc409 100644
--- a/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryAbstractTest_wrappedObject.java
+++ b/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryAbstractTest_wrappedObject.java
@@ -314,7 +314,7 @@ public abstract class WrapperFactoryAbstractTest_wrappedObject {
         FacetedMethod facetedMethod = FacetedMethod.createForProperty(accessor.getDeclaringClass(), accessor);
         FacetUtil.addFacet(new PropertyAccessorFacetViaAccessor(accessor, facetedMethod));
         FacetUtil.addFacet(new PropertyInitializationFacetViaSetterMethod(init, facetedMethod));
-        FacetUtil.addFacet(new PropertySetterFacetViaModifyMethod(modify, facetedMethod));
+        FacetUtil.addFacet(new PropertySetterFacetViaModifyMethod(modify, facetedMethod, null));
         FacetUtil.addFacet(new PropertyClearFacetViaClearMethod(clear, facetedMethod));
         FacetUtil.addFacet(new HideForContextFacetViaMethod(hide, facetedMethod));
         FacetUtil.addFacet(new DisableForContextFacetViaMethod(disable, null, null, facetedMethod));