You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by ru...@apache.org on 2008/06/09 12:43:22 UTC

svn commit: r664672 [1/7] - in /synapse/trunk/java: ./ modules/core/ modules/core/src/main/java/org/apache/synapse/ modules/core/src/main/java/org/apache/synapse/config/ modules/core/src/main/java/org/apache/synapse/config/xml/ modules/core/src/main/ja...

Author: ruwan
Date: Mon Jun  9 03:43:19 2008
New Revision: 664672

URL: http://svn.apache.org/viewvc?rev=664672&view=rev
Log:
Merging the 1.2 branch back to the trunk, with changing the version to SNAPSHOT

Added:
    synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/format/BinaryBuilder.java
      - copied unchanged from r664651, synapse/branches/1.2/modules/transports/src/main/java/org/apache/synapse/format/BinaryBuilder.java
    synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/format/PlainTextBuilder.java
      - copied unchanged from r664651, synapse/branches/1.2/modules/transports/src/main/java/org/apache/synapse/format/PlainTextBuilder.java
    synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/util/SharedInputBuffer.java
      - copied unchanged from r664651, synapse/branches/1.2/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/util/SharedInputBuffer.java
    synapse/trunk/java/repository/conf/sample/synapse_sample_155.xml
      - copied unchanged from r664651, synapse/branches/1.2/repository/conf/sample/synapse_sample_155.xml
Removed:
    synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/util/PipeImpl.java
Modified:
    synapse/trunk/java/modules/core/pom.xml
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/ServerManager.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseServer.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfigUtils.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfiguration.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfigurationBuilder.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MediatorSerializerFinder.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointFactory.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointSerializer.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DefaultEndpointFactory.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DefaultEndpointSerializer.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/EndpointFactory.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/EndpointSerializer.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/FailoverEndpointFactory.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/LoadbalanceEndpointFactory.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/SALoadbalanceEndpointFactory.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/WSDLEndpointFactory.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/WSDLEndpointSerializer.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/utils/WSDL11EndpointBuilder.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2SynapseEnvironment.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/ProxyService.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseCallbackReceiver.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseInitializationModule.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseStartUpServlet.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/TimeoutHandler.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/AddressEndpoint.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/DefaultEndpoint.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/EndpointContext.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/FailoverEndpoint.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/IndirectEndpoint.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/LoadbalanceEndpoint.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/SALoadbalanceEndpoint.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/WSDLEndpoint.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/algorithms/AlgorithmContext.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/algorithms/RoundRobin.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/dispatch/Dispatcher.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/dispatch/DispatcherContext.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/dispatch/HttpSessionDispatcher.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/dispatch/SimpleClientSessionDispatcher.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/dispatch/SoapSessionDispatcher.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/CalloutMediator.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/SendMediator.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/eip/aggregator/Aggregate.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/quartz/SimpleQuartz.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/DataSourceRegistrar.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/RMIRegistryController.java
    synapse/trunk/java/modules/core/src/main/resources/log4j.properties
    synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/mediators/db/DBLookupMediatorTest.java
    synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/mediators/db/DBReportMediatorTest.java
    synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/n2n/SynapseCommodityServiceTest.java
    synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/util/MessageHelperTest.java
    synapse/trunk/java/modules/extensions/pom.xml
    synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ScriptMediator.java
    synapse/trunk/java/modules/handler/pom.xml
    synapse/trunk/java/modules/handler/src/main/java/org/apache/synapse/handler/SynapseModule.java
    synapse/trunk/java/modules/mar/pom.xml
    synapse/trunk/java/modules/samples/pom.xml
    synapse/trunk/java/modules/samples/services/FastStockQuoteService/wsdl/FastStockQuoteService.wsdl
    synapse/trunk/java/modules/samples/src/main/java/samples/userguide/FIXClient.java
    synapse/trunk/java/modules/samples/src/main/java/samples/userguide/LoadbalanceFailoverClient.java
    synapse/trunk/java/modules/samples/src/main/java/samples/userguide/MTOMSwAClient.java
    synapse/trunk/java/modules/samples/src/main/java/samples/userguide/ThreadedClient.java
    synapse/trunk/java/modules/samples/src/main/scripts/build.xml
    synapse/trunk/java/modules/samples/src/test/java/org/apache/synapse/samples/n2n/AbstractAutomationTestCase.java
    synapse/trunk/java/modules/samples/src/test/java/org/apache/synapse/samples/n2n/SynapseSample_102_Integration.java
    synapse/trunk/java/modules/samples/src/test/java/org/apache/synapse/samples/n2n/SynapseSample_51_Integration.java
    synapse/trunk/java/modules/transports/pom.xml
    synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/base/AbstractPollingTransportListener.java
    synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/base/AbstractTransportListener.java
    synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/base/BaseUtils.java
    synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/jms/JMSListener.java
    synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/jms/JMSUtils.java
    synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/mail/MailTransportListener.java
    synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/mail/MailUtils.java
    synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/Axis2HttpRequest.java
    synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ClientHandler.java
    synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ClientWorker.java
    synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ConnectionPool.java
    synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/HttpCoreNIOListener.java
    synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/HttpCoreNIOSender.java
    synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/NHttpConfiguration.java
    synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/NhttpConstants.java
    synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ServerHandler.java
    synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ServerWorker.java
    synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/vfs/VFSTransportListener.java
    synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/vfs/VFSUtils.java
    synapse/trunk/java/modules/war/pom.xml
    synapse/trunk/java/pom.xml
    synapse/trunk/java/repository/conf/axis2.xml
    synapse/trunk/java/repository/conf/sample-server-wrapper.conf
    synapse/trunk/java/repository/conf/sample/resources/misc/server/axis2.xml
    synapse/trunk/java/repository/conf/synapse.properties
    synapse/trunk/java/repository/conf/web.xml
    synapse/trunk/java/repository/conf/wrapper.conf
    synapse/trunk/java/src/main/assembly/bin.xml
    synapse/trunk/java/src/main/bin/synapse.bat
    synapse/trunk/java/src/main/bin/synapse.sh
    synapse/trunk/java/src/main/release/NOTICE
    synapse/trunk/java/src/main/release/README.txt
    synapse/trunk/java/src/main/release/docs/release_notes.txt
    synapse/trunk/java/src/site/xdoc/Synapse_Configuration_Language.xml
    synapse/trunk/java/src/site/xdoc/Synapse_Extending.xml
    synapse/trunk/java/src/site/xdoc/Synapse_QuickStart.xml
    synapse/trunk/java/src/site/xdoc/Synapse_Samples.xml
    synapse/trunk/java/src/site/xdoc/Synapse_Samples_Setup.xml

Modified: synapse/trunk/java/modules/core/pom.xml
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/pom.xml?rev=664672&r1=664671&r2=664672&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/pom.xml (original)
+++ synapse/trunk/java/modules/core/pom.xml Mon Jun  9 03:43:19 2008
@@ -26,7 +26,7 @@
     <parent>
         <groupId>org.apache.synapse</groupId>
         <artifactId>Apache-Synapse</artifactId>
-        <version>1.2-SNAPSHOT</version>
+        <version>SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/ServerManager.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/ServerManager.java?rev=664672&r1=664671&r2=664672&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/ServerManager.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/ServerManager.java Mon Jun  9 03:43:19 2008
@@ -24,11 +24,14 @@
 import org.apache.axis2.description.TransportInDescription;
 import org.apache.axis2.description.AxisService;
 import org.apache.axis2.description.AxisModule;
+import org.apache.axis2.engine.AxisConfiguration;
 import org.apache.axis2.engine.ListenerManager;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.synapse.config.SynapseConfiguration;
 import org.apache.synapse.core.SynapseEnvironment;
+import org.apache.synapse.format.BinaryBuilder;
+import org.apache.synapse.format.PlainTextBuilder;
 import org.apache.synapse.transport.nhttp.NhttpConstants;
 import org.apache.synapse.util.ClasspathURLStreamHandler;
 import org.apache.synapse.util.RMIRegistryController;
