Thread: [Comsuite-svn] SF.net SVN: comsuite: [159] trunk/code/CSMiddleware/src/org/commsuite/sap
                
                Brought to you by:
                
                    zduniak
                    
                
            
            
        
        
        
    | 
      
      
      From: <zd...@us...> - 2006-09-23 21:59:51
       | 
| Revision: 159
          http://svn.sourceforge.net/comsuite/?rev=159&view=rev
Author:   zduniak
Date:     2006-09-23 14:59:40 -0700 (Sat, 23 Sep 2006)
Log Message:
-----------
Issue 0001350 resolved
Modified Paths:
--------------
    trunk/code/CSMiddleware/src/org/commsuite/sap/JCoFunctionTranslator.java
    trunk/code/CSMiddleware/src/org/commsuite/sap/SAPComm.java
Modified: trunk/code/CSMiddleware/src/org/commsuite/sap/JCoFunctionTranslator.java
===================================================================
--- trunk/code/CSMiddleware/src/org/commsuite/sap/JCoFunctionTranslator.java	2006-09-23 21:33:24 UTC (rev 158)
+++ trunk/code/CSMiddleware/src/org/commsuite/sap/JCoFunctionTranslator.java	2006-09-23 21:59:40 UTC (rev 159)
@@ -446,9 +446,10 @@
 
 	/**
 	 * Converts JCO.Function objects into an array of
-	 * {@link org.commsuite.model.Message} objects. TODO: change println
-	 * statements to logger statements
+	 * {@link org.commsuite.model.Message} objects. 
 	 * 
+	 * TODO: change println statements to logger statements
+	 * 
 	 * @param function
 	 *            the {@link JCO.Function} object to convert
 	 * @return the converted {@link org.commsuite.model.Message}
@@ -511,14 +512,14 @@
 		msg.setSapID(receiveInfoStructure.getString("COMM_ID"));
 		msg.setSender(receiveInfoStructure.getString("SENDER"));
 		final String format = receiveInfoStructure.getString("ADR_TYPE");
-		if (format.equals("FAX")) {
+		if ("FAX".equals(format)) {
 			msg.setFormatType(FormatType.FAX);
 
 		}
-		if (format.equals("INT")) {
+		if ("INT".equals(format)) {
 			msg.setFormatType(FormatType.EMAIL);
 		}
-		if (format.equals("PAG")) {
+		if ("PAG".equals(format)) {
 			msg.setFormatType(FormatType.SMS);
 		}
 
@@ -564,13 +565,10 @@
 		 * DOCUMENT_DATA structure
 		 */
 		// msg.setObjectName(documentDataStructure.getString("OBJ_NAME"));
-		msg.setDescription(documentDataStructure.getString("OBJ_DESCR")/*
-																		 * ,
-																		 * partnerCharset
-																		 */);
+		msg.setDescription(documentDataStructure.getString("OBJ_DESCR"));
 
 		msg.setPriority(Priority.LEVEL_4); // default
