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/25 18:01:47 UTC
[1/8] isis git commit: ISIS-1045: simplifying DomainEventFacets,
removing the threadlocal.
Repository: isis
Updated Branches:
refs/heads/master 1aa380e0a -> f60ce0249
ISIS-1045: simplifying DomainEventFacets, removing the threadlocal.
The event is reused between the EXECUTING and EXECUTED phases, but nowhere else.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/b8322fab
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/b8322fab
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/b8322fab
Branch: refs/heads/master
Commit: b8322fab4d30227ef1f36d5e1cad05ad430c64e6
Parents: 1aa380e
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Mar 25 07:11:17 2015 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Mar 25 16:35:22 2015 +0000
----------------------------------------------------------------------
.../services/eventbus/AbstractDomainEvent.java | 6 +-
.../metamodel/facets/DomainEventHelper.java | 109 +++++++++----------
.../ActionDomainEventFacetAbstract.java | 42 +++----
...onInvocationFacetForDomainEventAbstract.java | 58 +++++-----
...ionAddToFacetForDomainEventFromAbstract.java | 68 ++++++------
.../CollectionDomainEventFacetAbstract.java | 37 ++++---
...moveFromFacetForDomainEventFromAbstract.java | 63 +++++------
...ropertyClearFacetForDomainEventAbstract.java | 54 +++++----
.../PropertyDomainEventFacetAbstract.java | 28 ++---
...opertySetterFacetForDomainEventAbstract.java | 55 +++++-----
10 files changed, 253 insertions(+), 267 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/b8322fab/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/AbstractDomainEvent.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/AbstractDomainEvent.java b/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/AbstractDomainEvent.java
index c39dfac..947e84e 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/AbstractDomainEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/AbstractDomainEvent.java
@@ -57,7 +57,11 @@ public abstract class AbstractDomainEvent<S> extends java.util.EventObject {
* via {@link org.apache.isis.applib.services.eventbus.ActionInteractionEvent#getCommand()}.
*/
public boolean isExecutingOrLater() {
- return this == EXECUTING || this == EXECUTED;
+ return isExecuting() || isExecuted();
+ }
+
+ public boolean isExecuting() {
+ return this == EXECUTING;
}
public boolean isExecuted() {
http://git-wip-us.apache.org/repos/asf/isis/blob/b8322fab/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/DomainEventHelper.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/DomainEventHelper.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/DomainEventHelper.java
index 97f040a..bf1eb75 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/DomainEventHelper.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/DomainEventHelper.java
@@ -21,7 +21,6 @@ package org.apache.isis.core.metamodel.facets;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
-import java.util.Arrays;
import org.apache.isis.applib.FatalException;
import org.apache.isis.applib.Identifier;
import org.apache.isis.applib.services.command.Command;
@@ -52,13 +51,13 @@ public class DomainEventHelper {
//region > postEventForAction, newActionDomainEvent
@SuppressWarnings({ "rawtypes" })
public ActionDomainEvent<?> postEventForAction(
+ final AbstractDomainEvent.Phase phase,
final Class eventType,
final ActionDomainEvent<?> existingEvent,
- final Command command,
- final AbstractDomainEvent.Phase phase,
final IdentifiedHolder identified,
final ObjectAdapter targetAdapter,
final ObjectAdapter[] argumentAdapters,
+ final Command command,
final ObjectAdapter resultAdapter) {
if(!hasEventBusService()) {
@@ -66,45 +65,48 @@ public class DomainEventHelper {
}
try {
final ActionDomainEvent<?> event;
- if (existingEvent != null && phase.isValidatingOrLater()) {
+
+ if (existingEvent != null && phase.isExecuted()) {
+ // reuse existing event from the executing phase
event = existingEvent;
- final Object[] arguments = ObjectAdapter.Util.unwrap(argumentAdapters);
- event.setArguments(Arrays.asList(arguments));
- if(phase.isExecutingOrLater()) {
-
- // current event always references the command (originally created by the xactn)
- event.setCommand(command);
- if(command != null) {
- if(command instanceof Command3) {
- final Command3 command3 = (Command3) command;
- command3.pushActionDomainEvent(event);
- } else if(command instanceof Command2 && event instanceof ActionInteractionEvent) {
- final Command2 command2 = (Command3) command;
- final ActionInteractionEvent<?> aie = (ActionInteractionEvent<?>) event;
- command2.pushActionInteractionEvent(aie);
- }
- }
- }
- if(phase.isExecuted()) {
- event.setReturnValue(resultAdapter != null? resultAdapter.getObject(): null);
- }
+ event.setEventPhase(phase);
+ event.setPhase(AbstractInteractionEvent.Phase.from(phase));
} else {
+ // all other phases, create a new event
final Object source = ObjectAdapter.Util.unwrap(targetAdapter);
final Object[] arguments = ObjectAdapter.Util.unwrap(argumentAdapters);
final Identifier identifier = identified.getIdentifier();
event = newActionDomainEvent(eventType, identifier, source, arguments);
- }
- if(identified instanceof ObjectAction) {
- // should always be the case...
- final ObjectAction objectAction = (ObjectAction) identified;
- event.setActionSemantics(objectAction.getSemantics());
+ if(identified instanceof ObjectAction) {
+ // should always be the case...
+ final ObjectAction objectAction = (ObjectAction) identified;
+ event.setActionSemantics(objectAction.getSemantics());
+ }
}
- event.setEventPhase(phase);
- event.setPhase(AbstractInteractionEvent.Phase.from(phase));
+ if(phase.isExecuted()) {
+ event.setReturnValue(ObjectAdapter.Util.unwrap(resultAdapter));
+ }
+ // associate event with command...
+ if(command != null) {
+ event.setCommand(command);
+ }
+ // ... and associate command with event
+ if(command != null) {
+ if(phase.isExecuting()) {
+ if(command instanceof Command3) {
+ final Command3 command3 = (Command3) command;
+ command3.pushActionDomainEvent(event);
+ } else if(command instanceof Command2 && event instanceof ActionInteractionEvent) {
+ final Command2 command2 = (Command3) command;
+ final ActionInteractionEvent<?> aie = (ActionInteractionEvent<?>) event;
+ command2.pushActionInteractionEvent(aie);
+ }
+ }
+ }
getEventBusService().post(event);
return event;
@@ -143,13 +145,14 @@ public class DomainEventHelper {
//region > postEventForProperty, newPropertyInteraction
public PropertyDomainEvent<?, ?> postEventForProperty(
+ final AbstractDomainEvent.Phase phase,
final Class eventType,
final PropertyDomainEvent<?, ?> existingEvent,
- final AbstractDomainEvent.Phase phase,
final IdentifiedHolder identified,
final ObjectAdapter targetAdapter,
final Object oldValue,
final Object newValue) {
+
if(!hasEventBusService()) {
return null;
}
@@ -158,18 +161,20 @@ public class DomainEventHelper {
final Object source = ObjectAdapter.Util.unwrap(targetAdapter);
final Identifier identifier = identified.getIdentifier();
- // because of guava event bus buffering, we always create a new property domain event
- //
- event = newPropertyDomainEvent(eventType, identifier, source, oldValue, newValue);
- event.setEventPhase(phase);
- event.setPhase(AbstractInteractionEvent.Phase.from(phase));
+ if(existingEvent != null && phase.isExecuted()) {
+ // reuse existing event from the executing phase
+ event = existingEvent;
+
+ event.setEventPhase(phase);
+ event.setPhase(AbstractInteractionEvent.Phase.from(phase));
- // Old and New Values are populated only on the VALIDATION Phase and
- // afterwards.
- if (phase.isValidatingOrLater()) {
- setEventOldValue(event, oldValue);
+ // just in case the actual new value held by the object is different from that applied
setEventNewValue(event, newValue);
+ } else {
+ // all other phases, create a new event
+ event = newPropertyDomainEvent(eventType, identifier, source, oldValue, newValue);
}
+
this.getEventBusService().post(event);
return event;
} catch (Exception e) {
@@ -177,10 +182,6 @@ public class DomainEventHelper {
}
}
- private static <S,T> void setEventOldValue(PropertyDomainEvent<S, T> event, Object oldValue) {
- event.setOldValue((T) oldValue);
- }
-
private static <S,T> void setEventNewValue(PropertyDomainEvent<S, T> event, Object newValue) {
event.setNewValue((T) newValue);
}
@@ -222,9 +223,9 @@ public class DomainEventHelper {
//region > postEventForCollection, newCollectionDomainEvent
public CollectionDomainEvent<?, ?> postEventForCollection(
+ AbstractDomainEvent.Phase phase,
final Class eventType,
final CollectionDomainEvent<?, ?> existingEvent,
- AbstractDomainEvent.Phase phase,
final IdentifiedHolder identified,
final ObjectAdapter targetAdapter,
final CollectionDomainEvent.Of of,
@@ -234,17 +235,19 @@ public class DomainEventHelper {
}
try {
final CollectionDomainEvent<?, ?> event;
- if (existingEvent != null && phase.isValidatingOrLater()) {
+ if (existingEvent != null && phase.isExecuted()) {
+ // reuse existing event from the executing phase
event = existingEvent;
- event.setOf(of);
- setEventValue(event, reference);
+
+ event.setEventPhase(phase);
+ event.setPhase(AbstractInteractionEvent.Phase.from(phase));
} else {
+ // all other phases, create a new event
final Object source = ObjectAdapter.Util.unwrap(targetAdapter);
final Identifier identifier = identified.getIdentifier();
event = newCollectionDomainEvent(eventType, phase, identifier, source, of, reference);
}
- event.setEventPhase(phase);
- event.setPhase(AbstractInteractionEvent.Phase.from(phase));
+
getEventBusService().post(event);
return event;
} catch (Exception e) {
@@ -252,10 +255,6 @@ public class DomainEventHelper {
}
}
- private static <T,S> void setEventValue(CollectionDomainEvent<T, S> event, Object reference) {
- event.setValue((S) reference);
- }
-
@SuppressWarnings("unchecked")
<S, T> CollectionDomainEvent<S, T> newCollectionDomainEvent(
final Class<? extends CollectionDomainEvent<S, T>> type,
http://git-wip-us.apache.org/repos/asf/isis/blob/b8322fab/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetAbstract.java
index 1507678..392c1da 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetAbstract.java
@@ -48,16 +48,6 @@ public abstract class ActionDomainEventFacetAbstract
private final DomainEventHelper domainEventHelper;
- /**
- * Pass event from validate to executing phases.
- *
- * <p>
- * A new event is created for the hide, disable and validate phases. But when the validate completes (and if does
- * not invalidate), then the event is passed through to the executing phase using this thread-local.
- * </p>
- */
- final static ThreadLocal<ActionDomainEvent<?>> currentInteraction = new ThreadLocal<>();
-
public ActionDomainEventFacetAbstract(
final Class<? extends ActionDomainEvent<?>> eventType,
final FacetHolder holder,
@@ -74,14 +64,14 @@ public abstract class ActionDomainEventFacetAbstract
return null;
}
- // reset (belt-n-braces)
- currentInteraction.set(null);
-
final ObjectAdapter[] argumentAdapters = argumentAdaptersFrom(ic);
final ActionDomainEvent<?> event =
domainEventHelper.postEventForAction(
- eventType(), null, null, AbstractDomainEvent.Phase.HIDE,
- getIdentified(), ic.getTarget(), argumentAdapters, null);
+ AbstractDomainEvent.Phase.HIDE,
+ eventType(), null,
+ getIdentified(), ic.getTarget(), argumentAdapters,
+ null,
+ null);
if (event != null && event.isHidden()) {
return "Hidden by subscriber";
}
@@ -94,14 +84,14 @@ public abstract class ActionDomainEventFacetAbstract
return null;
}
- // reset (belt-n-braces)
- currentInteraction.set(null);
-
final ObjectAdapter[] argumentAdapters = argumentAdaptersFrom(ic);
final ActionDomainEvent<?> event =
domainEventHelper.postEventForAction(
- eventType(), null, null, AbstractDomainEvent.Phase.DISABLE,
- getIdentified(), ic.getTarget(), argumentAdapters, null);
+ AbstractDomainEvent.Phase.DISABLE,
+ eventType(), null,
+ getIdentified(), ic.getTarget(), argumentAdapters,
+ null,
+ null);
if (event != null && event.isDisabled()) {
return event.getDisabledReason();
}
@@ -119,20 +109,18 @@ public abstract class ActionDomainEventFacetAbstract
return null;
}
- // reset (belt-n-braces)
- currentInteraction.set(null);
-
final ActionInvocationContext aic = (ActionInvocationContext) ic;
final ActionDomainEvent<?> event =
domainEventHelper.postEventForAction(
- eventType(), null, null, AbstractDomainEvent.Phase.VALIDATE,
- getIdentified(), ic.getTarget(), aic.getArgs(), null);
+ AbstractDomainEvent.Phase.VALIDATE,
+ eventType(), null,
+ getIdentified(), ic.getTarget(), aic.getArgs(),
+ null,
+ null);
if (event != null && event.isInvalid()) {
return event.getInvalidityReason();
}
- // make available for next phases (executing/executed)
- currentInteraction.set(event);
return null;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/b8322fab/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 e1439f4..26082f4 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
@@ -173,43 +173,35 @@ public abstract class ActionInvocationFacetForDomainEventAbstract
final ObjectAdapter targetAdapter,
final ObjectAdapter[] arguments) {
- try {
-
- final CommandContext commandContext = getServicesInjector().lookupService(CommandContext.class);
- final Command command = commandContext != null ? commandContext.getCommand() : null;
-
- // pick up existing event (saved in thread local during the validation phase)
- final ActionDomainEvent<?> existingEvent = ActionDomainEventFacetAbstract.currentInteraction.get();
-
- // ... post the executing event
- final ActionDomainEvent<?> event =
- domainEventHelper.postEventForAction(
- eventType, existingEvent, command, AbstractDomainEvent.Phase.EXECUTING,
- owningAction, targetAdapter, arguments, null);
-
- // ... invoke the action
- final InvocationResult invocationResult = internalInvoke(command, owningAction, targetAdapter, arguments);
+ final CommandContext commandContext = getServicesInjector().lookupService(CommandContext.class);
+ final Command command = commandContext != null ? commandContext.getCommand() : null;
- // ... post the executed event
- if (invocationResult.getWhetherInvoked()) {
- // perhaps the Action was not properly invoked (i.e. an exception was raised).
- // If invoked, then send the ActionInteractionEvent to the EventBus.
+ // ... post the executing event
+ final ActionDomainEvent<?> event =
domainEventHelper.postEventForAction(
- eventType, verify(event), command, AbstractDomainEvent.Phase.EXECUTED,
- owningAction, targetAdapter, arguments, invocationResult.getAdapter());
- }
-
- return invocationResult.getAdapter();
-
- } finally {
+ AbstractDomainEvent.Phase.EXECUTING,
+ eventType, null,
+ owningAction, targetAdapter, arguments,
+ command,
+ null);
+
+ // ... invoke the action
+ final InvocationResult invocationResult = internalInvoke(command, owningAction, targetAdapter, arguments);
+
+ // ... post the executed event
+ if (invocationResult.getWhetherInvoked()) {
+ // perhaps the Action was not properly invoked (i.e. an exception was raised).
+ // If invoked ok, then post to the event bus
+ domainEventHelper.postEventForAction(
+ AbstractDomainEvent.Phase.EXECUTED,
+ eventType, verify(event),
+ owningAction, targetAdapter, arguments,
+ command,
+ invocationResult.getAdapter());
+ }
- // clean up event on thread
+ return invocationResult.getAdapter();
- // note that if the action invoked some other action via a wrapper then this will already have been cleared
- // out. That isn't a problem; we only need to pass the event from validate to pre-execute, not to formally
- // "nest" the events.
- ActionDomainEventFacetAbstract.currentInteraction.set(null);
- }
}
/**
http://git-wip-us.apache.org/repos/asf/isis/blob/b8322fab/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionAddToFacetForDomainEventFromAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionAddToFacetForDomainEventFromAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionAddToFacetForDomainEventFromAbstract.java
index 66ab12f..64b96a0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionAddToFacetForDomainEventFromAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionAddToFacetForDomainEventFromAbstract.java
@@ -72,44 +72,46 @@ public abstract class CollectionAddToFacetForDomainEventFromAbstract
return;
}
- try {
- final Object referencedObject = ObjectAdapter.Util.unwrap(referencedObjectAdapter);
-
- // get hold of underlying collection
- final Object collection = getterFacet.getProperty(targetAdapter);
-
- // don't post event if has set semantics and already contains object
- if(collection instanceof Set) {
- Set<?> set = (Set<?>) collection;
- if(set.contains(referencedObject)) {
- return;
- }
- }
-
+ final Object referencedObject = ObjectAdapter.Util.unwrap(referencedObjectAdapter);
- // either doesn't contain object, or doesn't have set semantics, so
- // execute the add wrapped between the executing and executed events ...
+ // get hold of underlying collection
+ final Object collection = getterFacet.getProperty(targetAdapter);
- // pick up existing event (saved in thread local during the validation phase)
- final CollectionDomainEvent<?, ?> existingEvent = collectionDomainEventFacet.currentInteraction.get();
-
- // ... post the executing event
- final CollectionDomainEvent<?, ?> event = domainEventHelper.postEventForCollection(
- value(), existingEvent, AbstractDomainEvent.Phase.EXECUTING,
- getIdentified(), targetAdapter, CollectionDomainEvent.Of.ADD_TO, referencedObject);
+ // don't post event if has set semantics and already contains object
+ if(collection instanceof Set) {
+ Set<?> set = (Set<?>) collection;
+ if(set.contains(referencedObject)) {
+ return;
+ }
+ }
- // ... perform add
- collectionAddToFacet.add(targetAdapter, referencedObjectAdapter);
- // ... post the executed event
- domainEventHelper.postEventForCollection(
- value(), verify(event), AbstractDomainEvent.Phase.EXECUTED,
- getIdentified(), targetAdapter, CollectionDomainEvent.Of.ADD_TO, referencedObject);
+ // either doesn't contain object, or doesn't have set semantics, so
+ // execute the add wrapped between the executing and executed events ...
+
+ // ... post the executing event
+ final CollectionDomainEvent<?, ?> event =
+ domainEventHelper.postEventForCollection(
+ AbstractDomainEvent.Phase.EXECUTING,
+ eventType(), null,
+ getIdentified(), targetAdapter,
+ CollectionDomainEvent.Of.ADD_TO,
+ referencedObject);
+
+ // ... perform add
+ collectionAddToFacet.add(targetAdapter, referencedObjectAdapter);
+
+ // ... post the executed event
+ domainEventHelper.postEventForCollection(
+ AbstractDomainEvent.Phase.EXECUTED,
+ value(), verify(event),
+ getIdentified(), targetAdapter,
+ CollectionDomainEvent.Of.ADD_TO,
+ referencedObject);
+ }
- } finally {
- // clean up
- collectionDomainEventFacet.currentInteraction.set(null);
- }
+ private Class<? extends CollectionDomainEvent<?, ?>> eventType() {
+ return value();
}
/**
http://git-wip-us.apache.org/repos/asf/isis/blob/b8322fab/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetAbstract.java
index b00a69f..4e221c7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetAbstract.java
@@ -27,6 +27,7 @@ import org.apache.isis.applib.services.eventbus.CollectionDomainEvent;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.DomainEventHelper;
import org.apache.isis.core.metamodel.facets.SingleClassValueFacetAbstract;
+import org.apache.isis.core.metamodel.interactions.CollectionAddToContext;
import org.apache.isis.core.metamodel.interactions.ProposedHolder;
import org.apache.isis.core.metamodel.interactions.UsabilityContext;
import org.apache.isis.core.metamodel.interactions.ValidityContext;
@@ -38,8 +39,6 @@ public abstract class CollectionDomainEventFacetAbstract extends SingleClassValu
private final DomainEventHelper domainEventHelper;
- final static ThreadLocal<CollectionDomainEvent<?,?>> currentInteraction = new ThreadLocal<>();
-
public CollectionDomainEventFacetAbstract(
final Class<? extends CollectionDomainEvent<?, ?>> eventType,
final FacetHolder holder,
@@ -55,12 +54,13 @@ public abstract class CollectionDomainEventFacetAbstract extends SingleClassValu
return null;
}
- // reset (belt-n-braces)
- currentInteraction.set(null);
-
final CollectionDomainEvent<?, ?> event =
domainEventHelper.postEventForCollection(
- eventType(), null, AbstractDomainEvent.Phase.HIDE, getIdentified(), ic.getTarget(), CollectionDomainEvent.Of.ACCESS, null);
+ AbstractDomainEvent.Phase.HIDE,
+ eventType(), null,
+ getIdentified(), ic.getTarget(),
+ CollectionDomainEvent.Of.ACCESS,
+ null);
if (event != null && event.isHidden()) {
return "Hidden by subscriber";
}
@@ -73,12 +73,13 @@ public abstract class CollectionDomainEventFacetAbstract extends SingleClassValu
return null;
}
- // reset (belt-n-braces)
- currentInteraction.set(null);
-
final CollectionDomainEvent<?, ?> event =
domainEventHelper.postEventForCollection(
- eventType(), null, AbstractDomainEvent.Phase.DISABLE, getIdentified(), ic.getTarget(), CollectionDomainEvent.Of.ACCESS, null);
+ AbstractDomainEvent.Phase.DISABLE,
+ eventType(), null,
+ getIdentified(), ic.getTarget(),
+ CollectionDomainEvent.Of.ACCESS,
+ null);
if (event != null && event.isDisabled()) {
return event.getDisabledReason();
}
@@ -91,21 +92,25 @@ public abstract class CollectionDomainEventFacetAbstract extends SingleClassValu
return null;
}
- // reset (belt-n-braces)
- currentInteraction.set(null);
-
final ProposedHolder catc = (ProposedHolder) ic;
final Object proposed = catc.getProposed().getObject();
+ final CollectionDomainEvent.Of of =
+ ic instanceof CollectionAddToContext
+ ? CollectionDomainEvent.Of.ADD_TO
+ : CollectionDomainEvent.Of.REMOVE_FROM;
+
final CollectionDomainEvent<?, ?> event =
domainEventHelper.postEventForCollection(
- eventType(), null, AbstractDomainEvent.Phase.VALIDATE, getIdentified(), ic.getTarget(), CollectionDomainEvent.Of.ADD_TO, proposed);
+ AbstractDomainEvent.Phase.VALIDATE,
+ eventType(), null,
+ getIdentified(), ic.getTarget(),
+ of,
+ proposed);
if (event != null && event.isInvalid()) {
return event.getInvalidityReason();
}
- // make available for next phases (executing/executed)
- currentInteraction.set(event);
return null;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/b8322fab/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionRemoveFromFacetForDomainEventFromAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionRemoveFromFacetForDomainEventFromAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionRemoveFromFacetForDomainEventFromAbstract.java
index aa4bc25..10f9e00 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionRemoveFromFacetForDomainEventFromAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionRemoveFromFacetForDomainEventFromAbstract.java
@@ -73,41 +73,42 @@ public abstract class CollectionRemoveFromFacetForDomainEventFromAbstract
}
- try {
+ final Object referencedObject = ObjectAdapter.Util.unwrap(referencedObjectAdapter);
- final Object referencedObject = ObjectAdapter.Util.unwrap(referencedObjectAdapter);
+ // get hold of underlying collection
+ final Object collection = getterFacet.getProperty(targetAdapter);
- // get hold of underlying collection
- final Object collection = getterFacet.getProperty(targetAdapter);
-
- // don't post event if the collections does not contain object
- if (!((Collection<?>) collection).contains(referencedObject)) {
- return;
- }
-
- // contains the element, so
- // execute the remove wrapped between the executing and executed events ...
-
- // pick up existing event (saved in thread local during the validation phase)
- final CollectionDomainEvent<?, ?> existingEvent = collectionDomainEventFacet.currentInteraction.get();
-
- // ... post the executing event
- final CollectionDomainEvent<?, ?> event = domainEventHelper.postEventForCollection(
- value(), existingEvent, AbstractDomainEvent.Phase.EXECUTING,
- getIdentified(), targetAdapter, CollectionDomainEvent.Of.REMOVE_FROM, referencedObject);
-
- // ... perform remove
- collectionRemoveFromFacet.remove(targetAdapter, referencedObjectAdapter);
+ // don't post event if the collections does not contain object
+ if (!((Collection<?>) collection).contains(referencedObject)) {
+ return;
+ }
- // ... and post the executed event
- domainEventHelper.postEventForCollection(
- value(), verify(event), AbstractDomainEvent.Phase.EXECUTED,
- getIdentified(), targetAdapter, CollectionDomainEvent.Of.REMOVE_FROM, referencedObject);
+ // contains the element, so
+ // execute the remove wrapped between the executing and executed events ...
+
+ // ... post the executing event
+ final CollectionDomainEvent<?, ?> event =
+ domainEventHelper.postEventForCollection(
+ AbstractDomainEvent.Phase.EXECUTING,
+ eventType(), null,
+ getIdentified(), targetAdapter,
+ CollectionDomainEvent.Of.REMOVE_FROM,
+ referencedObject);
+
+ // ... perform remove
+ collectionRemoveFromFacet.remove(targetAdapter, referencedObjectAdapter);
+
+ // ... and post the executed event
+ domainEventHelper.postEventForCollection(
+ AbstractDomainEvent.Phase.EXECUTED,
+ value(), verify(event),
+ getIdentified(), targetAdapter,
+ CollectionDomainEvent.Of.REMOVE_FROM,
+ referencedObject);
+ }
- } finally {
- // clean up
- collectionDomainEventFacet.currentInteraction.set(null);
- }
+ private Class<? extends CollectionDomainEvent<?, ?>> eventType() {
+ return value();
}
/**
http://git-wip-us.apache.org/repos/asf/isis/blob/b8322fab/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyClearFacetForDomainEventAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyClearFacetForDomainEventAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyClearFacetForDomainEventAbstract.java
index 2e0f35c..890e2e6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyClearFacetForDomainEventAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyClearFacetForDomainEventAbstract.java
@@ -72,36 +72,32 @@ public abstract class PropertyClearFacetForDomainEventAbstract
}
- try {
- // pick up existing event (saved in thread local during the validation phase)
- final PropertyDomainEvent<?, ?> existingEvent =
- PropertyDomainEventFacetAbstract.currentInteraction.get();
-
- // ... post the executing event
- final Object oldValue = getterFacet.getProperty(targetAdapter);
- domainEventHelper.postEventForProperty(
- value(), existingEvent, AbstractDomainEvent.Phase.EXECUTING,
- getIdentified(), targetAdapter, oldValue, null);
-
- // ... perform the property clear
- clearFacet.clearProperty(targetAdapter);
-
- // reading the actual value from the target object, playing it safe...
- final Object actualNewValue = getterFacet.getProperty(targetAdapter);
- if(Objects.equal(oldValue, actualNewValue)) {
- // do nothing.
- return;
- }
-
- // ... and post the event (reusing existing event if available)
- final PropertyDomainEvent<?, ?> event =
- PropertyDomainEventFacetAbstract.currentInteraction.get();
- domainEventHelper.postEventForProperty(value(), verify(event), AbstractDomainEvent.Phase.EXECUTED, getIdentified(), targetAdapter, oldValue, actualNewValue);
-
- } finally {
- // clean up
- PropertyDomainEventFacetAbstract.currentInteraction.set(null);
+ // ... post the executing event
+ final Object oldValue = getterFacet.getProperty(targetAdapter);
+ final PropertyDomainEvent<?, ?> event =
+ domainEventHelper.postEventForProperty(
+ AbstractDomainEvent.Phase.EXECUTING,
+ eventType(), null,
+ getIdentified(), targetAdapter,
+ oldValue, null);
+
+ // ... perform the property clear
+ clearFacet.clearProperty(targetAdapter);
+
+ // reading the actual value from the target object, playing it safe...
+ final Object actualNewValue = getterFacet.getProperty(targetAdapter);
+ if(Objects.equal(oldValue, actualNewValue)) {
+ // do nothing.
+ return;
}
+
+ // ... and post the event (reusing event from before)
+ domainEventHelper.postEventForProperty(
+ AbstractDomainEvent.Phase.EXECUTED,
+ eventType(), verify(event),
+ getIdentified(), targetAdapter,
+ oldValue, actualNewValue);
+
}
/**
http://git-wip-us.apache.org/repos/asf/isis/blob/b8322fab/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetAbstract.java
index 7ebd397..c4c5d50 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetAbstract.java
@@ -41,8 +41,6 @@ public abstract class PropertyDomainEventFacetAbstract
private final DomainEventHelper domainEventHelper;
- final static ThreadLocal<PropertyDomainEvent<?,?>> currentInteraction = new ThreadLocal<>();
-
private final PropertyOrCollectionAccessorFacet getterFacet;
public PropertyDomainEventFacetAbstract(
@@ -62,12 +60,12 @@ public abstract class PropertyDomainEventFacetAbstract
return null;
}
- // reset (belt-n-braces)
- currentInteraction.set(null);
-
final PropertyDomainEvent<?, ?> event =
domainEventHelper.postEventForProperty(
- eventType(), null, AbstractDomainEvent.Phase.HIDE, getIdentified(), ic.getTarget(), null, null);
+ AbstractDomainEvent.Phase.HIDE,
+ eventType(), null,
+ getIdentified(), ic.getTarget(),
+ null, null);
if (event != null && event.isHidden()) {
return "Hidden by subscriber";
}
@@ -80,12 +78,12 @@ public abstract class PropertyDomainEventFacetAbstract
return null;
}
- // reset (belt-n-braces)
- currentInteraction.set(null);
-
final PropertyDomainEvent<?, ?> event =
domainEventHelper.postEventForProperty(
- eventType(), null, AbstractDomainEvent.Phase.DISABLE, getIdentified(), ic.getTarget(), null, null);
+ AbstractDomainEvent.Phase.DISABLE,
+ eventType(), null,
+ getIdentified(), ic.getTarget(),
+ null, null);
if (event != null && event.isDisabled()) {
return event.getDisabledReason();
}
@@ -98,21 +96,19 @@ public abstract class PropertyDomainEventFacetAbstract
return null;
}
- // reset (belt-n-braces)
- currentInteraction.set(null);
-
final Object oldValue = getterFacet.getProperty(ic.getTarget());
final Object proposedValue = proposedFrom(ic);
final PropertyDomainEvent<?, ?> event =
domainEventHelper.postEventForProperty(
- eventType(), null, AbstractDomainEvent.Phase.VALIDATE, getIdentified(), ic.getTarget(), oldValue, proposedValue);
+ AbstractDomainEvent.Phase.VALIDATE,
+ eventType(), null,
+ getIdentified(), ic.getTarget(),
+ oldValue, proposedValue);
if (event != null && event.isInvalid()) {
return event.getInvalidityReason();
}
- // make available for next phases (executing/executed)
- currentInteraction.set(event);
return null;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/b8322fab/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterFacetForDomainEventAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterFacetForDomainEventAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterFacetForDomainEventAbstract.java
index 903595d..0a3f540 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterFacetForDomainEventAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterFacetForDomainEventAbstract.java
@@ -70,35 +70,38 @@ public abstract class PropertySetterFacetForDomainEventAbstract
}
- try {
- // pick up existing event (saved in thread local during the validation phase)
- final PropertyDomainEvent<?, ?> existingEvent = PropertyDomainEventFacetAbstract.currentInteraction.get();
-
- // ... post the executing event
- final Object oldValue = getterFacet.getProperty(targetAdapter);
- final Object newValue = ObjectAdapter.Util.unwrap(newValueAdapter);
-
- domainEventHelper.postEventForProperty(
- value(), existingEvent, AbstractDomainEvent.Phase.EXECUTING,
- getIdentified(), targetAdapter, oldValue, newValue);
-
- // ... perform the property modification
- setterFacet.setProperty(targetAdapter, newValueAdapter);
+ // ... post the executing event
+ final Object oldValue = getterFacet.getProperty(targetAdapter);
+ final Object newValue = ObjectAdapter.Util.unwrap(newValueAdapter);
+
+ final PropertyDomainEvent<?, ?> event =
+ domainEventHelper.postEventForProperty(
+ AbstractDomainEvent.Phase.EXECUTING,
+ eventType(), null,
+ getIdentified(), targetAdapter,
+ oldValue, newValue);
+
+ // ... perform the property modification
+ setterFacet.setProperty(targetAdapter, newValueAdapter);
+
+ // reading the actual value from the target object, playing it safe...
+ final Object actualNewValue = getterFacet.getProperty(targetAdapter);
+ if(Objects.equal(oldValue, actualNewValue)) {
+ // do nothing
+ return;
+ }
- // reading the actual value from the target object, playing it safe...
- final Object actualNewValue = getterFacet.getProperty(targetAdapter);
- if(Objects.equal(oldValue, actualNewValue)) {
- return;
- }
+ // ... post the executed event
+ domainEventHelper.postEventForProperty(
+ AbstractDomainEvent.Phase.EXECUTED,
+ eventType(), verify(event),
+ getIdentified(), targetAdapter,
+ oldValue, actualNewValue);
- // ... post the executed event
- final PropertyDomainEvent<?, ?> event = PropertyDomainEventFacetAbstract.currentInteraction.get();
- domainEventHelper.postEventForProperty(value(), verify(event), AbstractDomainEvent.Phase.EXECUTED, getIdentified(), targetAdapter, oldValue, actualNewValue);
+ }
- } finally {
- // clean up
- PropertyDomainEventFacetAbstract.currentInteraction.set(null);
- }
+ private Class<? extends PropertyDomainEvent<?, ?>> eventType() {
+ return value();
}
/**
[7/8] isis git commit: ISIS-1052: adding spanish translations for
simpleapp.
Posted by da...@apache.org.
ISIS-1052: adding spanish translations for simpleapp.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/d1463a01
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/d1463a01
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/d1463a01
Branch: refs/heads/master
Commit: d1463a01adabdb2bee840ea3e97dc6669262f7ab
Parents: 0d64472
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Mar 25 13:43:50 2015 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Mar 25 16:54:47 2015 +0000
----------------------------------------------------------------------
.../src/main/webapp/WEB-INF/translations-es.po | 52 ++++++++++----------
1 file changed, 26 insertions(+), 26 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/d1463a01/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/translations-es.po
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/translations-es.po b/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/translations-es.po
index 92b8bdb..4f93a31 100644
--- a/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/translations-es.po
+++ b/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/translations-es.po
@@ -19,12 +19,12 @@
#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations(java.lang.String)
msgid ".pot file name"
-msgstr ""
+msgstr "fichero .pot"
#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#resetTranslationCache()
msgid "Clear translation cache"
-msgstr ""
+msgstr "Limpiar la caché de traducciones"
#: domainapp.dom.modules.simple.SimpleObjects#create()
@@ -34,17 +34,17 @@ msgstr "Crear"
#: org.apache.isis.applib.fixturescripts.FixtureScript#discoverable
msgid "Discoverable"
-msgstr ""
+msgstr "Descubrible"
#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations()
msgid "Download Translations"
-msgstr ""
+msgstr "Descargar traducciones"
#: domainapp.dom.modules.simple.SimpleObject#updateName()
msgid "Exclamation mark is not allowed"
-msgstr ""
+msgstr "No se admite el signo de exclamación"
#: domainapp.dom.modules.simple.SimpleObjects#findByName()
@@ -54,33 +54,33 @@ msgstr "Buscar por Nombre"
#: org.apache.isis.applib.fixturescripts.FixtureResult#fixtureScriptClassName
msgid "Fixture script"
-msgstr ""
+msgstr "Script de Instalación"
#: org.apache.isis.applib.fixturescripts.FixtureScript#friendlyName
msgid "Friendly Name"
-msgstr ""
+msgstr "Nombre común"
#: domainapp.dom.app.homepage.HomePageService#homePage()
msgid "Home Page"
-msgstr ""
+msgstr "Página de Inicio"
#: domainapp.dom.modules.simple.SimpleObjects#listAll()
msgid "List All"
-msgstr "Lista de Todos"
+msgstr "Listar Todos"
#: org.apache.isis.applib.fixturescripts.FixtureScript#localName
msgid "Local Name"
-msgstr ""
+msgstr "Nombre Local"
#: org.apache.isis.applib.fixturescripts.FixtureScript#lookup()
#: org.apache.isis.applib.services.bookmark.BookmarkHolderActionContributions#lookup()
msgid "Lookup"
-msgstr ""
+msgstr "Buscar"
#: domainapp.dom.modules.simple.SimpleObject#name
@@ -97,66 +97,66 @@ msgstr "Nuevo nombre"
#: org.apache.isis.applib.services.bookmark.BookmarkHolderAssociationContributions#object()
msgid "Object"
-msgstr ""
+msgstr "Objeto"
#: domainapp.dom.modules.simple.SimpleObject#title()
msgid "Object: {name}"
-msgstr ""
+msgstr "Objeto: {name}"
#: domainapp.dom.app.homepage.HomePageViewModel#objects
msgid "Objects"
-msgstr ""
+msgstr "Objetos"
#: domainapp.fixture.DomainAppFixturesService#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
msgid "Parameters"
-msgstr ""
+msgstr "Parámetros"
#: domainapp.fixture.DomainAppFixturesService
#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu
msgid "Prototyping"
-msgstr ""
+msgstr "Prototipo"
#: domainapp.fixture.DomainAppFixturesService#recreateObjectsAndReturnFirst()
msgid "Recreate Objects And Return First"
-msgstr ""
+msgstr "Recrear Objetos y Devolver el Primero"
#: org.apache.isis.applib.fixturescripts.FixtureResult#object
msgid "Result"
-msgstr ""
+msgstr "Resultado"
#: org.apache.isis.applib.fixturescripts.FixtureResult#className
msgid "Result class"
-msgstr ""
+msgstr "Clase del resultado"
#: org.apache.isis.applib.fixturescripts.FixtureResult#key
msgid "Result key"
-msgstr ""
+msgstr "Clave del Resultado"
#: domainapp.fixture.DomainAppFixturesService#runFixtureScript()
#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript()
msgid "Run Fixture Script"
-msgstr ""
+msgstr "Ejecutar Script de Instalación"
#: org.apache.isis.applib.fixturescripts.FixtureScript
msgid "Script"
-msgstr ""
+msgstr "Script"
#: domainapp.fixture.DomainAppFixturesService#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
msgid "Script-specific parameters (if any). The format depends on the script implementation (eg key=value, CSV, JSON, XML etc)"
-msgstr ""
+msgstr "Parámetros específicos del Script (si hay alguno). El formato depende de la implementación del script (por ejemplo, clave=valor, CSV, JSON, XML, etc.)"
#: domainapp.dom.modules.simple.SimpleObjects#title()
@@ -166,17 +166,17 @@ msgstr "Objetos básicos"
#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#switchToReadingTranslations()
msgid "Switch To Reading Translations"
-msgstr ""
+msgstr "Cambiar a Lectura de Traducciones"
#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#switchToWritingTranslations()
msgid "Switch To Writing Translations"
-msgstr ""
+msgstr "Cambiar a Escritura de Traducciones"
#: org.apache.isis.applib.fixturescripts.FixtureScript#type
msgid "Type"
-msgstr ""
+msgstr "Tipo"
#: domainapp.dom.modules.simple.SimpleObject#updateName()
[6/8] isis git commit: Merge branch 'ISIS-1113'
Posted by da...@apache.org.
Merge branch 'ISIS-1113'
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/0d64472a
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/0d64472a
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/0d64472a
Branch: refs/heads/master
Commit: 0d64472add031e2ac5f3c85f685532f5bcf68093
Parents: 89853e2 95c6f17
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Mar 25 16:53:34 2015 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Mar 25 16:53:34 2015 +0000
----------------------------------------------------------------------
.../services/eventbus/AbstractDomainEvent.java | 91 ++++++++++++++++++--
.../ActionDomainEventFacetAbstract.java | 22 ++++-
.../CollectionDomainEventFacetAbstract.java | 18 ++++
.../PropertyDomainEventFacetAbstract.java | 18 ++++
4 files changed, 142 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
[8/8] isis git commit: ISIS-1052: recreating simpleapp archetype
Posted by da...@apache.org.
ISIS-1052: recreating simpleapp archetype
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/f60ce024
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/f60ce024
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/f60ce024
Branch: refs/heads/master
Commit: f60ce02498dbe4a27ce205874273761c2b68c7f4
Parents: d1463a0
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Mar 25 16:55:21 2015 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Mar 25 16:55:21 2015 +0000
----------------------------------------------------------------------
.../src/main/webapp/WEB-INF/translations-es.po | 52 ++++++++++----------
.../projects/basic/archetype.properties | 2 +-
2 files changed, 27 insertions(+), 27 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/f60ce024/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/translations-es.po
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/translations-es.po b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/translations-es.po
index 92b8bdb..4f93a31 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/translations-es.po
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/translations-es.po
@@ -19,12 +19,12 @@
#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations(java.lang.String)
msgid ".pot file name"
-msgstr ""
+msgstr "fichero .pot"
#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#resetTranslationCache()
msgid "Clear translation cache"
-msgstr ""
+msgstr "Limpiar la caché de traducciones"
#: domainapp.dom.modules.simple.SimpleObjects#create()
@@ -34,17 +34,17 @@ msgstr "Crear"
#: org.apache.isis.applib.fixturescripts.FixtureScript#discoverable
msgid "Discoverable"
-msgstr ""
+msgstr "Descubrible"
#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations()
msgid "Download Translations"
-msgstr ""
+msgstr "Descargar traducciones"
#: domainapp.dom.modules.simple.SimpleObject#updateName()
msgid "Exclamation mark is not allowed"
-msgstr ""
+msgstr "No se admite el signo de exclamación"
#: domainapp.dom.modules.simple.SimpleObjects#findByName()
@@ -54,33 +54,33 @@ msgstr "Buscar por Nombre"
#: org.apache.isis.applib.fixturescripts.FixtureResult#fixtureScriptClassName
msgid "Fixture script"
-msgstr ""
+msgstr "Script de Instalación"
#: org.apache.isis.applib.fixturescripts.FixtureScript#friendlyName
msgid "Friendly Name"
-msgstr ""
+msgstr "Nombre común"
#: domainapp.dom.app.homepage.HomePageService#homePage()
msgid "Home Page"
-msgstr ""
+msgstr "Página de Inicio"
#: domainapp.dom.modules.simple.SimpleObjects#listAll()
msgid "List All"
-msgstr "Lista de Todos"
+msgstr "Listar Todos"
#: org.apache.isis.applib.fixturescripts.FixtureScript#localName
msgid "Local Name"
-msgstr ""
+msgstr "Nombre Local"
#: org.apache.isis.applib.fixturescripts.FixtureScript#lookup()
#: org.apache.isis.applib.services.bookmark.BookmarkHolderActionContributions#lookup()
msgid "Lookup"
-msgstr ""
+msgstr "Buscar"
#: domainapp.dom.modules.simple.SimpleObject#name
@@ -97,66 +97,66 @@ msgstr "Nuevo nombre"
#: org.apache.isis.applib.services.bookmark.BookmarkHolderAssociationContributions#object()
msgid "Object"
-msgstr ""
+msgstr "Objeto"
#: domainapp.dom.modules.simple.SimpleObject#title()
msgid "Object: {name}"
-msgstr ""
+msgstr "Objeto: {name}"
#: domainapp.dom.app.homepage.HomePageViewModel#objects
msgid "Objects"
-msgstr ""
+msgstr "Objetos"
#: domainapp.fixture.DomainAppFixturesService#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
msgid "Parameters"
-msgstr ""
+msgstr "Parámetros"
#: domainapp.fixture.DomainAppFixturesService
#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu
msgid "Prototyping"
-msgstr ""
+msgstr "Prototipo"
#: domainapp.fixture.DomainAppFixturesService#recreateObjectsAndReturnFirst()
msgid "Recreate Objects And Return First"
-msgstr ""
+msgstr "Recrear Objetos y Devolver el Primero"
#: org.apache.isis.applib.fixturescripts.FixtureResult#object
msgid "Result"
-msgstr ""
+msgstr "Resultado"
#: org.apache.isis.applib.fixturescripts.FixtureResult#className
msgid "Result class"
-msgstr ""
+msgstr "Clase del resultado"
#: org.apache.isis.applib.fixturescripts.FixtureResult#key
msgid "Result key"
-msgstr ""
+msgstr "Clave del Resultado"
#: domainapp.fixture.DomainAppFixturesService#runFixtureScript()
#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript()
msgid "Run Fixture Script"
-msgstr ""
+msgstr "Ejecutar Script de Instalación"
#: org.apache.isis.applib.fixturescripts.FixtureScript
msgid "Script"
-msgstr ""
+msgstr "Script"
#: domainapp.fixture.DomainAppFixturesService#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
msgid "Script-specific parameters (if any). The format depends on the script implementation (eg key=value, CSV, JSON, XML etc)"
-msgstr ""
+msgstr "Parámetros específicos del Script (si hay alguno). El formato depende de la implementación del script (por ejemplo, clave=valor, CSV, JSON, XML, etc.)"
#: domainapp.dom.modules.simple.SimpleObjects#title()
@@ -166,17 +166,17 @@ msgstr "Objetos básicos"
#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#switchToReadingTranslations()
msgid "Switch To Reading Translations"
-msgstr ""
+msgstr "Cambiar a Lectura de Traducciones"
#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#switchToWritingTranslations()
msgid "Switch To Writing Translations"
-msgstr ""
+msgstr "Cambiar a Escritura de Traducciones"
#: org.apache.isis.applib.fixturescripts.FixtureScript#type
msgid "Type"
-msgstr ""
+msgstr "Tipo"
#: domainapp.dom.modules.simple.SimpleObject#updateName()
http://git-wip-us.apache.org/repos/asf/isis/blob/f60ce024/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties b/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties
index 63d6814..77952fc 100644
--- a/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties
+++ b/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties
@@ -1,4 +1,4 @@
-#Mon Mar 23 15:28:04 GMT 2015
+#Wed Mar 25 16:55:14 GMT 2015
package=it.pkg
version=0.1-SNAPSHOT
groupId=archetype.it
[4/8] isis git commit: ISIS-1113: allowing vetoing subscribers to
provide translatable reasons
Posted by da...@apache.org.
ISIS-1113: allowing vetoing subscribers to provide translatable reasons
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/8346a6be
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/8346a6be
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/8346a6be
Branch: refs/heads/master
Commit: 8346a6beb55abfba319935e2eaba662ee5c73f8a
Parents: 89853e2
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Mar 25 07:31:57 2015 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Mar 25 16:52:50 2015 +0000
----------------------------------------------------------------------
.../services/eventbus/AbstractDomainEvent.java | 91 ++++++++++++++++++--
.../ActionDomainEventFacetAbstract.java | 22 ++++-
.../CollectionDomainEventFacetAbstract.java | 18 ++++
.../PropertyDomainEventFacetAbstract.java | 18 ++++
4 files changed, 142 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/8346a6be/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/AbstractDomainEvent.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/AbstractDomainEvent.java b/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/AbstractDomainEvent.java
index 947e84e..8ac07b7 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/AbstractDomainEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/AbstractDomainEvent.java
@@ -22,6 +22,7 @@ import java.util.Map;
import com.google.common.collect.Maps;
import org.apache.isis.applib.Identifier;
import org.apache.isis.applib.annotation.Programmatic;
+import org.apache.isis.applib.services.i18n.TranslatableString;
import org.apache.isis.applib.util.ObjectContracts;
public abstract class AbstractDomainEvent<S> extends java.util.EventObject {
@@ -108,48 +109,103 @@ public abstract class AbstractDomainEvent<S> extends java.util.EventObject {
return hidden;
}
+ /**
+ * @see #veto(String, Object...)
+ */
public void hide() {
this.hidden = true;
}
//endregion
- //region > disable, isDisabled, getDisabledReason
+ //region > disable, isDisabled, getDisabledReason, getDisabledReasonTranslatable
private String disabledReason;
+
public boolean isDisabled() {
- return disabledReason != null;
+ return disabledReason != null || disabledReasonTranslatable != null;
}
+
+ /**
+ * If {@link #isDisabled() disabled}, then either this method returns non-null or {@link #getDisabledReasonTranslatable()} will.
+ */
public String getDisabledReason() {
return disabledReason;
}
+
+ /**
+ * @see #disable(org.apache.isis.applib.services.i18n.TranslatableString)
+ * @see #veto(String, Object...)
+ */
public void disable(final String reason) {
this.disabledReason = reason;
}
+
+ private TranslatableString disabledReasonTranslatable;
+ /**
+ * If {@link #isDisabled() disabled}, then either this method returns non-null or {@link #getDisabledReason()} will.
+ */
+ public TranslatableString getDisabledReasonTranslatable() {
+ return disabledReasonTranslatable;
+ }
+ /**
+ * @see #disable(java.lang.String)
+ * @see #veto(org.apache.isis.applib.services.i18n.TranslatableString)
+ */
+ public void disable(final TranslatableString reason) {
+ this.disabledReasonTranslatable = reason;
+ }
//endregion
- //region > invalidate, isInvalid, getInvalidityReason
+ //region > invalidate, isInvalid, getInvalidityReason, getInvalidityReasonTranslatable
private String invalidatedReason;
public boolean isInvalid() {
- return invalidatedReason != null;
+ return invalidatedReason != null || invalidatedReasonTranslatable != null;
}
+
+ /**
+ * If {@link #isInvalid() invalid}, then either this method returns non-null or {@link #getInvalidityReasonTranslatable()} will.
+ */
public String getInvalidityReason() {
return invalidatedReason;
}
+ /**
+ * @see #invalidate(org.apache.isis.applib.services.i18n.TranslatableString)
+ * @see #veto(String, Object...)
+ */
public void invalidate(final String reason) {
this.invalidatedReason = reason;
}
+
+ private TranslatableString invalidatedReasonTranslatable;
+ /**
+ * If {@link #isInvalid() invalid}, then either this method returns non-null or {@link #getInvalidityReason()} will.
+ */
+ public TranslatableString getInvalidityReasonTranslatable() {
+ return invalidatedReasonTranslatable;
+ }
+
+ /**
+ * @see #invalidate(String)
+ * @see #veto(org.apache.isis.applib.services.i18n.TranslatableString)
+ */
+ public void invalidate(final TranslatableString reason) {
+ this.invalidatedReasonTranslatable = reason;
+ }
+
//endregion
//region > veto
/**
* Use instead of {@link #hide()}, {@link #disable(String)} and {@link #invalidate(String)}; just delegates to
- * appropriate vetoing method based upon the {@link #getPhase()}.
+ * appropriate vetoing method based upon the {@link #getEventPhase() phase}.
*
* <p>
* If hiding, just pass <tt>null</tt> for the parameter.
* </p>
*
- * @param reason - reason why the interaction is being invalidated (ignored if in {@link org.apache.isis.applib.services.eventbus.AbstractInteractionEvent.Phase#HIDE hide} phase).
+ * @param reason - reason why the interaction is being invalidated (ignored if in {@link org.apache.isis.applib.services.eventbus.AbstractDomainEvent.Phase#HIDE hide} phase).
* @param args
+ *
+ * @see #veto(org.apache.isis.applib.services.i18n.TranslatableString)
*/
@Programmatic
public void veto(final String reason, final Object... args) {
@@ -162,6 +218,29 @@ public abstract class AbstractDomainEvent<S> extends java.util.EventObject {
invalidate(String.format(reason, args));
}
}
+ /**
+ * Use instead of {@link #hide()}, {@link #disable(org.apache.isis.applib.services.i18n.TranslatableString)} and {@link #invalidate(org.apache.isis.applib.services.i18n.TranslatableString)}; just delegates to
+ * appropriate vetoing method based upon the {@link #getEventPhase() phase}.
+ *
+ * <p>
+ * If hiding, just pass <tt>null</tt> for the parameter.
+ * </p>
+ *
+ * @param translatableReason - reason why the interaction is being invalidated (ignored if in {@link org.apache.isis.applib.services.eventbus.AbstractDomainEvent.Phase#HIDE hide} phase).
+ *
+ * @see #veto(String)
+ */
+ @Programmatic
+ public void veto(final TranslatableString translatableReason) {
+ switch (getEventPhase()) {
+ case HIDE:
+ hide();
+ case DISABLE:
+ disable(translatableReason);
+ case VALIDATE:
+ invalidate(translatableReason);
+ }
+ }
//endregion
//region > userData
http://git-wip-us.apache.org/repos/asf/isis/blob/8346a6be/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetAbstract.java
index 392c1da..c1f61e3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetAbstract.java
@@ -26,9 +26,12 @@ import org.apache.isis.applib.events.ValidityEvent;
import org.apache.isis.applib.events.VisibilityEvent;
import org.apache.isis.applib.services.eventbus.AbstractDomainEvent;
import org.apache.isis.applib.services.eventbus.ActionDomainEvent;
+import org.apache.isis.applib.services.i18n.TranslatableString;
+import org.apache.isis.applib.services.i18n.TranslationService;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
import org.apache.isis.core.metamodel.facets.DomainEventHelper;
import org.apache.isis.core.metamodel.facets.SingleClassValueFacetAbstract;
import org.apache.isis.core.metamodel.interactions.ActionInvocationContext;
@@ -42,6 +45,9 @@ import org.apache.isis.core.metamodel.spec.SpecificationLoader;
public abstract class ActionDomainEventFacetAbstract
extends SingleClassValueFacetAbstract implements ActionDomainEventFacet {
+ private final TranslationService translationService;
+ private final String translationContext;
+
static Class<? extends Facet> type() {
return ActionDomainEventFacet.class;
}
@@ -54,6 +60,11 @@ public abstract class ActionDomainEventFacetAbstract
final ServicesInjector servicesInjector,
final SpecificationLoader specificationLoader) {
super(type(), holder, eventType, specificationLoader);
+
+ this.translationService = servicesInjector.lookupService(TranslationService.class);
+ // sadness: same as in TranslationFactory
+ this.translationContext = ((IdentifiedHolder)holder).getIdentifier().toClassAndNameIdentityString();
+
domainEventHelper = new DomainEventHelper(servicesInjector);
}
@@ -93,7 +104,12 @@ public abstract class ActionDomainEventFacetAbstract
null,
null);
if (event != null && event.isDisabled()) {
+ final TranslatableString reasonTranslatable = event.getDisabledReasonTranslatable();
+ if(reasonTranslatable != null) {
+ return reasonTranslatable.translate(translationService, translationContext);
+ }
return event.getDisabledReason();
+
}
return null;
}
@@ -104,7 +120,7 @@ public abstract class ActionDomainEventFacetAbstract
}
@Override
- public String invalidates(ValidityContext<? extends ValidityEvent> ic) {
+ public String invalidates(final ValidityContext<? extends ValidityEvent> ic) {
if(!domainEventHelper.hasEventBusService()) {
return null;
}
@@ -118,6 +134,10 @@ public abstract class ActionDomainEventFacetAbstract
null,
null);
if (event != null && event.isInvalid()) {
+ final TranslatableString reasonTranslatable = event.getInvalidityReasonTranslatable();
+ if(reasonTranslatable != null) {
+ return reasonTranslatable.translate(translationService, translationContext);
+ }
return event.getInvalidityReason();
}
http://git-wip-us.apache.org/repos/asf/isis/blob/8346a6be/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetAbstract.java
index 4e221c7..4a433fb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetAbstract.java
@@ -24,7 +24,10 @@ import org.apache.isis.applib.events.ValidityEvent;
import org.apache.isis.applib.events.VisibilityEvent;
import org.apache.isis.applib.services.eventbus.AbstractDomainEvent;
import org.apache.isis.applib.services.eventbus.CollectionDomainEvent;
+import org.apache.isis.applib.services.i18n.TranslatableString;
+import org.apache.isis.applib.services.i18n.TranslationService;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
import org.apache.isis.core.metamodel.facets.DomainEventHelper;
import org.apache.isis.core.metamodel.facets.SingleClassValueFacetAbstract;
import org.apache.isis.core.metamodel.interactions.CollectionAddToContext;
@@ -38,6 +41,8 @@ import org.apache.isis.core.metamodel.spec.SpecificationLoader;
public abstract class CollectionDomainEventFacetAbstract extends SingleClassValueFacetAbstract implements CollectionDomainEventFacet {
private final DomainEventHelper domainEventHelper;
+ private final TranslationService translationService;
+ private final String translationContext;
public CollectionDomainEventFacetAbstract(
final Class<? extends CollectionDomainEvent<?, ?>> eventType,
@@ -45,6 +50,11 @@ public abstract class CollectionDomainEventFacetAbstract extends SingleClassValu
final ServicesInjector servicesInjector,
final SpecificationLoader specificationLoader) {
super(CollectionDomainEventFacet.class, holder, eventType, specificationLoader);
+
+ this.translationService = servicesInjector.lookupService(TranslationService.class);
+ // sadness: same as in TranslationFactory
+ this.translationContext = ((IdentifiedHolder)holder).getIdentifier().toClassAndNameIdentityString();
+
domainEventHelper = new DomainEventHelper(servicesInjector);
}
@@ -81,6 +91,10 @@ public abstract class CollectionDomainEventFacetAbstract extends SingleClassValu
CollectionDomainEvent.Of.ACCESS,
null);
if (event != null && event.isDisabled()) {
+ final TranslatableString reasonTranslatable = event.getDisabledReasonTranslatable();
+ if(reasonTranslatable != null) {
+ return reasonTranslatable.translate(translationService, translationContext);
+ }
return event.getDisabledReason();
}
return null;
@@ -108,6 +122,10 @@ public abstract class CollectionDomainEventFacetAbstract extends SingleClassValu
of,
proposed);
if (event != null && event.isInvalid()) {
+ final TranslatableString reasonTranslatable = event.getInvalidityReasonTranslatable();
+ if(reasonTranslatable != null) {
+ return reasonTranslatable.translate(translationService, translationContext);
+ }
return event.getInvalidityReason();
}
http://git-wip-us.apache.org/repos/asf/isis/blob/8346a6be/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetAbstract.java
index c4c5d50..77afa56 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetAbstract.java
@@ -24,8 +24,11 @@ import org.apache.isis.applib.events.ValidityEvent;
import org.apache.isis.applib.events.VisibilityEvent;
import org.apache.isis.applib.services.eventbus.AbstractDomainEvent;
import org.apache.isis.applib.services.eventbus.PropertyDomainEvent;
+import org.apache.isis.applib.services.i18n.TranslatableString;
+import org.apache.isis.applib.services.i18n.TranslationService;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
import org.apache.isis.core.metamodel.facets.DomainEventHelper;
import org.apache.isis.core.metamodel.facets.SingleClassValueFacetAbstract;
import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
@@ -42,6 +45,8 @@ public abstract class PropertyDomainEventFacetAbstract
private final DomainEventHelper domainEventHelper;
private final PropertyOrCollectionAccessorFacet getterFacet;
+ private final TranslationService translationService;
+ private final String translationContext;
public PropertyDomainEventFacetAbstract(
final Class<? extends PropertyDomainEvent<?, ?>> eventType,
@@ -51,6 +56,11 @@ public abstract class PropertyDomainEventFacetAbstract
final SpecificationLoader specificationLoader) {
super(PropertyDomainEventFacet.class, holder, eventType, specificationLoader);
this.getterFacet = getterFacet;
+
+ this.translationService = servicesInjector.lookupService(TranslationService.class);
+ // sadness: same as in TranslationFactory
+ this.translationContext = ((IdentifiedHolder)holder).getIdentifier().toClassAndNameIdentityString();
+
domainEventHelper = new DomainEventHelper(servicesInjector);
}
@@ -85,6 +95,10 @@ public abstract class PropertyDomainEventFacetAbstract
getIdentified(), ic.getTarget(),
null, null);
if (event != null && event.isDisabled()) {
+ final TranslatableString reasonTranslatable = event.getDisabledReasonTranslatable();
+ if(reasonTranslatable != null) {
+ return reasonTranslatable.translate(translationService, translationContext);
+ }
return event.getDisabledReason();
}
return null;
@@ -106,6 +120,10 @@ public abstract class PropertyDomainEventFacetAbstract
getIdentified(), ic.getTarget(),
oldValue, proposedValue);
if (event != null && event.isInvalid()) {
+ final TranslatableString reasonTranslatable = event.getInvalidityReasonTranslatable();
+ if(reasonTranslatable != null) {
+ return reasonTranslatable.translate(translationService, translationContext);
+ }
return event.getInvalidityReason();
}
[3/8] isis git commit: Merge branch 'ISIS-1045'
Posted by da...@apache.org.
Merge branch 'ISIS-1045'
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/89853e24
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/89853e24
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/89853e24
Branch: refs/heads/master
Commit: 89853e246b187aedad5ec52e418c196d96ca1eaf
Parents: 1aa380e 51e3591
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Mar 25 16:52:08 2015 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Mar 25 16:52:08 2015 +0000
----------------------------------------------------------------------
.../services/eventbus/AbstractDomainEvent.java | 6 +-
.../metamodel/facets/DomainEventHelper.java | 103 +++++++++----------
.../ActionDomainEventFacetAbstract.java | 42 +++-----
...onInvocationFacetForDomainEventAbstract.java | 58 +++++------
...ionAddToFacetForDomainEventFromAbstract.java | 68 ++++++------
.../CollectionDomainEventFacetAbstract.java | 37 ++++---
...moveFromFacetForDomainEventFromAbstract.java | 63 ++++++------
...ropertyClearFacetForDomainEventAbstract.java | 54 +++++-----
.../PropertyDomainEventFacetAbstract.java | 28 +++--
...opertySetterFacetForDomainEventAbstract.java | 55 +++++-----
10 files changed, 250 insertions(+), 264 deletions(-)
----------------------------------------------------------------------
[2/8] isis git commit: ISIS-1045: fix in algorithm of
DomainEventHelper
Posted by da...@apache.org.
ISIS-1045: fix in algorithm of DomainEventHelper
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/51e35911
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/51e35911
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/51e35911
Branch: refs/heads/master
Commit: 51e35911662e747c21e6992bb0dcdcb36a06ab34
Parents: b8322fa
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Mar 25 16:29:58 2015 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Mar 25 16:51:19 2015 +0000
----------------------------------------------------------------------
.../metamodel/facets/DomainEventHelper.java | 24 ++++++++++----------
1 file changed, 12 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/51e35911/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/DomainEventHelper.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/DomainEventHelper.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/DomainEventHelper.java
index bf1eb75..dcf655a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/DomainEventHelper.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/DomainEventHelper.java
@@ -69,9 +69,6 @@ public class DomainEventHelper {
if (existingEvent != null && phase.isExecuted()) {
// reuse existing event from the executing phase
event = existingEvent;
-
- event.setEventPhase(phase);
- event.setPhase(AbstractInteractionEvent.Phase.from(phase));
} else {
// all other phases, create a new event
final Object source = ObjectAdapter.Util.unwrap(targetAdapter);
@@ -86,6 +83,9 @@ public class DomainEventHelper {
}
}
+ event.setEventPhase(phase);
+ event.setPhase(AbstractInteractionEvent.Phase.from(phase));
+
if(phase.isExecuted()) {
event.setReturnValue(ObjectAdapter.Util.unwrap(resultAdapter));
}
@@ -164,17 +164,17 @@ public class DomainEventHelper {
if(existingEvent != null && phase.isExecuted()) {
// reuse existing event from the executing phase
event = existingEvent;
-
- event.setEventPhase(phase);
- event.setPhase(AbstractInteractionEvent.Phase.from(phase));
-
- // just in case the actual new value held by the object is different from that applied
- setEventNewValue(event, newValue);
} else {
// all other phases, create a new event
event = newPropertyDomainEvent(eventType, identifier, source, oldValue, newValue);
}
+ event.setEventPhase(phase);
+ event.setPhase(AbstractInteractionEvent.Phase.from(phase));
+
+ // just in case the actual new value held by the object is different from that applied
+ setEventNewValue(event, newValue);
+
this.getEventBusService().post(event);
return event;
} catch (Exception e) {
@@ -238,9 +238,6 @@ public class DomainEventHelper {
if (existingEvent != null && phase.isExecuted()) {
// reuse existing event from the executing phase
event = existingEvent;
-
- event.setEventPhase(phase);
- event.setPhase(AbstractInteractionEvent.Phase.from(phase));
} else {
// all other phases, create a new event
final Object source = ObjectAdapter.Util.unwrap(targetAdapter);
@@ -248,6 +245,9 @@ public class DomainEventHelper {
event = newCollectionDomainEvent(eventType, phase, identifier, source, of, reference);
}
+ event.setEventPhase(phase);
+ event.setPhase(AbstractInteractionEvent.Phase.from(phase));
+
getEventBusService().post(event);
return event;
} catch (Exception e) {
[5/8] isis git commit: ISIS-1113: fixing javadoc.
Posted by da...@apache.org.
ISIS-1113: fixing javadoc.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/95c6f178
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/95c6f178
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/95c6f178
Branch: refs/heads/master
Commit: 95c6f1788db1e1352d612ae4fb21937d255f5cb5
Parents: 8346a6b
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Mar 25 13:43:32 2015 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Mar 25 16:53:21 2015 +0000
----------------------------------------------------------------------
.../apache/isis/applib/services/eventbus/AbstractDomainEvent.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/95c6f178/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/AbstractDomainEvent.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/AbstractDomainEvent.java b/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/AbstractDomainEvent.java
index 8ac07b7..1e74584 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/AbstractDomainEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/AbstractDomainEvent.java
@@ -228,7 +228,7 @@ public abstract class AbstractDomainEvent<S> extends java.util.EventObject {
*
* @param translatableReason - reason why the interaction is being invalidated (ignored if in {@link org.apache.isis.applib.services.eventbus.AbstractDomainEvent.Phase#HIDE hide} phase).
*
- * @see #veto(String)
+ * @see #veto(String, Object...)
*/
@Programmatic
public void veto(final TranslatableString translatableReason) {