@@ -49,40 +52,48 @@
 
 public class ServerManager {
 
-    private static ServerManager instance;
     private static final Log log = LogFactory.getLog(ServerManager.class);
+
+    /** The singleton server manager instance */
+    private static ServerManager instance = new ServerManager();
+
+    /** The Axis2 repository location */
     private String axis2Repolocation;
+    /** The path to the axis2.xml file */
     private String axis2Xml;
+    /** The synapse home is the home directory of the Synapse installation */
+    private String synapseHome;
+    /** The path to the synapse.xml file */
+    private String synapseXMLPath;
+    /** The root directory to resolve paths for registry, default to synapse.home/repository */
+    private String resolveRoot;
+    /** An optional server name to activate pinned services, tasks etc.. and to differentiate instances on a cluster */
+    private String serverName = "localhost";
+
+    /** The Axis2 listener Manager */
     private ListenerManager listenerManager;
+    /** The Axis2 configuration context used by Synapse */
     private ConfigurationContext configctx;
-    private static final int DEFAULT_HTTP_PORT = 8080;
-    private static final int ALTERNATIVE_HTTP_PORT = 8008;
+    /** Reference to the Synapse configuration */
+    private SynapseConfiguration synConfig = null;
     private Map callbackStore = null;
 
     /**
-     * To ensure that there is a only one Manager
-     * @return  Server Manager Instance
+     * return the singleton server manager
+     * @return  ServerManager Instance
      */
     public static ServerManager getInstance() {
-        if (instance == null) {
-            instance = new ServerManager();
-        }
         return instance;
     }
 
-    public void setAxis2Repolocation(String axis2Repolocation) {
-        this.axis2Repolocation = axis2Repolocation;
-    }
-
-    public void setAxis2Xml(String axis2Xml) {
-        this.axis2Xml = axis2Xml;
-    }
-
     /**
      * starting all the listeners
      */
     public void start() {
 
+        // validate if we can start
+        validate();
+
         // Register custom protocol handler classpath://
 		try {
 			URL.setURLStreamHandlerFactory(new URLStreamHandlerFactoryImpl());
@@ -91,28 +102,17 @@
 					"Custom URL protocols may not work properly (e.g. classpath://)");
 		}
 
-        if (axis2Repolocation == null) {
-            log.fatal("The Axis2 Repository must be provided");
-            return;
-        }
-        log.info("Using the Axis2 Repository : "
-                           + new File(axis2Repolocation).getAbsolutePath());
-        
-        if (axis2Xml != null) {
-            log.info("Using the axis2.xml : " + new File(axis2Xml).getAbsolutePath());
-        }
-
         try {
             configctx = ConfigurationContextFactory.
                     createConfigurationContextFromFileSystem(axis2Repolocation, axis2Xml);
             
+            addDefaultBuildersAndFormatters(configctx.getAxisConfiguration());
+            
             listenerManager = configctx.getListenerManager();
             if (listenerManager == null) {
                 listenerManager = new ListenerManager();
                 listenerManager.init(configctx);
             }
-            // decide on HTTP port to execute
-            selectPort(configctx);
 
             for (Object o : configctx.getAxisConfiguration().getTransportsIn().keySet()) {
                 
@@ -134,11 +134,14 @@
                 = configctx.getAxisConfiguration().getParameter(SynapseConstants.SYNAPSE_ENV);
             Parameter synCfg
                 = configctx.getAxisConfiguration().getParameter(SynapseConstants.SYNAPSE_CONFIG);
+
             String message = "Unable to initialize the Synapse Configuration : Cannot find the ";
             if (synCfg == null || synCfg.getValue() == null
                 || !(synCfg.getValue() instanceof SynapseConfiguration)) {
                 log.fatal(message + "Synapse Configuration");
                 throw new SynapseException(message + "Synapse Configuration");
+            } else {
+                synConfig = (SynapseConfiguration) synCfg.getValue();
             }
 
             if (synEnv == null || synEnv.getValue() == null
@@ -155,11 +158,22 @@
                         stp.init((SynapseEnvironment) synEnv.getValue());
                     }
                 }
-            }            
+            }
+
             log.info("Ready for processing");
 
         } catch (Throwable t) {
-            log.fatal("Startup failed...", t);
+            log.fatal("Synaps startup failed...", t);
+            throw new SynapseException("Synapse startup failed", t);
+        }
+    }
+
+    private void addDefaultBuildersAndFormatters(AxisConfiguration axisConf) {
+        if (axisConf.getMessageBuilder("text/plain") == null) {
+            axisConf.addMessageBuilder("text/plain", new PlainTextBuilder());
+        }
+        if (axisConf.getMessageBuilder("application/octet-stream") == null) {
+            axisConf.addMessageBuilder("application/octet-stream", new BinaryBuilder());
         }
     }
 
@@ -192,7 +206,7 @@
                 listenerManager.destroy();
             }
             
-            //we need to call this method to clean the temp files we created.
+            // we need to call this method to clean the temp files we created.
             if (configctx != null) {
                 configctx.terminate();
             }
@@ -202,79 +216,6 @@
     }
 
     /**
-     * Helper method to select a alternate port if the currently selected port is in use
-     * @param configCtx configuration context 
-     */
-    private static void selectPort(ConfigurationContext configCtx) {
-        // check if configured port is available
-        TransportInDescription trsIn = (TransportInDescription)
-                configCtx.getAxisConfiguration().getTransportsIn().get("http");
-
-        if (trsIn != null) {
-
-            int port = DEFAULT_HTTP_PORT;
-            String bindAddress = null;
-
-            String strPort = System.getProperty("port");
-            if (strPort != null) {
-                // port is specified as a VM parameter
-                try {
-                    port = Integer.parseInt(strPort);
-                } catch (NumberFormatException e) {
-                    // user supplied parameter is not a valid integer. so use the port in configuration.
-                    log.error("System property 'port' does not provide a valid integer");
-                }
-            }
-
-            Parameter param = trsIn.getParameter("port");
-            if (param != null && param.getValue() != null) {
-                port = Integer.parseInt(param.getValue().toString());
-            }
-
-            param = trsIn.getParameter(NhttpConstants.BIND_ADDRESS);
-            if (param != null && param.getValue() != null) {
-                bindAddress = ((String) param.getValue()).trim();
-            }
-
-            while (true) {
-                ServerSocket sock = null;
-                try {
-                    if (bindAddress == null) {
-                        sock = new ServerSocket(port);
-                    } else {
-                        sock = new ServerSocket(port, 50, InetAddress.getByName(bindAddress));
-                    }
-                    trsIn.getParameter("port").setValue(Integer.toString(port));
-                    break;
-                } catch (Exception e) {
-                    log.warn("Port " + port + " already in use. Trying alternate");
-                    if (port == DEFAULT_HTTP_PORT) {
-                        port = ALTERNATIVE_HTTP_PORT;
-                    } else {
-                        port++;
-                    }
-                } finally {
-                    if (sock != null) {
-                        try {
-                            sock.close();
-                        } catch (Exception e) {
-                            // do nothing
-                        }
-                    }
-                }
-            }
-        }
-    }
-
-    public ConfigurationContext getConfigurationContext() {
-        return configctx;
-    }
-
-    public void setCallbackStore(Map callbackStore) {
-        this.callbackStore = callbackStore;
-    }
-
-    /**
      * Expose the number of callbacks in the callback store
      * @return the number of callbacks (messages) waiting for responses
      */
@@ -300,4 +241,149 @@
             return urlSH;
         }
     }
+
+    /**
+     * Validate core settings for startup
+     */
+    private void validate() {
+        if (synapseHome == null || !new File(synapseHome).exists()) {
+            handleFatal("Synapse home");
+        } else {
+            log.info("Using Synapse home as : " + synapseHome);
+        }
+
+        if (axis2Repolocation == null || !new File(axis2Repolocation).exists()) {
+            handleFatal("Axis2 repository");
+        } else {
+            log.info("Using the Axis2 Repository : " + new File(axis2Repolocation).getAbsolutePath());
+        }
+
+        if (axis2Xml == null || !new File(axis2Xml).exists()) {
+            handleFatal("axis2.xml location");
+        } else {
+            log.info("Using the axis2.xml : " + new File(axis2Xml).getAbsolutePath());
+        }
+
+        if (synapseXMLPath == null || !new File(synapseXMLPath).exists()) {
+            handleFatal("synapse.xml path");
+        }
+
+        if (serverName == null) {
+            try {
+                serverName = InetAddress.getLocalHost().getHostName();
+            } catch (UnknownHostException ignore) {}
+            log.info("The server name was not specified, defaulting to : " + serverName);
+        } else {
+            log.info("Using server name : " + serverName);
+        }
+
+        log.info("The timeout handler will run every : " + (getTimeoutHandlerInterval()/1000) + "s");
+    }
+
+    public void handleFatal(String msgPre) {
+        String msg = "The " + msgPre + " must be set as a system property or init-parameter";
+        log.fatal(msg);
+        throw new SynapseException(msg);
+    }
+
+    // getters and setters
+    public ConfigurationContext getConfigurationContext() {
+        return configctx;
+    }
+
+    public void setCallbackStore(Map callbackStore) {
+        this.callbackStore = callbackStore;
+    }
+
+    public void setAxis2Repolocation(String axis2Repolocation) {
+        if (!new File(axis2Repolocation).isAbsolute() && synapseHome != null) {
+            this.axis2Repolocation = synapseHome + File.separator + axis2Repolocation;
+        } else {
+            this.axis2Repolocation = axis2Repolocation;
+        }
+    }
+
+    public void setAxis2Xml(String axis2Xml) {
+        if (!new File(axis2Xml).isAbsolute() && synapseHome != null) {
+            this.axis2Xml = synapseHome + File.separator + axis2Xml;
+        } else {
+            this.axis2Xml = axis2Xml;
+        }
+    }
+
+    public String getSynapseHome() {
+        return synapseHome;
+    }
+
+    public void setSynapseHome(String synapseHome) {
+        this.synapseHome = synapseHome;
+    }
+
+    public String getResolveRoot() {
+        return resolveRoot;
+    }
+
+    public void setResolveRoot(String resolveRoot) {
+        if (!new File(resolveRoot).isAbsolute() && synapseHome != null) {
+            this.resolveRoot = synapseHome + File.separator + resolveRoot;
+        } else {
+            this.resolveRoot = resolveRoot;
+        }
+    }
+
+    public String getServerName() {
+        return serverName;
+    }
+
+    public void setServerName(String serverName) {
+        this.serverName = serverName;
+    }
+
+    public String getSynapseXMLPath() {
+        return synapseXMLPath;
+    }
+
+    public void setSynapseXMLPath(String synapseXMLPath) {
+        if (!new File(synapseXMLPath).isAbsolute() && synapseHome != null) {
+            this.synapseXMLPath = synapseHome + File.separator + synapseXMLPath;
+        } else {
+            this.synapseXMLPath = synapseXMLPath;
+        }
+    }
+
+    public int getConnectTimeout() {
+        if (synConfig == null) {
+            return (int) SynapseConstants.DEFAULT_GLOBAL_TIMEOUT;
+        } else {
+            return (int) synConfig.getProperty(
+                SynapseConstants.CONNECTTIMEOUT, SynapseConstants.DEFAULT_CONNECTTIMEOUT);
+        }
+    }
+
+    public int getReadTimeout() {
+        if (synConfig == null) {
+            return SynapseConstants.DEFAULT_READTIMEOUT;
+        } else {
+            return (int) synConfig.getProperty(
+                SynapseConstants.READTIMEOUT, SynapseConstants.DEFAULT_READTIMEOUT);
+        }
+    }
+
+    public long getTimeoutHandlerInterval() {
+        if (synConfig == null) {
+            return SynapseConstants.DEFAULT_TIMEOUT_HANDLER_INTERVAL;
+        } else {
+            return synConfig.getProperty(
+                SynapseConstants.TIMEOUT_HANDLER_INTERVAL, SynapseConstants.DEFAULT_TIMEOUT_HANDLER_INTERVAL);
+        }
+    }
+
+    public long getGlobalTimeoutInterval() {
+        if (synConfig == null) {
+            return SynapseConstants.DEFAULT_GLOBAL_TIMEOUT;
+        } else {
+            return synConfig.getProperty(
+                SynapseConstants.GLOBAL_TIMEOUT_INTERVAL, SynapseConstants.DEFAULT_GLOBAL_TIMEOUT);
+        }
+    }
 }
