Author: bdekruijff at gmail.com
Date: Fri Dec 17 17:58:03 2010
New Revision: 514
Log:
[sandbox] fabric code improvements
Added:
sandbox/bdekruijff/fabric/src/main/java/org/amdatu/core/fabric/cluster/internal/TopicMessageWrapper.java
sandbox/bdekruijff/fabric/src/main/java/org/amdatu/core/fabric/cluster/service/
sandbox/bdekruijff/fabric/src/main/java/org/amdatu/core/fabric/cluster/service/AbstractClusterMemberService.java
- copied, changed from r512,
/sandbox/bdekruijff/fabric/src/main/java/org/amdatu/core/fabric/cluster/internal/AbstractClusterMemberService.java
sandbox/bdekruijff/fabric/src/main/java/org/amdatu/core/fabric/cluster/service/ClusterMessageServiceImpl.java
- copied, changed from r513,
/sandbox/bdekruijff/fabric/src/main/java/org/amdatu/core/fabric/cluster/internal/tribes/ClusterMessageServiceImpl.java
sandbox/bdekruijff/fabric/src/main/java/org/amdatu/core/fabric/cluster/service/tribes/
sandbox/bdekruijff/fabric/src/main/java/org/amdatu/core/fabric/cluster/service/tribes/ClusterMemberServiceImpl.java
- copied, changed from r512,
/sandbox/bdekruijff/fabric/src/main/java/org/amdatu/core/fabric/cluster/internal/tribes/ClusterMemberServiceImpl.java
Removed:
sandbox/bdekruijff/fabric/src/main/java/org/amdatu/core/fabric/cluster/internal/AbstractClusterMemberService.java
sandbox/bdekruijff/fabric/src/main/java/org/amdatu/core/fabric/cluster/internal/tribes/ClusterMemberServiceImpl.java
sandbox/bdekruijff/fabric/src/main/java/org/amdatu/core/fabric/cluster/internal/tribes/ClusterMessageServiceImpl.java
Modified:
sandbox/bdekruijff/fabric/src/main/java/org/amdatu/core/fabric/cluster/internal/ClusterMemberImpl.java
sandbox/bdekruijff/fabric/src/main/java/org/amdatu/core/fabric/osgi/Activator.java
Modified:
sandbox/bdekruijff/fabric/src/main/java/org/amdatu/core/fabric/cluster/internal/ClusterMemberImpl.java
==============================================================================
---
sandbox/bdekruijff/fabric/src/main/java/org/amdatu/core/fabric/cluster/internal/ClusterMemberImpl.java
(original)
+++
sandbox/bdekruijff/fabric/src/main/java/org/amdatu/core/fabric/cluster/internal/ClusterMemberImpl.java
Fri Dec 17 17:58:03 2010
@@ -22,14 +22,26 @@
public final String m_id;
+ /********************************************************
+ * Constructors
+ ********************************************************/
+
public ClusterMemberImpl(final String id) {
m_id = id;
}
+ /********************************************************
+ * ClusterMember
+ ********************************************************/
+
public String getId() {
return m_id;
}
+ /********************************************************
+ * Object
+ ********************************************************/
+
@Override
public boolean equals(Object obj) {
return m_id.equals(((ClusterMemberImpl) obj).getId());
Added:
sandbox/bdekruijff/fabric/src/main/java/org/amdatu/core/fabric/cluster/internal/TopicMessageWrapper.java
==============================================================================
--- (empty file)
+++
sandbox/bdekruijff/fabric/src/main/java/org/amdatu/core/fabric/cluster/internal/TopicMessageWrapper.java
Fri Dec 17 17:58:03 2010
@@ -0,0 +1,38 @@
+/*
+ Copyright (C) 2010 Amdatu.org
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.amdatu.core.fabric.cluster.internal;
+
+import java.io.Serializable;
+
+public class TopicMessageWrapper implements Serializable {
+
+ private String m_topic;
+ private Object m_message;
+
+ public TopicMessageWrapper(String topic, Object message) {
+ m_topic = topic;
+ m_message = message;
+ }
+
+ public String getTopic() {
+ return m_topic;
+ }
+
+ public Object getMessage() {
+ return m_message;
+ }
+}
Copied:
sandbox/bdekruijff/fabric/src/main/java/org/amdatu/core/fabric/cluster/service/AbstractClusterMemberService.java
(from r512,
/sandbox/bdekruijff/fabric/src/main/java/org/amdatu/core/fabric/cluster/internal/AbstractClusterMemberService.java)
==============================================================================
---
/sandbox/bdekruijff/fabric/src/main/java/org/amdatu/core/fabric/cluster/internal/AbstractClusterMemberService.java
(original)
+++
sandbox/bdekruijff/fabric/src/main/java/org/amdatu/core/fabric/cluster/service/AbstractClusterMemberService.java
Fri Dec 17 17:58:03 2010
@@ -14,7 +14,7 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-package org.amdatu.core.fabric.cluster.internal;
+package org.amdatu.core.fabric.cluster.service;
import java.util.Dictionary;
import java.util.Enumeration;
@@ -34,13 +34,16 @@
public abstract class AbstractClusterMemberService implements
ClusterMemberService {
private final Set<ClusterMember> m_clusterMembers = new
HashSet<ClusterMember>();
-
private final Set<ClusterMessageListener> m_clusterMessageListeners = new
HashSet<ClusterMessageListener>();
private final String m_clusterId;
private final String m_memberId;
private final Map<String, Object> m_properties;
+ /********************************************************
+ * Constructors
+ ********************************************************/
+
public AbstractClusterMemberService(String clusterId, String memberId,
Dictionary<String, Object> properties) {
m_clusterId = clusterId;
m_memberId = memberId;
@@ -54,9 +57,9 @@
}
}
- /*
- * ClusterMemberService interface
- */
+ /********************************************************
+ * ClusterMemberService
+ ********************************************************/
public final String getClusterId() {
return m_clusterId;
@@ -72,8 +75,9 @@
}
public final ClusterMember[] getClusterMembers() {
- // TODO defend
- return m_clusterMembers.toArray(new
ClusterMember[m_clusterMembers.size()]);
+ synchronized (m_clusterMembers) {
+ return m_clusterMembers.toArray(new
ClusterMember[m_clusterMembers.size()]);
+ }
}
public final void broadcast(Object message) {
@@ -94,9 +98,10 @@
onUnsubscribe(clusterMessageListener);
}
- /*
- * SPI
- */
+ /********************************************************
+ * for implementing concrete classes
+ ********************************************************/
+
protected final void addClusterMember(ClusterMember clusterMember) {
synchronized (m_clusterMembers) {
m_clusterMembers.add(clusterMember);
@@ -110,7 +115,6 @@
}
protected final void dispatchMessage(Object message) {
- // TODO async
synchronized (m_clusterMessageListeners) {
for (ClusterMessageListener clm : m_clusterMessageListeners) {
clm.recieveMessage(message);
Copied:
sandbox/bdekruijff/fabric/src/main/java/org/amdatu/core/fabric/cluster/service/ClusterMessageServiceImpl.java
(from r513,
/sandbox/bdekruijff/fabric/src/main/java/org/amdatu/core/fabric/cluster/internal/tribes/ClusterMessageServiceImpl.java)
==============================================================================
---
/sandbox/bdekruijff/fabric/src/main/java/org/amdatu/core/fabric/cluster/internal/tribes/ClusterMessageServiceImpl.java
(original)
+++
sandbox/bdekruijff/fabric/src/main/java/org/amdatu/core/fabric/cluster/service/ClusterMessageServiceImpl.java
Fri Dec 17 17:58:03 2010
@@ -14,9 +14,8 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-package org.amdatu.core.fabric.cluster.internal.tribes;
+package org.amdatu.core.fabric.cluster.service;
-import java.io.Serializable;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
@@ -26,6 +25,7 @@
import org.amdatu.core.fabric.cluster.ClusterMessageListener;
import org.amdatu.core.fabric.cluster.ClusterMessageService;
import org.amdatu.core.fabric.cluster.ClusterTopicListener;
+import org.amdatu.core.fabric.cluster.internal.TopicMessageWrapper;
public class ClusterMessageServiceImpl implements ClusterMessageService,
ClusterMessageListener {
@@ -36,6 +36,14 @@
private volatile ClusterMemberService m_clusterMemberService;
/********************************************************
+ * Constructors
+ ********************************************************/
+
+ public ClusterMessageServiceImpl() {
+
+ }
+
+ /********************************************************
* Service lifecycle
********************************************************/
@@ -97,25 +105,4 @@
}
}
}
-}
-
-class TopicMessageWrapper implements Serializable {
-
- private static final long serialVersionUID = 5182436896635654588L;
-
- private String m_topic;
- private Object m_message;
-
- public TopicMessageWrapper(String topic, Object message) {
- m_topic = topic;
- m_message = message;
- }
-
- public String getTopic() {
- return m_topic;
- }
-
- public Object getMessage() {
- return m_message;
- }
-}
+}
\ No newline at end of file
Copied:
sandbox/bdekruijff/fabric/src/main/java/org/amdatu/core/fabric/cluster/service/tribes/ClusterMemberServiceImpl.java
(from r512,
/sandbox/bdekruijff/fabric/src/main/java/org/amdatu/core/fabric/cluster/internal/tribes/ClusterMemberServiceImpl.java)
==============================================================================
---
/sandbox/bdekruijff/fabric/src/main/java/org/amdatu/core/fabric/cluster/internal/tribes/ClusterMemberServiceImpl.java
(original)
+++
sandbox/bdekruijff/fabric/src/main/java/org/amdatu/core/fabric/cluster/service/tribes/ClusterMemberServiceImpl.java
Fri Dec 17 17:58:03 2010
@@ -14,7 +14,7 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-package org.amdatu.core.fabric.cluster.internal.tribes;
+package org.amdatu.core.fabric.cluster.service.tribes;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
@@ -23,8 +23,9 @@
import java.util.Dictionary;
import java.util.Properties;
-import org.amdatu.core.fabric.cluster.internal.AbstractClusterMemberService;
import org.amdatu.core.fabric.cluster.internal.ClusterMemberImpl;
+import org.amdatu.core.fabric.cluster.internal.tribes.ChannelCreator;
+import org.amdatu.core.fabric.cluster.service.AbstractClusterMemberService;
import org.apache.catalina.tribes.Channel;
import org.apache.catalina.tribes.ChannelException;
import org.apache.catalina.tribes.ChannelListener;
@@ -41,13 +42,17 @@
private ManagedChannel m_managedChannel;
+ /********************************************************
+ * Constructors
+ ********************************************************/
+
public ClusterMemberServiceImpl(String clusterId, String memberId,
Dictionary<String, Object> properties) {
super(clusterId, memberId, properties);
}
- /*
- * lifecycle
- */
+ /********************************************************
+ * Service lifecycle
+ ********************************************************/
public void start() {
try {
@@ -80,9 +85,9 @@
}
}
- /*
- * ClusterMemberService interface
- */
+ /********************************************************
+ * ClusterMemberService
+ ********************************************************/
@Override
public void doBroadcast(Object message) {
@@ -98,9 +103,9 @@
}
}
- /*
- * MembershipListener interface
- */
+ /********************************************************
+ * MembershipListener
+ ********************************************************/
public void memberAdded(Member member) {
try {
@@ -124,9 +129,9 @@
}
}
- /*
- * ChannelListener interface
- */
+ /********************************************************
+ * ChannelListener
+ ********************************************************/
public boolean accept(Serializable message, Member arg1) {
return true;
@@ -136,9 +141,9 @@
dispatchMessage(message);
}
- /*
- * private methods
- */
+ /********************************************************
+ * private
+ ********************************************************/
private byte[] getPayload(Properties props) throws IOException {
ByteArrayOutputStream bout = new ByteArrayOutputStream();
Modified:
sandbox/bdekruijff/fabric/src/main/java/org/amdatu/core/fabric/osgi/Activator.java
==============================================================================
---
sandbox/bdekruijff/fabric/src/main/java/org/amdatu/core/fabric/osgi/Activator.java
(original)
+++
sandbox/bdekruijff/fabric/src/main/java/org/amdatu/core/fabric/osgi/Activator.java
Fri Dec 17 17:58:03 2010
@@ -23,8 +23,8 @@
import org.amdatu.core.fabric.cluster.ClusterMemberService;
import org.amdatu.core.fabric.cluster.ClusterMessageService;
-import org.amdatu.core.fabric.cluster.internal.tribes.ClusterMemberServiceImpl;
-import
org.amdatu.core.fabric.cluster.internal.tribes.ClusterMessageServiceImpl;
+import org.amdatu.core.fabric.cluster.service.ClusterMessageServiceImpl;
+import org.amdatu.core.fabric.cluster.service.tribes.ClusterMemberServiceImpl;
import org.amdatu.core.fabric.cluster.shell.ClusterMessageCommand;
import org.amdatu.core.fabric.remote.DiscoveryService;
import org.amdatu.core.fabric.remote.DistributionService;