diff options
Diffstat (limited to 'framework/bundles/org.eclipse.ecf.provider')
19 files changed, 172 insertions, 150 deletions
diff --git a/framework/bundles/org.eclipse.ecf.provider/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.provider/META-INF/MANIFEST.MF index f71507931..6ed46bcad 100644 --- a/framework/bundles/org.eclipse.ecf.provider/META-INF/MANIFEST.MF +++ b/framework/bundles/org.eclipse.ecf.provider/META-INF/MANIFEST.MF @@ -1,6 +1,6 @@ Manifest-Version: 1.0 Bundle-SymbolicName: org.eclipse.ecf.provider;singleton:=true -Bundle-Version: 4.6.100.qualifier +Bundle-Version: 4.7.0.qualifier Bundle-Name: %plugin.name Bundle-Vendor: %plugin.provider Bundle-Activator: org.eclipse.ecf.internal.provider.ProviderPlugin diff --git a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/internal/provider/ProviderPlugin.java b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/internal/provider/ProviderPlugin.java index 6e7280610..037f0b6a2 100644 --- a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/internal/provider/ProviderPlugin.java +++ b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/internal/provider/ProviderPlugin.java @@ -11,6 +11,8 @@ package org.eclipse.ecf.internal.provider; +import java.io.*; +import java.util.Hashtable; import javax.net.ssl.SSLServerSocketFactory; import javax.net.ssl.SSLSocketFactory; import org.eclipse.core.runtime.*; @@ -76,6 +78,14 @@ public class ProviderPlugin implements BundleActivator { context1.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(SSLGenericContainerInstantiator.SSLCLIENT_NAME, new SSLGenericContainerInstantiator(), "ECF SSL Generic Client", false, true), null); //$NON-NLS-1$ } }); + // testing + Hashtable<String, Object> props = new Hashtable<String, Object>(); + props.put(IClassResolver.BUNDLE_PROP_NAME, PLUGIN_ID); + this.context.registerService(IClassResolver.class, new BundleClassResolver(context.getBundle()), props); + } + + public ObjectInputStream createObjectInputStream(InputStream ins) throws IOException { + return ClassResolverObjectInputStream.create(this.context, ins, "(" + IClassResolver.BUNDLE_PROP_NAME + "=" + this.context.getBundle().getSymbolicName() + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ } /** @@ -104,6 +114,7 @@ public class ProviderPlugin implements BundleActivator { private LogService systemLogService; + @SuppressWarnings("unchecked") protected LogService getLogService() { if (context == null) { if (systemLogService == null) @@ -138,6 +149,11 @@ public class ProviderPlugin implements BundleActivator { return NAMESPACE_IDENTIFIER; } + public BundleContext getContext() { + return this.context; + } + + @SuppressWarnings("unchecked") public SSLServerSocketFactory getSSLServerSocketFactory() { if (context == null) return null; @@ -148,6 +164,7 @@ public class ProviderPlugin implements BundleActivator { return (SSLServerSocketFactory) sslServerSocketFactoryTracker.getService(); } + @SuppressWarnings("unchecked") public SSLSocketFactory getSSLSocketFactory() { if (context == null) return null; diff --git a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/IConnectRequestHandler.java b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/IConnectRequestHandler.java index 6497579cb..945bf3e0a 100644 --- a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/IConnectRequestHandler.java +++ b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/IConnectRequestHandler.java @@ -33,6 +33,5 @@ public interface IConnectRequestHandler { * @return any data intended as a response. If null is returned, this * typically means refusal of connect request */ - public Serializable handleConnectRequest(Socket aSocket, String target, - Serializable data, ISynchAsynchConnection conn); + public Serializable handleConnectRequest(Socket aSocket, String target, Serializable data, ISynchAsynchConnection conn); }
\ No newline at end of file diff --git a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/IConnection.java b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/IConnection.java index 3033b09c9..70c7416b5 100644 --- a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/IConnection.java +++ b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/IConnection.java @@ -11,7 +11,6 @@ package org.eclipse.ecf.provider.comm; import java.util.Map; - import org.eclipse.core.runtime.IAdaptable; import org.eclipse.ecf.core.identity.ID; import org.eclipse.ecf.core.util.ECFException; diff --git a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/tcp/ConnectRequestMessage.java b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/tcp/ConnectRequestMessage.java index 83c91211e..06467511d 100644 --- a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/tcp/ConnectRequestMessage.java +++ b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/tcp/ConnectRequestMessage.java @@ -17,24 +17,24 @@ import java.net.URI; public class ConnectRequestMessage implements Serializable { private static final long serialVersionUID = 3257844363974226229L; URI target; - Serializable data; + Serializable data; - public ConnectRequestMessage(URI target, Serializable data) { - this.target = target; - this.data = data; - } + public ConnectRequestMessage(URI target, Serializable data) { + this.target = target; + this.data = data; + } - public URI getTarget() { - return target; - } + public URI getTarget() { + return target; + } - public Serializable getData() { - return data; - } + public Serializable getData() { + return data; + } - public String toString() { - StringBuffer buf = new StringBuffer("ConnectRequestMessage["); //$NON-NLS-1$ - buf.append(target).append(";").append(data).append("]"); //$NON-NLS-1$ //$NON-NLS-2$ - return buf.toString(); - } + public String toString() { + StringBuffer buf = new StringBuffer("ConnectRequestMessage["); //$NON-NLS-1$ + buf.append(target).append(";").append(data).append("]"); //$NON-NLS-1$ //$NON-NLS-2$ + return buf.toString(); + } }
\ No newline at end of file diff --git a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/tcp/ConnectResultMessage.java b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/tcp/ConnectResultMessage.java index 367df9ef7..e134567ac 100644 --- a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/tcp/ConnectResultMessage.java +++ b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/tcp/ConnectResultMessage.java @@ -17,17 +17,17 @@ public class ConnectResultMessage implements Serializable { private static final long serialVersionUID = 3833188038300938804L; Serializable data; - public ConnectResultMessage(Serializable data) { - this.data = data; - } + public ConnectResultMessage(Serializable data) { + this.data = data; + } - public Serializable getData() { - return data; - } + public Serializable getData() { + return data; + } - public String toString() { - StringBuffer buf = new StringBuffer("ConnectResultMessage["); //$NON-NLS-1$ - buf.append(data).append("]"); //$NON-NLS-1$ - return buf.toString(); - } + public String toString() { + StringBuffer buf = new StringBuffer("ConnectResultMessage["); //$NON-NLS-1$ + buf.append(data).append("]"); //$NON-NLS-1$ + return buf.toString(); + } }
\ No newline at end of file diff --git a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/tcp/IClientSocketFactory.java b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/tcp/IClientSocketFactory.java index 683870dce..c20a33aef 100644 --- a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/tcp/IClientSocketFactory.java +++ b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/tcp/IClientSocketFactory.java @@ -15,5 +15,5 @@ import java.io.IOException; import java.net.Socket; public interface IClientSocketFactory { - Socket createSocket(String name, int port, int timeout) throws IOException; + Socket createSocket(String name, int port, int timeout) throws IOException; }
\ No newline at end of file diff --git a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/tcp/IServerSocketFactory.java b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/tcp/IServerSocketFactory.java index a62dd35ab..881db59e7 100644 --- a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/tcp/IServerSocketFactory.java +++ b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/tcp/IServerSocketFactory.java @@ -15,5 +15,5 @@ import java.io.IOException; import java.net.ServerSocket; public interface IServerSocketFactory { - ServerSocket createServerSocket(int port, int backlog) throws IOException; + ServerSocket createServerSocket(int port, int backlog) throws IOException; }
\ No newline at end of file diff --git a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/tcp/ISocketAcceptHandler.java b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/tcp/ISocketAcceptHandler.java index 576ce14ec..20e2ea4ec 100644 --- a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/tcp/ISocketAcceptHandler.java +++ b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/tcp/ISocketAcceptHandler.java @@ -14,5 +14,5 @@ package org.eclipse.ecf.provider.comm.tcp; import java.net.Socket; public interface ISocketAcceptHandler { - public void handleAccept(Socket aSocket) throws Exception; + public void handleAccept(Socket aSocket) throws Exception; }
\ No newline at end of file diff --git a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/GenericContainerInstantiator.java b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/GenericContainerInstantiator.java index 429b4b3c3..f4dc3dec7 100644 --- a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/GenericContainerInstantiator.java +++ b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/GenericContainerInstantiator.java @@ -351,8 +351,8 @@ public class GenericContainerInstantiator implements IContainerInstantiator, IRe */ public Class[][] getSupportedParameterTypes(ContainerTypeDescription description) { if (!isClient(description)) - return new Class[][] { {ID.class}, {ID.class, Integer.class}}; - return new Class[][] { {}, {ID.class}, {ID.class, Integer.class}}; + return new Class[][] {{ID.class}, {ID.class, Integer.class}}; + return new Class[][] {{}, {ID.class}, {ID.class, Integer.class}}; } public String[] getSupportedIntents(ContainerTypeDescription description) { diff --git a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SOContainer.java b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SOContainer.java index cd4bf7e8d..206c7ccfe 100644 --- a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SOContainer.java +++ b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SOContainer.java @@ -523,7 +523,8 @@ public abstract class SOContainer extends AbstractContainer implements ISharedOb public static ContainerMessage deserializeContainerMessage(byte[] bytes) throws IOException { final ByteArrayInputStream bis = new ByteArrayInputStream(bytes); - final ObjectInputStream ois = new ObjectInputStream(bis); + + final ObjectInputStream ois = ProviderPlugin.getDefault().createObjectInputStream(bis); Object obj = null; try { obj = ois.readObject(); @@ -559,6 +560,13 @@ public abstract class SOContainer extends AbstractContainer implements ISharedOb return receiver; } + /** + * @since 4.7 + */ + public ISynchAsynchEventHandler getMessageReceiver() { + return getReceiver(); + } + protected ISharedObject getSharedObject(ID id) { final SOWrapper wrap = getSharedObjectWrapper(id); return (wrap == null) ? null : wrap.getSharedObject(); @@ -997,10 +1005,7 @@ public abstract class SOContainer extends AbstractContainer implements ISharedOb final ByteArrayInputStream bins = new ByteArrayInputStream(bytes); Object obj = null; try { - // First try normal classloading. In Eclipse environment this will - // use - // buddy classloading - final ObjectInputStream oins = new ObjectInputStream(bins); + final ObjectInputStream oins = ProviderPlugin.getDefault().createObjectInputStream(bins); obj = oins.readObject(); } catch (final ClassNotFoundException e) { // first reset stream diff --git a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SOContainerConfig.java b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SOContainerConfig.java index 535071a0e..3af0f92b8 100644 --- a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SOContainerConfig.java +++ b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SOContainerConfig.java @@ -13,7 +13,6 @@ package org.eclipse.ecf.provider.generic; import java.util.HashMap; import java.util.Map; - import org.eclipse.core.runtime.Assert; import org.eclipse.ecf.core.identity.ID; import org.eclipse.ecf.core.sharedobject.ISharedObjectContainerConfig; diff --git a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SOContainerGroup.java b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SOContainerGroup.java index edb81abe2..118f232d1 100644 --- a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SOContainerGroup.java +++ b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SOContainerGroup.java @@ -11,12 +11,20 @@ package org.eclipse.ecf.provider.generic; -import java.util.TreeMap; -import java.util.Collections; -import java.util.Map; -import java.util.Iterator; +import java.io.*; +import java.net.Socket; +import java.net.URI; +import java.util.*; +import org.eclipse.ecf.internal.provider.ProviderPlugin; +import org.eclipse.ecf.provider.comm.tcp.*; + +public class SOContainerGroup implements ISocketAcceptHandler { + + /** + * @since 4.7 + */ + public static final String INVALID_CONNECT = "Invalid connect request."; //$NON-NLS-1$ -public class SOContainerGroup { String name; protected Map map; @@ -57,4 +65,69 @@ public class SOContainerGroup { public Iterator elements() { return map.values().iterator(); } + + /** + * @since 4.7 + */ + protected ObjectOutputStream createObjectOutputStream(Socket aSocket) throws IOException { + return new ObjectOutputStream(aSocket.getOutputStream()); + } + + /** + * @since 4.7 + */ + protected ObjectInputStream createObjectInputStream(Socket aSocket) throws IOException { + return ProviderPlugin.getDefault().createObjectInputStream(aSocket.getInputStream()); + } + + /** + * @since 4.7 + */ + protected ConnectRequestMessage readConnectRequestMessage(ObjectInputStream ins) throws IOException, ClassNotFoundException { + ConnectRequestMessage req = (ConnectRequestMessage) ins.readObject(); + if (req == null) + throw new InvalidObjectException(INVALID_CONNECT + " Connect request message cannot be null"); //$NON-NLS-1$ + return req; + } + + /** + * @since 4.7 + */ + public void handleAccept(Socket aSocket) throws Exception { + // Set tcp no delay option + aSocket.setTcpNoDelay(true); + + final ObjectOutputStream oStream = createObjectOutputStream(aSocket); + oStream.flush(); + final ObjectInputStream iStream = createObjectInputStream(aSocket); + + final ConnectRequestMessage req = readConnectRequestMessage(iStream); + + final URI uri = req.getTarget(); + if (uri == null) + throw new InvalidObjectException(INVALID_CONNECT + " URI connect target cannot be null"); //$NON-NLS-1$ + final String path = uri.getPath(); + if (path == null) + throw new InvalidObjectException(INVALID_CONNECT + " Path cannot be null"); //$NON-NLS-1$ + + // Given path, lookup associated container + final TCPServerSOContainer srs = (TCPServerSOContainer) get(path); + if (srs == null) + throw new InvalidObjectException("Container not found for path=" + path); //$NON-NLS-1$ + + // Create our local messaging interface + final Client newClient = new Client(aSocket, iStream, oStream, srs.getMessageReceiver()); + // Get output stream lock so nothing is sent until we've responded + Object outputStreamLock = newClient.getOutputStreamLock(); + // No other threads can access messaging interface until connect request handler has + // accepted or rejected connect request + synchronized (outputStreamLock) { + // Call checkConnect + final Serializable resp = srs.handleConnectRequest(aSocket, path, req.getData(), newClient); + // Create connect response wrapper and send it back + oStream.writeObject(new ConnectResultMessage(resp)); + oStream.flush(); + } + } + }
\ No newline at end of file diff --git a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SSLGenericContainerInstantiator.java b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SSLGenericContainerInstantiator.java index 9ec475c26..442cc037d 100644 --- a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SSLGenericContainerInstantiator.java +++ b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SSLGenericContainerInstantiator.java @@ -424,8 +424,8 @@ public class SSLGenericContainerInstantiator implements IContainerInstantiator, */ public Class[][] getSupportedParameterTypes(ContainerTypeDescription description) { if (!isClient(description)) - return new Class[][] { {ID.class}, {ID.class, Integer.class}}; - return new Class[][] { {}, {ID.class}, {ID.class, Integer.class}}; + return new Class[][] {{ID.class}, {ID.class, Integer.class}}; + return new Class[][] {{}, {ID.class}, {ID.class, Integer.class}}; } public String[] getSupportedIntents(ContainerTypeDescription description) { diff --git a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SSLServerSOContainerGroup.java b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SSLServerSOContainerGroup.java index 006d3faba..8208eecf4 100644 --- a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SSLServerSOContainerGroup.java +++ b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SSLServerSOContainerGroup.java @@ -10,8 +10,9 @@ ******************************************************************************/ package org.eclipse.ecf.provider.generic; -import java.io.*; -import java.net.*; +import java.io.IOException; +import java.net.InetAddress; +import java.net.Socket; import javax.net.ssl.SSLServerSocket; import javax.net.ssl.SSLServerSocketFactory; import org.eclipse.core.runtime.IStatus; @@ -19,7 +20,8 @@ import org.eclipse.core.runtime.Status; import org.eclipse.ecf.core.util.Trace; import org.eclipse.ecf.internal.provider.ECFProviderDebugOptions; import org.eclipse.ecf.internal.provider.ProviderPlugin; -import org.eclipse.ecf.provider.comm.tcp.*; +import org.eclipse.ecf.provider.comm.tcp.ISocketAcceptHandler; +import org.eclipse.ecf.provider.comm.tcp.Server; /** * @since 4.3 @@ -27,7 +29,6 @@ import org.eclipse.ecf.provider.comm.tcp.*; public class SSLServerSOContainerGroup extends SOContainerGroup implements ISocketAcceptHandler { public static final int DEFAULT_BACKLOG = 50; - public static final String INVALID_CONNECT = "Invalid connect request."; //$NON-NLS-1$ public static final String DEFAULT_GROUP_NAME = SSLServerSOContainerGroup.class.getName(); private int port = 0; @@ -107,40 +108,6 @@ public class SSLServerSOContainerGroup extends SOContainerGroup implements ISock return isOnTheAir; } - void handleSyncAccept(Socket aSocket) throws Exception { - // Set socket options - aSocket.setTcpNoDelay(true); - final ObjectOutputStream oStream = new ObjectOutputStream(aSocket.getOutputStream()); - oStream.flush(); - final ObjectInputStream iStream = new ObjectInputStream(aSocket.getInputStream()); - final ConnectRequestMessage req = (ConnectRequestMessage) iStream.readObject(); - if (req == null) - throw new InvalidObjectException(INVALID_CONNECT + " Connect request message cannot be null"); //$NON-NLS-1$ - final URI uri = req.getTarget(); - if (uri == null) - throw new InvalidObjectException(INVALID_CONNECT + " URI connect target cannot be null"); //$NON-NLS-1$ - final String path = uri.getPath(); - if (path == null) - throw new InvalidObjectException(INVALID_CONNECT + " Path cannot be null"); //$NON-NLS-1$ - final SSLServerSOContainer srs = (SSLServerSOContainer) get(path); - if (srs == null) - throw new InvalidObjectException("Container not found for path=" + path); //$NON-NLS-1$ - // Create our local messaging interface - final Client newClient = new Client(aSocket, iStream, oStream, srs.getReceiver()); - // Get output stream lock so nothing is sent until we've responded - Object outputStreamLock = newClient.getOutputStreamLock(); - // No other threads can access messaging interface until space has - // accepted/rejected - // connect request - synchronized (outputStreamLock) { - // Call checkConnect - final Serializable resp = srs.handleConnectRequest(aSocket, path, req.getData(), newClient); - // Create connect response wrapper and send it back - oStream.writeObject(new ConnectResultMessage(resp)); - oStream.flush(); - } - } - public synchronized void takeOffTheAir() { trace("Taking " + getName() + " off the air."); //$NON-NLS-1$ //$NON-NLS-2$ if (listenerThread != null) { @@ -188,6 +155,13 @@ public class SSLServerSOContainerGroup extends SOContainerGroup implements ISock }, "SSLServerSOContainerGroup(" + port + ")"); //$NON-NLS-1$ //$NON-NLS-2$ } + /** + * @since 4.7 + */ + protected void handleSyncAccept(final Socket aSocket) throws Exception { + super.handleAccept(aSocket); + } + public void handleAccept(final Socket aSocket) { new Thread(threadGroup, new Runnable() { public void run() { diff --git a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/TCPServerSOContainerGroup.java b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/TCPServerSOContainerGroup.java index 1a1d92369..e2761e393 100644 --- a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/TCPServerSOContainerGroup.java +++ b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/TCPServerSOContainerGroup.java @@ -10,16 +10,15 @@ ******************************************************************************/ package org.eclipse.ecf.provider.generic; -import java.io.*; -import java.net.*; +import java.io.IOException; +import java.net.InetAddress; import org.eclipse.ecf.core.util.Trace; import org.eclipse.ecf.internal.provider.ECFProviderDebugOptions; import org.eclipse.ecf.internal.provider.ProviderPlugin; -import org.eclipse.ecf.provider.comm.tcp.*; +import org.eclipse.ecf.provider.comm.tcp.Server; -public class TCPServerSOContainerGroup extends SOContainerGroup implements ISocketAcceptHandler { +public class TCPServerSOContainerGroup extends SOContainerGroup { - public static final String INVALID_CONNECT = "Invalid connect request."; //$NON-NLS-1$ public static final String DEFAULT_GROUP_NAME = TCPServerSOContainerGroup.class.getName(); private int port; private Server listener; @@ -78,44 +77,6 @@ public class TCPServerSOContainerGroup extends SOContainerGroup implements ISock return isOnTheAir; } - private void setSocketOptions(Socket aSocket) throws SocketException { - aSocket.setTcpNoDelay(true); - } - - public void handleAccept(Socket aSocket) throws Exception { - // Set socket options - setSocketOptions(aSocket); - final ObjectOutputStream oStream = new ObjectOutputStream(aSocket.getOutputStream()); - oStream.flush(); - final ObjectInputStream iStream = new ObjectInputStream(aSocket.getInputStream()); - final ConnectRequestMessage req = (ConnectRequestMessage) iStream.readObject(); - if (req == null) - throw new InvalidObjectException(INVALID_CONNECT + " Connect request message cannot be null"); //$NON-NLS-1$ - final URI uri = req.getTarget(); - if (uri == null) - throw new InvalidObjectException(INVALID_CONNECT + " URI connect target cannot be null"); //$NON-NLS-1$ - final String path = uri.getPath(); - if (path == null) - throw new InvalidObjectException(INVALID_CONNECT + " Path cannot be null"); //$NON-NLS-1$ - final TCPServerSOContainer srs = (TCPServerSOContainer) get(path); - if (srs == null) - throw new InvalidObjectException("Container not found for path=" + path); //$NON-NLS-1$ - // Create our local messaging interface - final Client newClient = new Client(aSocket, iStream, oStream, srs.getReceiver()); - // Get output stream lock so nothing is sent until we've responded - Object outputStreamLock = newClient.getOutputStreamLock(); - // No other threads can access messaging interface until space has - // accepted/rejected - // connect request - synchronized (outputStreamLock) { - // Call checkConnect - final Serializable resp = srs.handleConnectRequest(aSocket, path, req.getData(), newClient); - // Create connect response wrapper and send it back - oStream.writeObject(new ConnectResultMessage(resp)); - oStream.flush(); - } - } - public synchronized void takeOffTheAir() { if (listener != null) { trace("Taking " + getName() + " off the air."); //$NON-NLS-1$ //$NON-NLS-2$ diff --git a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/gmm/GMMImpl.java b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/gmm/GMMImpl.java index bac4aa7e9..2df6b056f 100644 --- a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/gmm/GMMImpl.java +++ b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/gmm/GMMImpl.java @@ -10,9 +10,7 @@ ******************************************************************************/ package org.eclipse.ecf.provider.generic.gmm; -import java.util.Observable; -import java.util.TreeSet; -import java.util.Iterator; +import java.util.*; import org.eclipse.ecf.core.identity.ID; public class GMMImpl extends Observable { diff --git a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/gmm/MemberChanged.java b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/gmm/MemberChanged.java index 4e1f7df2b..0acdc2932 100644 --- a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/gmm/MemberChanged.java +++ b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/gmm/MemberChanged.java @@ -12,19 +12,19 @@ package org.eclipse.ecf.provider.generic.gmm; public class MemberChanged { - Member member; - boolean added; + Member member; + boolean added; - public MemberChanged(Member member, boolean added) { - this.member = member; - this.added = added; - } + public MemberChanged(Member member, boolean added) { + this.member = member; + this.added = added; + } - public Member getMember() { - return member; - } + public Member getMember() { + return member; + } - public boolean getAdded() { - return added; - } + public boolean getAdded() { + return added; + } }
\ No newline at end of file diff --git a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/util/IdentifiableObjectOutputStream.java b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/util/IdentifiableObjectOutputStream.java index b1acd0fe3..135d5ddec 100644 --- a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/util/IdentifiableObjectOutputStream.java +++ b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/util/IdentifiableObjectOutputStream.java @@ -10,9 +10,7 @@ *******************************************************************************/ package org.eclipse.ecf.provider.util; -import java.io.IOException; -import java.io.ObjectOutputStream; -import java.io.OutputStream; +import java.io.*; /** * Stores Java objects in the underlying stream in an manner that allows @@ -23,8 +21,7 @@ import java.io.OutputStream; public class IdentifiableObjectOutputStream extends ObjectOutputStream { String name = null; - public IdentifiableObjectOutputStream(String name, OutputStream outs) - throws IOException { + public IdentifiableObjectOutputStream(String name, OutputStream outs) throws IOException { super(outs); this.name = name; } |