\ No newline at end of file

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java?rev=664672&r1=664671&r2=664672&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java Mon Jun  9 03:43:19 2008
@@ -96,12 +96,12 @@
 
     /** The name of the system property that will hold the Synapse home directory */
     public static final String SYNAPSE_HOME = "synapse.home";
-    /** The default synapse.properties file path */
-    public static final String DEFAULT_PROP_PATH = "synapse.properties";
     /** The name of the system property used to specify/override the Synapse config XML location */
     public static final String SYNAPSE_XML = "synapse.xml";
     /** The name of the system property used to specify/override the Synapse properties location */
     public static final String SYNAPSE_PROPERTIES = "synapse.properties";
+    /** conf directory name **/
+    public static final String CONF_DIRECTORY = "conf";
 
     //- Synapse Message Context Properties -
         /** The Synapse MC property name that holds the name of the Proxy service thats handling it */
@@ -237,7 +237,7 @@
     public static final String FORMAT_SOAP12 = "soap12";    
     
     /** Synapse server instance name */
-    public static final String SYNAPSE_SERVER_NAME = "SynapseServerName";
+    public static final String SERVER_NAME = "serverName";
 
     public static final String SYNAPSE_DATASOURCES = "synapse.datasources";
     
@@ -250,9 +250,9 @@
 
     public static final int DEFAULT_CONNECTTIMEOUT = 20000;
 
-    public static final String READTIMEOUT = "Connection.ReadTimeout";
+    public static final String READTIMEOUT = "synapse.connection.read_timeout";
 
-    public static final String CONNECTTIMEOUT = "Connection.ConnectTimeout";
+    public static final String CONNECTTIMEOUT = "synapse.connection.connect_timeout";
 
     /** chunk size and chunk length configuration parameters */
     public static final int DEFAULT_THRESHOLD_CHUNKS = 8;

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseServer.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseServer.java?rev=664672&r1=664671&r2=664672&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseServer.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseServer.java Mon Jun  9 03:43:19 2008
@@ -19,6 +19,7 @@
 
 package org.apache.synapse;
 
