You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by su...@apache.org on 2011/04/28 11:23:23 UTC

svn commit: r1097378 - in /synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml: ./ endpoints/

Author: supun
Date: Thu Apr 28 09:23:22 2011
New Revision: 1097378

URL: http://svn.apache.org/viewvc?rev=1097378&view=rev
Log:
applying patch SYNAPSE 753, many thanks Udayanga for the contribution

Modified:
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MultiXMLConfigurationSerializer.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/DefaultEndpointFactory.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/EndpointDefinitionFactory.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/TemplateSerializer.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/WSDLEndpointFactory.java

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MultiXMLConfigurationSerializer.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MultiXMLConfigurationSerializer.java?rev=1097378&r1=1097377&r2=1097378&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MultiXMLConfigurationSerializer.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MultiXMLConfigurationSerializer.java Thu Apr 28 09:23:22 2011
@@ -19,11 +19,14 @@
 
 package org.apache.synapse.config.xml;
 
+import net.sf.saxon.value.SequenceType;
+import org.apache.synapse.config.xml.endpoints.TemplateSerializer;
 import org.apache.synapse.deployers.SynapseArtifactDeploymentStore;
 import org.apache.synapse.config.SynapseConfiguration;
 import org.apache.synapse.config.Entry;
 import org.apache.synapse.config.xml.eventing.EventSourceSerializer;
 import org.apache.synapse.config.xml.endpoints.EndpointSerializer;
+import org.apache.synapse.endpoints.Template;
 import org.apache.synapse.mediators.template.TemplateMediator;
 import org.apache.synapse.registry.Registry;
 import org.apache.synapse.core.axis2.ProxyService;
@@ -192,6 +195,11 @@ public class MultiXMLConfigurationSerial
                     MediatorSerializerFinder.getInstance().
                             getSerializer(seq).serializeMediator(definitions, seq);
                 }
+            } else if (o instanceof Template) {
+                Template templEndpoint = (Template) o;
+                if (templEndpoint.getFileName() == null) {
+                    new TemplateSerializer().serializeEndpointTemplate(templEndpoint, definitions);
+                }
             } else if (o instanceof AbstractEndpoint) {
                 AbstractEndpoint endpoint = (AbstractEndpoint) o;
                 if (endpoint.getFileName() == null) {
@@ -343,6 +351,25 @@ public class MultiXMLConfigurationSerial
         return seqElem;
     }
 
+    public OMElement serializeTemplate(Template template, SynapseConfiguration synapseConfig,
+                                       OMElement parent) throws Exception {
+
+        File seqDir = createDirectory(currentDirectory, MultiXMLConfigurationBuilder.TEMPLATES_DIR);
+
+        OMElement seqElem = new TemplateSerializer().serializeEndpointTemplate(template, parent);
+        String fileName = template.getFileName();
+        if (fileName != null) {
+            handleDeployment(seqDir, fileName, template.getName(),
+                    synapseConfig.getArtifactDeploymentStore());
+            File seqFile = new File(seqDir, fileName);
+            writeToFile(seqElem, seqFile);
+        } else if (parent != null) {
+            parent.addChild(seqElem);
+        }
+
+        return seqElem;
+    }
+
     public OMElement serializeEndpoint(Endpoint epr, SynapseConfiguration synapseConfig,
                                        OMElement parent) throws Exception {
 
@@ -368,6 +395,8 @@ public class MultiXMLConfigurationSerial
             return serializeTemplate((TemplateMediator) o, synapseConfig, parent);
         } else if (o instanceof SequenceMediator) {
             return serializeSequence((SequenceMediator) o, synapseConfig, parent);
+        } else if (o instanceof Template) {
+            return serializeTemplate((Template) o, synapseConfig, parent);
         } else if (o instanceof Endpoint) {
             return serializeEndpoint((Endpoint) o, synapseConfig, parent);
         } else if (o instanceof Entry) {
@@ -613,6 +642,20 @@ public class MultiXMLConfigurationSerial
                         EXECUTORS_DIR), exec.getFileName(), exec.getName(), deploymentStore);
             }
         }
+
+        for (TemplateMediator medTempl : synapseConfig.getSequenceTemplates().values()) {
+            if (medTempl.getFileName() != null) {
+                handleDeployment(new File(rootDirectory, MultiXMLConfigurationBuilder.
+                        TEMPLATES_DIR), medTempl.getFileName(), medTempl.getName(), deploymentStore);
+            }
+        }
+
+        for (Template endTempl : synapseConfig.getEndpointTemplates().values()) {
+            if (endTempl.getFileName() != null) {
+                handleDeployment(new File(rootDirectory, MultiXMLConfigurationBuilder.
+                        TEMPLATES_DIR), endTempl.getFileName(), endTempl.getName(), deploymentStore);
+            }
+        }
     }
 
 }
