From 169cf0cc4b22df73b8c8c166dfb86995f863b6dc Mon Sep 17 00:00:00 2001
From: pkupczyk <pkupczyk>
Date: Wed, 26 Sep 2012 10:06:48 +0000
Subject: [PATCH] BIS-185 / Make long-running method calls in IDataStoreService
 use service conversations BIS-196 / Make service conversations timeout
 configurable - improve javadoc

SVN: 26817
---
 ...ServiceConversationClientManagerLocal.java |  2 ++
 ...ServiceConversationServerManagerLocal.java |  2 ++
 .../ServiceConversationClientManager.java     |  2 ++
 .../ServiceConversationServerManager.java     |  2 ++
 .../annotation/Conversational.java            |  7 ++++++
 .../conversation/annotation/Progress.java     | 22 ++++++++++++++++++-
 .../ServiceConversationClientDetails.java     |  8 +++++++
 ...rsationClientWithConversationTracking.java | 11 ++++++++++
 .../ServiceConversationsThreadContext.java    | 17 +++++++-------
 .../BaseServiceConversationClientManager.java | 22 +++++++++++++++++++
 .../BaseServiceConversationServerManager.java | 17 ++++++++++++++
 ...erviceConversationClientManagerRemote.java |  2 +-
 .../ServiceConversationServiceFactory.java    |  2 +-
 .../ServiceConversationServiceProxy.java      |  4 ++--
 .../ServiceConversationMethodInvocation.java  | 18 ++++++++-------
 ...ConversationAutomaticProgressListener.java |  3 +++
 ...rviceConversationNullProgressListener.java |  2 ++
 .../ServiceConversationClientManager.java     |  2 ++
 .../ServiceConversationServerManager.java     |  3 ++-
 ...ServiceConversationClientManagerLocal.java |  2 ++
 ...ServiceConversationServerManagerLocal.java |  2 ++
 21 files changed, 129 insertions(+), 23 deletions(-)

diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/IServiceConversationClientManagerLocal.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/IServiceConversationClientManagerLocal.java
index f3dd6b9986e..5ec099ea300 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/IServiceConversationClientManagerLocal.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/IServiceConversationClientManagerLocal.java
@@ -19,6 +19,8 @@ package ch.systemsx.cisd.openbis.dss.generic.server;
 import ch.systemsx.cisd.openbis.generic.shared.IETLLIMSService;
 
 /**
+ * A local interface of the service conversation client manager used by DSS.
+ * 
  * @author pkupczyk
  */
 public interface IServiceConversationClientManagerLocal
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/IServiceConversationServerManagerLocal.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/IServiceConversationServerManagerLocal.java
index 5d8a91b6180..00d00717f13 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/IServiceConversationServerManagerLocal.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/IServiceConversationServerManagerLocal.java
@@ -17,6 +17,8 @@
 package ch.systemsx.cisd.openbis.dss.generic.server;
 
 /**
+ * A local interface of the service conversation server manager used by DSS.
+ * 
  * @author pkupczyk
  */
 public interface IServiceConversationServerManagerLocal
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ServiceConversationClientManager.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ServiceConversationClientManager.java
index bbc9ae20aa0..c2d8b6fa915 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ServiceConversationClientManager.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ServiceConversationClientManager.java
@@ -23,6 +23,8 @@ import ch.systemsx.cisd.openbis.generic.shared.conversation.ServiceConversationA
 import ch.systemsx.cisd.openbis.generic.shared.conversation.ServiceConversationDataStoreClientId;
 
 /**
+ * The service conversation client manager used by DSS.
+ * 
  * @author pkupczyk
  */
 public class ServiceConversationClientManager extends BaseServiceConversationClientManager
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ServiceConversationServerManager.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ServiceConversationServerManager.java
index e2a0389b6ae..95b9e407d5a 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ServiceConversationServerManager.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ServiceConversationServerManager.java
@@ -26,6 +26,8 @@ import ch.systemsx.cisd.openbis.generic.shared.conversation.ServiceConversationA
 import ch.systemsx.cisd.openbis.generic.shared.conversation.ServiceConversationApplicationServerUrl;
 
 /**
+ * The service conversation server manager used by DSS.
+ * 
  * @author pkupczyk
  */
 public class ServiceConversationServerManager extends BaseServiceConversationServerManager