+import org.apache.axis2.Constants;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -27,26 +28,56 @@
 /**
  * This is the class invoked by the command line scripts synapse.sh and synapse-daemon.sh to
  * start an instance of Synapse. This class calls on the ServerManager to start up the instance
+ *
+ * TODO Switch to using commons-cli and move all command line parameter processing etc from the
+ * .sh and .bat into this.. for 1.3 release :)
  */
 public class SynapseServer {
 
     private static final Log log = LogFactory.getLog(SynapseServer.class);
 
+    private static final String USAGE_TXT =
+        "Usage: SynapseServer <axis2_repository> <axis2_xml> <synapse_home> <synapse_xml> <resolve_root>" +
+        "\n Opts: -? this message";
+
     public static void printUsage() {
-        System.out.println("Usage: SynapseServer <repository>");
-        System.out.println(" Opts: -? this message");
+        System.out.println(USAGE_TXT);
         System.exit(1);
     }
 
     public static void main(String[] args) throws Exception {
 
         // first check if we should print usage
-        if (args.length != 1 || !new File(args[0]).exists()) {
+        if (args.length != 1 && args.length != 4 && args.length != 5 && args.length != 6) {
             printUsage();
         }
 
         ServerManager serverManager = ServerManager.getInstance();
         serverManager.setAxis2Repolocation(args[0]);
+        if (args.length == 1) {
+            log.warn("Configuring server manager using deprecated system properties; please update your configuration");
+            serverManager.setAxis2Xml(System.getProperty(Constants.AXIS2_CONF));
+            serverManager.setSynapseHome(System.getProperty(SynapseConstants.SYNAPSE_HOME));
+            serverManager.setSynapseXMLPath(System.getProperty(SynapseConstants.SYNAPSE_XML));
+            serverManager.setResolveRoot(System.getProperty(SynapseConstants.RESOLVE_ROOT));
+        } else if(args.length == 4) {
+            serverManager.setAxis2Xml(args[1]);
+            serverManager.setSynapseHome(args[2]);
+            serverManager.setSynapseXMLPath(args[3]);
+            serverManager.setResolveRoot(args[2] + File.separator + "repository");
+        } else if(args.length == 5) {
+            serverManager.setAxis2Xml(args[1]);
+            serverManager.setSynapseHome(args[2]);
+            serverManager.setSynapseXMLPath(args[3]);
+            serverManager.setResolveRoot(args[4]);
+        } else if(args.length == 6) {
+            serverManager.setAxis2Xml(args[1]);
+            serverManager.setSynapseHome(args[2]);
+            serverManager.setSynapseXMLPath(args[3]);
+            serverManager.setResolveRoot(args[4]);
+            serverManager.setServerName(args[5]);
+        }
+        
         serverManager.start();
         addShutdownHook();
     }

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfigUtils.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfigUtils.java?rev=664672&r1=664671&r2=664672&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfigUtils.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfigUtils.java Mon Jun  9 03:43:19 2008
@@ -25,6 +25,7 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.synapse.SynapseConstants;
 import org.apache.synapse.SynapseException;
+import org.apache.synapse.ServerManager;
 import org.apache.synapse.util.SynapseBinaryDataSource;
 import org.xml.sax.InputSource;
 
@@ -134,7 +135,7 @@
                         log.debug("Can not open a connection to the URL with a path :" +
                                 path);
                     }
-                    String synapseHome = System.getProperty(SynapseConstants.SYNAPSE_HOME);
+                    String synapseHome = ServerManager.getInstance().getSynapseHome();
                     if (synapseHome != null) {
                         if (log.isDebugEnabled()) {
                             log.debug("Trying  to resolve an absolute path of the " +
@@ -297,29 +298,11 @@
     }
 
     private static int getReadTimeout() {
-        //getting  read timeout
-        String readTO = System.getProperty(SynapseConstants.READTIMEOUT);
-        int readTimeout = SynapseConstants.DEFAULT_READTIMEOUT;
-        if (readTO != null && !"".equals(readTO)) {
-            try {
-                readTimeout = Integer.parseInt(readTO);
-            } catch (NumberFormatException ignored) {
-            }
-        }
-        return readTimeout;
+        return ServerManager.getInstance().getReadTimeout();
     }
 
     private static int getConnectionTimeout() {
-        //getting  connection timeout
-        String connectionTO = System.getProperty(SynapseConstants.CONNECTTIMEOUT);
-        int connectionTimeout = SynapseConstants.DEFAULT_CONNECTTIMEOUT;
-        if (connectionTO != null && !"".equals(connectionTO)) {
-            try {
-                connectionTimeout = Integer.parseInt(connectionTO);
-            } catch (NumberFormatException ignored) {
-            }
-        }
-        return connectionTimeout;
+        return ServerManager.getInstance().getConnectTimeout();
     }
 
     private static void handleException(String msg, Exception e) {
@@ -369,7 +352,7 @@
                         log.debug("Can not open a connection to the URL with a path :" +
                                 path);
                     }
-                    String synapseHome = System.getProperty(SynapseConstants.SYNAPSE_HOME);
+                    String synapseHome = ServerManager.getInstance().getSynapseHome();
                     if (synapseHome != null) {
                         if (synapseHome.endsWith("/")) {
                             synapseHome = synapseHome.substring(0, synapseHome.lastIndexOf("/"));

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfiguration.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfiguration.java?rev=664672&r1=664671&r2=664672&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfiguration.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfiguration.java Mon Jun  9 03:43:19 2008
@@ -710,6 +710,29 @@
     }
 
     /**
+     * Gets the String representation of the property value if there is a property for the
+     * given propKey or returns the default value passed
+     *
+     * @param propKey - key for the property lookup
+     * @param def     - default value
+     * @return String representation of the property value with the given key or the def value
+     */
+    public long getProperty(String propKey, long def) {
+        String val = System.getProperty(propKey);
+        if (val == null) {
+            val = properties.getProperty(propKey);
+        }
+
+        if (val != null) {
+            if (log.isDebugEnabled()) {
+                log.debug("Using synapse tuning parameter : " + propKey + " = " + val);
+            }
+            return Long.valueOf(val);
+        }
+        return def;
+    }
+
+    /**
      * Gets the propety value if the property specified by the propKey is there or null else
      *
      * @param propKey - key for the property lookup

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfigurationBuilder.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfigurationBuilder.java?rev=664672&r1=664671&r2=664672&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfigurationBuilder.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfigurationBuilder.java Mon Jun  9 03:43:19 2008
@@ -32,6 +32,7 @@
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
+import java.io.InputStream;
 import java.util.Properties;
 
 /**
@@ -89,14 +90,43 @@
     }
 
     private static Properties loadSynapseProperties() {
-        String props = System.getProperty(SynapseConstants.SYNAPSE_PROPERTIES);
-        if (props == null) {
-            props = SynapseConstants.DEFAULT_PROP_PATH;
-        }
+
         try {
             Properties properties = new Properties();
-            properties.load(Thread.currentThread().getContextClassLoader().getResourceAsStream(props));
+            ClassLoader cl = Thread.currentThread().getContextClassLoader();
+
+            if (log.isDebugEnabled()) {
+                log.debug("synapse.properties file is loading from classpath");
+            }
+
+            InputStream in = cl.getResourceAsStream(SynapseConstants.SYNAPSE_PROPERTIES);
+            if (in == null) {
+                if (log.isDebugEnabled()) {
+                    log.debug("Unable to load synapse.propeties file");
+                }
+
+                String path = SynapseConstants.CONF_DIRECTORY +
+                        File.separatorChar + SynapseConstants.SYNAPSE_PROPERTIES;
+                if (log.isDebugEnabled()) {
+                    log.debug("synapse.properties file is loading from classpath" +
+                            " with resource path '" + path + " '");
+                }
+
+                in = cl.getResourceAsStream(path);
+                if (in == null) {
+                    if (log.isDebugEnabled()) {
+                        log.debug("Unable to load the synapse.properties file from classpath" +
+                                " with resource name '" + path + " '");
+                    }
+                }
+            }
+
+            if (in != null) {
+                properties.load(in);
+            }
+            
             return properties;
+
         } catch (Exception e) {
             log.info("Using the default tuning parameters for Synapse");
         }

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MediatorSerializerFinder.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MediatorSerializerFinder.java?rev=664672&r1=664671&r2=664672&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MediatorSerializerFinder.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MediatorSerializerFinder.java Mon Jun  9 03:43:19 2008
@@ -103,7 +103,7 @@
      */
     private void registerExtensions() {
         if (log.isDebugEnabled()) {
-            log.debug("Registering mediator extensions found in the classpath : " + System.getProperty("java.class.path"));
+            log.debug("Registering mediator extensions found in the classpath.. ");
         }
         // register MediatorSerializer extensions
         Iterator it = Service.providers(MediatorSerializer.class);

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointFactory.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointFactory.java?rev=664672&r1=664671&r2=664672&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointFactory.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointFactory.java Mon Jun  9 03:43:19 2008
@@ -31,13 +31,13 @@
 
 /**
  * Creates {@link AddressEndpoint} using a XML configuration.
- * <p>
+ * <p/>
  * Configuration syntax:
  * <pre>
  * &lt;endpoint [name="<em>name</em>"]&gt;
- *   &lt;address uri="<em>url</em>" [format="soap11|soap12|pox|get"] [optimize="mtom|swa"]
- *      [encoding="<em>charset encoding</em>"]
- *          [statistics="enable|disable"] [trace="enable|disable"]&gt;
+ *   &lt;address uri="<em>endpoint address</em>" [format="soap11|soap12|pox|get"] [optimize="mtom|swa"]
+ *            [encoding="<em>charset encoding</em>"]
+ *            [statistics="enable|disable"] [trace="enable|disable"]&gt;
  *     .. extensibility ..
  *
  *     &lt;enableRM [policy="<em>key</em>"]/&gt;?
@@ -50,16 +50,18 @@
  *     &lt;/timeout&gt;?
  *
  *     &lt;suspendDurationOnFailure&gt;
- *              <em>suspend duration in seconds</em>&lt;/suspendDurationOnFailure&gt;?
+ *       <em>suspend duration in seconds</em>
+ *     &lt;/suspendDurationOnFailure&gt;?
  *   &lt;/address&gt;
  * &lt;/endpoint&gt;
  * </pre>
  */
-public class AddressEndpointFactory extends EndpointFactory {
+public class AddressEndpointFactory extends DefaultEndpointFactory {
 
     private static AddressEndpointFactory instance = new AddressEndpointFactory();
 
-    private AddressEndpointFactory() {}
+    private AddressEndpointFactory() {
+    }
 
     public static AddressEndpointFactory getInstance() {
         return instance;
@@ -102,7 +104,8 @@
             endpointDefinition.setAddress(address.getAttributeValue());
         }
 
-        extractEndpointProperties(endpointDefinition, elem);
+        extractCommonEndpointProperties(endpointDefinition, elem);
+        extractSpecificEndpointProperties(endpointDefinition,elem);
         return endpointDefinition;
     }
 }

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointSerializer.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointSerializer.java?rev=664672&r1=664671&r2=664672&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointSerializer.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointSerializer.java Mon Jun  9 03:43:19 2008
@@ -29,10 +29,10 @@
 
 /**
  * Serializes {@link AddressEndpoint} to XML.
- * 
+ *
  * @see AddressEndpointFactory
  */
-public class AddressEndpointSerializer extends EndpointSerializer {
+public class AddressEndpointSerializer extends DefaultEndpointSerializer {
 
     protected OMElement serializeEndpoint(Endpoint endpoint) {
 
@@ -60,7 +60,7 @@
     public OMElement serializeEndpointDefinition(EndpointDefinition endpointDefinition) {
 
         OMElement element = fac.createOMElement("address", SynapseConstants.SYNAPSE_OMNAMESPACE);
-        
+
         if (endpointDefinition.getAddress() != null) {
             element.addAttribute(
                     fac.createOMAttribute("uri", null, endpointDefinition.getAddress()));
@@ -68,8 +68,9 @@
             handleException("Invalid Endpoint. Address is required");
         }
 
-        serializeQOSInformation(endpointDefinition, element);
-        
+        serializeCommonEndpointProperties(endpointDefinition, element);
+        serializeSpecificEndpointProperties(endpointDefinition, element);
+
         return element;
     }
 }

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DefaultEndpointFactory.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DefaultEndpointFactory.java?rev=664672&r1=664671&r2=664672&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DefaultEndpointFactory.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DefaultEndpointFactory.java Mon Jun  9 03:43:19 2008
@@ -31,7 +31,7 @@
 
 /**
  * Creates {@link DefaultEndpoint} using a XML configuration.
- * <p>
+ * <p/>
  * Configuration syntax:
  * <pre>
  * &lt;endpoint [name="<em>name</em>"]&gt;
@@ -50,7 +50,8 @@
  *     &lt;/timeout&gt;?
  *
  *     &lt;suspendDurationOnFailure&gt;
- *              <em>suspend duration in seconds</em>&lt;/suspendDurationOnFailure&gt;?
+ *       <em>suspend duration in seconds</em>
+ *     &lt;/suspendDurationOnFailure&gt;?
  *   &lt;/address&gt;
  * &lt;/endpoint&gt;
  * </pre>
@@ -59,7 +60,8 @@
 
     private static DefaultEndpointFactory instance = new DefaultEndpointFactory();
 
-    private DefaultEndpointFactory() {}
+    protected DefaultEndpointFactory() {
+    }
 
     public static DefaultEndpointFactory getInstance() {
         return instance;
@@ -85,6 +87,35 @@
         return defaultEndpoint;
     }
 
+    protected void extractSpecificEndpointProperties(EndpointDefinition definition, OMElement elem) {
+
+        OMAttribute format
+                = elem.getAttribute(new QName(XMLConfigConstants.NULL_NAMESPACE, "format"));
+        if (format != null) {
+            String forceValue = format.getAttributeValue().trim().toLowerCase();
+            if (SynapseConstants.FORMAT_POX.equals(forceValue)) {
+                definition.setForcePOX(true);
+                definition.setFormat(SynapseConstants.FORMAT_POX);
+
+            } else if (SynapseConstants.FORMAT_GET.equals(forceValue)) {
+                definition.setForceGET(true);
+                definition.setFormat(SynapseConstants.FORMAT_GET);
+
+            } else if (SynapseConstants.FORMAT_SOAP11.equals(forceValue)) {
+                definition.setForceSOAP11(true);
+                definition.setFormat(SynapseConstants.FORMAT_SOAP11);
+
+            } else if (SynapseConstants.FORMAT_SOAP12.equals(forceValue)) {
+                definition.setForceSOAP12(true);
+                definition.setFormat(SynapseConstants.FORMAT_SOAP12);
+
+            } else {
+                handleException("force value -\"" + forceValue + "\" not yet implemented");
+            }
+        }
+
+    }
+
     /**
      * Creates an EndpointDefinition instance using the XML fragment specification. Configuration
      * for EndpointDefinition always resides inside a configuration of an AddressEndpoint. This
@@ -95,7 +126,8 @@
      */
     public EndpointDefinition createEndpointDefinition(OMElement elem) {
         EndpointDefinition endpointDefinition = new EndpointDefinition();
-        extractEndpointProperties(endpointDefinition, elem);
+        extractCommonEndpointProperties(endpointDefinition, elem);
+        extractSpecificEndpointProperties(endpointDefinition, elem);
         return endpointDefinition;
     }
 }

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DefaultEndpointSerializer.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DefaultEndpointSerializer.java?rev=664672&r1=664671&r2=664672&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DefaultEndpointSerializer.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DefaultEndpointSerializer.java Mon Jun  9 03:43:19 2008
@@ -57,9 +57,34 @@
         return endpointElement;
     }
 
+    protected void serializeSpecificEndpointProperties(EndpointDefinition endpointDefinition, OMElement element) {
+
+        if (SynapseConstants.FORMAT_POX.equals(endpointDefinition.getFormat())) {
+            element.addAttribute(fac.createOMAttribute("format", null, "pox"));
+        } else if (SynapseConstants.FORMAT_GET.equals(endpointDefinition.getFormat())) {
+            element.addAttribute(fac.createOMAttribute("format", null, "get"));
+        } else if (SynapseConstants.FORMAT_SOAP11.equals(endpointDefinition.getFormat())) {
+            element.addAttribute(fac.createOMAttribute("format", null, "soap11"));
+        } else if (SynapseConstants.FORMAT_SOAP12.equals(endpointDefinition.getFormat())) {
+            element.addAttribute(fac.createOMAttribute("format", null, "soap12"));
+
+            // following two kept for backward compatibility
+        } else if (endpointDefinition.isForcePOX()) {
+            element.addAttribute(fac.createOMAttribute("format", null, "pox"));
+        } else if (endpointDefinition.isForceGET()) {
+            element.addAttribute(fac.createOMAttribute("format", null, "get"));
+        } else if (endpointDefinition.isForceSOAP11()) {
+            element.addAttribute(fac.createOMAttribute("format", null, "soap11"));
+        } else if (endpointDefinition.isForceSOAP12()) {
+            element.addAttribute(fac.createOMAttribute("format", null, "soap12"));
+        }
+
+    }
+
     public OMElement serializeEndpointDefinition(EndpointDefinition endpointDefinition) {
         OMElement element = fac.createOMElement("default", SynapseConstants.SYNAPSE_OMNAMESPACE);
-        serializeQOSInformation(endpointDefinition, element);
+        serializeCommonEndpointProperties(endpointDefinition, element);
+        serializeSpecificEndpointProperties(endpointDefinition, element);
         return element;
     }
 }

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/EndpointFactory.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/EndpointFactory.java?rev=664672&r1=664671&r2=664672&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/EndpointFactory.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/EndpointFactory.java Mon Jun  9 03:43:19 2008
@@ -29,16 +29,19 @@
 import org.apache.synapse.config.XMLToObjectMapper;
 import org.apache.synapse.config.xml.XMLConfigConstants;
 import org.apache.synapse.endpoints.Endpoint;
+import org.apache.synapse.endpoints.IndirectEndpoint;
 import org.apache.synapse.endpoints.utils.EndpointDefinition;
 
 import javax.xml.namespace.QName;
+import java.util.ArrayList;
+import java.util.Iterator;
 
 /**
  * All endpoint factories should implement this interface. Use EndpointFactory to obtain the
  * correct endpoint for particular endpoint configuration. As endpoints can be nested inside
  * each other, EndpointFactory implementations may call other EndpointFactory implementations
  * recursively to obtain the required endpoint hierarchy.
- *
+ * <p/>
  * This also serves as the XMLToObjactMapper implementation for specific endpoint implementations.
  * If the endpoint type is not known use XMLToEndpointMapper as the generic XMLToObjectMapper for
  * all endpoints.
@@ -50,8 +53,8 @@
     /**
      * Core method which is exposed for the external use, and this will find the proper
      * {@link EndpointFactory} and create the endpoint which is of the format {@link Endpoint}.
-     * 
-     * @param elem XML from which the endpoint will be built
+     *
+     * @param elem        XML from which the endpoint will be built
      * @param isAnonymous whether this is an anonymous endpoint or not
      * @return created endpoint
      */
@@ -80,7 +83,7 @@
      * immediate child element of the definitions tag it should have a name, which is used as the
      * key in local registry.
      *
-     * @param epConfig OMElement conatining the endpoint configuration.
+     * @param epConfig          OMElement conatining the endpoint configuration.
      * @param anonymousEndpoint false if the endpoint has a name. true otherwise.
      * @return Endpoint implementation for the given configuration.
      */
@@ -90,12 +93,10 @@
      * Extracts the QoS information from the XML which represents a WSDL/Address/Default endpoints
      *
      * @param definition to be filled with the extracted information
-     * @param elem XML which represents the endpoint with QoS information
+     * @param elem       XML which represents the endpoint with QoS information
      */
-    protected void extractEndpointProperties(EndpointDefinition definition, OMElement elem) {
+    protected void extractCommonEndpointProperties(EndpointDefinition definition, OMElement elem) {
 
-        OMAttribute format
-                = elem.getAttribute(new QName(XMLConfigConstants.NULL_NAMESPACE, "format"));
         OMAttribute optimize
                 = elem.getAttribute(new QName(XMLConfigConstants.NULL_NAMESPACE, "optimize"));
         OMAttribute encoding
@@ -127,28 +128,6 @@
             definition.setTraceState(SynapseConstants.TRACING_UNSET);
         }
 
-        if (format != null) {
-            String forceValue = format.getAttributeValue().trim().toLowerCase();
-            if (SynapseConstants.FORMAT_POX.equals(forceValue)) {
-                definition.setForcePOX(true);
-                definition.setFormat(SynapseConstants.FORMAT_POX);
-
-            } else if (SynapseConstants.FORMAT_GET.equals(forceValue)) {
-            	definition.setForceGET(true);
-            	definition.setFormat(SynapseConstants.FORMAT_GET);
-
-            } else if (SynapseConstants.FORMAT_SOAP11.equals(forceValue)) {
-                definition.setForceSOAP11(true);
-                definition.setFormat(SynapseConstants.FORMAT_SOAP11);
-
-            } else if (SynapseConstants.FORMAT_SOAP12.equals(forceValue)) {
-                definition.setForceSOAP12(true);
-                definition.setFormat(SynapseConstants.FORMAT_SOAP12);
-
-            } else {
-                handleException("force value -\""+forceValue+"\" not yet implemented");
-            }
-        }
 
         if (optimize != null && optimize.getAttributeValue().length() > 0) {
             String method = optimize.getAttributeValue().trim();
@@ -166,7 +145,7 @@
         OMElement wsAddr = elem.getFirstChildWithName(
                 new QName(XMLConfigConstants.SYNAPSE_NAMESPACE, "enableAddressing"));
         if (wsAddr != null) {
-            
+
             definition.setAddressingOn(true);
 
             OMAttribute version = wsAddr.getAttribute(new QName("version"));
@@ -201,7 +180,7 @@
                 definition.setWsSecPolicyKey(policy.getAttributeValue());
             }
         }
-        
+
         OMElement wsRm = elem.getFirstChildWithName(
                 new QName(XMLConfigConstants.SYNAPSE_NAMESPACE, "enableRM"));
         if (wsRm != null) {
@@ -240,7 +219,7 @@
             if (action != null && action.getText() != null) {
                 String actionString = action.getText();
                 if ("discard".equalsIgnoreCase(actionString.trim())) {
-                        
+
                     definition.setTimeoutAction(SynapseConstants.DISCARD);
 
                     // set timeout duration to 30 seconds, if it is not set explicitly
@@ -248,7 +227,7 @@
                         definition.setTimeoutDuration(30000);
                     }
                 } else if ("fault".equalsIgnoreCase(actionString.trim())) {
-                        
+
                     definition.setTimeoutAction(SynapseConstants.DISCARD_AND_FAULT);
 
                     // set timeout duration to 30 seconds, if it is not set explicitly
@@ -277,6 +256,10 @@
         }
     }
 
+    protected void extractSpecificEndpointProperties(EndpointDefinition definition, OMElement elem){
+
+    }
+
     /**
      * Returns the EndpointFactory implementation for given endpoint configuration. Throws a
      * SynapseException, if there is no EndpointFactory for given configuration.
@@ -331,6 +314,36 @@
         return null;
     }
 
+    /**
+     * Helper method to construct children endpoints
+     *
+     * @param listEndpointElement OMElement representing  the children endpoints
+     * @param parent              Parent endpoint
+     * @return List of children endpoints
+     */
+    protected ArrayList<Endpoint> getEndpoints(OMElement listEndpointElement, Endpoint parent) {
+
+        ArrayList<Endpoint> endpoints = new ArrayList<Endpoint>();
+        ArrayList<String> keys = new ArrayList<String>();
+        Iterator iter = listEndpointElement.getChildrenWithName(XMLConfigConstants.ENDPOINT_ELT);
+        while (iter.hasNext()) {
+            OMElement endptElem = (OMElement) iter.next();
+            Endpoint endpoint = EndpointFactory.getEndpointFromElement(endptElem, true);
+            if (endpoint instanceof IndirectEndpoint) {
+                String key = ((IndirectEndpoint) endpoint).getKey();
+                if (!keys.contains(key)) {
+                    keys.add(key);
+                } else {
+                    handleException("Same endpoint definition cannot be used with in the siblings");
+                }
+            }
+            endpoint.setParentEndpoint(parent);
+            endpoints.add(endpoint);
+        }
+
+        return endpoints;
+    }
+
     protected static void handleException(String msg) {
         log.error(msg);
         throw new SynapseException(msg);

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/EndpointSerializer.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/EndpointSerializer.java?rev=664672&r1=664671&r2=664672&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/EndpointSerializer.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/EndpointSerializer.java Mon Jun  9 03:43:19 2008
@@ -64,9 +64,9 @@
      * Serializes the QoS infomation of the endpoint to the XML element
      *
      * @param endpointDefinition specifies the QoS information of the endpoint
-     * @param element to which the QoS information will be serialized
+     * @param element            to which the QoS information will be serialized
      */
-    protected void serializeQOSInformation(
+    protected void serializeCommonEndpointProperties(
             EndpointDefinition endpointDefinition, OMElement element) {
 
         if (endpointDefinition.getStatisticsState() == SynapseConstants.STATISTICS_ON) {
@@ -85,26 +85,6 @@
                     null, XMLConfigConstants.TRACE_DISABLE));
         }
 
-        if (SynapseConstants.FORMAT_POX.equals(endpointDefinition.getFormat())) {
-            element.addAttribute(fac.createOMAttribute("format", null, "pox"));
-        } else if (SynapseConstants.FORMAT_GET.equals(endpointDefinition.getFormat())) {
-            element.addAttribute(fac.createOMAttribute("format", null, "get"));
-        } else if (SynapseConstants.FORMAT_SOAP11.equals(endpointDefinition.getFormat())) {
-            element.addAttribute(fac.createOMAttribute("format", null, "soap11"));
-        } else if (SynapseConstants.FORMAT_SOAP12.equals(endpointDefinition.getFormat())) {
-            element.addAttribute(fac.createOMAttribute("format", null, "soap12"));
-
-            // following two kept for backward compatibility
-        } else if (endpointDefinition.isForcePOX()) {
-            element.addAttribute(fac.createOMAttribute("format", null, "pox"));
-        } else if (endpointDefinition.isForceGET()) {
-            element.addAttribute(fac.createOMAttribute("format", null, "get"));
-        } else if (endpointDefinition.isForceSOAP11()) {
-            element.addAttribute(fac.createOMAttribute("format", null, "soap11"));
-        } else if (endpointDefinition.isForceSOAP12()) {
-            element.addAttribute(fac.createOMAttribute("format", null, "soap12"));
-        }
-
         if (endpointDefinition.isUseSwa()) {
             element.addAttribute(fac.createOMAttribute("optimize", null, "swa"));
         } else if (endpointDefinition.isUseMTOM()) {
@@ -115,7 +95,7 @@
             element.addAttribute(fac.createOMAttribute(
                     "encoding", null, endpointDefinition.getCharSetEncoding()));
         }
-        
+
         if (endpointDefinition.isAddressingOn()) {
             OMElement addressing = fac.createOMElement(
                     "enableAddressing", SynapseConstants.SYNAPSE_OMNAMESPACE);
@@ -124,7 +104,7 @@
                 addressing.addAttribute(fac.createOMAttribute(
                         "version", null, endpointDefinition.getAddressingVersion()));
             }
-            
+
             if (endpointDefinition.isUseSeparateListener()) {
                 addressing.addAttribute(fac.createOMAttribute("separateListener", null, "true"));
             }
@@ -184,6 +164,11 @@
         }
     }
 
+    protected void serializeSpecificEndpointProperties(EndpointDefinition endpointDefinition, OMElement element){
+
+    }
+
+
     protected void handleException(String message) {
         log.error(message);
         throw new SynapseException(message);

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/FailoverEndpointFactory.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/FailoverEndpointFactory.java?rev=664672&r1=664671&r2=664672&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/FailoverEndpointFactory.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/FailoverEndpointFactory.java Mon Jun  9 03:43:19 2008
@@ -24,6 +24,8 @@
 import org.apache.synapse.config.xml.XMLConfigConstants;
 import org.apache.synapse.endpoints.Endpoint;
 import org.apache.synapse.endpoints.FailoverEndpoint;
+import org.apache.synapse.endpoints.IndirectEndpoint;
+import org.apache.synapse.endpoints.utils.EndpointDefinition;
 
 import javax.xml.namespace.QName;
 import java.util.ArrayList;
@@ -64,21 +66,7 @@
             failoverEndpoint.setEndpoints(getEndpoints(failoverElement, failoverEndpoint));
             return failoverEndpoint;
         }
-
         return null;
     }
-    
-    private ArrayList<Endpoint> getEndpoints(OMElement failoverElement, Endpoint parent) {
-
-        ArrayList<Endpoint> endpoints = new ArrayList<Endpoint>();
-        Iterator iter = failoverElement.getChildrenWithName(XMLConfigConstants.ENDPOINT_ELT);
-        while (iter.hasNext()) {
-            OMElement endptElem = (OMElement) iter.next();
-            Endpoint endpoint = EndpointFactory.getEndpointFromElement(endptElem, true);
-            endpoint.setParentEndpoint(parent);
-            endpoints.add(endpoint);
-        }
 
-        return endpoints;
-    }
 }

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/LoadbalanceEndpointFactory.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/LoadbalanceEndpointFactory.java?rev=664672&r1=664671&r2=664672&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/LoadbalanceEndpointFactory.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/LoadbalanceEndpointFactory.java Mon Jun  9 03:43:19 2008
@@ -90,18 +90,4 @@
 
         return null;  //To change body of implemented methods use File | Settings | File Templates.
     }
-
-    private ArrayList<Endpoint> getEndpoints(OMElement loadbalanceElement, Endpoint parent) {
-
-        ArrayList<Endpoint> endpoints = new ArrayList<Endpoint>();
-        Iterator iter = loadbalanceElement.getChildrenWithName(XMLConfigConstants.ENDPOINT_ELT);
-        while (iter.hasNext()) {
-            OMElement endptElem = (OMElement) iter.next();
-            Endpoint endpoint = EndpointFactory.getEndpointFromElement(endptElem, true);
-            endpoint.setParentEndpoint(parent);
-            endpoints.add(endpoint);
-        }
-
-        return endpoints;
-    }
 }

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/SALoadbalanceEndpointFactory.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/SALoadbalanceEndpointFactory.java?rev=664672&r1=664671&r2=664672&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/SALoadbalanceEndpointFactory.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/SALoadbalanceEndpointFactory.java Mon Jun  9 03:43:19 2008
@@ -81,7 +81,8 @@
                 loadbalanceEndpoint.setDispatcher(csDispatcher);
             }
         } else {
-            handleException("Session affinity endpoints should have a session element in the configuration.");
+            handleException("Session affinity endpoints should " +
+                    "have a session element in the configuration.");
         }
 
         // set endpoint name