\ No newline at end of file

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=1097378&r1=1097377&r2=1097378&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 Thu Apr 28 09:23:22 2011
@@ -106,8 +106,14 @@ public class AddressEndpointFactory exte
     public EndpointDefinition createEndpointDefinition(OMElement elem) {
 
         OMAttribute address = elem.getAttribute(new QName("uri"));
-        EndpointDefinitionFactory fac = new EndpointDefinitionFactory();
-        EndpointDefinition endpointDefinition = fac.createDefinition(elem);
+        DefinitionFactory fac = getEndpointDefinitionFactory();
+        EndpointDefinition endpointDefinition;
+        if (fac == null) {
+            fac = new EndpointDefinitionFactory();
+            endpointDefinition = fac.createDefinition(elem);
+        } else{
+            endpointDefinition = fac.createDefinition(elem);
+        }
 
         if (address != null) {
             endpointDefinition.setAddress(address.getAttributeValue().trim());

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=1097378&r1=1097377&r2=1097378&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 Thu Apr 28 09:23:22 2011
@@ -121,9 +121,9 @@ public class DefaultEndpointFactory exte
                 definition.setForceREST(true);
                 definition.setFormat(SynapseConstants.FORMAT_REST);
 
-            } else {
+            } /*else if(!TemplateMappingsPopulator.populateMapping(definition, EndpointDefinition.EndpointDefKey.format, forceValue)) {
                 handleException("force value -\"" + forceValue + "\" not yet implemented");
-            }
+            }*/
         }
 
     }
@@ -137,8 +137,14 @@ public class DefaultEndpointFactory exte
      * @return EndpointDefinition object containing the endpoint details.
      */
     public EndpointDefinition createEndpointDefinition(OMElement elem) {
-        EndpointDefinitionFactory fac = new EndpointDefinitionFactory();
-        EndpointDefinition endpointDefinition = fac.createDefinition(elem);
+        DefinitionFactory fac = getEndpointDefinitionFactory();
+        EndpointDefinition endpointDefinition;
+        if (fac == null) {
+            fac = new EndpointDefinitionFactory();
+            endpointDefinition = fac.createDefinition(elem);
+        } else{
+            endpointDefinition = fac.createDefinition(elem);
+        }
         extractSpecificEndpointProperties(endpointDefinition, elem);
         return endpointDefinition;
     }

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/EndpointDefinitionFactory.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/EndpointDefinitionFactory.java?rev=1097378&r1=1097377&r2=1097378&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/EndpointDefinitionFactory.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/EndpointDefinitionFactory.java Thu Apr 28 09:23:22 2011
@@ -31,7 +31,7 @@ import org.apache.synapse.endpoints.Endp
 import javax.xml.namespace.QName;
 import java.util.StringTokenizer;
 
-public class EndpointDefinitionFactory {
+public class EndpointDefinitionFactory implements DefinitionFactory{
     public static final Log log = LogFactory.getLog(EndpointDefinitionFactory.class);
 
     /**

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=1097378&r1=1097377&r2=1097378&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 Thu Apr 28 09:23:22 2011
@@ -53,6 +53,7 @@ import java.util.*;
 public abstract class EndpointFactory implements XMLToObjectMapper {
 
     static Log log;
+    private DefinitionFactory customDefnFactory = null;
 
     protected EndpointFactory() {
         log = LogFactory.getLog(this.getClass());
@@ -80,6 +81,25 @@ public abstract class EndpointFactory im
     }
 
     /**
+     * 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}.However
+     * defintion for this endpoint will be built using a custom Endpoint Defn factory.
+     *
+     * @param elem        XML from which the endpoint will be built
+     * @param factory    custom definition factory which this endpoint will be used to build
+     * @param isAnonymous whether this is an anonymous endpoint or not
+     * @param properties bag of properties to pass in any information to the factory
+     * @return created endpoint
+     */
+    public static Endpoint getEndpointFromElement(OMElement elem,DefinitionFactory factory,
+                                                  boolean isAnonymous,
+                                                  Properties properties) {
+        EndpointFactory fac = getEndpointFactory(elem);
+        fac.setEndpointDefinitionFactory(factory);
+        return fac.createEndpointWithName(elem, isAnonymous, properties);
+    }
+
+    /**
      * Creates the {@link Endpoint} object from the provided {@link OMNode}
      *
      * @param om XML node from which the endpoint will be built
@@ -251,6 +271,22 @@ public abstract class EndpointFactory im
     }
 
     /**
+     * provide a custom Endpoint definition factory
+     * @param factory
+     */
+    public void setEndpointDefinitionFactory(DefinitionFactory factory){
+        customDefnFactory = factory;
+    }
+
+    /**
+     * return current factory for building this endpoint definition
+     * @return
+     */
+    public DefinitionFactory getEndpointDefinitionFactory(){
+        return customDefnFactory;
+    }
+
+    /**
      * Helper method to extract endpoint properties.
      *
      * @param endpoint actual endpoint to set the properties

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/TemplateSerializer.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/TemplateSerializer.java?rev=1097378&r1=1097377&r2=1097378&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/TemplateSerializer.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/TemplateSerializer.java Thu Apr 28 09:23:22 2011
@@ -58,6 +58,6 @@ public class TemplateSerializer {
             parent.addChild(templateElement);
         }
 
-        return parent;
+        return templateElement;
     }
 }

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=1097378&r1=1097377&r2=1097378&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 Thu Apr 28 09:23:22 2011
@@ -95,8 +95,14 @@ public class WSDLEndpointFactory extends
                 (new QName(SynapseConstants.SYNAPSE_NAMESPACE, "wsdl"));
         if (wsdlElement != null) {
 
-            EndpointDefinitionFactory fac = new EndpointDefinitionFactory();
-            EndpointDefinition endpoint = fac.createDefinition(wsdlElement);
+            DefinitionFactory fac = getEndpointDefinitionFactory();
+            EndpointDefinition endpoint;
+            if (fac == null) {
+                fac = new EndpointDefinitionFactory();
+                endpoint = fac.createDefinition(wsdlElement);
+            } else {
+                endpoint = fac.createDefinition(wsdlElement);
+            }
 
             // for now, QOS information has to be provided explicitly.
             extractSpecificEndpointProperties(endpoint, wsdlElement);