r1203 - in xwiki-clients/p2pxwiki/src: main/java/com/xpn/p2pxwiki/communication main/java/com/xpn/p2pxwiki/communication/jxta main/java/com/xpn/p2pxwiki/communication/rpc main/java/com/xpn/p2pxwiki/examples main/java/com/xpn/p2pxwiki/registry main/java/com/xpn/p2pxwiki/replication main/java/com/xpn/p2pxwiki/services/file test/java/com/xpn/p2pxwiki test/java/com/xpn/p2pxwiki/communication test/java/com/xpn/p2pxwiki/mocks

Sergiu Dumitriu sdumitriu at users.forge.objectweb.org
Thu Aug 24 11:04:47 CEST 2006


Author: sdumitriu
Date: 2006-08-24 11:04:46 +0200 (Thu, 24 Aug 2006)
New Revision: 1203

Added:
   xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/AbstractConnectionFactory.java
   xwiki-clients/p2pxwiki/src/test/java/com/xpn/p2pxwiki/AllTests.java
Modified:
   xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/AbstractNetwork.java
   xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/ConnectionFactory.java
   xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/ConnectorApi.java
   xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/ConnectorPlugin.java
   xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/Handler.java
   xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/HandlerManager.java
   xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/HandlerStub.java
   xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/Network.java
   xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/jxta/JxtaConnectionFactory.java
   xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/jxta/JxtaHandlerManager.java
   xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/jxta/JxtaHandlerStub.java
   xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/jxta/JxtaNetwork.java
   xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/rpc/RpcConnectionFactory.java
   xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/rpc/RpcHandlerManager.java
   xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/rpc/RpcHandlerStub.java
   xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/rpc/RpcNetwork.java
   xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/examples/ReplicationClientExamples.java
   xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/registry/RegistryClient.java
   xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/replication/ReplicationClient.java
   xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/services/file/FileP2PServer.java
   xwiki-clients/p2pxwiki/src/test/java/com/xpn/p2pxwiki/communication/AbstractLocalTest.java
   xwiki-clients/p2pxwiki/src/test/java/com/xpn/p2pxwiki/communication/ConnectorPluginTest.java
   xwiki-clients/p2pxwiki/src/test/java/com/xpn/p2pxwiki/communication/JxtaLocalTest.java
   xwiki-clients/p2pxwiki/src/test/java/com/xpn/p2pxwiki/communication/RpcLocalTest.java
   xwiki-clients/p2pxwiki/src/test/java/com/xpn/p2pxwiki/mocks/MockConnectionFactory.java
   xwiki-clients/p2pxwiki/src/test/java/com/xpn/p2pxwiki/mocks/MockHandlerManager.java
   xwiki-clients/p2pxwiki/src/test/java/com/xpn/p2pxwiki/mocks/MockHandlerStub.java
   xwiki-clients/p2pxwiki/src/test/java/com/xpn/p2pxwiki/mocks/MockNetwork.java
Log:
Even more refactoring of XWikiP2P communication packages.

Added: xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/AbstractConnectionFactory.java
===================================================================
--- xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/AbstractConnectionFactory.java	2006-08-24 03:07:16 UTC (rev 1202)
+++ xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/AbstractConnectionFactory.java	2006-08-24 09:04:46 UTC (rev 1203)
@@ -0,0 +1,91 @@
+package com.xpn.p2pxwiki.communication;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import com.xpn.p2pxwiki.P2PXWikiException;
+import com.xpn.xwiki.XWiki;
+import com.xpn.xwiki.XWikiException;
+import com.xpn.xwiki.cache.api.XWikiCache;
+import com.xpn.xwiki.cache.api.XWikiCacheNeedsRefreshException;
+
+public abstract class AbstractConnectionFactory implements ConnectionFactory {	
+	public static final String CACHETIME = "p2pxwiki.connector.cachetime";
+	public static final int    DEFAULT_CACHETIME = -1;
+	
+	private static final Log log = LogFactory.getFactory().getInstance(AbstractConnectionFactory.class);
+	private Network network;
+	private XWikiCache cache;
+	private int cacheTime;
+	private XWiki xwiki;
+	
+	public abstract HandlerStub openConnection(String peer);
+
+	public AbstractConnectionFactory(Network network) {
+		this.network = network;
+		xwiki = ConnectorPlugin.getInstance().getXWiki();
+		log.debug("Creating connection cache");
+		try{
+			cache = xwiki.getCacheService().newLocalCache();
+		}
+		catch(XWikiException ex){
+			// TODO: Handle this better, e.g. use a HashMap
+			log.error("Cannot create cache!", ex);
+		}
+		
+		log.debug("Configuring cache time");
+		cacheTime = (int)xwiki.ParamAsLong(CACHETIME, DEFAULT_CACHETIME);
+		log.debug("Configured cache time: " + cacheTime);
+	}
+	
+	public Network getNetwork() {
+		return network;
+	}
+
+	/**
+	 * Usually you don't need to override this and just implement openConnection.
+	 * @see com.xpn.p2pxwiki.communication.ConnectionFactory#getConnection(java.lang.String)
+	 */
+	public HandlerStub getConnection(String peer) throws P2PXWikiException {
+		log.debug("Get connection for " + peer);
+		HandlerStub connection = null;
+		boolean updated = false;
+		if (cache != null){
+			try{
+				connection = (HandlerStub)cache.getFromCache(peer, cacheTime);
+				if(connection == null){
+					log.debug("Connection not found in cache; creating a new connection");
+					connection = openConnection(peer);
+					cache.putInCache(peer, connection);
+				}
+				else{
+					log.debug("Connection found in cache");
+				}
+			}
+			catch(XWikiCacheNeedsRefreshException ex){
+				log.debug("Expired connection found in cache; creating a new connection");
+				try {
+					connection = openConnection(peer);
+					cache.putInCache(peer, connection);
+					updated = true;
+				} finally {
+					if (!updated) {
+						cache.cancelUpdate(peer);
+					}
+				}
+			}
+		}
+		else{
+			connection = openConnection(peer);
+		}
+		return connection;
+	}
+
+	/**
+	 * Might need to override this to actually close the stub.
+	 * In that case remember to call parent closeConnection first.
+	 */
+	public void closeConnection(HandlerStub stub) throws P2PXWikiException {
+		cache.flushEntry(stub.getPeerName());
+	}
+}

