summaryrefslogtreecommitdiffstats
path: root/sandbox/dougsleite/implementation-guardian/src/main/java/org/apache
diff options
context:
space:
mode:
Diffstat (limited to 'sandbox/dougsleite/implementation-guardian/src/main/java/org/apache')
-rw-r--r--sandbox/dougsleite/implementation-guardian/src/main/java/org/apache/tuscany/sca/implementation/guardian/GuardianMember.java2
-rw-r--r--sandbox/dougsleite/implementation-guardian/src/main/java/org/apache/tuscany/sca/implementation/guardian/GuardianPrimitives.java2
-rw-r--r--sandbox/dougsleite/implementation-guardian/src/main/java/org/apache/tuscany/sca/implementation/guardian/common/Context.java1
-rw-r--r--sandbox/dougsleite/implementation-guardian/src/main/java/org/apache/tuscany/sca/implementation/guardian/impl/GuardianGroupImpl.java6
-rw-r--r--sandbox/dougsleite/implementation-guardian/src/main/java/org/apache/tuscany/sca/implementation/guardian/impl/GuardianMemberImpl.java177
-rw-r--r--sandbox/dougsleite/implementation-guardian/src/main/java/org/apache/tuscany/sca/implementation/guardian/provider/GuardianGroupInvoker.java6
6 files changed, 8 insertions, 186 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/impl/GuardianMemberImpl.java b/sandbox/dougsleite/implementation-guardian/src/main/java/org/apache/tuscany/sca/implementation/guardian/impl/GuardianMemberImpl.java
deleted file mode 100644
index 80b9321e79..0000000000
--- a/sandbox/dougsleite/implementation-guardian/src/main/java/org/apache/tuscany/sca/implementation/guardian/impl/GuardianMemberImpl.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tuscany.sca.implementation.guardian.impl;
-
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Queue;
-import java.util.Stack;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-import org.apache.tuscany.sca.implementation.guardian.common.GlobalExceptionInterface;
-import org.apache.tuscany.sca.implementation.guardian.GuardianGroup;
-import org.apache.tuscany.sca.implementation.guardian.GuardianMember;
-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")
-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;
- //FIXME: Review the usage of this variable
- private boolean exceptionThrown;
-
- public GuardianMemberImpl() {
- contextList = new Stack<Context>();
- contextList.add(Context.INIT_CONTEXT);
- exceptionQueue = new LinkedList<GlobalException>();
- participantState = GuardianGroup.NORMAL_PARTICIPANT_STATE;
- exceptionThrown = false;
- }
-
- @Init
- public void init() {
- guardianGroup.addGuardianMember(this);
- }
-
- @Destroy
- public void destroy() {
- guardianGroup.removeGuardianMember(this);
- }
-
- public void addException(GlobalException ex) {
- exceptionQueue.add(ex);
- }
-
- 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) {
- JoinException ex = new JoinException();
- ex.setSignalingContext(context);
- ex.putSignalingParticipant(getParticipantIdentifier());
- gthrow(ex, null);
- }
-
- }
-
- public void removeContext() {
- if (!contextList.isEmpty()) {
- contextList.pop();
- }
- }
-
- //If participantList is null then signal to ALL participants
- public void gthrow(GlobalExceptionInterface ex, List<String> participantList) {
- //1)Block the participant until raise an exception
-
- if (!(ex instanceof SuspendException)) {
- //Set the exception's parameters
- ex.setSignalingContext(getCurrentContext());
- ex.putSignalingParticipant(getParticipantIdentifier());
-
- guardianGroup.gthrow(ex, participantList);
- exceptionThrown = true;
- } else {
- setParticipantState(GuardianGroup.SUSPENDED_PARTICIPANT_STATE);
- }
- }
-
- public boolean propagate(GlobalExceptionInterface ex) {
- //1)Compares the current context with the exception's target context
- return !getCurrentContext().equals(ex.getTargetContext());
- }
-
- public void checkExceptionStatus() throws GlobalException {
-
- //Blocks until the state be diferent the SUSPENDED_STATE
- while (participantState == GuardianGroup.SUSPENDED_PARTICIPANT_STATE && exceptionThrown) {
- System.out.println(getParticipantIdentifier() + ": I am blocked!");
- try {
- Thread.sleep(5000);
- } catch (InterruptedException ex) {
- Logger.getLogger(GuardianMemberImpl.class.getName()).log(Level.SEVERE, null, ex);
- }
- }
- exceptionThrown = false;
- System.out.println(getParticipantIdentifier() + ": I am not blocked!");
-
- GlobalException exc;
-
- if ((exc = exceptionQueue.peek()) == null) {
- System.out.println(getParticipantIdentifier() + "#No exception on exception queue");
- return;
- }
-
- //Check if ex.targetContext() matches the participant id
- //Eg. ex.targetContext(): Main and participant id: Init.Main.Backup -> should thrown the exception
- //Test if the exception should be thrown in the target context
- for (Context c : contextList) {
- if (exc.getTargetContext().equals(c) && (c.equals(Context.INIT_CONTEXT) || c.getExceptionList().contains(exc.getClass()))) {
- System.out.println(getParticipantIdentifier() + "#Returning an exception");
- exceptionQueue.poll();
- throw exc;
- }
- }
-
- return;
- }
-
- public String getParticipantIdentifier() {
- //1) Return the participant identifier -> context list dot separated
- StringBuffer participantIdentifier = new StringBuffer();
- participantIdentifier.append(this.id);
- for (int i = 0; i < contextList.size(); i++) {
- participantIdentifier.append("." + contextList.get(i).getName());
- }
- return participantIdentifier.toString();
- }
-
- public void setUniqueParticipantID(int id) {
- this.id = id;
- }
-
- public int getParticipantState() {
- return participantState;
- }
-
- public void setParticipantState(int state) {
- this.participantState = state;
- }
-}
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);