@@ -109,8 +110,8 @@
 
             // set abandon time
             //long abandonTime = 0;
-            //OMAttribute atAttribute = loadbalanceElement.getAttribute
-            //        (new QName(null, org.apache.synapse.config.xml.Constants.RETRY_AFTER_FAILURE_TIME));
+            //OMAttribute atAttribute = loadbalanceElement.getAttribute(new QName(
+            //      null, org.apache.synapse.config.xml.Constants.RETRY_AFTER_FAILURE_TIME));
             //if(atAttribute != null) {
             //    String at = atAttribute.getAttributeValue();
             //    abandonTime = Long.parseLong(at);
@@ -138,20 +139,6 @@
             return loadbalanceEndpoint;
         }
 
-        return null;  //To change body of implemented methods use File | Settings | File Templates.
-    }
-
-    private ArrayList<Endpoint> getEndpoints(OMElement loadbalanceElement, Endpoint parent) {
-
-        ArrayList<Endpoint> endpoints = new ArrayList<Endpoint>();
-        Iterator iter = loadbalanceElement.getChildrenWithName(XMLConfigConstants.ENDPOINT_ELT);
-        while (iter.hasNext()) {
-            OMElement endptElem = (OMElement) iter.next();
-            Endpoint endpoint = EndpointFactory.getEndpointFromElement(endptElem, true);
-            endpoint.setParentEndpoint(parent);
-            endpoints.add(endpoint);
-        }
-
-        return endpoints;
+        return null;
     }
 }

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/WSDLEndpointFactory.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/WSDLEndpointFactory.java?rev=664672&r1=664671&r2=664672&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/WSDLEndpointFactory.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/WSDLEndpointFactory.java Mon Jun  9 03:43:19 2008
@@ -25,6 +25,7 @@
 import org.apache.axiom.om.OMNode;
 import org.apache.axis2.description.WSDL2Constants;
 import org.apache.synapse.SynapseConstants;