Modified: xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/AbstractNetwork.java
===================================================================
--- xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/AbstractNetwork.java	2006-08-24 03:07:16 UTC (rev 1202)
+++ xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/AbstractNetwork.java	2006-08-24 09:04:46 UTC (rev 1203)
@@ -6,22 +6,15 @@
 import com.xpn.p2pxwiki.P2PXWikiException;
 import com.xpn.p2pxwiki.utils.P2PUtil;
 import com.xpn.xwiki.XWiki;
-import com.xpn.xwiki.XWikiException;
-import com.xpn.xwiki.cache.api.XWikiCache;
-import com.xpn.xwiki.cache.api.XWikiCacheNeedsRefreshException;
 
 public abstract class AbstractNetwork implements Network {
 	public static final String CONNECTOR_FACTORY = "p2pxwiki.connector.type";
 	public static final String HANDLER_MANAGER = "p2pxwiki.connector.handler";
 	public static final String SERVER_PORT = "p2pxwiki.server.port";
-	public static final String CACHETIME = "p2pxwiki.connector.cachetime";
-	public static final int    DEFAULT_CACHETIME = -1;
 	public static final String PEER_NAME = "p2pxwiki.peername";
 	private static final Log log = LogFactory.getFactory().getInstance(AbstractNetwork.class);
 	
-	private XWikiCache cache;
 	private String peerName;
-	private int cacheTime;
 	private int serverPort;
 	private ConnectionFactory factory;
 	private HandlerManager handlerManager;
@@ -32,105 +25,61 @@
 	public abstract String defaultHandlerManager();
 	public abstract int defaultServerPort();
 
-	public AbstractNetwork(XWiki xwiki) {
-		log.debug("Creating connection cache");
-		try{
-			cache = xwiki.getCacheService().newLocalCache();
-		}
-		catch(XWikiException ex){
-			// TODO: Handle this better, e.g. use a HashMap
-			log.error("Cannot create cache!", ex);
-		}
-
+	public AbstractNetwork() throws P2PXWikiException {
+		XWiki xwiki = ConnectorPlugin.getInstance().getXWiki();
+		
 		log.debug("Configuring peer name");
 		peerName = xwiki.Param(PEER_NAME);
 		log.debug("Peer name: " + peerName);
-		log.debug("Configuring cache time");
-		cacheTime = (int)xwiki.ParamAsLong(CACHETIME, DEFAULT_CACHETIME);
-		log.debug("Configured cache time: " + cacheTime);
 		log.debug("Configuring server port");
 		serverPort = (int)xwiki.ParamAsLong(SERVER_PORT, defaultServerPort());
 		log.debug("Configured server port: " + serverPort);
 		
 		log.debug("Configuring connector factory");
 		String connectorType = xwiki.Param(CONNECTOR_FACTORY, defaultConnectorFactory());
-		// TODO: Retry with default connector on failure, if this isn't already the default
-		try{
+		try {
 			factory = (ConnectionFactory)P2PUtil.getInstance(connectorType,
 					new Object[] {this}, new Class[] {getClass()});
-		}
-		catch(P2PXWikiException ex){
+		} catch(P2PXWikiException ex){
 			log.error("Cannot load connector factory", ex);
-			// we continue and hope for the best
+			if (connectorType != defaultConnectorFactory()) {
+				log.debug("Retrying with default connector factory");
+				factory = (ConnectionFactory)P2PUtil.getInstance(defaultConnectorFactory(),
+						new Object[] {this}, new Class[] {getClass()});
+			} else {
+				throw ex;
+			}
 		}
 
 		log.debug("Obtained factory: " + factory.getClass().getCanonicalName());
 
 		log.debug("Configuring handler manager");
-		// TODO: Retry with default manager on failure, if this isn't already the default
 		String handlerManagerType = xwiki.Param(HANDLER_MANAGER, defaultHandlerManager());
 		try{
 			handlerManager = (HandlerManager)P2PUtil.getInstance(handlerManagerType, 
 					new Object[] {this}, new Class[] {getClass()});
-		}
-		catch(P2PXWikiException ex){
+		} catch(P2PXWikiException ex){
 			log.error("Cannot load handler manager", ex);
-			ex.printStackTrace();
-			// we continue and hope for the best
+			if (handlerManagerType != defaultHandlerManager()) {
+				log.debug("Retrying with default handler manager");
+				handlerManager = (HandlerManager)P2PUtil.getInstance(defaultHandlerManager(),
+						new Object[] {this}, new Class[] {getClass()});
+			} else {
+				throw ex;
+			}
 		}
 		
 		log.debug("Obtained handler manager: " + handlerManager.getClass().getCanonicalName());		
 	}
+	
+	public ConnectionFactory getConnectionFactory() {
+	    return factory;
+    }
 
-	public HandlerStub getConnection(String peer) throws P2PXWikiException {
-		// TODO: does this really belong here? AbstractConnectionFactory?
-		log.debug("Get connection for " + peer);
-		HandlerStub connection = null;
-		boolean updated = false;
-		if (cache != null){
-			try{
-				connection = (HandlerStub)cache.getFromCache(peer, cacheTime);
-				if(connection == null){
-					log.debug("Connection not found in cache; creating a new connection");
-					connection = factory.getConnection(peer);
-					cache.putInCache(peer, connection);
-				}
-				else{
-					log.debug("Connection found in cache");
-				}
-			}
-			catch(XWikiCacheNeedsRefreshException ex){
-				log.debug("Expired connection found in cache; creating a new connection");
-				try {
-					connection = factory.getConnection(peer);
-					cache.putInCache(peer, connection);
-					updated = true;
-				} finally {
-					if (!updated) {
-						cache.cancelUpdate(peer);
-					}
-				}
-			}
-		}
-		else{
-			connection = factory.getConnection(peer);
-		}
-		return connection;
-	}
+	public HandlerManager getHandlerManager() {
+	    return handlerManager;
+    }
 
-	public void closeConnection(HandlerStub stub) throws P2PXWikiException {
-		cache.flushEntry(stub.getPeerName());
-		stub.close();
-	}
-	
-	public boolean addHandler(Handler handler) throws P2PXWikiException {
-		return handlerManager.addHandler(handler);
-	}
-	
-	public boolean removeHandler(Handler handler) throws P2PXWikiException {
-		return handlerManager.removeHandler(handler);
-	}
-	
 	/**
 	 * Returns the network name of the local host.
 	 * @return The peerName.

Modified: xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/ConnectionFactory.java
===================================================================
--- xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/ConnectionFactory.java	2006-08-24 03:07:16 UTC (rev 1202)
+++ xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/ConnectionFactory.java	2006-08-24 09:04:46 UTC (rev 1203)
@@ -2,7 +2,8 @@
 
 import com.xpn.p2pxwiki.P2PXWikiException;
 
-// TODO Q: No close connection?
 public interface ConnectionFactory {
-	HandlerStub getConnection(String peer) throws P2PXWikiException;
+	public Network getNetwork();
+	public HandlerStub getConnection(String peer) throws P2PXWikiException;
+	public void closeConnection(HandlerStub stub) throws P2PXWikiException;
 }

Modified: xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/ConnectorApi.java
===================================================================
--- xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/ConnectorApi.java	2006-08-24 03:07:16 UTC (rev 1202)
+++ xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/ConnectorApi.java	2006-08-24 09:04:46 UTC (rev 1203)
@@ -55,8 +55,16 @@
 			return false;
 		}
 	}
+	
+	public String getCanonicalLocalName() {
+		return plugin.getCanonicalLocalName();
+	}
+	
+	public String getCanonicalRemoteName(String peer) {
+		return plugin.getCanonicalRemoteName(peer);
+	}
 
-	public Network getNetwork(){
-		return plugin.getNetwork();
-	}
+	public String getPeerName() {
+	    return plugin.getPeerName();
+    }
 }

Modified: xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/ConnectorPlugin.java
===================================================================
--- xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/ConnectorPlugin.java	2006-08-24 03:07:16 UTC (rev 1202)
+++ xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/ConnectorPlugin.java	2006-08-24 09:04:46 UTC (rev 1203)
@@ -53,13 +53,14 @@
 	public static final String PLUGIN_NAME = "p2pxwikiconnector";
 	public static final String NETWORK_TYPE = "p2pxwiki.connector.network";
 	public static final String DEFAULT_NETWORK_TYPE = JxtaNetwork.class.getName();
-	
+
 	private static final Log log = LogFactory.getFactory().getInstance(ConnectorPlugin.class);
 	private Network network;
+	private XWiki xwiki;
 	protected static ConnectorPlugin instance; 
 	
-	// TODO think about this ... make it more elegant
-	// always called for ConnectorPlugin.getInstance().getNetwork().getCanonicalLocalName();
+	// TODO think about this ... try to make it more elegant
+	// usually called for ConnectorPlugin.getInstance().getNetwork().getCanonicalLocalName();
 	public static ConnectorPlugin getInstance() {
 		return instance;
 	}
@@ -93,13 +94,12 @@
 	public void init(XWikiContext context) {
 		log.debug("constructor");
 		super.init(context);
-		XWiki xwiki = context.getWiki();
+		xwiki = context.getWiki();
 
 		log.debug("Configuring network type");
 		String networkType = xwiki.Param(NETWORK_TYPE, DEFAULT_NETWORK_TYPE);
 		try {
-			network = (Network)P2PUtil.getInstance(networkType,
-					new Object[] {xwiki}, new Class[] {XWiki.class});
+			network = (Network)P2PUtil.getInstance(networkType);
 			log.debug("Obtained network: " + network.getClass().getCanonicalName());
 		} catch(P2PXWikiException ex) {
 			log.error("Cannot load network", ex);
@@ -107,8 +107,7 @@
 			if (!networkType.equals(DEFAULT_NETWORK_TYPE)) {
 				log.debug("Retrying with default network type");
 				try {
-					network = (Network)P2PUtil.getInstance(DEFAULT_NETWORK_TYPE,
-							new Object[] {xwiki}, new Class[] {XWiki.class});
+					network = (Network)P2PUtil.getInstance(DEFAULT_NETWORK_TYPE);
 					log.debug("Obtained network: " + network.getClass().getCanonicalName());
 				} catch(P2PXWikiException ex2) {						
 					log.error("Cannot load default network", ex2);
@@ -126,7 +125,7 @@
 	 * @throws XWikiException If no connection could be established.
 	 */
 	public HandlerStub getConnection(String peer) throws XWikiException{
-		return network.getConnection(peer);
+		return network.getConnectionFactory().getConnection(peer);
 	}
 
 	/**
@@ -137,7 +136,7 @@
 	 * @throws XWikiException When the connection could not be closed.
 	 */
 	void closeConnection(HandlerStub stub) throws XWikiException{
-		network.closeConnection(stub);
+		network.getConnectionFactory().closeConnection(stub);
 	}
 
 	/**
@@ -147,7 +146,7 @@
 	 * @throws XWikiException TODO when? you said false otherwise
 	 */
 	public boolean addHandler(Handler handler) throws XWikiException {
-		return network.addHandler(handler);
+		return network.getHandlerManager().addHandler(handler);
 	}
 
 	/**
@@ -157,9 +156,21 @@
 	 * @throws XWikiException TODO when? you said false otherwise
 	 */ 
 	public boolean removeHandler(Handler handler) throws XWikiException {
-		return network.removeHandler(handler);
+		return network.getHandlerManager().removeHandler(handler);
 	}
+	
+	public String getCanonicalLocalName() {
+		return network.getCanonicalLocalName();
+	}
+	
+	public String getCanonicalRemoteName(String peer) {
+		return network.getCanonicalRemoteName(peer);
+	}
 
+	public String getPeerName() {
+	    return network.getPeerName();
+    }
+
 	/**
 	 * Returns an API for using this plugin from scripts.
 	 * @see com.xpn.xwiki.plugin.XWikiPluginInterface#getPluginApi(com.xpn.xwiki.plugin.XWikiPluginInterface, com.xpn.xwiki.XWikiContext) Overridden method.
@@ -172,11 +183,16 @@
 		return new ConnectorApi(context, this);
 	}
 
+	public XWiki getXWiki() {
+    	return xwiki;
+    }
+
 	/**
-	 * Returns the configured {@link Network Network} helper object. 
+	 * Returns the configured {@link Network Network} helper object.
+	 * Useful for testing. Package access. 
 	 * @return The network
 	 */
-	public Network getNetwork() {
+	Network getNetwork() {
 		return network;
 	}
 }

Modified: xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/Handler.java
===================================================================
--- xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/Handler.java	2006-08-24 03:07:16 UTC (rev 1202)
+++ xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/Handler.java	2006-08-24 09:04:46 UTC (rev 1203)
@@ -1,5 +1,5 @@
 package com.xpn.p2pxwiki.communication;
 
 public interface Handler {
-	String getName();
+	public String getName();
 }

Modified: xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/HandlerManager.java
===================================================================
--- xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/HandlerManager.java	2006-08-24 03:07:16 UTC (rev 1202)
+++ xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/HandlerManager.java	2006-08-24 09:04:46 UTC (rev 1203)
@@ -9,7 +9,7 @@
 	 * @return true on succcess
 	 * @throws P2PXWikiException
 	 */
-	boolean addHandler(Handler handler) throws P2PXWikiException;
+	public boolean addHandler(Handler handler) throws P2PXWikiException;
 	
 	/**
 	 * 
@@ -17,5 +17,7 @@
 	 * @return true on succcess
 	 * @throws P2PXWikiException
 	 */
-	boolean removeHandler(Handler handler) throws P2PXWikiException;
+	public boolean removeHandler(Handler handler) throws P2PXWikiException;
+	
+	public Network getNetwork();
 }

Modified: xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/HandlerStub.java
===================================================================
--- xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/HandlerStub.java	2006-08-24 03:07:16 UTC (rev 1202)
+++ xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/HandlerStub.java	2006-08-24 09:04:46 UTC (rev 1203)
@@ -4,7 +4,7 @@
 import com.xpn.p2pxwiki.P2PXWikiException;
 
 public interface HandlerStub {
-	String getPeerName();
-	Object execute(String function, Object[] params) throws P2PXWikiException;
-	void close() throws P2PXWikiException;
+	public String getPeerName();
+	public Object execute(String function, Object[] params) throws P2PXWikiException;
+	public ConnectionFactory getConnectionFactory();
 }

Modified: xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/Network.java
===================================================================
--- xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/Network.java	2006-08-24 03:07:16 UTC (rev 1202)
+++ xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/Network.java	2006-08-24 09:04:46 UTC (rev 1203)
@@ -1,7 +1,5 @@
 package com.xpn.p2pxwiki.communication;
 
-import com.xpn.p2pxwiki.P2PXWikiException;
-
 /**
  * 
  */
@@ -11,11 +9,6 @@
 	public String getPeerName();
 	public int getServerPort();
 	
-	
-	// TODO Q: Replace these with 2 methods? getConnectionFactory + getHandlerManager
-	// - in this case ConnectionFactory will call back for caching
-	public HandlerStub getConnection(String peer) throws P2PXWikiException;
-	public void closeConnection(HandlerStub stub) throws P2PXWikiException;
-	public boolean addHandler(Handler handler) throws P2PXWikiException;
-	public boolean removeHandler(Handler handler) throws P2PXWikiException;
+	public ConnectionFactory getConnectionFactory();
+	public HandlerManager getHandlerManager();
 }

Modified: xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/jxta/JxtaConnectionFactory.java
===================================================================
--- xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/jxta/JxtaConnectionFactory.java	2006-08-24 03:07:16 UTC (rev 1202)
+++ xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/jxta/JxtaConnectionFactory.java	2006-08-24 09:04:46 UTC (rev 1203)
@@ -3,18 +3,16 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
-import com.xpn.p2pxwiki.P2PXWikiException;
-import com.xpn.p2pxwiki.communication.HandlerStub;
+import com.xpn.p2pxwiki.communication.AbstractConnectionFactory;
 import com.xpn.p2pxwiki.communication.ConnectionFactory;
+import com.xpn.p2pxwiki.communication.HandlerStub;
 
-public class JxtaConnectionFactory
-		implements ConnectionFactory {
+public class JxtaConnectionFactory extends AbstractConnectionFactory implements ConnectionFactory {
 	private static Log log = LogFactory.getFactory().getInstance(JxtaConnectionFactory.class);
-	private JxtaNetwork network;
 	
 	public JxtaConnectionFactory(JxtaNetwork network) {
+		super(network);
 		log.debug("constructor");
-		this.network = network;
 		init();
 	}
 
@@ -23,11 +21,8 @@
 		// Nothing to be done here yet
 	}
 
-	/**
-	 * @see com.xpn.p2pxwiki.communication.ConnectionFactory#getConnection(java.lang.String)
-	 */
-	public HandlerStub getConnection(String peer) throws P2PXWikiException {
-		log.debug("getConnection");
-		return new JxtaHandlerStub(peer, network);
-	}
+    public HandlerStub openConnection(String peer) {
+		log.debug("openConnection");
+		return new JxtaHandlerStub(peer, this);
+    }
 }

Modified: xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/jxta/JxtaHandlerManager.java
===================================================================
--- xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/jxta/JxtaHandlerManager.java	2006-08-24 03:07:16 UTC (rev 1202)
+++ xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/jxta/JxtaHandlerManager.java	2006-08-24 09:04:46 UTC (rev 1203)
@@ -7,6 +7,7 @@
 import com.xpn.p2pxwiki.P2PXWikiException;
 import com.xpn.p2pxwiki.communication.Handler;
 import com.xpn.p2pxwiki.communication.HandlerManager;
+import com.xpn.p2pxwiki.communication.Network;
 
 public class JxtaHandlerManager implements HandlerManager {
 	private static Log log = LogFactory.getFactory().getInstance(
@@ -31,6 +32,10 @@
 			log.error("Error initializing!", ex);
 		}
 	}
+	
+	public Network getNetwork() {
+	    return network;
+    }
 
 	/**
 	 * @see com.xpn.p2pxwiki.communication.HandlerManager#addHandler(com.xpn.p2pxwiki.communication.Handler)
@@ -47,4 +52,8 @@
 		p2pwebserver.removeHandler(handler.getName());
 		return true;
 	}
+	
+	public void shutdown() {
+		p2pwebserver.shutdown();
+	}
 }

Modified: xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/jxta/JxtaHandlerStub.java
===================================================================
--- xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/jxta/JxtaHandlerStub.java	2006-08-24 03:07:16 UTC (rev 1202)
+++ xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/jxta/JxtaHandlerStub.java	2006-08-24 09:04:46 UTC (rev 1203)
@@ -9,17 +9,20 @@
 import org.apache.xmlrpc.XmlRpcException;
 
 import com.xpn.p2pxwiki.P2PXWikiException;
+import com.xpn.p2pxwiki.communication.ConnectionFactory;
 import com.xpn.p2pxwiki.communication.HandlerStub;
 
 public class JxtaHandlerStub implements HandlerStub {
 	protected static Log log = LogFactory.getFactory().getInstance(JxtaHandlerStub.class);
 	private String peer;
 	private P2PXmlRpcClientLite connection = null;
+	private JxtaConnectionFactory factory;
 
-	public JxtaHandlerStub(String peer, JxtaNetwork network){
+	public JxtaHandlerStub(String peer, JxtaConnectionFactory factory){
 		try {
 			this.peer = peer;
-			this.connection = new P2PXmlRpcClientLite(network.getCanonicalRemoteName(peer));
+			this.factory = factory;
+			this.connection = new P2PXmlRpcClientLite(factory.getNetwork().getCanonicalRemoteName(peer));
 		} catch (Exception ex) {
 			log.error(ex.getMessage(), ex);
 		}
@@ -48,7 +51,7 @@
 		return this.peer;
 	}
 
-	public void close(){
-		// Nothing to do here
-	}
+	public ConnectionFactory getConnectionFactory() {
+	    return factory;
+    }
 }

Modified: xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/jxta/JxtaNetwork.java
===================================================================
--- xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/jxta/JxtaNetwork.java	2006-08-24 03:07:16 UTC (rev 1202)
+++ xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/jxta/JxtaNetwork.java	2006-08-24 09:04:46 UTC (rev 1203)
@@ -7,15 +7,13 @@
 import com.xpn.p2pxwiki.P2PXWikiException;
 import com.xpn.p2pxwiki.communication.AbstractNetwork;
 import com.xpn.p2pxwiki.communication.Network;
-import com.xpn.xwiki.XWiki;
 
 public class JxtaNetwork extends AbstractNetwork implements Network{		
 	private static final Log log = LogFactory.getFactory().getInstance(JxtaNetwork.class);
 	private static final String networkName = "JXTA:P2PXWikiNetwork";
 	private static boolean inited = false;
 
-	public JxtaNetwork(XWiki xwiki) throws P2PXWikiException {
-		super(xwiki);
+	public JxtaNetwork() throws P2PXWikiException {
 		log.debug("constructor");
 		init();
 	}

Modified: xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/rpc/RpcConnectionFactory.java
===================================================================
--- xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/rpc/RpcConnectionFactory.java	2006-08-24 03:07:16 UTC (rev 1202)
+++ xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/rpc/RpcConnectionFactory.java	2006-08-24 09:04:46 UTC (rev 1203)
@@ -3,18 +3,16 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
-import com.xpn.p2pxwiki.P2PXWikiException;
-import com.xpn.p2pxwiki.communication.HandlerStub;
+import com.xpn.p2pxwiki.communication.AbstractConnectionFactory;
 import com.xpn.p2pxwiki.communication.ConnectionFactory;
+import com.xpn.p2pxwiki.communication.HandlerStub;
 
-public class RpcConnectionFactory 
-		implements ConnectionFactory {
+public class RpcConnectionFactory extends AbstractConnectionFactory implements ConnectionFactory {
 	private static Log log = LogFactory.getFactory().getInstance(RpcConnectionFactory.class);
-	private RpcNetwork network;
 	
 	public RpcConnectionFactory(RpcNetwork network) {
+		super(network);
 		log.debug("constructor");
-		this.network = network;
 		init();
 	}
 
@@ -22,12 +20,9 @@
 		log.debug("init");
 		// Nothing to be done here
 	}
-
-	/**
-	 * @see com.xpn.p2pxwiki.communication.ConnectionFactory#getConnection(java.lang.String)
-	 */
-	public HandlerStub getConnection(String peer) throws P2PXWikiException {
+	
+	public HandlerStub openConnection(String peer) {
 		log.debug("getConnection");
-		return new RpcHandlerStub(peer, network);
+		return new RpcHandlerStub(peer, this);
 	}
 }

Modified: xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/rpc/RpcHandlerManager.java
===================================================================
--- xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/rpc/RpcHandlerManager.java	2006-08-24 03:07:16 UTC (rev 1202)
+++ xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/rpc/RpcHandlerManager.java	2006-08-24 09:04:46 UTC (rev 1203)
@@ -7,6 +7,7 @@
 import com.xpn.p2pxwiki.P2PXWikiException;
 import com.xpn.p2pxwiki.communication.Handler;
 import com.xpn.p2pxwiki.communication.HandlerManager;
+import com.xpn.p2pxwiki.communication.Network;
 
 public class RpcHandlerManager implements HandlerManager {
 	private static Log log = LogFactory.getFactory().getInstance(RpcHandlerManager.class);
@@ -30,6 +31,10 @@
 			log.error("Error initializing!", ex);
 		}
 	}