-		Integer priority = new Integer(4);
+		Integer priority = 4;
 		try {
 			priority = (Integer) getOptionalVal("PRIORITY", TYPE_INT,
 					documentDataStructure);
@@ -583,25 +581,25 @@
 		}
 		// REFACTOR same thing with enum can be done here..[SK]
 		if (null != priority) {
-			if (priority.equals(new Integer(0))) {
+			if (priority.equals(0)) {
 				msg.setPriority(Priority.LEVEL_0);
-			} else if (priority.equals(new Integer(1))) {
+			} else if (priority.equals(1)) {
 				msg.setPriority(Priority.LEVEL_1);
-			} else if (priority.equals(new Integer(2))) {
+			} else if (priority.equals(2)) {
 				msg.setPriority(Priority.LEVEL_2);
-			} else if (priority.equals(new Integer(3))) {
+			} else if (priority.equals(3)) {
 				msg.setPriority(Priority.LEVEL_3);
-			} else if (priority.equals(new Integer(4))) {
+			} else if (priority.equals(4)) {
 				msg.setPriority(Priority.LEVEL_4);
-			} else if (priority.equals(new Integer(5))) {
+			} else if (priority.equals(5)) {
 				msg.setPriority(Priority.LEVEL_5);
-			} else if (priority.equals(new Integer(6))) {
+			} else if (priority.equals(6)) {
 				msg.setPriority(Priority.LEVEL_6);
-			} else if (priority.equals(new Integer(7))) {
+			} else if (priority.equals(7)) {
 				msg.setPriority(Priority.LEVEL_7);
-			} else if (priority.equals(new Integer(8))) {
+			} else if (priority.equals(8)) {
 				msg.setPriority(Priority.LEVEL_8);
-			} else if (priority.equals(new Integer(9))) {
+			} else if (priority.equals(9)) {
 				msg.setPriority(Priority.LEVEL_9);
 			}
 		}
Modified: trunk/code/CSMiddleware/src/org/commsuite/sap/SAPComm.java
===================================================================
--- trunk/code/CSMiddleware/src/org/commsuite/sap/SAPComm.java	2006-09-23 21:33:24 UTC (rev 158)
+++ trunk/code/CSMiddleware/src/org/commsuite/sap/SAPComm.java	2006-09-23 21:59:40 UTC (rev 159)
@@ -41,8 +41,8 @@
 import com.sap.mw.jco.JCO.Function;
 
 /**
- * Module responsible for initiationg server-side and client-side communication with the external
- * SAP R/3 system.
+ * Module responsible for initiationg server-side and client-side communication
+ * with the external SAP R/3 system.
  * 
  * TODO: [MZ] Complete comments. REVIEW: [SK] ENCAPSULATION !!!
  * 
@@ -53,552 +53,595 @@
  * @author Agnieszka Wiśniewska
  */
 public class SAPComm implements ISAPComm {
-	
+
 	private MessageManager msgManager;
-	
+
 	private JMSMessageManager jmsManager;
 
-    private long SX_OBJECT_RECEIVE_functionsNumber;
+	private long SX_OBJECT_RECEIVE_functionsNumber;
 
-    private long SX_OBJECT_STATUS_RECEIVE_functionsNumber;
+	private long SX_OBJECT_STATUS_RECEIVE_functionsNumber;
 
-    private long unrecognizedFunctionsNumber;
+	private long unrecognizedFunctionsNumber;
 
-    private long errorsWhileHandlingFunctions;
+	private long errorsWhileHandlingFunctions;
 
-    private final static Logger logger = Logger.getLogger(SAPComm.class);
+	private final static Logger logger = Logger.getLogger(SAPComm.class);
 
-    private static final String JCO_CONNECTIONS_POOL_PREFIX = "CSPool_";
+	private static final String JCO_CONNECTIONS_POOL_PREFIX = "CSPool_";
 
-    private static final String JCO_REPOSITORY_PREFIX = "CSRepo_";
+	private static final String JCO_REPOSITORY_PREFIX = "CSRepo_";
 
-    // TODO: przeniesc wlanczanie/ wylanczanie trace'a do pliku local.properties
-    private static final boolean TRACE_ENABLED = true;
+	// TODO: przeniesc wlanczanie/ wylanczanie trace'a do pliku local.properties
+	private static final boolean TRACE_ENABLED = true;
 
-    /**
-     * Definition of the logging parameters.
-     */
-    private SAPInstanceDef instanceDef;
+	/**
+	 * Definition of the logging parameters.
+	 */
+	private SAPInstanceDef instanceDef;
 
-    /**
-     * Indicate whther module has been corectly initiated.
-     */
-    private boolean initiated;
+	/**
+	 * Indicate whther module has been corectly initiated.
+	 */
+	private boolean initiated;
 
-    /**
-     * Remote repository of the associated SAP R/3 system.
-     */
-    private IRepository repository;
+	/**
+	 * Remote repository of the associated SAP R/3 system.
+	 */
+	private IRepository repository;
 
-    /**
-     * Inner instance of runnig server that registers itself on the remote SAP R/3 server.
-     */
-    private IJCOServer server;
+	/**
+	 * Inner instance of runnig server that registers itself on the remote SAP
+	 * R/3 server.
+	 */
+	private IJCOServer server;
 
-    private boolean handlingRequest;
+	private boolean handlingRequest;
 
-    /**
-     * Inner definition of JCO-based server.
-     */
-    /* package scope */class JCOServer extends JCO.Server implements IJCOServer, UncaughtExceptionHandler {
+	/**
+	 * Inner definition of JCO-based server.
+	 */
+	/* package scope */class JCOServer extends JCO.Server implements
+			IJCOServer, UncaughtExceptionHandler {
 
-        private final Logger logger = Logger.getLogger(SAPComm.JCOServer.class);
+		private final Logger logger = Logger.getLogger(SAPComm.JCOServer.class);
 
-        private final String PARTNER_CHARSET;
+		private final String PARTNER_CHARSET;
 
-        /* package scope */JCOServer() {
-            super(SAPComm.this.getLogonProperties(), SAPComm.this.repository);
-            logger.info("Server registering properties: " + SAPComm.this.getLogonProperties());
-            super.getThread().setUncaughtExceptionHandler(this);
-            JCO.Client client = null;
-            try {
-                client = SAPComm.this.getJCOClient();
-                PARTNER_CHARSET = client.getAttributes().getPartnerCharset();
-            } finally {
-                if (null != client) {
-                    releaseJCOClient(client);
-                }
-            }
-            logger.info("JCO.Server created");
-        }
+		/* package scope */JCOServer() {
+			super(SAPComm.this.getLogonProperties(), SAPComm.this.repository);
+			logger.info("Server registering properties: "
+					+ SAPComm.this.getLogonProperties());
+			super.getThread().setUncaughtExceptionHandler(this);
+			JCO.Client client = null;
+			try {
+				client = SAPComm.this.getJCOClient();
+				PARTNER_CHARSET = client.getAttributes().getPartnerCharset();
+			} finally {
+				if (null != client) {
+					releaseJCOClient(client);
+				}
+			}
+			logger.info("JCO.Server created");
+		}
 
-        @Override
-        protected void handleRequest(final JCO.Function function) {
-            handlingRequest = true;
-            // TODO: rozwazyc czy nie lepiej obslugiwac zgloszenie od klientow w osobnych watkach.
-            // strona: http://eclipsesap2java.sourceforge.net/Tips.htm pkt. 2 wskazuje ze
-            // implementacja
-            // SAP JCo pozwala tylko na jednego zdalnego uzytkownik (jeden SAP R/3) na jedna
-            // instancje
-            // Server JCo (tzn. nie jest ta implementacja analogiczna do specyfikacji Servletow,
-            // gdzie
-            // na jedna instance Servletu teoretycznie moze przypadac dowolna liczba zdalnych
-            // uzytkownikow)
-            handleJCORequest(function, PARTNER_CHARSET);
-            handlingRequest = false;
-        }
+		@Override
+		protected void handleRequest(final JCO.Function function) {
+			handlingRequest = true;
+			// TODO: rozwazyc czy nie lepiej obslugiwac zgloszenie od klientow w
+			// osobnych watkach.
+			// strona: http://eclipsesap2java.sourceforge.net/Tips.htm pkt. 2
+			// wskazuje ze
+			// implementacja
+			// SAP JCo pozwala tylko na jednego zdalnego uzytkownik (jeden SAP
+			// R/3) na jedna
+			// instancje
+			// Server JCo (tzn. nie jest ta implementacja analogiczna do
+			// specyfikacji Servletow,
+			// gdzie
+			// na jedna instance Servletu teoretycznie moze przypadac dowolna
+			// liczba zdalnych
+			// uzytkownikow)
+			handleJCORequest(function, PARTNER_CHARSET);
+			handlingRequest = false;
+		}
 
-        public void serverExceptionOccurred(JCO.Server server, Exception ex) {
-            logger.fatal("Exception in server: " + SAPComm.this.instanceDef.getName() + "[ProgID: "
-                    + server.getProgID() + "]", ex);
-        }
+		public void serverExceptionOccurred(JCO.Server server, Exception ex) {
+			logger.fatal("Exception in server: "
+					+ SAPComm.this.instanceDef.getName() + "[ProgID: "
+					+ server.getProgID() + "]", ex);
+		}
 
-        public void serverStateChangeOccurred(JCO.Server server, int oldState, int newState) {
-            if (logger.isInfoEnabled()) {
-                final TextBuilder sb = new TextBuilder();
-                sb.append("Server: ").append(SAPComm.this.instanceDef.getName())
-                        .append("[ProgID: ").append(server.getProgID()).append("]").append(
-                                " changed state from [");
-                // REFACTOR duplicated code here
-                if ((oldState & JCO.STATE_STOPPED) != 0)
-                    sb.append(" STOPPED ");
-                if ((oldState & JCO.STATE_STARTED) != 0)
-                    sb.append(" STARTED ");
-                if ((oldState & JCO.STATE_LISTENING) != 0)
-                    sb.append(" LISTENING ");
-                if ((oldState & JCO.STATE_TRANSACTION) != 0)
-                    sb.append(" TRANSACTION ");
-                if ((oldState & JCO.STATE_BUSY) != 0)
-                    sb.append(" BUSY ");
+		public void serverStateChangeOccurred(JCO.Server server, int oldState,
+				int newState) {
+			if (logger.isInfoEnabled()) {
+				final TextBuilder sb = new TextBuilder();
+				sb.append("Server: ")
+						.append(SAPComm.this.instanceDef.getName()).append(
+								"[ProgID: ").append(server.getProgID()).append(
+								"]").append(" changed state from [");
+				// REFACTOR duplicated code here
+				if ((oldState & JCO.STATE_STOPPED) != 0)
+					sb.append(" STOPPED ");
+				if ((oldState & JCO.STATE_STARTED) != 0)
+					sb.append(" STARTED ");
+				if ((oldState & JCO.STATE_LISTENING) != 0)
+					sb.append(" LISTENING ");
+				if ((oldState & JCO.STATE_TRANSACTION) != 0)
+					sb.append(" TRANSACTION ");
+				if ((oldState & JCO.STATE_BUSY) != 0)
+					sb.append(" BUSY ");
 
-                sb.append("] to [");
+				sb.append("] to [");
 
-                if ((newState & JCO.STATE_STOPPED) != 0)
-                    sb.append(" STOPPED ");
-                if ((newState & JCO.STATE_STARTED) != 0)
-                    sb.append(" STARTED ");
-                if ((newState & JCO.STATE_LISTENING) != 0)
-                    sb.append(" LISTENING ");
-                if ((newState & JCO.STATE_TRANSACTION) != 0)
-                    sb.append(" TRANSACTION ");
-                if ((newState & JCO.STATE_BUSY) != 0)
-                    sb.append(" BUSY ");
+				if ((newState & JCO.STATE_STOPPED) != 0)
+					sb.append(" STOPPED ");
+				if ((newState & JCO.STATE_STARTED) != 0)
+					sb.append(" STARTED ");
+				if ((newState & JCO.STATE_LISTENING) != 0)
+					sb.append(" LISTENING ");
+				if ((newState & JCO.STATE_TRANSACTION) != 0)
+					sb.append(" TRANSACTION ");
+				if ((newState & JCO.STATE_BUSY) != 0)
+					sb.append(" BUSY ");
 
-                sb.append("]");
+				sb.append("]");
 
-                logger.info(sb.toString());
-            }
-        }
+				logger.info(sb.toString());
+			}
+		}
 
-        public void serverErrorOccurred(JCO.Server server, Error error) {
-            logger.fatal("Error in server: " + SAPComm.this.instanceDef.getName() + "[ProgID: "
-                    + server.getProgID() + "]", error);
-            
-            // TODO: consider stopping SAP server in exceptional situation: 
-            // stopServer();
-        }
-        
-        public void uncaughtException(Thread t, Throwable e) {
-        	logger.fatal("UncaughtException in server: " + SAPComm.this.instanceDef.getName(), e);
-        	
-            // TODO: consider stopping SAP server in exceptional situation: 
-            // stopServer();
-        }
-    }
+		public void serverErrorOccurred(JCO.Server server, Error error) {
+			logger.fatal("Error in server: "
+					+ SAPComm.this.instanceDef.getName() + "[ProgID: "
+					+ server.getProgID() + "]", error);
 
-    public IJCOServer getServer() {
+			// TODO: consider stopping SAP server in exceptional situation:
+			// stopServer();
+		}
+
+		public void uncaughtException(Thread t, Throwable e) {
+			logger.fatal("UncaughtException in server: "
+					+ SAPComm.this.instanceDef.getName(), e);
+
+			// TODO: consider stopping SAP server in exceptional situation:
+			// stopServer();
+		}
+	}
+
+	public IJCOServer getServer() {
 		return server;
 	}
 
 	public void handleJCORequest(final JCO.Function function, String charset) {
-        try {
-            logger.info("Handling request for function: " + function.getName());
-            if (JCoFunctionTranslator.SX_OBJECT_RECEIVE.equals(function.getName())) {
-                final Message[] messages = JCoFunctionTranslator.getMessagesFromJCOFunction(
-                        function, charset);
+		try {
+			logger.info("Handling request for function: " + function.getName());
+			if (JCoFunctionTranslator.SX_OBJECT_RECEIVE.equals(function
+					.getName())) {
+				final Message[] messages = JCoFunctionTranslator
+						.getMessagesFromJCOFunction(function, charset);
 
-                if (null == msgManager) {
-                	msgManager = SpringMiddlewareContext.getMessageManager();
-                }
-                
-                if (null == jmsManager) {
-                	jmsManager = SpringMiddlewareContext.getJMSManager();
-                }
+				if (null != messages && messages.length > 0
+						&& 0 == messages[0].getSentContents().size()) {
+					throw new JCO.AbapException("INTERNAL",
+							"Message without any content is not supported");
+				}
 
-                final Date currentDate = new Date();
-                for (Message msg : messages) {
-                    msg.setSAPInstanceDefOwner(instanceDef);
-                    if (null == msg.getSendDate()) {
-                        msg.setSendDate(currentDate);
-                    }
-                    msg = msgManager.saveMessage(msg);
-                    jmsManager.sendMessage(SpringMiddlewareBeansConstants.M_OUT_ROUTER_QUEUE_NAME,
-                            msg);
-                }
+				if (null == msgManager) {
+					msgManager = SpringMiddlewareContext.getMessageManager();
+				}
 
-                SX_OBJECT_RECEIVE_functionsNumber++;
-            } else if (JCoFunctionTranslator.SX_OBJECT_STATUS_RECEIVE.equals(function.getName())) {
-                // TODO: implement receiving status information
-                final Message messageToUpdate = SpringMiddlewareContext.getMessageManager()
-                        .getMessageBySapIdAndSAPInstanceDef("TODO:someId", this.instanceDef);
+				if (null == jmsManager) {
+					jmsManager = SpringMiddlewareContext.getJMSManager();
+				}
 
-                SX_OBJECT_STATUS_RECEIVE_functionsNumber++;
-            } else {
-                if (false == JCOFunctionsImplementation.serveFunction(function, charset)) {
-                    logger.warn("SAP JCO function: " + function.getName() + " not supported.");
-                    this.unrecognizedFunctionsNumber++;
-                    throw new JCO.AbapException("INTERNAL", "Function " + function.getName()
-                            + " not supported.");
-                }
-            }
-        } catch (JCO.AbapException ex) {
-            logger.fatal("AbapException during handlig request", ex);
-            errorsWhileHandlingFunctions++;
-            throw ex;
-        } catch (Throwable t) {
-            logger.fatal("Unrecognized exception during handlig request", t);
-            errorsWhileHandlingFunctions++;
-            throw new JCO.AbapException("SYSTEM_FAILURE", t.getMessage());
-        }
-    }
+				final Date currentDate = new Date();
+				for (Message msg : messages) {
+					msg.setSAPInstanceDefOwner(instanceDef);
+					if (null == msg.getSendDate()) {
+						msg.setSendDate(currentDate);
+					}
+					msg = msgManager.saveMessage(msg);
+					jmsManager
+							.sendMessage(
+									SpringMiddlewareBeansConstants.M_OUT_ROUTER_QUEUE_NAME,
+									msg);
+				}
 
-    /**
-     * REVIEW: public ? what for ? i dont think that this method is necessary at all.
-     * 
-     * @param server
-     *            The server to set.
-     */
-    public void setServer(IJCOServer server) {
-        this.server = server;
-    }
+				SX_OBJECT_RECEIVE_functionsNumber++;
+			} else if (JCoFunctionTranslator.SX_OBJECT_STATUS_RECEIVE
+					.equals(function.getName())) {
+				// TODO: implement receiving status information
+				final Message messageToUpdate = SpringMiddlewareContext
+						.getMessageManager()
+						.getMessageBySapIdAndSAPInstanceDef("TODO:someId",
+								this.instanceDef);
 
-    /**
-     * @return Returns whether initiated
-     */
-    public boolean isInitiated() {
-        return initiated;
-    }
+				SX_OBJECT_STATUS_RECEIVE_functionsNumber++;
+			} else {
+				if (false == JCOFunctionsImplementation.serveFunction(function,
+						charset)) {
+					logger.warn("SAP JCO function: " + function.getName()
+							+ " not supported.");
+					this.unrecognizedFunctionsNumber++;
+					throw new JCO.AbapException("INTERNAL", "Function "
+							+ function.getName() + " not supported.");
+				}
+			}
+		} catch (JCO.AbapException ex) {
+			logger.fatal("AbapException during handlig request", ex);
+			errorsWhileHandlingFunctions++;
+			throw ex;
+		} catch (Throwable t) {
+			logger.fatal("Unrecognized exception during handlig request", t);
+			errorsWhileHandlingFunctions++;
+			throw new JCO.AbapException("SYSTEM_FAILURE", t.getMessage());
+		}
+	}
 
-    /**
-     * @param initiated
-     *            The initiated to set.
-     */
-    /* package scope */void setInitiated(boolean initiated) {
-        this.initiated = initiated;
-    }
+	/**
+	 * REVIEW: public ? what for ? i dont think that this method is necessary at
+	 * all.
+	 * 
+	 * @param server
+	 *            The server to set.
+	 */
+	public void setServer(IJCOServer server) {
+		this.server = server;
+	}
 
-    /**
-     * Default public constructor.
-     */
-    public SAPComm() {
-        super();
-    }
+	/**
+	 * @return Returns whether initiated
+	 */
+	public boolean isInitiated() {
+		return initiated;
+	}
 
-    /**
-     * @return Returns the instanceDef.
-     */
-    public SAPInstanceDef getInstanceDef() {
-        return instanceDef;
-    }
+	/**
+	 * @param initiated
+	 *            The initiated to set.
+	 */
+	/* package scope */void setInitiated(boolean initiated) {
+		this.initiated = initiated;
+	}
 
-    /**
-     * @param instanceDef
-     *            The instanceDef to set.
-     */
-    /* package scope */void setInstanceDef(SAPInstanceDef instanceDef) {
-        this.instanceDef = instanceDef;
-    }
+	/**
+	 * Default public constructor.
+	 */
+	public SAPComm() {
+		super();
+	}
 
-    /**
-     * @param instanceDef
-     *            Definition of the logging parameters
-     * @throws IllegalArgumentException
-     */
-    public void init(SAPInstanceDef instanceDef) {
-        if (null == instanceDef) {
-            throw new IllegalArgumentException("Given instanceDef parameter can not be null.");
-        }
-        if (initiated) {
-            destroy();
-        }
-        this.instanceDef = instanceDef;
-        initSAPConnections();
-        initRepository();
-        initiated = true;
-    }
+	/**
+	 * @return Returns the instanceDef.
+	 */
+	public SAPInstanceDef getInstanceDef() {
+		return instanceDef;
+	}
 
-    private void initRepository() {
-        repository = JCO.createRepository(getRepositoryName(), getPoolName());
-    }
+	/**
+	 * @param instanceDef
+	 *            The instanceDef to set.
+	 */
+	/* package scope */void setInstanceDef(SAPInstanceDef instanceDef) {
+		this.instanceDef = instanceDef;
+	}
 
-    private void initSAPConnections() {
-        releaseSAPConnections();
+	/**
+	 * @param instanceDef
+	 *            Definition of the logging parameters
+	 * @throws IllegalArgumentException
+	 */
+	public void init(SAPInstanceDef instanceDef) {
+		if (null == instanceDef) {
+			throw new IllegalArgumentException(
+					"Given instanceDef parameter can not be null.");
+		}
+		if (initiated) {
+			destroy();
+		}
+		this.instanceDef = instanceDef;
+		initSAPConnections();
+		initRepository();
+		initiated = true;
+	}
 
-        // creating a new connection pool
-        final String poolName = getPoolName();
-        JCO.addClientPool(poolName, instanceDef.getMaxConnectionsInPool(), getLogonProperties());
-        final JCO.Pool pool = JCO.getClientPoolManager().getPool(poolName);
-        pool.setMaxConnections(2 * instanceDef.getMaxConnectionsInPool());
-        pool.setTrace(TRACE_ENABLED);
-    }
+	private void initRepository() {
+		repository = JCO.createRepository(getRepositoryName(), getPoolName());
+	}
 
-    /* package scope */Properties getLogonProperties() {
-        final String JCO_CLIENT_PREFIX = "jco.client.";
-        final String JCO_SERVER_PREFIX = "jco.server.";
-        final Properties props = new Properties();
+	private void initSAPConnections() {
+		releaseSAPConnections();
 
-        // client properties:
-        props.put(JCO_CLIENT_PREFIX + "client", instanceDef.getClient());
-        props.put(JCO_CLIENT_PREFIX + "user", instanceDef.getUser());
-        props.put(JCO_CLIENT_PREFIX + "passwd", instanceDef.getPassword());
+		// creating a new connection pool
+		final String poolName = getPoolName();
+		JCO.addClientPool(poolName, instanceDef.getMaxConnectionsInPool(),
+				getLogonProperties());
+		final JCO.Pool pool = JCO.getClientPoolManager().getPool(poolName);
+		pool.setMaxConnections(2 * instanceDef.getMaxConnectionsInPool());
+		pool.setTrace(TRACE_ENABLED);
+	}
 
-        // if (null != instanceDef.getLanguage()) {
-        // props.put(JCO_CLIENT_PREFIX + "lang", instanceDef.getLanguage());
-        // }
+	/* package scope */Properties getLogonProperties() {
+		final String JCO_CLIENT_PREFIX = "jco.client.";
+		final String JCO_SERVER_PREFIX = "jco.server.";
+		final Properties props = new Properties();
 
-        if (instanceDef.isLoadBalancing()) {
-            props.put(JCO_CLIENT_PREFIX + "r3name", instanceDef.getR3name());
-            props.put(JCO_CLIENT_PREFIX + "group", instanceDef.getGroup());
-            props.put(JCO_CLIENT_PREFIX + "mshost", instanceDef.getHost());
+		// client properties:
+		props.put(JCO_CLIENT_PREFIX + "client", instanceDef.getClient());
+		props.put(JCO_CLIENT_PREFIX + "user", instanceDef.getUser());
+		props.put(JCO_CLIENT_PREFIX + "passwd", instanceDef.getPassword());
 
-        } else {
-            props.put(JCO_CLIENT_PREFIX + "sysnr", instanceDef.getSystemNumber());
-            props.put(JCO_CLIENT_PREFIX + "ashost", instanceDef.getHost());
-        }
+		// if (null != instanceDef.getLanguage()) {
+		// props.put(JCO_CLIENT_PREFIX + "lang", instanceDef.getLanguage());
+		// }
 
-        props.put(JCO_CLIENT_PREFIX + "trace", TRACE_ENABLED ? "1" : "0");
-        props.put(JCO_CLIENT_PREFIX + "lcheck", "1");
+		if (instanceDef.isLoadBalancing()) {
+			props.put(JCO_CLIENT_PREFIX + "r3name", instanceDef.getR3name());
+			props.put(JCO_CLIENT_PREFIX + "group", instanceDef.getGroup());
+			props.put(JCO_CLIENT_PREFIX + "mshost", instanceDef.getHost());
 
-        // server properties:
-        props.put(JCO_SERVER_PREFIX + "gwhost", instanceDef.getGwhost());
-        props.put(JCO_SERVER_PREFIX + "gwserv", instanceDef.getGwserv());
-        props.put(JCO_SERVER_PREFIX + "progid", instanceDef.getProgid());
-        props.put(JCO_SERVER_PREFIX + "unicode", instanceDef.isUnicode() ? "1" : "0");
+		} else {
+			props.put(JCO_CLIENT_PREFIX + "sysnr", instanceDef
+					.getSystemNumber());
+			props.put(JCO_CLIENT_PREFIX + "ashost", instanceDef.getHost());
+		}
 
-        return props;
-    }
+		props.put(JCO_CLIENT_PREFIX + "trace", TRACE_ENABLED ? "1" : "0");
+		props.put(JCO_CLIENT_PREFIX + "lcheck", "1");
 
-    private void releaseSAPConnections() {
-        // testing whether connection pool already exists:
-        final JCO.Pool pool = JCO.getClientPoolManager().getPool(getPoolName());
-        if (null != pool) {
-            // pool already exists, so we remove it
-            JCO.getClientPoolManager().removePool(getPoolName());
-        }
-    }
+		// server properties:
+		props.put(JCO_SERVER_PREFIX + "gwhost", instanceDef.getGwhost());
+		props.put(JCO_SERVER_PREFIX + "gwserv", instanceDef.getGwserv());
+		props.put(JCO_SERVER_PREFIX + "progid", instanceDef.getProgid());
+		props.put(JCO_SERVER_PREFIX + "unicode", instanceDef.isUnicode() ? "1"
+				: "0");
 
-    private String getPoolName() {
-        return JCO_CONNECTIONS_POOL_PREFIX + instanceDef.getName();
-    }
+		return props;
+	}
 
-    private String getRepositoryName() {
-        return JCO_REPOSITORY_PREFIX + instanceDef.getName();
-    }
+	private void releaseSAPConnections() {
+		// testing whether connection pool already exists:
+		final JCO.Pool pool = JCO.getClientPoolManager().getPool(getPoolName());
+		if (null != pool) {
+			// pool already exists, so we remove it
+			JCO.getClientPoolManager().removePool(getPoolName());
+		}
+	}
 
-    /* package scope */JCO.Client getJCOClient() {
-        return JCO.getClient(getPoolName());
-    }
+	private String getPoolName() {
+		return JCO_CONNECTIONS_POOL_PREFIX + instanceDef.getName();
+	}
 
-    private void releaseJCOClient(JCO.Client client) {
-        JCO.releaseClient(client);
-    }
+	private String getRepositoryName() {
+		return JCO_REPOSITORY_PREFIX + instanceDef.getName();
+	}
 
-    public void destroy() {
-        stopServer();
-        releaseSAPConnections();
-        instanceDef = null;
-        initiated = false;
-    }
+	/* package scope */JCO.Client getJCOClient() {
+		return JCO.getClient(getPoolName());
+	}
 
-    public void stopServer() {
-        if (null != server && server.isAlive()) {
-            logger.debug("Stopping SAP server");
-            server.stop();
-            server.abort("Connection aborted by administrator.");
-        } else {
-            logger.debug("SAP server already stopped");
-        }
-        server = null;
-        logger.debug("SAP server STOPPED");
-    }
+	private void releaseJCOClient(JCO.Client client) {
+		JCO.releaseClient(client);
+	}
 
-    /**
-     * this method was created only to be override in tests
-     * 
-     * @return new {@link SAPComm.JCOServer} instance
-     */
-    /* package scope */IJCOServer getNewJCOServer() {
-        return this.new JCOServer();
-    }
+	public void destroy() {
+		stopServer();
+		releaseSAPConnections();
+		instanceDef = null;
+		initiated = false;
+	}
 
-    public void startServer() {
-        if (!isRemoteSystemWorking()) {
-            logger.error("Remote system is not working: " + getName());
-            return;
-        }
-        stopServer();
-        server = getNewJCOServer();
-        server.setTrace(TRACE_ENABLED);
-        JCO.addServerExceptionListener(server);
-        JCO.addServerStateChangedListener(server);
-        JCO.addServerErrorListener(server);
-        server.start();
-    }
+	public void stopServer() {
+		if (null != server && server.isAlive()) {
+			logger.debug("Stopping SAP server");
+			server.stop();
+			server.abort("Connection aborted by administrator.");
+		} else {
+			logger.debug("SAP server already stopped");
+		}
+		server = null;
+		logger.debug("SAP server STOPPED");
+	}
 
-    /**
-     * @return true if message was sent, false if sending failed
-     */
-    public boolean sendMessage(Message message) {
-        logger.debug("Sending message: " + message.toString());
+	/**
+	 * this method was created only to be override in tests
+	 * 
+	 * @return new {@link SAPComm.JCOServer} instance
+	 */
+	/* package scope */IJCOServer getNewJCOServer() {
+		return this.new JCOServer();
+	}
 
-        JCO.Client client = null;
-        try {
-            // setting correct receiver:
-            message.setReceiver(instanceDef.getAdminEma...
 
[truncated message content] | 
| 
      
      
      From: <zd...@us...> - 2006-10-04 00:48:22
       | 
| Revision: 186
          http://svn.sourceforge.net/comsuite/?rev=186&view=rev
Author:   zduniak
Date:     2006-10-02 09:53:42 -0700 (Mon, 02 Oct 2006)
Log Message:
-----------
Code cleanup
Modified Paths:
--------------
    trunk/code/CSMiddleware/src/org/commsuite/sap/JCoFunctionTranslator.java
    trunk/code/CSMiddleware/src/org/commsuite/sap/SAPCommManager.java
Modified: trunk/code/CSMiddleware/src/org/commsuite/sap/JCoFunctionTranslator.java
===================================================================
--- trunk/code/CSMiddleware/src/org/commsuite/sap/JCoFunctionTranslator.java	2006-10-02 16:49:49 UTC (rev 185)
+++ trunk/code/CSMiddleware/src/org/commsuite/sap/JCoFunctionTranslator.java	2006-10-02 16:53:42 UTC (rev 186)
@@ -24,7 +24,6 @@
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
-import java.util.Arrays;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
@@ -76,6 +75,9 @@
 
 	private final static int TYPE_CHAR = 4;
 
+	/**
+	 * TODO: JavaDoc
+	 */
 	public static JCO.Function getJCOFunctionFromNotification(
 			Notification notification, IRepository repository) {
 		final JCO.Function f = repository.getFunctionTemplate(
@@ -835,28 +837,28 @@
 		return result.toArray(new Message[result.size()]);
 	}
 
+	/**
+	 * TODO: JavaDoc
+	 */
 	private static byte[] convertBytes(final byte[] data, String fromCharset,
 			String toCharset) {
-		
-		// hack
-//		if ("UnicodeLittle".equalsIgnoreCase(fromCharset)) {
-//			fromCharset = "UTF-8";
-//		}
-		// end of hack
-		
 		try {
 			final String tmp = new String(data, fromCharset);
 			if (data.length > 0 && tmp.length() == 0) {
+				logger.warn("Charsets: from '" + fromCharset + "' produced empty string");
 				return data;
 			}
 			return tmp.getBytes(toCharset);
 		} catch (UnsupportedEncodingException e) {
-			logger.warn("Charsets: '" + fromCharset + "', '" + toCharset
+			logger.warn("Charsets: from: '" + fromCharset + "' to '" + toCharset
 					+ "' not supported", e);
 			return data;
 		}
 	}
 
+	/**
+	 * TODO: JavaDoc
+	 */
 	private static Object getOptionalVal(String name, int type,
 			com.sap.mw.jco.JCO.Record rec) {
 		Object val = null;
Modified: trunk/code/CSMiddleware/src/org/commsuite/sap/SAPCommManager.java
===================================================================
--- trunk/code/CSMiddleware/src/org/commsuite/sap/SAPCommManager.java	2006-10-02 16:49:49 UTC (rev 185)
+++ trunk/code/CSMiddleware/src/org/commsuite/sap/SAPCommManager.java	2006-10-02 16:53:42 UTC (rev 186)
@@ -74,6 +74,9 @@
         return Collections.unmodifiableMap(this.sapComms);
     }
 
+    /**
+	 * TODO: JavaDoc
+	 */
     public SAPCommManager() {
         super();
         sapComms = new FastMap<String, ISAPComm>();
@@ -91,6 +94,9 @@
         this.sapComms = sapComms;
     }
 
+    /**
+	 * TODO: JavaDoc
+	 */
     public void sendMessageToDefault(Message message) {
         logger.debug("Sending message to default SAP servers");
 
@@ -113,6 +119,9 @@
         }
     }
 
+    /**
+	 * TODO: JavaDoc
+	 */
     public void init() {
         logger.debug("Running init() method in SAPCommManager (size: " + sapComms.size() + ")");
 
@@ -140,6 +149,9 @@
         }
     }
 
+    /**
+	 * TODO: JavaDoc
+	 */
     private void initJCOTracePath() {
         final String jcoTracePath = getClass().getResource("/").getPath() + ".." + File.separator
                 + ".." + File.separator + ".." + File.separator + ".." + File.separator + "logs"
@@ -151,6 +163,9 @@
 
     }
 
+    /**
+	 * TODO: JavaDoc
+	 */
     public void destroy() {
         logger.info("Destroying SAPCommManager");
         for (final ISAPComm sapComm : sapComms.values()) {
@@ -159,6 +174,9 @@
         logger.info("SAPCommManager destroyed");
     }
 
+    /**
+	 * TODO: JavaDoc
+	 */
     // TODO: should this method be sensitive on active field??
     public void setSapInstances(Collection<SAPInstanceDef> sapInstances) {
         // TODO: init sapComms collection with values from DB
@@ -186,6 +204,9 @@
         }
     }
 
+    /**
+	 * TODO: JavaDoc
+	 */
     // TODO: should this method be sensitive on active field??
     public void setSapInstance(SAPInstanceDef instance) {
     	if (!isEnabled()) {
@@ -199,20 +220,32 @@
         sapComms.put(sapComm.getName(), sapComm);
     }
 
+    /**
+	 * TODO: JavaDoc
+	 */
     public void setNotificationsManager(INotificationsManager notificationsManager) {
         this.notificationsManager = notificationsManager;
     }
 
+    /**
+	 * TODO: JavaDoc
+	 */
     public boolean isEnabled() {
         return enabled;
     }
 
+    /**
+	 * TODO: JavaDoc
+	 */
     /* package scope */void checkExistenceOfSAPInstance(String instanceName) {
         if (!sapComms.containsKey(instanceName)) {
             throw new SAPInstanceException("Instance: " + instanceName + " does not exist.");
         }
     }
 
+    /**
+	 * TODO: JavaDoc
+	 */
     public void startInstance(String instanceName) {
         logger.info("Starting instance: " + instanceName);
         checkExistenceOfSAPInstance(instanceName);
@@ -226,6 +259,9 @@
         }
     }
 
+    /**
+	 * TODO: JavaDoc
+	 */
     public void stopInstance(String instanceName) {
         logger.info("Stopping instance: " + instanceName);
         checkExistenceOfSAPInstance(instanceName);
@@ -234,6 +270,9 @@
         logger.info("Instance stopped: " + instanceName);
     }
 
+    /**
+	 * TODO: JavaDoc
+	 */
     public void destroyInstance(String instanceName) {
         logger.info("Destroying instance: " + instanceName);
         checkExistenceOfSAPInstance(instanceName);
@@ -244,10 +283,16 @@
         logger.info("Instance destroyed: " + instanceName);
     }
 
+    /**
+	 * TODO: JavaDoc
+	 */
     public ISAPComm getSAPCommByName(String name) {
         return sapComms.get(name);
     }
 
+    /**
+	 * TODO: JavaDoc
+	 */
 	public boolean isSapServerWorking(String name) {
 		ISAPComm SappCommByName = getSAPCommByName(name);
 		return (null != SappCommByName && null != SappCommByName.getServer());
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <zd...@us...> - 2006-10-04 00:48:38
       | 
| Revision: 185
          http://svn.sourceforge.net/comsuite/?rev=185&view=rev
Author:   zduniak
Date:     2006-10-02 09:49:49 -0700 (Mon, 02 Oct 2006)
Log Message:
-----------
Code cleanup
Modified Paths:
--------------
    trunk/code/CSMiddleware/src/org/commsuite/sap/JCoFunctionTranslator.java
    trunk/code/CSMiddleware/src/org/commsuite/sap/SAPComm.java
Modified: trunk/code/CSMiddleware/src/org/commsuite/sap/JCoFunctionTranslator.java
===================================================================
--- trunk/code/CSMiddleware/src/org/commsuite/sap/JCoFunctionTranslator.java	2006-10-02 15:18:41 UTC (rev 184)
+++ trunk/code/CSMiddleware/src/org/commsuite/sap/JCoFunctionTranslator.java	2006-10-02 16:49:49 UTC (rev 185)
@@ -367,7 +367,7 @@
 
 			final String mimeType = con.getMimeType();
 
-			logger.debug("ContentType: " + mimeType);
+			logger.info("ContentType: " + mimeType);
 
 			final String docTypeFieldName = "DOC_TYPE";
 
@@ -466,7 +466,7 @@
 		}
 		final Message msg = new Message();
 
-		logger.info("using charset: " + partnerCharset);
+		logger.debug("Using charset: " + partnerCharset);
 
 		// TODO: [AW] w parametrach wyjsciowych powinnismy jeszcze ustalic ze
 		// SAP informacje
@@ -665,7 +665,6 @@
 				final int bodyNum = packingList.getInt("BODY_NUM");
 
 				logger.debug("BEFORE msg.getSentContents().size(): " + msg.getSentContents().size());
-				logger.debug("BEFORE content.getData(): " + content.getData());
 				
 				final String transfBin = packingList.getString("TRANSF_BIN");
 				if ("X".equals(transfBin)) {
@@ -684,7 +683,6 @@
 					
 					final byte[] data = baos.toByteArray();
 					logger.debug("data.length: " + data.length);
-					logger.debug("data: " + Arrays.toString(data));
 					
 					content.setData(data);
 					msg.addContents(content);
@@ -706,19 +704,14 @@
 
 					final byte[] data = baos.toByteArray();
 					logger.debug("data.length: " + data.length);
-					logger.debug("data: " + Arrays.toString(data));
 					final byte[] convertedData = convertBytes(data,
 							partnerCharset, "UTF-8");
-					logger.debug("data.convertedData: " + Arrays.toString(convertedData));
-					logger.debug("data.convertedData.txt: " + new String(data));
-					logger.debug("data.txt: " + new String(convertedData));
 					
 					content.setData(convertedData);
 					msg.addContents(content);
 				}
 				
 				logger.debug("AFTER msg.getSentContents().size(): " + msg.getSentContents().size());
-				logger.debug("AFTER content.getData(): " + content.getData());
 
 				final String documentType = (String) getOptionalVal("DOC_TYPE",
 						TYPE_STRING, packingList);
Modified: trunk/code/CSMiddleware/src/org/commsuite/sap/SAPComm.java
===================================================================
--- trunk/code/CSMiddleware/src/org/commsuite/sap/SAPComm.java	2006-10-02 15:18:41 UTC (rev 184)
+++ trunk/code/CSMiddleware/src/org/commsuite/sap/SAPComm.java	2006-10-02 16:49:49 UTC (rev 185)
@@ -529,7 +529,7 @@
 	 * 
 	 * @return new {@link SAPComm.JCOServer} instance
 	 */
-	/* package scope */public IJCOServer getNewJCOServer() {
+	public IJCOServer getNewJCOServer() {
 		return this.new JCOServer();
 	}
 
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 |