+import org.apache.synapse.ServerManager;
 import org.apache.synapse.config.SynapseConfigUtils;
 import org.apache.synapse.config.xml.endpoints.utils.WSDL11EndpointBuilder;
 import org.apache.synapse.endpoints.Endpoint;
@@ -37,25 +38,40 @@
 
 /**
  * Creates an {@link WSDLEndpoint} based endpoint from a XML configuration.
- *
- * &lt;wsdl [uri="wsdl-uri"] service="qname" port/endpoint="qname"&gt;
- *   &lt;wsdl:definition&gt;...&lt;/wsdl:definition&gt;?
- *   &lt;wsdl20:description&gt;...&lt;/wsdl20:description&gt;?
- *   &lt;enableRM [policy="key"]/&gt;?
- *   &lt;enableSec [policy="key"]/&gt;?
- *   &lt;enableAddressing [version=("final" | "submission")]/&gt;?
- *   &lt;suspendDurationOnFailure&gt;suspend-duration&lt;/suspendDurationOnFailure&gt;?
- *   &lt;timeout&gt;
- *     &lt;duration&gt;timeout-duration&lt;/duration&gt;
- *     &lt;action&gt;discard|fault&lt;/action&gt;
- *   &lt;/timeout&gt;?
- * &lt;/wsdl&gt;
+ * <p>
+ * Configuration syntax:
+ * <pre>
+ * &lt;endpoint [name="<em>name</em>"]&gt;
+ *   &lt;wsdl [uri="<em>WSDL location</em>"]
+ *         service="<em>qualified name</em>" port="<em>qualified name</em>"
+ *         [format="soap11|soap12|pox|get"] [optimize="mtom|swa"]
+ *         [encoding="<em>charset encoding</em>"]
+ *         [statistics="enable|disable"] [trace="enable|disable"]&gt;
+ *     &lt;wsdl:definition&gt;...&lt;/wsdl:definition&gt;?
+ *     &lt;wsdl20:description&gt;...&lt;/wsdl20:description&gt;?
+ *     
+ *     &lt;enableRM [policy="<em>key</em>"]/&gt;?
+ *     &lt;enableSec [policy="<em>key</em>"]/&gt;?
+ *     &lt;enableAddressing [version="final|submission"] [separateListener="true|false"]/&gt;?
+ *     
+ *     &lt;timeout&gt;
+ *       &lt;duration&gt;<em>timeout duration in seconds</em>&lt;/duration&gt;
+ *       &lt;action&gt;discard|fault&lt;/action&gt;
+ *     &lt;/timeout&gt;?
+ *     
+ *     &lt;suspendDurationOnFailure&gt;
+ *       <em>suspend duration in seconds</em>
+ *     &lt;/suspendDurationOnFailure&gt;?
+ *   &lt;/wsdl&gt;
+ * &lt;/endpoint&gt;
+ * </pre>
  */
 public class WSDLEndpointFactory extends EndpointFactory {
 
     private static WSDLEndpointFactory instance = new WSDLEndpointFactory();
 
-    private WSDLEndpointFactory() {}
+    private WSDLEndpointFactory() {
+    }
 
     public static WSDLEndpointFactory getInstance() {
         return instance;
@@ -125,12 +141,12 @@
                     (new QName(org.apache.axis2.namespace.Constants.NS_URI_WSDL11, "definitions"));
             if (endpoint == null && definitionElement != null) {
                 wsdlEndpoint.setWsdlDoc(definitionElement);
-                String resolveRoot = System.getProperty(SynapseConstants.RESOLVE_ROOT);
+                String resolveRoot = ServerManager.getInstance().getResolveRoot();
                 String baseUri = "file:./";
                 if (resolveRoot != null) {
                     baseUri = resolveRoot.trim();
                 }
-                if(!baseUri.endsWith(File.separator)){
+                if (!baseUri.endsWith(File.separator)) {
                     baseUri = baseUri + File.separator;
                 }
                 endpoint = new WSDL11EndpointBuilder().createEndpointDefinitionFromWSDL(
@@ -144,10 +160,11 @@
                 wsdlEndpoint.setWsdlDoc(descriptionElement);
                 handleException("WSDL 2.0 Endpoints are currently not supported.");
             }
-            
+
             if (endpoint != null) {
                 // for now, QOS information has to be provided explicitly.
-                extractEndpointProperties(endpoint, wsdlElement);
+                extractCommonEndpointProperties(endpoint, wsdlElement);
+                extractSpecificEndpointProperties(endpoint, wsdlElement);
                 wsdlEndpoint.setEndpoint(endpoint);
             } else {
                 handleException("WSDL is not specified for WSDL endpoint.");
@@ -157,4 +174,8 @@
         return wsdlEndpoint;
     }
 
+    protected void extractSpecificEndpointProperties(EndpointDefinition definition, OMElement elem) {
+
+    }
+
 }

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/WSDLEndpointSerializer.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/WSDLEndpointSerializer.java?rev=664672&r1=664671&r2=664672&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/WSDLEndpointSerializer.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/WSDLEndpointSerializer.java Mon Jun  9 03:43:19 2008
@@ -21,7 +21,6 @@
 
 import org.apache.axiom.om.OMAbstractFactory;
 import org.apache.axiom.om.OMElement;
-import org.apache.axiom.om.OMFactory;
 import org.apache.synapse.SynapseConstants;
 import org.apache.synapse.SynapseException;
 import org.apache.synapse.endpoints.Endpoint;
@@ -30,13 +29,8 @@
 
 /**
  * Serializes an WSDL based endpoint to an XML configuration.
- *
- * <endpoint [name="name"]>
- *    <suspendDurationOnFailue>suspend-duration</suspendDurationOnFailue>
- *    <wsdl uri="wsdl uri" service="service name" port="port name">
- *       .. extensibility ..
- *    </wsdl>
- * </endpoint>
+ * 
+ * @see WSDLEndpointFactory
  */
 public class WSDLEndpointSerializer extends EndpointSerializer {
 
@@ -81,11 +75,14 @@
         // special elements under the wsdl element. in future, these information should be
         // extracted from the wsdl.
         EndpointDefinition epDefinition = wsdlEndpoint.getEndpoint();
-        serializeQOSInformation(epDefinition, wsdlElement);
-
+        serializeCommonEndpointProperties(epDefinition, wsdlElement);
+        serializeSpecificEndpointProperties(epDefinition, wsdlElement);
         endpointElement.addChild(wsdlElement);
 
         return endpointElement;
     }
-    
+
+    protected void serializeSpecificEndpointProperties(EndpointDefinition endpointDefinition, OMElement element) {
+    }
+
 }

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/utils/WSDL11EndpointBuilder.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/utils/WSDL11EndpointBuilder.java?rev=664672&r1=664671&r2=664672&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/utils/WSDL11EndpointBuilder.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/utils/WSDL11EndpointBuilder.java Mon Jun  9 03:43:19 2008
@@ -173,8 +173,15 @@
         if (serviceURL != null) {
             EndpointDefinition endpointDefinition = new EndpointDefinition();
             endpointDefinition.setAddress(serviceURL);
+            if (SynapseConstants.FORMAT_SOAP11.equals(format)) {
+                endpointDefinition.setForceSOAP11(true);
+            } else if (SynapseConstants.FORMAT_SOAP12.equals(format)) {
+                endpointDefinition.setForceSOAP12(true);
+            } else {
+                handleException("format value -\"" + format + "\" not yet implemented");
+            }
             endpointDefinition.setFormat(format);
-            
+
             // todo: determine this using wsdl and policy                                    
 
             return endpointDefinition;

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java?rev=664672&r1=664671&r2=664672&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java Mon Jun  9 03:43:19 2008
@@ -101,15 +101,15 @@
                 "] [sec = " + wsSecurityEnabled +
                 "] [rm = " + wsRMEnabled +
                 (endpoint != null ?
-                    "] [ mtom = " + endpoint.isUseMTOM() +
-                    "] [ swa = " + endpoint.isUseSwa() +
-                    "] [ format = " + endpoint.getFormat() +                    
-                    "] [ force soap11=" + endpoint.isForceSOAP11() +
-                    "] [ force soap12=" + endpoint.isForceSOAP12() +
-                    "] [ pox=" + endpoint.isForcePOX() +
-                    "] [ get=" + endpoint.isForceGET() +
-                    "] [ encoding=" + endpoint.getCharSetEncoding() : "") +
-                "] [ to " + synapseOutMessageContext.getTo() + "]");
+                    "] [mtom = " + endpoint.isUseMTOM() +
+                    "] [swa = " + endpoint.isUseSwa() +
+                    "] [format = " + endpoint.getFormat() +
+                    "] [force soap11=" + endpoint.isForceSOAP11() +
+                    "] [force soap12=" + endpoint.isForceSOAP12() +
+                    "] [pox=" + endpoint.isForcePOX() +
+                    "] [get=" + endpoint.isForceGET() +
+                    "] [encoding=" + endpoint.getCharSetEncoding() : "") +
+                "] [to " + synapseOutMessageContext.getTo() + "]");
         }
 
         // save the original message context wihout altering it, so we can tie the response
