From f0f23e3b453d455ec4bb6821065ac1116b30d16d Mon Sep 17 00:00:00 2001
From: brinn <brinn>
Date: Sat, 17 Dec 2011 16:32:44 +0000
Subject: [PATCH] Refactor for server/client/shared package structure.

SVN: 24023
---
 .../serviceconversation/IServiceMessenger.java       |  4 ++--
 .../serviceconversation/ServiceConversationDTO.java  |  2 +-
 .../{ => client}/ClientMessenger.java                |  6 +++++-
 .../ClientResponseMessageMultiplexer.java            |  5 ++++-
 .../{ => client}/ClientResponseMessageQueue.java     |  5 ++++-
 .../IRemoteServiceConversationServer.java            |  4 +++-
 .../{ => client}/IServiceConversation.java           |  6 ++++--
 .../{ => client}/ServiceConversationClient.java      |  5 ++++-
 .../{ => client}/ServiceExecutionException.java      |  2 +-
 .../{ => server}/BidirectionalServiceMessenger.java  |  6 +++++-
 .../serviceconversation/{ => server}/IService.java   |  4 +++-
 .../{ => server}/IServiceFactory.java                |  2 +-
 .../{ => server}/ServiceConversationRecord.java      |  2 +-
 .../{ => server}/ServiceConversationServer.java      | 12 ++++++++++--
 .../serviceconversation/ServiceConversationTest.java |  7 +++++++
 15 files changed, 55 insertions(+), 17 deletions(-)
 rename common/source/java/ch/systemsx/cisd/common/serviceconversation/{ => client}/ClientMessenger.java (92%)
 rename common/source/java/ch/systemsx/cisd/common/serviceconversation/{ => client}/ClientResponseMessageMultiplexer.java (90%)
 rename common/source/java/ch/systemsx/cisd/common/serviceconversation/{ => client}/ClientResponseMessageQueue.java (88%)
 rename common/source/java/ch/systemsx/cisd/common/serviceconversation/{ => client}/IRemoteServiceConversationServer.java (88%)
 rename common/source/java/ch/systemsx/cisd/common/serviceconversation/{ => client}/IServiceConversation.java (86%)
 rename common/source/java/ch/systemsx/cisd/common/serviceconversation/{ => client}/ServiceConversationClient.java (91%)
 rename common/source/java/ch/systemsx/cisd/common/serviceconversation/{ => client}/ServiceExecutionException.java (97%)
 rename common/source/java/ch/systemsx/cisd/common/serviceconversation/{ => server}/BidirectionalServiceMessenger.java (92%)
 rename common/source/java/ch/systemsx/cisd/common/serviceconversation/{ => server}/IService.java (87%)
 rename common/source/java/ch/systemsx/cisd/common/serviceconversation/{ => server}/IServiceFactory.java (94%)
 rename common/source/java/ch/systemsx/cisd/common/serviceconversation/{ => server}/ServiceConversationRecord.java (95%)
 rename common/source/java/ch/systemsx/cisd/common/serviceconversation/{ => server}/ServiceConversationServer.java (93%)

diff --git a/common/source/java/ch/systemsx/cisd/common/serviceconversation/IServiceMessenger.java b/common/source/java/ch/systemsx/cisd/common/serviceconversation/IServiceMessenger.java
index d5c87e8a51f..ae080c4dee1 100644
--- a/common/source/java/ch/systemsx/cisd/common/serviceconversation/IServiceMessenger.java
+++ b/common/source/java/ch/systemsx/cisd/common/serviceconversation/IServiceMessenger.java
@@ -27,12 +27,12 @@ import java.io.Serializable;
 public interface IServiceMessenger
 {
     /**
-     * Send a message to the client.
+     * Send a message to the counter part.
      */
     public void send(Serializable message);
     
     /**
-     * Receive a message from the client.
+     * Receive a message from the counter part.
      */
     public <T extends Serializable> T receive(Class<T> messageClass);
 }
diff --git a/common/source/java/ch/systemsx/cisd/common/serviceconversation/ServiceConversationDTO.java b/common/source/java/ch/systemsx/cisd/common/serviceconversation/ServiceConversationDTO.java
index 2625dee55a3..8da289af362 100644
--- a/common/source/java/ch/systemsx/cisd/common/serviceconversation/ServiceConversationDTO.java
+++ b/common/source/java/ch/systemsx/cisd/common/serviceconversation/ServiceConversationDTO.java
@@ -31,7 +31,7 @@ public class ServiceConversationDTO implements Serializable
     
     private int clientTimeoutInMillis;
 
