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));