@@ -279,13 +279,13 @@
             mepClient.setCallback(callback);
         }
 
-        mepClient.execute(true);
-
         // with the nio transport, this causes the listener not to write a 202
         // Accepted response, as this implies that Synapse does not yet know if
         // a 202 or 200 response would be written back.
         originalInMsgCtx.getOperationContext().setProperty(
             org.apache.axis2.Constants.RESPONSE_WRITTEN, "SKIP");
+
+        mepClient.execute(true);        
    }
 
     private static MessageContext cloneForSend(MessageContext ori) throws AxisFault {

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2SynapseEnvironment.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2SynapseEnvironment.java?rev=664672&r1=664671&r2=664672&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2SynapseEnvironment.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2SynapseEnvironment.java Mon Jun  9 03:43:19 2008
@@ -253,8 +253,9 @@
 			mc.setEnvelope(OMAbstractFactory.getSOAP12Factory().createSOAPEnvelope());
 			mc.getEnvelope().addChild(OMAbstractFactory.getSOAP12Factory().createSOAPBody());
 		} catch (Exception e) {
-			e.printStackTrace();
-		}
+            handleException("Unable to attach the SOAP envelope to " +
+                    "the created new message context", e);
+        }
 
         return mc;
     }
@@ -334,4 +335,9 @@
         this.initialized = state;
     }
 