+	
+	public Network getNetwork() {
+	    return network;
+    }
 
 	/**
 	 * @see com.xpn.p2pxwiki.communication.HandlerManager#addHandler(com.xpn.p2pxwiki.communication.Handler)
@@ -46,4 +51,9 @@
 		webserver.removeHandler(handler.getName());
 		return true;
 	}
+	
+	public void shutdown() {
+		// TODO This is not enough to kill this guy
+		webserver.shutdown();
+	}
 }

Modified: xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/rpc/RpcHandlerStub.java
===================================================================
--- xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/rpc/RpcHandlerStub.java	2006-08-24 03:07:16 UTC (rev 1202)
+++ xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/rpc/RpcHandlerStub.java	2006-08-24 09:04:46 UTC (rev 1203)
@@ -9,17 +9,20 @@
 import org.apache.xmlrpc.XmlRpcException;
 
 import com.xpn.p2pxwiki.P2PXWikiException;
+import com.xpn.p2pxwiki.communication.ConnectionFactory;
 import com.xpn.p2pxwiki.communication.HandlerStub;
 
 public class RpcHandlerStub implements HandlerStub {
 	protected static Log log = LogFactory.getFactory().getInstance(RpcHandlerStub.class);
 	private String peer;
 	private XmlRpcClientLite connection = null;
+	private RpcConnectionFactory factory;
 
-	public RpcHandlerStub(String peer, RpcNetwork network){
+	public RpcHandlerStub(String peer, RpcConnectionFactory factory){
 		try {
 			this.peer = peer;
-			this.connection = new XmlRpcClientLite(network.getCanonicalRemoteName(peer));
+			this.factory = factory;
+			this.connection = new XmlRpcClientLite(factory.getNetwork().getCanonicalRemoteName(peer));
 		} catch (Exception ex) {
 			log.error(ex.getMessage(), ex);
 		}
@@ -48,7 +51,7 @@
 		return this.peer;
 	}
 
-	public void close(){
-		// Nothing to do here
-	}
+	public ConnectionFactory getConnectionFactory() {
+	    return factory;
+    }
 }

Modified: xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/rpc/RpcNetwork.java
===================================================================
--- xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/rpc/RpcNetwork.java	2006-08-24 03:07:16 UTC (rev 1202)
+++ xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/communication/rpc/RpcNetwork.java	2006-08-24 09:04:46 UTC (rev 1203)
@@ -6,21 +6,20 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
+import com.xpn.p2pxwiki.P2PXWikiException;
 import com.xpn.p2pxwiki.communication.AbstractNetwork;
 import com.xpn.p2pxwiki.communication.Network;
-import com.xpn.xwiki.XWiki;
 
 public class RpcNetwork extends AbstractNetwork implements Network{
 	private static Log log = LogFactory.getFactory().getInstance(RpcNetwork.class);
 	private static boolean inited = false;
 
-	public RpcNetwork(XWiki xwiki){
-		super(xwiki);
+	public RpcNetwork() throws P2PXWikiException {
 		log.debug("constructor");
 		init();
 	}
 
-	protected void init(){
+	protected void init() throws P2PXWikiException {
 		if(inited){
 			return;
 		}

Modified: xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/examples/ReplicationClientExamples.java
===================================================================
--- xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/examples/ReplicationClientExamples.java	2006-08-24 03:07:16 UTC (rev 1202)
+++ xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/examples/ReplicationClientExamples.java	2006-08-24 09:04:46 UTC (rev 1203)
@@ -29,7 +29,7 @@
 	
 		Vector allXML = client.getAllPagesAsXML(token,wikiserver, "http://bikash.p2pxwiki.com"); 
 		log.error("got "+allXML.size()+" entries from the wiki at: "+ wikiserver ); 
-		log.error("address of local jxta peer is : "+ ConnectorPlugin.getInstance().getNetwork().getCanonicalLocalName());
+		log.error("address of local jxta peer is : "+ ConnectorPlugin.getInstance().getCanonicalLocalName());
 	
 		token = client.login("Admin","admin"); 
 		log.error("result of loggin in to local peer as Admin for replication is token:"+ token);

Modified: xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/registry/RegistryClient.java
===================================================================
--- xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/registry/RegistryClient.java	2006-08-24 03:07:16 UTC (rev 1202)
+++ xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/registry/RegistryClient.java	2006-08-24 09:04:46 UTC (rev 1203)
@@ -15,7 +15,7 @@
 	public RegistryClient(XWikiContext context){
 		super(context);
 	}
-	private String P2PXWIKIREGISTRYADDRESS = ConnectorPlugin.getInstance().getNetwork().getCanonicalRemoteName("registry");
+	private String P2PXWIKIREGISTRYADDRESS = ConnectorPlugin.getInstance().getCanonicalRemoteName("registry");
 
 	private String HANDLERCLASS = "registry";
 

Modified: xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/replication/ReplicationClient.java
===================================================================
--- xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/replication/ReplicationClient.java	2006-08-24 03:07:16 UTC (rev 1202)
+++ xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/replication/ReplicationClient.java	2006-08-24 09:04:46 UTC (rev 1203)
@@ -28,7 +28,7 @@
 	}
 
 	public String login(String username, String password) {
-		String peerserver = ConnectorPlugin.getInstance().getNetwork().getCanonicalLocalName(); 
+		String peerserver = ConnectorPlugin.getInstance().getCanonicalLocalName(); 
 		if (peerserver == null) { 
 			log.error("error in getting local JXTA server address: ---ERRROR --- ") ;
 			return null; 
@@ -37,7 +37,7 @@
 	}
 
 	public boolean logout(String token) {
-		String peerserver = ConnectorPlugin.getInstance().getNetwork().getCanonicalLocalName();
+		String peerserver = ConnectorPlugin.getInstance().getCanonicalLocalName();
 		if (peerserver == null) { 
 			log.error("error in getting local JXTA server address: ---ERRROR --- ") ;
 			return false; 
@@ -118,7 +118,7 @@
 	
 	/* api to replicate locally */ 
 	public boolean replicatePageFromXML(String token, String docsXML, String wikiapp) { 
-		String peerserver = ConnectorPlugin.getInstance().getNetwork().getCanonicalLocalName();
+		String peerserver = ConnectorPlugin.getInstance().getCanonicalLocalName();
 		if (peerserver == null) { 
 			log.error("error in getting local JXTA server address: ---ERRROR --- ") ;
 			return false; 
@@ -129,7 +129,7 @@
 	
 	/* api to replicate locally */ 
 	public boolean replicateAllPagesFromXML(String token, Vector docsXML, String wikiapp) { 
-		String peerserver = ConnectorPlugin.getInstance().getNetwork().getCanonicalLocalName(); 
+		String peerserver = ConnectorPlugin.getInstance().getCanonicalLocalName(); 
 		if (peerserver == null) { 
 			log.error("error in getting local JXTA server address: ---ERRROR --- ") ;
 			return false; 

Modified: xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/services/file/FileP2PServer.java
===================================================================
--- xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/services/file/FileP2PServer.java	2006-08-24 03:07:16 UTC (rev 1202)
+++ xwiki-clients/p2pxwiki/src/main/java/com/xpn/p2pxwiki/services/file/FileP2PServer.java	2006-08-24 09:04:46 UTC (rev 1203)
@@ -29,7 +29,7 @@
 
 	protected void init() throws P2PXWikiException {
 		log.debug("init");
-		this.name = ConnectorPlugin.getInstance().getNetwork().getPeerName();
+		this.name = ConnectorPlugin.getInstance().getPeerName();
 	}
 
 	/**

Added: xwiki-clients/p2pxwiki/src/test/java/com/xpn/p2pxwiki/AllTests.java
===================================================================
--- xwiki-clients/p2pxwiki/src/test/java/com/xpn/p2pxwiki/AllTests.java	2006-08-24 03:07:16 UTC (rev 1202)
+++ xwiki-clients/p2pxwiki/src/test/java/com/xpn/p2pxwiki/AllTests.java	2006-08-24 09:04:46 UTC (rev 1203)
@@ -0,0 +1,26 @@
+package com.xpn.p2pxwiki;
+
+import com.xpn.p2pxwiki.communication.ConnectorPluginTest;
+import com.xpn.p2pxwiki.communication.JxtaLocalTest;
+import com.xpn.p2pxwiki.communication.RpcLocalTest;
+import com.xpn.p2pxwiki.services.FileP2PServerTest;
+
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+/**
+ * 
+ */
+
+public class AllTests extends TestSuite {
+	public AllTests() {
+		addTest(new TestSuite(ConnectorPluginTest.class));
+		addTest(new TestSuite(JxtaLocalTest.class));
+		addTest(new TestSuite(RpcLocalTest.class));
+//		addTest(new TestSuite(FileP2PServerTest.class));
+	}
+
+	public static void main(String[] args) {
+		TestRunner.run(new AllTests());
+	}
+}

Modified: xwiki-clients/p2pxwiki/src/test/java/com/xpn/p2pxwiki/communication/AbstractLocalTest.java
===================================================================
--- xwiki-clients/p2pxwiki/src/test/java/com/xpn/p2pxwiki/communication/AbstractLocalTest.java	2006-08-24 03:07:16 UTC (rev 1202)
+++ xwiki-clients/p2pxwiki/src/test/java/com/xpn/p2pxwiki/communication/AbstractLocalTest.java	2006-08-24 09:04:46 UTC (rev 1203)
@@ -28,6 +28,7 @@
 	public abstract String getNetwork();
 	public abstract String getHandlerManager();
 	public abstract String getConnectionFactory();
+	public abstract void shutdown(HandlerManager handlerManager);
 	
 	public void setUp() throws Exception {
 		localPeer = getLocalPeer();
@@ -53,6 +54,7 @@
 	public void tearDown() throws Exception {
 		plugin.closeConnection(stub);
 		plugin.removeHandler(handler1);
+		shutdown(plugin.getNetwork().getHandlerManager());
 	}
 
 	public void test() throws XWikiException {

Modified: xwiki-clients/p2pxwiki/src/test/java/com/xpn/p2pxwiki/communication/ConnectorPluginTest.java
===================================================================
--- xwiki-clients/p2pxwiki/src/test/java/com/xpn/p2pxwiki/communication/ConnectorPluginTest.java	2006-08-24 03:07:16 UTC (rev 1202)
+++ xwiki-clients/p2pxwiki/src/test/java/com/xpn/p2pxwiki/communication/ConnectorPluginTest.java	2006-08-24 09:04:46 UTC (rev 1203)
@@ -66,8 +66,10 @@
 		assertFalse(plugin.removeHandler(handler2));
 	}
 
-	public void testGetNetwork() {
-		MockNetwork network = (MockNetwork)plugin.getNetwork();
-		assertEquals(MockNetwork.class, network.getClass());
-	}
+//	public void testGetNetwork() {
+//		MockNetwork network = (MockNetwork)plugin.getNetwork();
+//		assertEquals(MockNetwork.class, network.getClass());
+//	}
+	
+	// TODO add more tests
 }

Modified: xwiki-clients/p2pxwiki/src/test/java/com/xpn/p2pxwiki/communication/JxtaLocalTest.java
===================================================================
--- xwiki-clients/p2pxwiki/src/test/java/com/xpn/p2pxwiki/communication/JxtaLocalTest.java	2006-08-24 03:07:16 UTC (rev 1202)
+++ xwiki-clients/p2pxwiki/src/test/java/com/xpn/p2pxwiki/communication/JxtaLocalTest.java	2006-08-24 09:04:46 UTC (rev 1203)
@@ -26,4 +26,7 @@
 		return JxtaNetwork.class.getName();
 	}
 
+    public void shutdown(HandlerManager handlerManager) {
+    	((JxtaHandlerManager)handlerManager).shutdown();
+    }
 }

Modified: xwiki-clients/p2pxwiki/src/test/java/com/xpn/p2pxwiki/communication/RpcLocalTest.java
===================================================================
--- xwiki-clients/p2pxwiki/src/test/java/com/xpn/p2pxwiki/communication/RpcLocalTest.java	2006-08-24 03:07:16 UTC (rev 1202)
+++ xwiki-clients/p2pxwiki/src/test/java/com/xpn/p2pxwiki/communication/RpcLocalTest.java	2006-08-24 09:04:46 UTC (rev 1203)
@@ -2,6 +2,7 @@
 
 import junit.textui.TestRunner;
 
+import com.xpn.p2pxwiki.communication.jxta.JxtaHandlerManager;
 import com.xpn.p2pxwiki.communication.rpc.RpcConnectionFactory;
 import com.xpn.p2pxwiki.communication.rpc.RpcHandlerManager;
 import com.xpn.p2pxwiki.communication.rpc.RpcNetwork;
@@ -31,4 +32,8 @@
 	public static void main(String[] args) {
 	    TestRunner.run(RpcLocalTest.class);
     }
+	
+    public void shutdown(HandlerManager handlerManager) {
+    	((RpcHandlerManager)handlerManager).shutdown();
+    }
 }

Modified: xwiki-clients/p2pxwiki/src/test/java/com/xpn/p2pxwiki/mocks/MockConnectionFactory.java
===================================================================
--- xwiki-clients/p2pxwiki/src/test/java/com/xpn/p2pxwiki/mocks/MockConnectionFactory.java	2006-08-24 03:07:16 UTC (rev 1202)
+++ xwiki-clients/p2pxwiki/src/test/java/com/xpn/p2pxwiki/mocks/MockConnectionFactory.java	2006-08-24 09:04:46 UTC (rev 1203)
@@ -3,18 +3,25 @@
 import com.xpn.p2pxwiki.P2PXWikiException;
 import com.xpn.p2pxwiki.communication.ConnectionFactory;
 import com.xpn.p2pxwiki.communication.HandlerStub;
+import com.xpn.p2pxwiki.communication.Network;
 
 public class MockConnectionFactory implements ConnectionFactory {
-	protected static MockConnectionFactory instance;
 	
+	private Network network;
+
+	public MockConnectionFactory(Network network) {
+		this.network = network;
+	}
+		
 	public HandlerStub getConnection(String peer) throws P2PXWikiException {
-		return new MockHandlerStub(peer);
+		return new MockHandlerStub(peer, this);
 	}
+	
+	public void closeConnection(HandlerStub stub) {
+	    // does nothing
+	}
 
-	public static MockConnectionFactory getInstance() {
-		if (instance == null) {
-			instance = new MockConnectionFactory();
-		}
-		return instance;
-	}
+	public Network getNetwork() {
+	    return network;
+    }
 }

Modified: xwiki-clients/p2pxwiki/src/test/java/com/xpn/p2pxwiki/mocks/MockHandlerManager.java
===================================================================
--- xwiki-clients/p2pxwiki/src/test/java/com/xpn/p2pxwiki/mocks/MockHandlerManager.java	2006-08-24 03:07:16 UTC (rev 1202)
+++ xwiki-clients/p2pxwiki/src/test/java/com/xpn/p2pxwiki/mocks/MockHandlerManager.java	2006-08-24 09:04:46 UTC (rev 1203)
@@ -6,12 +6,16 @@
 import com.xpn.p2pxwiki.P2PXWikiException;
 import com.xpn.p2pxwiki.communication.Handler;
 import com.xpn.p2pxwiki.communication.HandlerManager;
+import com.xpn.p2pxwiki.communication.Network;
 
 public class MockHandlerManager implements HandlerManager {
-	protected static MockHandlerManager instance; 
 	private List list = new LinkedList();
+	private Network network;
 	
-	@SuppressWarnings("unchecked")
+	public MockHandlerManager(Network network) {
+		this.network = network;
+	}
+	
     public boolean addHandler(Handler handler) throws P2PXWikiException {
 		return list.add(handler);
 	}
@@ -20,10 +24,7 @@
 		return list.remove(handler);
 	}
 
-	public static MockHandlerManager getInstance() {
-		if (instance == null) {
-			instance = new MockHandlerManager();
-		}
-		return instance;
-	}
+	public Network getNetwork() {
+	    return network;
+    }
 }

