diff options
Diffstat (limited to '')
6 files changed, 49 insertions, 41 deletions
diff --git a/sandbox/dougsleite/implementation-guardian/src/main/java/org/apache/tuscany/sca/implementation/guardian/GuardianMember.java b/sandbox/dougsleite/implementation-guardian/src/main/java/org/apache/tuscany/sca/implementation/guardian/GuardianMember.java index b82bf082b1..ec562b082b 100644 --- a/sandbox/dougsleite/implementation-guardian/src/main/java/org/apache/tuscany/sca/implementation/guardian/GuardianMember.java +++ b/sandbox/dougsleite/implementation-guardian/src/main/java/org/apache/tuscany/sca/implementation/guardian/GuardianMember.java @@ -29,8 +29,6 @@ public interface GuardianMember extends GuardianPrimitives { public String getParticipantIdentifier(); - public void setUniqueParticipantID(int id); - public int getParticipantState(); public void setParticipantState(int state); diff --git a/sandbox/dougsleite/implementation-guardian/src/main/java/org/apache/tuscany/sca/implementation/guardian/GuardianPrimitives.java b/sandbox/dougsleite/implementation-guardian/src/main/java/org/apache/tuscany/sca/implementation/guardian/GuardianPrimitives.java index c50e855d30..3aa014ee12 100644 --- a/sandbox/dougsleite/implementation-guardian/src/main/java/org/apache/tuscany/sca/implementation/guardian/GuardianPrimitives.java +++ b/sandbox/dougsleite/implementation-guardian/src/main/java/org/apache/tuscany/sca/implementation/guardian/GuardianPrimitives.java @@ -29,7 +29,7 @@ public interface GuardianPrimitives { //Methods to manage contexts public void enableContext(Context context); - public void removeContext(); + public Context removeContext(); //Methods to control the signaling of exceptions public void gthrow(GlobalExceptionInterface ex, List<String> participantList); diff --git a/sandbox/dougsleite/implementation-guardian/src/main/java/org/apache/tuscany/sca/implementation/guardian/common/Context.java b/sandbox/dougsleite/implementation-guardian/src/main/java/org/apache/tuscany/sca/implementation/guardian/common/Context.java index 95c6f3bed6..6eb777b587 100644 --- a/sandbox/dougsleite/implementation-guardian/src/main/java/org/apache/tuscany/sca/implementation/guardian/common/Context.java +++ b/sandbox/dougsleite/implementation-guardian/src/main/java/org/apache/tuscany/sca/implementation/guardian/common/Context.java @@ -26,7 +26,6 @@ public class Context { public static Context CURRENT_CONTEXT = new Context("CURRENT_CONTEXT"); public static Context INIT_CONTEXT = new Context("INIT_CONTEXT"); public static Context GUARDIAN_CONTEXT = new Context("GUARDIAN_CONTEXT"); - private String name; private List<Class<? extends GlobalException>> exceptionList; diff --git a/sandbox/dougsleite/implementation-guardian/src/main/java/org/apache/tuscany/sca/implementation/guardian/impl/GuardianGroupImpl.java b/sandbox/dougsleite/implementation-guardian/src/main/java/org/apache/tuscany/sca/implementation/guardian/impl/GuardianGroupImpl.java index 5a243560e3..9094fc248d 100644 --- a/sandbox/dougsleite/implementation-guardian/src/main/java/org/apache/tuscany/sca/implementation/guardian/impl/GuardianGroupImpl.java +++ b/sandbox/dougsleite/implementation-guardian/src/main/java/org/apache/tuscany/sca/implementation/guardian/impl/GuardianGroupImpl.java @@ -102,18 +102,18 @@ public class GuardianGroupImpl implements GuardianGroup { public void addGuardianMember(GuardianMember guardianMember) { guardianList.add(guardianMember); - guardianMember.setUniqueParticipantID(guardianList.size() - 1); + //guardianMember.setUniqueParticipantID(guardianList.size() - 1); } public boolean removeGuardianMember(GuardianMember guardianMember) { - throw new UnsupportedOperationException("Not supported yet."); + return guardianList.remove(guardianMember); } public void enableContext(Context context) { throw new UnsupportedOperationException("Not supported yet."); } - public void removeContext() { + public Context removeContext() { throw new UnsupportedOperationException("Not supported yet."); } diff --git a/sandbox/dougsleite/implementation-guardian/src/main/java/org/apache/tuscany/sca/implementation/guardian/provider/GuardianGroupInvoker.java b/sandbox/dougsleite/implementation-guardian/src/main/java/org/apache/tuscany/sca/implementation/guardian/provider/GuardianGroupInvoker.java index 8f393ebcb9..987e211a48 100644 --- a/sandbox/dougsleite/implementation-guardian/src/main/java/org/apache/tuscany/sca/implementation/guardian/provider/GuardianGroupInvoker.java +++ b/sandbox/dougsleite/implementation-guardian/src/main/java/org/apache/tuscany/sca/implementation/guardian/provider/GuardianGroupInvoker.java @@ -48,7 +48,8 @@ public class GuardianGroupInvoker implements Invoker { @Override public Message invoke(Message msg) { - GuardianMember guardianMember = (GuardianMember) ((Object[]) msg.getBody())[0]; + //GuardianMember guardianMember = (GuardianMember) ((Object[]) msg.getBody())[0]; + GuardianMember guardianMember = (GuardianMember) msg.getBody(); this.guardian.addGuardianMember(guardianMember); return msg; @@ -65,7 +66,8 @@ public class GuardianGroupInvoker implements Invoker { @Override public Message invoke(Message msg) { - GuardianMember guardianMember = (GuardianMember) ((Object[]) msg.getBody())[0]; + GuardianMember guardianMember = (GuardianMember) msg.getBody(); + boolean returnedValue = this.guardian.removeGuardianMember(guardianMember); msg.setBody(returnedValue); diff --git a/sandbox/dougsleite/implementation-guardian/src/main/java/org/apache/tuscany/sca/implementation/guardian/impl/GuardianMemberImpl.java b/sandbox/dougsleite/policy-guardianExceptionHandling/src/main/java/org/apache/tuscany/sca/policy/guardianExceptionHandling/GuardianMemberImpl.java index 80b9321e79..5e9ae7853c 100644 --- a/sandbox/dougsleite/implementation-guardian/src/main/java/org/apache/tuscany/sca/implementation/guardian/impl/GuardianMemberImpl.java +++ b/sandbox/dougsleite/policy-guardianExceptionHandling/src/main/java/org/apache/tuscany/sca/policy/guardianExceptionHandling/GuardianMemberImpl.java @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.tuscany.sca.implementation.guardian.impl; +package org.apache.tuscany.sca.policy.guardianExceptionHandling; import java.util.LinkedList; import java.util.List; @@ -31,42 +31,46 @@ import org.apache.tuscany.sca.implementation.guardian.common.Context; import org.apache.tuscany.sca.implementation.guardian.common.GlobalException; import org.apache.tuscany.sca.implementation.guardian.common.JoinException; import org.apache.tuscany.sca.implementation.guardian.common.SuspendException; -import org.osoa.sca.annotations.Destroy; -import org.osoa.sca.annotations.Init; -import org.osoa.sca.annotations.Reference; -import org.osoa.sca.annotations.Scope; -import org.osoa.sca.annotations.Service; - -@Service(GuardianMember.class) -@Scope("COMPOSITE") +import org.apache.tuscany.sca.invocation.Message; + public class GuardianMemberImpl implements GuardianMember { private int participantState; private Stack<Context> contextList; - private Queue<GlobalException> exceptionQueue; - @Reference(name = "guardian_group", required = true) - public GuardianGroup guardianGroup; - private int id; + private String id; + //FIXME: Review the usage of this variable private boolean exceptionThrown; + private Message msg; + private GuardianExceptionHandlingPolicyInterceptor interceptor; - public GuardianMemberImpl() { + protected GuardianMemberImpl(String componentName, Message msg, GuardianExceptionHandlingPolicyInterceptor interceptor) { contextList = new Stack<Context>(); contextList.add(Context.INIT_CONTEXT); exceptionQueue = new LinkedList<GlobalException>(); participantState = GuardianGroup.NORMAL_PARTICIPANT_STATE; exceptionThrown = false; + + this.id = componentName; + this.msg = msg; + this.interceptor = interceptor; + } + + public void setGuardianExceptionHandlingPolicyInterceptor(GuardianExceptionHandlingPolicyInterceptor interceptor) { + this.interceptor = interceptor; + } + + public GuardianExceptionHandlingPolicyInterceptor getGuardianExceptionHandlingPolicyInterceptor() { + return this.interceptor; } - @Init - public void init() { - guardianGroup.addGuardianMember(this); + public void setMessage(Message msg) { + this.msg = msg; } - @Destroy - public void destroy() { - guardianGroup.removeGuardianMember(this); + public Message getMessage() { + return this.msg; } public void addException(GlobalException ex) { @@ -76,25 +80,28 @@ public class GuardianMemberImpl implements GuardianMember { public Context getCurrentContext() { return contextList.peek(); } - public void enableContext(Context context) { //Update the context list with the related set of exceptions - contextList.push(context); - if (contextList.size() == 2) { + if (contextList.size() == 1) { + contextList.push(context); + JoinException ex = new JoinException(); ex.setSignalingContext(context); ex.putSignalingParticipant(getParticipantIdentifier()); gthrow(ex, null); + } else { + contextList.push(context); } } - public void removeContext() { - if (!contextList.isEmpty()) { - contextList.pop(); - } + public Context removeContext() { +// if (contextList.size() > 1) { +// return contextList.pop(); +// } + return contextList.pop(); } //If participantList is null then signal to ALL participants @@ -106,7 +113,13 @@ public class GuardianMemberImpl implements GuardianMember { ex.setSignalingContext(getCurrentContext()); ex.putSignalingParticipant(getParticipantIdentifier()); - guardianGroup.gthrow(ex, participantList); + //Prepare the parameters + Object[] params = {ex, participantList}; + msg.setBody(params); + + interceptor.invokeGuardianGroupOperation("gthrow", msg); + //guardianGroup.gthrow(ex, participantList); + exceptionThrown = true; } else { setParticipantState(GuardianGroup.SUSPENDED_PARTICIPANT_STATE); @@ -163,10 +176,6 @@ public class GuardianMemberImpl implements GuardianMember { return participantIdentifier.toString(); } - public void setUniqueParticipantID(int id) { - this.id = id; - } - public int getParticipantState() { return participantState; } |