diff --git a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/annotation/Conversational.java b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/annotation/Conversational.java
index 5827130c464..87a8c07e2c0 100644
--- a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/annotation/Conversational.java
+++ b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/annotation/Conversational.java
@@ -22,6 +22,10 @@ import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
 /**
+ * All methods that support service conversations communication should be marked with this
+ * annotation. If a method without this annotation is called via service conversations then
+ * {@link java.lang.NoSuchMethodException NoSuchMethodException} is thrown.
+ * 
  * @author pkupczyk
  */
 
@@ -31,6 +35,9 @@ import java.lang.annotation.Target;
 public @interface Conversational
 {
 
+    /**
+     * Type of the progress reporting that should be used for the annotated method.
+     */
     Progress progress();
 
 }
diff --git a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/annotation/Progress.java b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/annotation/Progress.java
index d6ac5358ad7..d1b4f77fb4f 100644
--- a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/annotation/Progress.java
+++ b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/annotation/Progress.java
@@ -17,11 +17,31 @@
 package ch.systemsx.cisd.common.conversation.annotation;
 
 /**
+ * Type of the progress reporting that is used for service conversation methods.
+ * 
  * @author pkupczyk
  */
 public enum Progress
 {
 
-    MANUAL, AUTOMATIC
+    /**
+     * Progress has to be reported by calling
+     * {@link ch.systemsx.cisd.common.conversation.progress.IServiceConversationProgressListener#update
+     * IServiceConversationProgressListener.update} method. This option should be used when we know
+     * how much progress has been made, e.g. we processed 12 out of 100 data sets. If the method
+     * execution hangs the progress won't be reported and the conversation will time out.
+     */
+    MANUAL,
+
+    /**
+     * A separate thread regularly sends progress information without a need of calling
+     * {@link ch.systemsx.cisd.common.conversation.progress.IServiceConversationProgressListener#update
+     * IServiceConversationProgressListener.update} method. This option is useful for methods where
+     * we don't have any information about the current progress (e.g. user defined Python script
+     * execution) but we still want to notify the client that the processing is in progress and the
+     * conversation should not time out. Be aware that the progress will be sent forever if the
+     * method execution hangs.
+     */
+    AUTOMATIC
 
 }
diff --git a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/client/ServiceConversationClientDetails.java b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/client/ServiceConversationClientDetails.java
index 83cff101b6f..12331b83d96 100644
--- a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/client/ServiceConversationClientDetails.java
+++ b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/client/ServiceConversationClientDetails.java
@@ -20,13 +20,21 @@ import org.apache.commons.lang.builder.EqualsBuilder;
 import org.apache.commons.lang.builder.HashCodeBuilder;
 
 /**
+ * Stores information about a service conversation client manager.
+ * 
  * @author pkupczyk
  */
 public class ServiceConversationClientDetails
 {
 
+    /**
+     * URL that should be used for communication with the client manager.
+     */
     private String url;
 
+    /**
+     * Timeout to be used for communication with the client manager.
+     */
     private int timeout;
 
     public ServiceConversationClientDetails(String url, int timeout)
diff --git a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/client/ServiceConversationClientWithConversationTracking.java b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/client/ServiceConversationClientWithConversationTracking.java
index 86a80821253..b594d524bee 100644
--- a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/client/ServiceConversationClientWithConversationTracking.java
+++ b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/client/ServiceConversationClientWithConversationTracking.java
@@ -25,6 +25,11 @@ import ch.systemsx.cisd.common.serviceconversation.client.ServiceConversationCli
 import ch.systemsx.cisd.common.spring.HttpInvokerUtils;
 
 /**
+ * Service conversation client that keeps track of the started conversations and provides
+ * {@link #onConversationStart(IServiceConversation)} and
+ * {@link #onConversationClose(IServiceConversation)} methods that can be overwritten to perform
+ * some additional actions on these events.
+ * 
  * @author pkupczyk
  */
 public class ServiceConversationClientWithConversationTracking
@@ -51,6 +56,9 @@ public class ServiceConversationClientWithConversationTracking
         return conversation;
     }
 
+    /**
+     * Method that is called whenever a new conversation is started.
+     */
     public void onConversationStart(IServiceConversation conversation)
     {
         // does nothing by default
@@ -67,6 +75,9 @@ public class ServiceConversationClientWithConversationTracking
         onConversationClose(conversation);
     }
 