+    private void handleException(String message, Throwable e) {
+        log.error(message, e);
+        throw new SynapseException(message, e);
+    }
+
 }

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/ProxyService.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/ProxyService.java?rev=664672&r1=664671&r2=664672&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/ProxyService.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/ProxyService.java Mon Jun  9 03:43:19 2008
@@ -25,12 +25,14 @@
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.description.*;
 import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.engine.AxisEvent;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.neethi.Policy;
 import org.apache.neethi.PolicyEngine;
 import org.apache.synapse.SynapseConstants;
 import org.apache.synapse.SynapseException;
+import org.apache.synapse.ServerManager;
 import org.apache.synapse.config.SynapseConfigUtils;
 import org.apache.synapse.config.SynapseConfiguration;
 import org.apache.synapse.core.SynapseEnvironment;
@@ -305,7 +307,7 @@
 
                         wsdlToAxisServiceBuilder.setBaseUri(
                                 wsdlURI != null ? wsdlURI.toString() :
-                                        System.getProperty(SynapseConstants.SYNAPSE_HOME));
+                                        ServerManager.getInstance().getSynapseHome());
 
                         if (trace()) {
                             trace.info("Setting up custom resolvers");
@@ -523,8 +525,9 @@
 
     private Policy getPolicyFromKey(String key, SynapseConfiguration synCfg) {
 
-        return PolicyEngine.getPolicy(SynapseConfigUtils.getStreamSource(
-                synCfg.getEntry(key)).getInputStream());
+        synCfg.getEntryDefinition(key);
+        return PolicyEngine.getPolicy(
+                SynapseConfigUtils.getStreamSource(synCfg.getEntry(key)).getInputStream());
     }
 
     /**
@@ -551,8 +554,10 @@
                 auditWarn("Unable to find the SynapseEnvironment. " +
                     "Components of the proxy service may not be initialized");
             }
-            
-            axisConfig.getServiceForActivation(this.getName()).setActive(true);
+
+            AxisService as = axisConfig.getServiceForActivation(this.getName());
+            as.setActive(true);
+            axisConfig.notifyObservers(AxisEvent.SERVICE_START, as);
             this.setRunning(true);
             auditInfo("Started the proxy service : " + name);
         } else {
@@ -583,9 +588,10 @@
                 AxisService as = axisConfig.getService(this.getName());
                 if (as != null) {
                     as.setActive(false);
+                    axisConfig.notifyObservers(AxisEvent.SERVICE_STOP, as);
                 }
                 this.setRunning(false);
-                auditInfo("Started the proxy service : " + name);
+                auditInfo("Stopped the proxy service : " + name);
             } catch (AxisFault axisFault) {
                 handleException("Error stopping the proxy service : " + name, axisFault);
             }

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseCallbackReceiver.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseCallbackReceiver.java?rev=664672&r1=664671&r2=664672&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseCallbackReceiver.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseCallbackReceiver.java Mon Jun  9 03:43:19 2008
@@ -74,11 +74,7 @@
         TimeoutHandler timeoutHandler = new TimeoutHandler(callbackStore);
         
         Timer timeOutTimer = synCfg.getSynapseTimer();
-        long timeoutHandlerInterval = SynapseConstants.DEFAULT_TIMEOUT_HANDLER_INTERVAL;
-        try {
-            timeoutHandlerInterval = Long.parseLong(
-                System.getProperty(SynapseConstants.TIMEOUT_HANDLER_INTERVAL));
-        } catch (Exception ignore) {}
+        long timeoutHandlerInterval = ServerManager.getInstance().getTimeoutHandlerInterval();
 
         // schedule timeout handler to run every n seconds (n : specified or defaults to 15s)
         timeOutTimer.schedule(timeoutHandler, 0, timeoutHandlerInterval);

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseInitializationModule.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseInitializationModule.java?rev=664672&r1=664671&r2=664672&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseInitializationModule.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseInitializationModule.java Mon Jun  9 03:43:19 2008
@@ -32,6 +32,7 @@
 import org.apache.neethi.Policy;
 import org.apache.synapse.SynapseConstants;
 import org.apache.synapse.SynapseException;
+import org.apache.synapse.ServerManager;
 import org.apache.synapse.config.SynapseConfiguration;
 import org.apache.synapse.config.SynapseConfigurationBuilder;
 
@@ -95,19 +96,11 @@
         transports.add(Constants.TRANSPORT_HTTPS);
         synapseService.setExposedTransports(transports);
         axisCfg.addService(synapseService);
-
-        log.info("Initializing Mercury...");
-        AxisModule mercuryAxisModule = configurationContext.getAxisConfiguration().
-            getModule(SynapseConstants.MERCURY_MODULE_NAME);
-        if (mercuryAxisModule != null) {
-            Module mercury = mercuryAxisModule.getModule();
-            mercury.init(configurationContext, mercuryAxisModule);
-        }
-
+        
         // this server name is given by system property SynapseServerName
         // otherwise take host-name
         // if nothing found assume localhost
-        String thisServerName = System.getProperty(SynapseConstants.SYNAPSE_SERVER_NAME);
+        String thisServerName = ServerManager.getInstance().getServerName();
         if(thisServerName == null || thisServerName.equals("")) {
           try {
             InetAddress addr = InetAddress.getLocalHost();
@@ -154,16 +147,12 @@
         AxisConfiguration axisConfiguration = cfgCtx.getAxisConfiguration();
         SynapseConfiguration synapseConfiguration;
 
-        String config = System.getProperty(SynapseConstants.SYNAPSE_XML);
+        String config = ServerManager.getInstance().getSynapseXMLPath();
 
         if (config != null) {
-            if (log.isDebugEnabled()) {
-                log.debug("System property '" + SynapseConstants.SYNAPSE_XML +
-                        "' specifies Synapse configuration as " + config);
-            }
             synapseConfiguration = SynapseConfigurationBuilder.getConfiguration(config);
         } else {
-            log.warn("System property '" + SynapseConstants.SYNAPSE_XML +
+            log.warn("System property or init-parameter '" + SynapseConstants.SYNAPSE_XML +
                 "' is not specified. Using default configuration..");
             synapseConfiguration = SynapseConfigurationBuilder.getDefaultConfiguration();
         }