Modified: xwiki-clients/p2pxwiki/src/test/java/com/xpn/p2pxwiki/mocks/MockHandlerStub.java
===================================================================
--- xwiki-clients/p2pxwiki/src/test/java/com/xpn/p2pxwiki/mocks/MockHandlerStub.java	2006-08-24 03:07:16 UTC (rev 1202)
+++ xwiki-clients/p2pxwiki/src/test/java/com/xpn/p2pxwiki/mocks/MockHandlerStub.java	2006-08-24 09:04:46 UTC (rev 1203)
@@ -1,13 +1,16 @@
 package com.xpn.p2pxwiki.mocks;
 
 import com.xpn.p2pxwiki.P2PXWikiException;
+import com.xpn.p2pxwiki.communication.ConnectionFactory;
 import com.xpn.p2pxwiki.communication.HandlerStub;
 
 public class MockHandlerStub implements HandlerStub {
 	private String peerName;
+	private ConnectionFactory factory;
 
-	public MockHandlerStub(String peerName) {
+	public MockHandlerStub(String peerName, ConnectionFactory factory) {
 		this.peerName = peerName;
+		this.factory = factory;
 	}
 	
 	public void close() throws P2PXWikiException {
@@ -23,4 +26,7 @@
 		return peerName;
 	}
 
+	public ConnectionFactory getConnectionFactory() {
+	    return factory;
+    }
 }

Modified: xwiki-clients/p2pxwiki/src/test/java/com/xpn/p2pxwiki/mocks/MockNetwork.java
===================================================================
--- xwiki-clients/p2pxwiki/src/test/java/com/xpn/p2pxwiki/mocks/MockNetwork.java	2006-08-24 03:07:16 UTC (rev 1202)
+++ xwiki-clients/p2pxwiki/src/test/java/com/xpn/p2pxwiki/mocks/MockNetwork.java	2006-08-24 09:04:46 UTC (rev 1203)
@@ -1,12 +1,8 @@
 package com.xpn.p2pxwiki.mocks;
 
-import com.xpn.p2pxwiki.P2PXWikiException;
 import com.xpn.p2pxwiki.communication.ConnectionFactory;
-import com.xpn.p2pxwiki.communication.Handler;
 import com.xpn.p2pxwiki.communication.HandlerManager;
-import com.xpn.p2pxwiki.communication.HandlerStub;
 import com.xpn.p2pxwiki.communication.Network;
-import com.xpn.xwiki.XWiki;
 
 public class MockNetwork implements Network {
 	private String localName;
@@ -15,15 +11,14 @@
 	private int serverPort;
 	private String peerName;
 	
-	public MockNetwork(XWiki wiki) {
-		this.factory = new MockConnectionFactory();
-		this.manager = new MockHandlerManager();
+	public MockNetwork() {
+		this.factory = new MockConnectionFactory(this);
+		this.manager = new MockHandlerManager(this);
 		this.serverPort = 0;
 		this.peerName = "unnamed";
 		this.localName = "";
 	}
 	
-	
 	public void setLocalName(String localName) {
 		this.localName = localName;
 	}
@@ -36,18 +31,6 @@
 		return peer;
 	}
 
-	public boolean addHandler(Handler handler) throws P2PXWikiException {
-	    return manager.addHandler(handler);
-    }
-
-	public void closeConnection(HandlerStub stub) throws P2PXWikiException {
-	    // TODO factory.closeConnection();
-    }
-
-	public HandlerStub getConnection(String peer) throws P2PXWikiException {
-	    return factory.getConnection(peer);
-    }
-
 	public String getPeerName() {
 	    return peerName;
     }
@@ -56,31 +39,6 @@
 	    return serverPort;
     }
 
-	public boolean removeHandler(Handler handler) throws P2PXWikiException {
-	    return manager.removeHandler(handler);
-    }
-
-
-	public ConnectionFactory getFactory() {
-    	return factory;
-    }
-
-
-	public void setFactory(ConnectionFactory factory) {
-    	this.factory = factory;
-    }
-
-
-	public HandlerManager getManager() {
-    	return manager;
-    }
-
-
-	public void setManager(HandlerManager manager) {
-    	this.manager = manager;
-    }
-
-
 	public void setServerPort(int serverPort) {
     	this.serverPort = serverPort;
     }
@@ -94,4 +52,23 @@
 	public String getLocalName() {
     	return localName;
     }
+
+
+	public ConnectionFactory getConnectionFactory() {
+	    return factory;
+    }
+
+
+	public HandlerManager getHandlerManager() {
+	    return manager;
+    }
+	
+// TODO this does not work like this ... can only get class and instantiate via reflection
+//	public void setHandlerManager(HandlerManager manager) {
+//    	this.manager = manager;
+//    }
+//	
+//	public void setConnectionFactory(ConnectionFactory factory) {
+//    	this.factory = factory;
+//    }
 }





More information about the Xwiki-notifications mailing list