-    ServiceConversationDTO(String serviceConversationId, int clientTimeout)
+    public ServiceConversationDTO(String serviceConversationId, int clientTimeout)
     {
         this.serviceConversationId = serviceConversationId;
         this.clientTimeoutInMillis = clientTimeout;
diff --git a/common/source/java/ch/systemsx/cisd/common/serviceconversation/ClientMessenger.java b/common/source/java/ch/systemsx/cisd/common/serviceconversation/client/ClientMessenger.java
similarity index 92%
rename from common/source/java/ch/systemsx/cisd/common/serviceconversation/ClientMessenger.java
rename to common/source/java/ch/systemsx/cisd/common/serviceconversation/client/ClientMessenger.java
index 85e592882f4..5d4366a2f1f 100644
--- a/common/source/java/ch/systemsx/cisd/common/serviceconversation/ClientMessenger.java
+++ b/common/source/java/ch/systemsx/cisd/common/serviceconversation/client/ClientMessenger.java
@@ -14,12 +14,16 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.common.serviceconversation;
+package ch.systemsx.cisd.common.serviceconversation.client;
 
 import java.io.Serializable;
 
 import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel;
 import ch.systemsx.cisd.base.exceptions.TimeoutExceptionUnchecked;
+import ch.systemsx.cisd.common.serviceconversation.IServiceMessageTransport;
+import ch.systemsx.cisd.common.serviceconversation.ServiceConversationDTO;
+import ch.systemsx.cisd.common.serviceconversation.ServiceMessage;
+import ch.systemsx.cisd.common.serviceconversation.UnexpectedMessagePayloadException;
 
 /**
  * A class that a client can use to receive messages from a service.
diff --git a/common/source/java/ch/systemsx/cisd/common/serviceconversation/ClientResponseMessageMultiplexer.java b/common/source/java/ch/systemsx/cisd/common/serviceconversation/client/ClientResponseMessageMultiplexer.java
similarity index 90%
rename from common/source/java/ch/systemsx/cisd/common/serviceconversation/ClientResponseMessageMultiplexer.java
rename to common/source/java/ch/systemsx/cisd/common/serviceconversation/client/ClientResponseMessageMultiplexer.java
index 0c0c387ca8d..71049741044 100644
--- a/common/source/java/ch/systemsx/cisd/common/serviceconversation/ClientResponseMessageMultiplexer.java
+++ b/common/source/java/ch/systemsx/cisd/common/serviceconversation/client/ClientResponseMessageMultiplexer.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.common.serviceconversation;
+package ch.systemsx.cisd.common.serviceconversation.client;
 
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
@@ -23,6 +23,9 @@ import org.apache.log4j.Logger;
 
 import ch.systemsx.cisd.common.logging.LogCategory;
 import ch.systemsx.cisd.common.logging.LogFactory;
+import ch.systemsx.cisd.common.serviceconversation.IServiceMessageTransport;
+import ch.systemsx.cisd.common.serviceconversation.ServiceMessage;
+import ch.systemsx.cisd.common.serviceconversation.UnknownServiceConversationException;
 
 /**
  * A client-side multiplexer for incoming messages from the server.
diff --git a/common/source/java/ch/systemsx/cisd/common/serviceconversation/ClientResponseMessageQueue.java b/common/source/java/ch/systemsx/cisd/common/serviceconversation/client/ClientResponseMessageQueue.java
similarity index 88%
rename from common/source/java/ch/systemsx/cisd/common/serviceconversation/ClientResponseMessageQueue.java
rename to common/source/java/ch/systemsx/cisd/common/serviceconversation/client/ClientResponseMessageQueue.java
index f6098f3f8c5..170a0573ad5 100644
--- a/common/source/java/ch/systemsx/cisd/common/serviceconversation/ClientResponseMessageQueue.java
+++ b/common/source/java/ch/systemsx/cisd/common/serviceconversation/client/ClientResponseMessageQueue.java
@@ -14,12 +14,15 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.common.serviceconversation;
+package ch.systemsx.cisd.common.serviceconversation.client;
 
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.TimeUnit;
 
+import ch.systemsx.cisd.common.serviceconversation.IServiceMessageTransport;
+import ch.systemsx.cisd.common.serviceconversation.ServiceMessage;
+
 /**
  * A class that holds a queue for response messages to a client. 
  *
diff --git a/common/source/java/ch/systemsx/cisd/common/serviceconversation/IRemoteServiceConversationServer.java b/common/source/java/ch/systemsx/cisd/common/serviceconversation/client/IRemoteServiceConversationServer.java
similarity index 88%
rename from common/source/java/ch/systemsx/cisd/common/serviceconversation/IRemoteServiceConversationServer.java
rename to common/source/java/ch/systemsx/cisd/common/serviceconversation/client/IRemoteServiceConversationServer.java
index b4d6cab3a50..135049bd8c4 100644
--- a/common/source/java/ch/systemsx/cisd/common/serviceconversation/IRemoteServiceConversationServer.java
+++ b/common/source/java/ch/systemsx/cisd/common/serviceconversation/client/IRemoteServiceConversationServer.java
@@ -14,7 +14,9 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.common.serviceconversation;
+package ch.systemsx.cisd.common.serviceconversation.client;
+
+import ch.systemsx.cisd.common.serviceconversation.ServiceConversationDTO;
 
 /**
  * A remote role for starting a service conversation.
diff --git a/common/source/java/ch/systemsx/cisd/common/serviceconversation/IServiceConversation.java b/common/source/java/ch/systemsx/cisd/common/serviceconversation/client/IServiceConversation.java
similarity index 86%
rename from common/source/java/ch/systemsx/cisd/common/serviceconversation/IServiceConversation.java
rename to common/source/java/ch/systemsx/cisd/common/serviceconversation/client/IServiceConversation.java
index 515c28acfb3..8000c00bcc9 100644
--- a/common/source/java/ch/systemsx/cisd/common/serviceconversation/IServiceConversation.java
+++ b/common/source/java/ch/systemsx/cisd/common/serviceconversation/client/IServiceConversation.java
@@ -14,17 +14,19 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.common.serviceconversation;
+package ch.systemsx.cisd.common.serviceconversation.client;
 
 import java.io.Closeable;
 import java.io.Serializable;
 
+import ch.systemsx.cisd.common.serviceconversation.IServiceMessenger;
+
 /**
  * The service conversation.
  * 
  * @author Bernd Rinn
  */
-public interface IServiceConversation extends Closeable
+public interface IServiceConversation extends IServiceMessenger, Closeable
 {
     /**
      * Returns the service conversation id.
diff --git a/common/source/java/ch/systemsx/cisd/common/serviceconversation/ServiceConversationClient.java b/common/source/java/ch/systemsx/cisd/common/serviceconversation/client/ServiceConversationClient.java
similarity index 91%
rename from common/source/java/ch/systemsx/cisd/common/serviceconversation/ServiceConversationClient.java
rename to common/source/java/ch/systemsx/cisd/common/serviceconversation/client/ServiceConversationClient.java
index 04806349334..c55e4b827c1 100644
--- a/common/source/java/ch/systemsx/cisd/common/serviceconversation/ServiceConversationClient.java
+++ b/common/source/java/ch/systemsx/cisd/common/serviceconversation/client/ServiceConversationClient.java
@@ -14,7 +14,10 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.common.serviceconversation;
+package ch.systemsx.cisd.common.serviceconversation.client;
+
+import ch.systemsx.cisd.common.serviceconversation.IServiceMessageTransport;
+import ch.systemsx.cisd.common.serviceconversation.ServiceConversationDTO;
 
 /**
  * The client for the service conversations.
diff --git a/common/source/java/ch/systemsx/cisd/common/serviceconversation/ServiceExecutionException.java b/common/source/java/ch/systemsx/cisd/common/serviceconversation/client/ServiceExecutionException.java
similarity index 97%
rename from common/source/java/ch/systemsx/cisd/common/serviceconversation/ServiceExecutionException.java
rename to common/source/java/ch/systemsx/cisd/common/serviceconversation/client/ServiceExecutionException.java
index 1e30cb466fc..5a1ae4f8a7e 100644
--- a/common/source/java/ch/systemsx/cisd/common/serviceconversation/ServiceExecutionException.java
+++ b/common/source/java/ch/systemsx/cisd/common/serviceconversation/client/ServiceExecutionException.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.common.serviceconversation;
+package ch.systemsx.cisd.common.serviceconversation.client;
 
 import java.io.PrintStream;
 import java.io.PrintWriter;
diff --git a/common/source/java/ch/systemsx/cisd/common/serviceconversation/BidirectionalServiceMessenger.java b/common/source/java/ch/systemsx/cisd/common/serviceconversation/server/BidirectionalServiceMessenger.java
similarity index 92%
rename from common/source/java/ch/systemsx/cisd/common/serviceconversation/BidirectionalServiceMessenger.java
rename to common/source/java/ch/systemsx/cisd/common/serviceconversation/server/BidirectionalServiceMessenger.java
index aefd3d89d54..b9b2d29d3be 100644
--- a/common/source/java/ch/systemsx/cisd/common/serviceconversation/BidirectionalServiceMessenger.java
+++ b/common/source/java/ch/systemsx/cisd/common/serviceconversation/server/BidirectionalServiceMessenger.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.common.serviceconversation;
+package ch.systemsx.cisd.common.serviceconversation.server;
 
 import java.io.Serializable;
 import java.util.concurrent.BlockingQueue;
@@ -25,6 +25,10 @@ import java.util.concurrent.atomic.AtomicBoolean;
 import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel;
 import ch.systemsx.cisd.base.exceptions.InterruptedExceptionUnchecked;
 import ch.systemsx.cisd.base.exceptions.TimeoutExceptionUnchecked;
+import ch.systemsx.cisd.common.serviceconversation.IServiceMessageTransport;
+import ch.systemsx.cisd.common.serviceconversation.IServiceMessenger;
+import ch.systemsx.cisd.common.serviceconversation.ServiceMessage;
+import ch.systemsx.cisd.common.serviceconversation.UnexpectedMessagePayloadException;
 
 /**
  * A bidirectional messenger on the server side.
diff --git a/common/source/java/ch/systemsx/cisd/common/serviceconversation/IService.java b/common/source/java/ch/systemsx/cisd/common/serviceconversation/server/IService.java
similarity index 87%
rename from common/source/java/ch/systemsx/cisd/common/serviceconversation/IService.java
rename to common/source/java/ch/systemsx/cisd/common/serviceconversation/server/IService.java
index 04013cd0720..95daeca3854 100644
--- a/common/source/java/ch/systemsx/cisd/common/serviceconversation/IService.java
+++ b/common/source/java/ch/systemsx/cisd/common/serviceconversation/server/IService.java
@@ -14,7 +14,9 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.common.serviceconversation;
+package ch.systemsx.cisd.common.serviceconversation.server;
+
+import ch.systemsx.cisd.common.serviceconversation.IServiceMessenger;
 
 /**
  * The interface for a service that can participate in a service conversation.
diff --git a/common/source/java/ch/systemsx/cisd/common/serviceconversation/IServiceFactory.java b/common/source/java/ch/systemsx/cisd/common/serviceconversation/server/IServiceFactory.java
similarity index 94%
rename from common/source/java/ch/systemsx/cisd/common/serviceconversation/IServiceFactory.java
rename to common/source/java/ch/systemsx/cisd/common/serviceconversation/server/IServiceFactory.java
index 5aaef6c070f..5856028a6b5 100644
--- a/common/source/java/ch/systemsx/cisd/common/serviceconversation/IServiceFactory.java
+++ b/common/source/java/ch/systemsx/cisd/common/serviceconversation/server/IServiceFactory.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.common.serviceconversation;
+package ch.systemsx.cisd.common.serviceconversation.server;
 
 /**
  * A factory for services.
diff --git a/common/source/java/ch/systemsx/cisd/common/serviceconversation/ServiceConversationRecord.java b/common/source/java/ch/systemsx/cisd/common/serviceconversation/server/ServiceConversationRecord.java
similarity index 95%
rename from common/source/java/ch/systemsx/cisd/common/serviceconversation/ServiceConversationRecord.java
rename to common/source/java/ch/systemsx/cisd/common/serviceconversation/server/ServiceConversationRecord.java
index 005fa10b773..39b00605654 100644
--- a/common/source/java/ch/systemsx/cisd/common/serviceconversation/ServiceConversationRecord.java
+++ b/common/source/java/ch/systemsx/cisd/common/serviceconversation/server/ServiceConversationRecord.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.common.serviceconversation;
+package ch.systemsx.cisd.common.serviceconversation.server;
 
 import ch.systemsx.cisd.common.concurrent.ITerminableFuture;
 
diff --git a/common/source/java/ch/systemsx/cisd/common/serviceconversation/ServiceConversationServer.java b/common/source/java/ch/systemsx/cisd/common/serviceconversation/server/ServiceConversationServer.java
similarity index 93%
rename from common/source/java/ch/systemsx/cisd/common/serviceconversation/ServiceConversationServer.java
rename to common/source/java/ch/systemsx/cisd/common/serviceconversation/server/ServiceConversationServer.java
index 0c505cf453d..636fab0a38e 100644
--- a/common/source/java/ch/systemsx/cisd/common/serviceconversation/ServiceConversationServer.java
+++ b/common/source/java/ch/systemsx/cisd/common/serviceconversation/server/ServiceConversationServer.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.common.serviceconversation;
+package ch.systemsx.cisd.common.serviceconversation.server;
 
 import java.util.Map;
 import java.util.Random;
@@ -33,6 +33,12 @@ import ch.systemsx.cisd.common.concurrent.TerminableCallable.ICallable;
 import ch.systemsx.cisd.common.concurrent.TerminableCallable.IStoppableExecutor;
 import ch.systemsx.cisd.common.logging.LogCategory;
 import ch.systemsx.cisd.common.logging.LogFactory;
+import ch.systemsx.cisd.common.serviceconversation.IServiceMessageTransport;
+import ch.systemsx.cisd.common.serviceconversation.ServiceConversationDTO;
+import ch.systemsx.cisd.common.serviceconversation.ServiceMessage;
+import ch.systemsx.cisd.common.serviceconversation.UnknownClientException;
+import ch.systemsx.cisd.common.serviceconversation.UnknownServiceTypeException;
+import ch.systemsx.cisd.common.serviceconversation.client.ServiceExecutionException;
 
 /**
  * A collection of service conversations.
@@ -169,7 +175,9 @@ public class ServiceConversationServer
         final IServiceMessageTransport responseMessenger = responseMessageMap.get(clientId);
         if (responseMessenger == null)
         {
-            throw new UnknownClientException(clientId);
+            final UnknownClientException ex = new UnknownClientException(clientId); 
+            operationLog.error(ex.getMessage());
+            throw ex;
         }
         final IService serviceInstance = serviceFactory.create();
         final String serviceConversationId =
diff --git a/common/sourceTest/java/ch/systemsx/cisd/common/serviceconversation/ServiceConversationTest.java b/common/sourceTest/java/ch/systemsx/cisd/common/serviceconversation/ServiceConversationTest.java
index 695fbbe8b95..3974928f925 100644
--- a/common/sourceTest/java/ch/systemsx/cisd/common/serviceconversation/ServiceConversationTest.java
+++ b/common/sourceTest/java/ch/systemsx/cisd/common/serviceconversation/ServiceConversationTest.java
@@ -32,6 +32,13 @@ import ch.systemsx.cisd.base.exceptions.InterruptedExceptionUnchecked;
 import ch.systemsx.cisd.base.exceptions.TimeoutExceptionUnchecked;
 import ch.systemsx.cisd.common.concurrent.ConcurrencyUtilities;
 import ch.systemsx.cisd.common.logging.LogInitializer;
+import ch.systemsx.cisd.common.serviceconversation.client.IRemoteServiceConversationServer;
+import ch.systemsx.cisd.common.serviceconversation.client.IServiceConversation;
+import ch.systemsx.cisd.common.serviceconversation.client.ServiceConversationClient;
+import ch.systemsx.cisd.common.serviceconversation.client.ServiceExecutionException;
+import ch.systemsx.cisd.common.serviceconversation.server.IService;
+import ch.systemsx.cisd.common.serviceconversation.server.IServiceFactory;
+import ch.systemsx.cisd.common.serviceconversation.server.ServiceConversationServer;
 
 /**
  * Test cases for the {@Link ServiceConversationCollection} class.
-- 
GitLab