Updated Branches: refs/heads/vmsync 3327371f9 -> 2e1e2babc
Fixed index out of bounds exception Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/2c75352f Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/2c75352f Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/2c75352f Branch: refs/heads/vmsync Commit: 2c75352f7cb00c2cf971b86e4adef17ad89d1b50 Parents: 3327371 Author: Alex Huang <alex.hu...@gmail.com> Authored: Tue Jun 4 15:43:14 2013 -0700 Committer: Alex Huang <alex.hu...@gmail.com> Committed: Tue Jun 4 20:10:28 2013 -0700 ---------------------------------------------------------------------- .../framework/messagebus/MessageBusBase.java | 98 +++++++-------- 1 files changed, 48 insertions(+), 50 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2c75352f/framework/ipc/src/org/apache/cloudstack/framework/messagebus/MessageBusBase.java ---------------------------------------------------------------------- diff --git a/framework/ipc/src/org/apache/cloudstack/framework/messagebus/MessageBusBase.java b/framework/ipc/src/org/apache/cloudstack/framework/messagebus/MessageBusBase.java index 9cf5e77..401539b 100644 --- a/framework/ipc/src/org/apache/cloudstack/framework/messagebus/MessageBusBase.java +++ b/framework/ipc/src/org/apache/cloudstack/framework/messagebus/MessageBusBase.java @@ -30,11 +30,11 @@ import org.apache.cloudstack.framework.serializer.MessageSerializer; public class MessageBusBase implements MessageBus { - private Gate _gate; - private List<ActionRecord> _pendingActions; + private final Gate _gate; + private final List<ActionRecord> _pendingActions; - private SubscriptionNode _subscriberRoot; - private MessageSerializer _messageSerializer; + private final SubscriptionNode _subscriberRoot; + private MessageSerializer _messageSerializer; public MessageBusBase() { _gate = new Gate(); @@ -77,7 +77,7 @@ public class MessageBusBase implements MessageBus { if(current != null) current.removeSubscriber(subscriber, false); } else { - this._subscriberRoot.removeSubscriber(subscriber, true); + _subscriberRoot.removeSubscriber(subscriber, true); } _gate.leave(); } else { @@ -129,7 +129,7 @@ public class MessageBusBase implements MessageBus { } @Override - public void publish(String senderAddress, String subject, PublishScope scope, + public void publish(String senderAddress, String subject, PublishScope scope, Object args) { if(_gate.enter(true)) { @@ -151,40 +151,38 @@ public class MessageBusBase implements MessageBus { private void onGateOpen() { synchronized(_pendingActions) { ActionRecord record = null; - if(_pendingActions.size() > 0) { - while((record = _pendingActions.remove(0)) != null) { - switch(record.getType()) { - case Subscribe : - { - SubscriptionNode current = locate(record.getSubject(), null, true); - assert(current != null); - current.addSubscriber(record.getSubscriber()); - } - break; - - case Unsubscribe : - if(record.getSubject() != null) { - SubscriptionNode current = locate(record.getSubject(), null, false); - if(current != null) - current.removeSubscriber(record.getSubscriber(), false); - } else { - this._subscriberRoot.removeSubscriber(record.getSubscriber(), true); - } - break; + while (_pendingActions.size() > 0) { + record = _pendingActions.remove(0); + switch (record.getType()) { + case Subscribe: { + SubscriptionNode current = locate(record.getSubject(), null, true); + assert (current != null); + current.addSubscriber(record.getSubscriber()); + } + break; + + case Unsubscribe: + if (record.getSubject() != null) { + SubscriptionNode current = locate(record.getSubject(), null, false); + if (current != null) + current.removeSubscriber(record.getSubscriber(), false); + } else { + _subscriberRoot.removeSubscriber(record.getSubscriber(), true); + } + break; + + case ClearAll: + _subscriberRoot.clearAll(); + break; - case ClearAll : - _subscriberRoot.clearAll(); - break; - - case Prune : - doPrune(); - break; - - default : - assert(false); - break; + case Prune: + doPrune(); + break; - } + default: + assert (false); + break; + } } } @@ -202,7 +200,7 @@ public class MessageBusBase implements MessageBus { return locate(subjectPathTokens, _subscriberRoot, chainFromTop, createPath); } - private static SubscriptionNode locate(String[] subjectPathTokens, + private static SubscriptionNode locate(String[] subjectPathTokens, SubscriptionNode current, List<SubscriptionNode> chainFromTop, boolean createPath) { assert(current != null); @@ -223,7 +221,7 @@ public class MessageBusBase implements MessageBus { } if(subjectPathTokens.length > 1) { - return locate((String[])Arrays.copyOfRange(subjectPathTokens, 1, subjectPathTokens.length), + return locate(Arrays.copyOfRange(subjectPathTokens, 1, subjectPathTokens.length), next, chainFromTop, createPath); } else { return next; @@ -242,9 +240,9 @@ public class MessageBusBase implements MessageBus { } private static class ActionRecord { - private ActionType _type; - private String _subject; - private MessageSubscriber _subscriber; + private final ActionType _type; + private final String _subject; + private final MessageSubscriber _subscriber; public ActionRecord(ActionType type, String subject, MessageSubscriber subscriber) { _type = type; @@ -252,8 +250,8 @@ public class MessageBusBase implements MessageBus { _subscriber = subscriber; } - public ActionType getType() { - return _type; + public ActionType getType() { + return _type; } public String getSubject() { @@ -320,10 +318,10 @@ public class MessageBusBase implements MessageBus { } private static class SubscriptionNode { - private String _nodeKey; - private List<MessageSubscriber> _subscribers; - private Map<String, SubscriptionNode> _children; - private SubscriptionNode _parent; + private final String _nodeKey; + private final List<MessageSubscriber> _subscribers; + private final Map<String, SubscriptionNode> _children; + private final SubscriptionNode _parent; public SubscriptionNode(SubscriptionNode parent, String nodeKey, MessageSubscriber subscriber) { assert(nodeKey != null); @@ -338,7 +336,7 @@ public class MessageBusBase implements MessageBus { } public SubscriptionNode getParent() { - return _parent; + return _parent; } public String getNodeKey() {