diff options
| author | slewis | 2005-01-06 00:57:28 +0000 |
|---|---|---|
| committer | slewis | 2005-01-06 00:57:28 +0000 |
| commit | e41396af7d351865de82be0ce23f267acd15745b (patch) | |
| tree | ba1b2ba4879fb378d54a0abe3cb6b750383027a1 | |
| parent | 93a61b29e9739c7f307024926830e388f716f8f1 (diff) | |
| download | org.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
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); +} |