+    /**
+     * Method that is called whenever a new conversation is closed.
+     */
     public void onConversationClose(IServiceConversation conversation)
     {
         // does nothing by default
diff --git a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/context/ServiceConversationsThreadContext.java b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/context/ServiceConversationsThreadContext.java
index e8966dcd8af..a6d529d45b0 100644
--- a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/context/ServiceConversationsThreadContext.java
+++ b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/context/ServiceConversationsThreadContext.java
@@ -20,12 +20,8 @@ import ch.systemsx.cisd.common.conversation.progress.IServiceConversationProgres
 import ch.systemsx.cisd.common.conversation.progress.ServiceConversationNullProgressListener;
 
 /**
- * The class contains the logic for communication beetween Hibernate interceptors, which should send
- * service conversation updates, and parts of applications that use service conversations, but don't
- * have acces to the Hibernate objects.
- * <p>
- * It lets the owner of service conversation store the information about it in the thread local
- * variable, from which the interceptor can later read it.
+ * This class provides methods for accessing information about the current service conversation. All
+ * the information is stored in thread local variables.
  * 
  * @author Jakub Straszewski
  */
@@ -39,7 +35,7 @@ public class ServiceConversationsThreadContext
     }
 
     /**
-     * Store progress listener in a thread local context
+     * Sets the current service conversation progress listener.
      */
     public static void setProgressListener(IServiceConversationProgressListener listener)
     {
@@ -47,7 +43,7 @@ public class ServiceConversationsThreadContext
     }
 
     /**
-     * Remove information about progress listener from the thread local context.
+     * Removes the current service conversation progress listener.
      */
     public static void unsetProgressListener()
     {
@@ -55,7 +51,10 @@ public class ServiceConversationsThreadContext
     }
 
     /**
-     * Read the progress listener from the thread local context
+     * Get the current service conversation progress listener. If there is no service conversation
+     * available then a dummy progress listener is returned. The dummy listener is returned just for
+     * a convenience to eliminate all the not null checks. Calling methods on the dummy listener
+     * doesn't have any effect.
      */
     public static IServiceConversationProgressListener getProgressListener()
     {
diff --git a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/manager/BaseServiceConversationClientManager.java b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/manager/BaseServiceConversationClientManager.java
index 603f13fb084..6806fa0a190 100644
--- a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/manager/BaseServiceConversationClientManager.java
+++ b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/manager/BaseServiceConversationClientManager.java
@@ -27,6 +27,14 @@ import ch.systemsx.cisd.common.serviceconversation.ServiceMessage;
 import ch.systemsx.cisd.common.serviceconversation.client.IServiceConversation;
 
 /**
+ * Service conversation client manager that dispatches calls to remote service conversation servers
+ * managers. One instance of client manager can handle communication with multiple server managers
+ * located on different machines. To make a conversational call to a remote service you must first
+ * obtain a reference to a service that supports service conversation communication using
+ * {@link #getService(String, Class, String, Object, int)} method. All the method calls on that
+ * service will be automatically translated into appropriate service conversation messages behind
+ * the scenes.
+ * 
  * @author pkupczyk
  */
 public class BaseServiceConversationClientManager implements
@@ -56,6 +64,20 @@ public class BaseServiceConversationClientManager implements
     {
     }
 
+    /**
+     * Method that returns a reference to a service that supports service conversation
+     * communication.
+     * 
+     * @param serverUrl The URL of the service conversation server manager where the given service
+     *            has been registered.
+     * @param serviceInterface The interface of the service to be returned.
+     * @param sessionToken The session token that will be used to uniquely identify the
+     *            conversations.
+     * @param clientId The id of the client manager that has to be recognized by the server. Basing
+     *            on this id the server will decide where to send the responses to and what timeout
+     *            to use.
+     * @param clientTimeout The timeout of the client manager.
+     */
     public <T> T getService(String serverUrl, Class<T> serviceInterface, String sessionToken,
             Object clientId, int clientTimeout)
     {
diff --git a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/manager/BaseServiceConversationServerManager.java b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/manager/BaseServiceConversationServerManager.java
index 324029db26a..e288398532d 100644
--- a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/manager/BaseServiceConversationServerManager.java
+++ b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/manager/BaseServiceConversationServerManager.java
@@ -27,6 +27,15 @@ import ch.systemsx.cisd.common.serviceconversation.server.ServiceConversationSer
 import ch.systemsx.cisd.common.spring.HttpInvokerUtils;
 
 /**
+ * Service conversation server manager that dispatches calls coming from remote service conversation
+ * client managers to appropriate local services. One instance of server manager can handle
+ * communication with multiple client managers located on different machines. To expose a local
+ * service for remote conversational calls you must add the service to the manager using
+ * {@link #addService(Class, Object)} method. Moreover the
+ * {@link #getClientDetailsForClientId(Object)} method must be implemented to return information
+ * which clients are recognized, what URLs should be used for communicating them back and what
+ * timeouts should be used for their conversations.
+ * 
  * @author pkupczyk
  */
 public abstract class BaseServiceConversationServerManager implements
@@ -46,6 +55,10 @@ public abstract class BaseServiceConversationServerManager implements
         server = new ServiceConversationServer();
     }
 
+    /**
+     * Method that can be used for registering local services that should be exposed for remote
+     * service conversation calls.
+     */
     protected void addService(Class<?> serviceInterface, Object service)
     {
         ServiceConversationServiceFactory serviceFactory =
@@ -124,6 +137,10 @@ public abstract class BaseServiceConversationServerManager implements
         return clientDetailsToClientMap.size();
     }
 
+    /**
+     * Returns detailed information about a client basing on a client id. If it returns null then
+     * the client is treated as unknown.
+     */
     protected abstract ServiceConversationClientDetails getClientDetailsForClientId(Object clientId);
 
     private synchronized IServiceConversationClientManagerRemote getClientForClientDetails(
diff --git a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/manager/IServiceConversationClientManagerRemote.java b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/manager/IServiceConversationClientManagerRemote.java
index 8ba47f6aeac..394a8f3c706 100644
--- a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/manager/IServiceConversationClientManagerRemote.java
+++ b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/manager/IServiceConversationClientManagerRemote.java
@@ -19,7 +19,7 @@ package ch.systemsx.cisd.common.conversation.manager;
 import ch.systemsx.cisd.common.serviceconversation.IServiceMessageTransport;
 
 /**
- * All clients of conversational RMI services must implement this interface
+ * A remote interface for service conversation client manager.
  * 
  * @author anttil
  */
diff --git a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/manager/ServiceConversationServiceFactory.java b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/manager/ServiceConversationServiceFactory.java
index b7e8ea1ea27..563e8afc274 100644
--- a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/manager/ServiceConversationServiceFactory.java
+++ b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/manager/ServiceConversationServiceFactory.java
@@ -25,7 +25,7 @@ import ch.systemsx.cisd.common.serviceconversation.server.IServiceFactory;
 import ch.systemsx.cisd.common.serviceconversation.server.ServiceConversationServer;
 
 /**
- * A factory for RMI services. Runs incoming MethodInvocations within transactions.
+ * A factory for service conversation services. Runs incoming MethodInvocations.
  * 
  * @author anttil
  */
diff --git a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/manager/ServiceConversationServiceProxy.java b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/manager/ServiceConversationServiceProxy.java
index 6e1a30ab296..fedff7256bd 100644
--- a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/manager/ServiceConversationServiceProxy.java
+++ b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/manager/ServiceConversationServiceProxy.java
@@ -26,8 +26,8 @@ import ch.systemsx.cisd.common.conversation.message.ServiceConversationMethodInv
 import ch.systemsx.cisd.common.serviceconversation.client.IServiceConversation;
 
 /**
- * Dynamic proxy that passes RPC calls to a ConversationalServer through service conversation
- * framework.
+ * Dynamic proxy that converts a given service method calls into appropriate service conversation
+ * messages.
  * 
  * @author anttil
  */
diff --git a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/message/ServiceConversationMethodInvocation.java b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/message/ServiceConversationMethodInvocation.java
index 47a293bb4d9..025926e15a0 100644
--- a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/message/ServiceConversationMethodInvocation.java
+++ b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/message/ServiceConversationMethodInvocation.java
@@ -32,9 +32,9 @@ import ch.systemsx.cisd.common.conversation.progress.ServiceConversationRateLimi
 import ch.systemsx.cisd.common.serviceconversation.server.ServiceConversationServer;
 
 /**
- * MethodInvocation represents a remote method invocation. It contains the name and the arguments of
- * a method to be executed on a remote server. It is Serializable to be transferable through the
- * service conversation framework.
+ * MethodInvocation represents a remote method invocation. It contains the name, the parameter types
+ * and the arguments of a method to be executed on a remote server. It is Serializable to be
+ * transferable through the service conversation framework.
  * 
  * @author anttil
  */
@@ -51,15 +51,17 @@ public class ServiceConversationMethodInvocation implements Serializable
     }
 
     /**
-     * Executes the method on given target object. Adds a ProgressListener instance as a last
-     * argument of the call.
+     * Executes the method on given target object. Basing on the progress type of the target method
+     * (see {@link Conversational#progress()}) it creates and attaches to a current thread an
+     * instance of {@link IServiceConversationProgressListener}. The progress listener can be
+     * accessed within the target method via
+     * {@link ServiceConversationsThreadContext#getProgressListener()}.
      * 
      * @param target The target object on which the method call will be executed
      * @param server ServiceConversationServer that will receive the progress reports
      * @param conversationId Id of the conversation
-     * @param clientTimeOut The remote client making this method call will abort if it has not
-     *            received any messages from the server within the timeout (represented in
-     *            milliseconds)
+     * @param progressInterval Interval that should be used for reporting a progress of the method
+     *            execution (represented in milliseconds)
      * @returns The return value of the method call
      */
     public Serializable executeOn(Object target, ServiceConversationServer server,
diff --git a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/progress/ServiceConversationAutomaticProgressListener.java b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/progress/ServiceConversationAutomaticProgressListener.java
index 8caf0ceead2..352789250ae 100644
--- a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/progress/ServiceConversationAutomaticProgressListener.java
+++ b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/progress/ServiceConversationAutomaticProgressListener.java
@@ -26,6 +26,9 @@ import ch.systemsx.cisd.common.serviceconversation.server.ProgressInfo;
 import ch.systemsx.cisd.common.serviceconversation.server.ServiceConversationServer;
 
 /**
+ * Creates a separate thread that regularly sends a progress information without a need of calling
+ * IServiceConversationProgressListener.update() method.
+ * 
  * @author pkupczyk
  */
 public class ServiceConversationAutomaticProgressListener implements
diff --git a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/progress/ServiceConversationNullProgressListener.java b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/progress/ServiceConversationNullProgressListener.java
index 19aa98f85cf..0f1b72e2536 100644
--- a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/progress/ServiceConversationNullProgressListener.java
+++ b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/progress/ServiceConversationNullProgressListener.java
@@ -17,6 +17,8 @@
 package ch.systemsx.cisd.common.conversation.progress;
 
 /**
+ * Dummy progress listener that doesn't do anything when its methods are called.
+ * 
  * @author pkupczyk
  */
 public class ServiceConversationNullProgressListener implements
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceConversationClientManager.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceConversationClientManager.java
index 154632f24fd..6835b8ac928 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceConversationClientManager.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceConversationClientManager.java
@@ -26,6 +26,8 @@ import ch.systemsx.cisd.openbis.generic.shared.conversation.ServiceConversationA
 import ch.systemsx.cisd.openbis.generic.shared.conversation.ServiceConversationDataStoreUrl;
 
 /**
+ * The service conversation client manager used by AS.
+ * 
  * @author pkupczyk
  */
 public class ServiceConversationClientManager extends BaseServiceConversationClientManager
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceConversationServerManager.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceConversationServerManager.java
index a3e51731a48..24355316b18 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceConversationServerManager.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceConversationServerManager.java
@@ -29,9 +29,10 @@ import ch.systemsx.cisd.openbis.generic.shared.conversation.ServiceConversationD
 import ch.systemsx.cisd.openbis.generic.shared.conversation.ServiceConversationDataStoreUrl;
 
 /**
+ * The service conversation server manager used by AS.
+ * 
  * @author pkupczyk
  */
-
 public class ServiceConversationServerManager extends BaseServiceConversationServerManager
         implements IServiceConversationServerManagerLocal, InitializingBean
 {
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/IServiceConversationClientManagerLocal.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/IServiceConversationClientManagerLocal.java
index f1b59270171..50470a60ed9 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/IServiceConversationClientManagerLocal.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/IServiceConversationClientManagerLocal.java
@@ -19,6 +19,8 @@ package ch.systemsx.cisd.openbis.generic.server.business;
 import ch.systemsx.cisd.openbis.generic.shared.IDataStoreService;
 
 /**
+ * A local interface of the service conversation client manager used by AS.
+ * 
  * @author pkupczyk
  */
 public interface IServiceConversationClientManagerLocal
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/IServiceConversationServerManagerLocal.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/IServiceConversationServerManagerLocal.java
index 005e02773c2..b466623d709 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/IServiceConversationServerManagerLocal.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/IServiceConversationServerManagerLocal.java
@@ -17,6 +17,8 @@
 package ch.systemsx.cisd.openbis.generic.server.business;
 
 /**
+ * A local interface of the service conversation server manager used by AS.
+ * 
  * @author pkupczyk
  */
 public interface IServiceConversationServerManagerLocal
-- 
GitLab