Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorslewis2005-01-06 00:57:28 +0000
committerslewis2005-01-06 00:57:28 +0000
commite41396af7d351865de82be0ce23f267acd15745b (patch)
treeba1b2ba4879fb378d54a0abe3cb6b750383027a1
parent93a61b29e9739c7f307024926830e388f716f8f1 (diff)
downloadorg.eclipse.ecf-e41396af7d351865de82be0ce23f267acd15745b.tar.gz
org.eclipse.ecf-e41396af7d351865de82be0ce23f267acd15745b.tar.xz
org.eclipse.ecf-e41396af7d351865de82be0ce23f267acd15745b.zip
Added core ISharedObjectContainerGroupManager interface (with 'ejectGroupMember') method. Added generic provider implementation in ServerSOContainer class and test code
-rw-r--r--framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/ServerSOContainer.java14
-rw-r--r--framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/ISharedObjectContainerGroupManager.java27
2 files changed, 37 insertions, 4 deletions
diff --git a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/ServerSOContainer.java b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/ServerSOContainer.java
index 4bb2a081e..55dbaab13 100644
--- a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/ServerSOContainer.java
+++ b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/ServerSOContainer.java
@@ -17,6 +17,7 @@ import java.io.Serializable;
import java.net.ConnectException;
import java.net.Socket;
import org.eclipse.ecf.core.ISharedObjectContainerConfig;
+import org.eclipse.ecf.core.ISharedObjectContainerGroupManager;
import org.eclipse.ecf.core.SharedObjectContainerJoinException;
import org.eclipse.ecf.core.comm.IAsynchConnection;
import org.eclipse.ecf.core.comm.ISynchAsynchConnection;
@@ -27,7 +28,7 @@ import org.eclipse.ecf.core.events.SharedObjectContainerJoinedEvent;
import org.eclipse.ecf.core.identity.ID;
import org.eclipse.ecf.provider.generic.gmm.Member;
-public class ServerSOContainer extends SOContainer {
+public class ServerSOContainer extends SOContainer implements ISharedObjectContainerGroupManager {
public ServerSOContainer(ISharedObjectContainerConfig config) {
super(config);
}
@@ -35,7 +36,12 @@ public class ServerSOContainer extends SOContainer {
public boolean isGroupServer() {
return true;
}
-
+ public Object getAdapter(Class clazz) {
+ if (clazz.equals(ISharedObjectContainerGroupManager.class)) {
+ debug("getAdapter()");
+ return this;
+ } else return null;
+ }
public boolean isGroupManager() {
return true;
}
@@ -177,7 +183,7 @@ public class ServerSOContainer extends SOContainer {
fireContainerEvent(new SharedObjectContainerDepartedEvent(getID(),fromID));
}
- public void ejectFromGroup(ID memberID, Serializable reason) {
+ public void ejectGroupMember(ID memberID, Serializable reason) {
if (memberID == null) return;
ISynchConnection conn = null;
synchronized (getGroupMembershipLock()) {
@@ -201,7 +207,7 @@ public class ServerSOContainer extends SOContainer {
synchronized (getGroupMembershipLock()) {
Object[] members = groupManager.getMembers();
for (int i = 0; i < members.length; i++) {
- ejectFromGroup(((Member) members[i]).getID(),reason);
+ ejectGroupMember(((Member) members[i]).getID(),reason);
}
}
}
diff --git a/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/ISharedObjectContainerGroupManager.java b/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/ISharedObjectContainerGroupManager.java
new file mode 100644
index 000000000..d52b43f26
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/ISharedObjectContainerGroupManager.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2004 Composent, Inc. and others. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Composent, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.ecf.core;
+
+import java.io.Serializable;
+import org.eclipse.ecf.core.identity.ID;
+
+/**
+ * @author slewis
+ *
+ */
+public interface ISharedObjectContainerGroupManager {
+ /**
+ * Eject the given groupMemberID from the current group of containers, for the given reason.
+ *
+ * @param groupMemberID the ID of the group member to eject. If null, or if group member is
+ * not in group managed by this object, the method has no effect
+ * @param reason a reason for the ejection
+ */
+ public void ejectGroupMember(ID groupMemberID, Serializable reason);
+}

Back to the top