You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@synapse.apache.org by ru...@apache.org on 2008/01/17 12:32:19 UTC

svn commit: r612796 - in /webservices/synapse/branches/1.1.1/modules/core/src/main/java/org/apache/synapse: core/axis2/ProxyService.java mediators/base/SequenceMediator.java

Author: ruwan
Date: Thu Jan 17 03:31:35 2008
New Revision: 612796

URL: http://svn.apache.org/viewvc?rev=612796&view=rev
Log:
Fixing the initialization of the sequecens inlined in proxy and prevented the repeated initialization of the refered sequences

Modified:
    webservices/synapse/branches/1.1.1/modules/core/src/main/java/org/apache/synapse/core/axis2/ProxyService.java
    webservices/synapse/branches/1.1.1/modules/core/src/main/java/org/apache/synapse/mediators/base/SequenceMediator.java

Modified: webservices/synapse/branches/1.1.1/modules/core/src/main/java/org/apache/synapse/core/axis2/ProxyService.java
URL: http://svn.apache.org/viewvc/webservices/synapse/branches/1.1.1/modules/core/src/main/java/org/apache/synapse/core/axis2/ProxyService.java?rev=612796&r1=612795&r2=612796&view=diff
==============================================================================
--- webservices/synapse/branches/1.1.1/modules/core/src/main/java/org/apache/synapse/core/axis2/ProxyService.java (original)
+++ webservices/synapse/branches/1.1.1/modules/core/src/main/java/org/apache/synapse/core/axis2/ProxyService.java Thu Jan 17 03:31:35 2008
@@ -19,8 +19,8 @@
 
 package org.apache.synapse.core.axis2;
 
-import org.apache.axiom.om.OMNamespace;
 import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.description.*;
 import org.apache.axis2.engine.AxisConfiguration;
@@ -30,20 +30,23 @@
 import org.apache.neethi.PolicyEngine;
 import org.apache.synapse.SynapseConstants;
 import org.apache.synapse.SynapseException;
-import org.apache.synapse.mediators.base.SequenceMediator;
-import org.apache.synapse.endpoints.Endpoint;
-import org.apache.synapse.config.SynapseConfiguration;
 import org.apache.synapse.config.SynapseConfigUtils;
+import org.apache.synapse.config.SynapseConfiguration;
+import org.apache.synapse.core.SynapseEnvironment;
+import org.apache.synapse.endpoints.Endpoint;
+import org.apache.synapse.mediators.base.SequenceMediator;
 import org.xml.sax.InputSource;
 
 import javax.xml.namespace.QName;
 import javax.xml.stream.XMLStreamException;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.ByteArrayInputStream;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URL;
 import java.util.*;
-import java.net.*;
 
 /**
  * <proxy-service name="string" [transports="(http |https |jms )+|all"] [trace="enable|disable"]>
@@ -474,6 +477,24 @@
     public void start(SynapseConfiguration synCfg) {
         AxisConfiguration axisConfig = synCfg.getAxisConfiguration();
         if (axisConfig != null) {
+            
+            Parameter param = axisConfig.getParameter(SynapseConstants.SYNAPSE_ENV);
+            if (param != null && param.getValue() instanceof SynapseEnvironment)  {
+                SynapseEnvironment env = (SynapseEnvironment) param.getValue();
+                if (targetInLineInSequence != null) {
+                    targetInLineInSequence.init(env);
+                }
+                if (targetInLineOutSequence != null) {
+                    targetInLineOutSequence.init(env);
+                }
+                if (targetInLineFaultSequence != null) {
+                    targetInLineFaultSequence.init(env);
+                }
+            } else {
+                auditWarn("Unable to find the SynapseEnvironment. " +
+                    "Components of the proxy service may not be initialized");
+            }
+            
             axisConfig.getServiceForActivation(this.getName()).setActive(true);
             this.setRunning(true);
             auditInfo("Started the proxy service : " + name);
@@ -490,6 +511,17 @@
     public void stop(SynapseConfiguration synCfg) {
         AxisConfiguration axisConfig = synCfg.getAxisConfiguration();
         if (axisConfig != null) {
+
+            if (targetInLineInSequence != null) {
+                targetInLineInSequence.destroy();
+            }
+            if (targetInLineOutSequence != null) {
+                targetInLineOutSequence.destroy();
+            }
+            if (targetInLineFaultSequence != null) {
+                targetInLineFaultSequence.destroy();
+            }
+
             try {
                 AxisService as = axisConfig.getService(this.getName());
                 if (as != null) {

Modified: webservices/synapse/branches/1.1.1/modules/core/src/main/java/org/apache/synapse/mediators/base/SequenceMediator.java
URL: http://svn.apache.org/viewvc/webservices/synapse/branches/1.1.1/modules/core/src/main/java/org/apache/synapse/mediators/base/SequenceMediator.java?rev=612796&r1=612795&r2=612796&view=diff
==============================================================================
--- webservices/synapse/branches/1.1.1/modules/core/src/main/java/org/apache/synapse/mediators/base/SequenceMediator.java (original)
+++ webservices/synapse/branches/1.1.1/modules/core/src/main/java/org/apache/synapse/mediators/base/SequenceMediator.java Thu Jan 17 03:31:35 2008
@@ -22,6 +22,7 @@
 import org.apache.synapse.Mediator;
 import org.apache.synapse.SynapseConstants;
 import org.apache.synapse.MessageContext;
+import org.apache.synapse.core.SynapseEnvironment;
 import org.apache.synapse.mediators.AbstractListMediator;
 import org.apache.synapse.mediators.MediatorFaultHandler;
 import org.apache.synapse.statistics.StatisticsUtils;
@@ -49,6 +50,8 @@
     private String errorHandler = null;
     /** is this definition dynamic */
     private boolean dynamic = false;
+    /** flag to ensure that each and every sequence is initialized and destroyed atmost once */
+    private boolean initialized = false;
     /** the registry key to load this definition if dynamic */
     private String registryKey = null;
 
@@ -178,6 +181,24 @@
         }
 
         return false;
+    }
+
+    /**
+     * This method will ensure that each and every sequence wil only be initialized atmost once
+     * @param se - enviorenment to be initialized
+     */
+    public synchronized void init(SynapseEnvironment se) {
+        if (!initialized) {
+            super.init(se);
+            initialized = true;
+        }
+    }
+
+    public synchronized void destroy() {
+        if (initialized) {
+            super.destroy();
+            initialized = false;
+        }
     }
 
     /**



---------------------------------------------------------------------
To unsubscribe, e-mail: synapse-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: synapse-dev-help@ws.apache.org