synapse-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Malith Dhanushka <mmali...@gmail.com>
Subject Re: svn commit: r1373302 - in /synapse/trunk/java: modules/core/ modules/core/src/main/java/org/apache/synapse/config/xml/ modules/core/src/main/java/org/apache/synapse/libraries/util/ modules/core/src/main/java/org/apache/synapse/mediators/ modules/
Date Thu, 16 Aug 2012 04:58:29 GMT
Hi,
All those samples are related to Synapse EIP Library (GSoC
project). Documentation patch is already attached by covering all the work
related project and above samples as well. Please refer [0],

[0] https://issues.apache.org/jira/browse/SYNAPSE-745

Thanks,
Malith



On Thu, Aug 16, 2012 at 9:07 AM, Rajika Kumarasiri <rajika@wso2.com> wrote:

> Yeah, as part of the patch we should ask for documentation as well.
>
> Rajika
>
> On Thu, Aug 16, 2012 at 12:04 AM, Andreas Veithen <
> andreas.veithen@gmail.com> wrote:
>
>> Please note that new samples are pretty much useless if there is no
>> corresponding documentation...
>>
>> Andreas
>>
>> On Wed, Aug 15, 2012 at 12:03 PM,  <uswick@apache.org> wrote:
>> > Author: uswick
>> > Date: Wed Aug 15 10:03:18 2012
>> > New Revision: 1373302
>> >
>> > URL: http://svn.apache.org/viewvc?rev=1373302&view=rev
>> > Log:
>> > commiting patches SYNAPSE-898,SYNAPSE-884, SYNAPSE-897 SYNAPSE-899,
>> SYNAPSE-901
>> >
>> > Added:
>> >
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/TemplateParameterFactory.java
>> >
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/TemplateParameterSerializer.java
>> >
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/TemplateParameter.java
>> >
>> synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/libraries/eip/
>> >
>> synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/libraries/eip/AbstractEipLibTestCase.java
>> >
>> synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/libraries/eip/EipLibTest.java
>> >
>> synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/assembly/assemble-eip-lib.xml
>> >
>> synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eip-lib/
>> >
>> synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eip-lib/artifacts.xml
>> >
>> synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eip-lib/eip_systemManagement/
>> >
>> synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eip-lib/eip_systemManagement/artifact.xml
>> >
>> synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eip-lib/eip_systemManagement/template_splitter.xml
>> >     synapse/trunk/java/repository/conf/sample/synapse_sample_850.xml
>> >     synapse/trunk/java/repository/conf/sample/synapse_sample_851.xml
>> >     synapse/trunk/java/repository/conf/sample/synapse_sample_852.xml
>> >     synapse/trunk/java/repository/conf/sample/synapse_sample_853.xml
>> >     synapse/trunk/java/repository/conf/sample/synapse_sample_854.xml
>> >     synapse/trunk/java/repository/conf/sample/synapse_sample_855.xml
>> >     synapse/trunk/java/repository/conf/sample/synapse_sample_856.xml
>> >     synapse/trunk/java/repository/conf/sample/synapse_sample_857.xml
>> > Modified:
>> >     synapse/trunk/java/modules/core/pom.xml
>> >
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/CloneMediatorFactory.java
>> >
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/IterateMediatorFactory.java
>> >
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/IterateMediatorSerializer.java
>> >
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/TemplateMediatorFactory.java
>> >
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/TemplateMediatorSerializer.java
>> >
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/libraries/util/LibDeployerUtils.java
>> >
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/template/TemplateContext.java
>> >
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/template/TemplateMediator.java
>> >
>> > Modified: synapse/trunk/java/modules/core/pom.xml
>> > URL:
>> http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/pom.xml?rev=1373302&r1=1373301&r2=1373302&view=diff
>> >
>> ==============================================================================
>> > --- synapse/trunk/java/modules/core/pom.xml (original)
>> > +++ synapse/trunk/java/modules/core/pom.xml Wed Aug 15 10:03:18 2012
>> > @@ -96,6 +96,25 @@
>> >                              </descriptors>
>> >                          </configuration>
>> >                      </execution>
>> > +                     <execution>
>> > +                        <id>eip-library-assembly</id>
>> > +                        <phase>generate-test-resources</phase>
>> > +                        <goals>
>> > +                            <goal>attached</goal>
>> > +                        </goals>
>> > +                        <configuration>
>> > +                            <finalName>synapse-eip-lib</finalName>
>> > +                            <filters>
>> > +                                <filter>
>> > +
>>  ${basedir}/src/test/resources/synapse-libraries/assembly/filter.properties
>> > +                                </filter>
>> > +                            </filters>
>> > +                            <descriptors>
>> > +
>>  <descriptor>src/test/resources/synapse-libraries/assembly/assemble-eip-lib.xml
>> > +                                </descriptor>
>> > +                            </descriptors>
>> > +                        </configuration>
>> > +                    </execution>
>> >                  </executions>
>> >              </plugin>
>> >
>> > @@ -115,6 +134,7 @@
>> >                                  <mkdir
>> dir="target/test_repos/client/modules"/>
>> >                                  <mkdir
>> dir="target/test_repos/synapse/synapse-libraries"/>
>> >                                  <copy
>> file="target/synapse-test-lib.zip"
>> todir="target/test_repos/synapse/synapse-libraries"/>
>> > +                                <copy
>> file="target/synapse-eip-lib.zip"
>> todir="target/test_repos/synapse/synapse-libraries"/>
>> >                              </tasks>
>> >                          </configuration>
>> >                          <goals>
>> > @@ -127,6 +147,7 @@
>> >                          <configuration>
>> >                              <tasks>
>> >                                  <delete
>> file="target/synapse-test-lib.zip"/>
>> > +                                <delete
>> file="target/synapse-eip-lib.zip"/>
>> >                              </tasks>
>> >                          </configuration>
>> >                          <goals>
>> >
>> > Modified:
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/CloneMediatorFactory.java
>> > URL:
>> http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/CloneMediatorFactory.java?rev=1373302&r1=1373301&r2=1373302&view=diff
>> >
>> ==============================================================================
>> > ---
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/CloneMediatorFactory.java
>> (original)
>> > +++
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/CloneMediatorFactory.java
>> Wed Aug 15 10:03:18 2012
>> > @@ -73,7 +73,7 @@ public class CloneMediatorFactory extend
>> >       */
>> >      public Mediator createSpecificMediator(OMElement elem, Properties
>> properties) {
>> >
>> > -       boolean asynchronousExe = true;
>> > +       boolean asynchronousExe = false;
>> >
>> >         CloneMediator mediator = new CloneMediator();
>> >          processAuditStatus(mediator, elem);
>> > @@ -94,8 +94,6 @@ public class CloneMediatorFactory extend
>> >          if (synchronousExeAttr != null &&
>> synchronousExeAttr.getAttributeValue().equals("true")) {
>> >                 asynchronousExe = false;
>> >          }
>> > -
>> > -        mediator.setSequential(!asynchronousExe);
>> >
>> >          Iterator targetElements = elem.getChildrenWithName(TARGET_Q);
>> >          while (targetElements.hasNext()) {
>> >
>> > Modified:
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/IterateMediatorFactory.java
>> > URL:
>> http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/IterateMediatorFactory.java?rev=1373302&r1=1373301&r2=1373302&view=diff
>> >
>> ==============================================================================
>> > ---
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/IterateMediatorFactory.java
>> (original)
>> > +++
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/IterateMediatorFactory.java
>> Wed Aug 15 10:03:18 2012
>> > @@ -128,7 +128,7 @@ public class IterateMediatorFactory exte
>> >                  attachPathValue, e);
>> >          }
>> >
>> > -        boolean asynchronous = true;
>> > +        boolean asynchronous = false;
>> >          OMAttribute asynchronousAttr =
>> elem.getAttribute(ATT_SEQUENCIAL);
>> >          if (asynchronousAttr != null &&
>> asynchronousAttr.getAttributeValue().equals("true")) {
>> >              asynchronous = false;
>> >
>> > Modified:
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/IterateMediatorSerializer.java
>> > URL:
>> http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/IterateMediatorSerializer.java?rev=1373302&r1=1373301&r2=1373302&view=diff
>> >
>> ==============================================================================
>> > ---
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/IterateMediatorSerializer.java
>> (original)
>> > +++
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/IterateMediatorSerializer.java
>> Wed Aug 15 10:03:18 2012
>> > @@ -85,8 +85,8 @@ public class IterateMediatorSerializer e
>> >              handleException("Missing expression of the IterateMediator
>> which is required.");
>> >          }
>> >
>> > -        if (itrMed.getTarget() != null &&
>> !itrMed.getTarget().isAsynchronous()) {
>> > -            itrElem.addAttribute("sequential", "true", nullNS);
>> > +        if (itrMed.getTarget() != null &&
>> itrMed.getTarget().isAsynchronous()) {
>> > +            itrElem.addAttribute("sequential", "false", nullNS);
>> >          }
>> >
>> >
>>  itrElem.addChild(TargetSerializer.serializeTarget(itrMed.getTarget()));
>> >
>> > Modified:
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/TemplateMediatorFactory.java
>> > URL:
>> http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/TemplateMediatorFactory.java?rev=1373302&r1=1373301&r2=1373302&view=diff
>> >
>> ==============================================================================
>> > ---
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/TemplateMediatorFactory.java
>> (original)
>> > +++
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/TemplateMediatorFactory.java
>> Wed Aug 15 10:03:18 2012
>> > @@ -22,6 +22,7 @@ import org.apache.axiom.om.OMAttribute;
>> >  import org.apache.axiom.om.OMElement;
>> >  import org.apache.synapse.Mediator;
>> >  import org.apache.synapse.SynapseException;
>> > +import org.apache.synapse.mediators.TemplateParameter;
>> >  import org.apache.synapse.mediators.template.TemplateMediator;
>> >
>> >  import javax.xml.namespace.QName;
>> > @@ -32,8 +33,8 @@ import java.util.Properties;
>> >  /**
>> >   * Factory class for Template configuration as follows
>> >   * <template name="simple_func">
>> > -           <parameter name="p1"/>
>> > -        <parameter name="p2"/>*
>> > +           <parameter name="p1" [default="value|expression"]
>> [optional=(true|false)]/>
>> > +        <parameter name="p2" [default="value|expression"]
>> [optional=(true|false)]/>*
>> >          <mediator/>+
>> >      </template>
>> >   */
>> > @@ -43,20 +44,14 @@ public class TemplateMediatorFactory ext
>> >      private static final QName TEMPLATE_BODY_Q
>> >              = new QName(XMLConfigConstants.SYNAPSE_NAMESPACE,
>> "sequence");
>> >
>> > -    /**
>> > -     * Element  QName Definitions
>> > -     */
>> > -    public static final QName PARAMETER_Q = new QName(
>> > -            XMLConfigConstants.SYNAPSE_NAMESPACE, "parameter");
>> > -
>> > -
>> >      protected Mediator createSpecificMediator(OMElement elem,
>> Properties properties) {
>> >          TemplateMediator templateTemplateMediator = new
>> TemplateMediator();
>> >          OMAttribute nameAttr = elem.getAttribute(ATT_NAME);
>> >          if (nameAttr != null) {
>> >
>>  templateTemplateMediator.setName(nameAttr.getAttributeValue());
>> >              processAuditStatus(templateTemplateMediator, elem);
>> > -            initParameters(elem, templateTemplateMediator);
>> > +            //set template parameters
>> > +
>>  templateTemplateMediator.setParameters(TemplateParameterFactory.getTemplateParameters(elem));
>> >              OMElement templateBodyElem =
>> elem.getFirstChildWithName(TEMPLATE_BODY_Q);
>> >              addChildren(templateBodyElem, templateTemplateMediator,
>> properties);
>> >          } else {
>> > @@ -67,22 +62,6 @@ public class TemplateMediatorFactory ext
>> >          return templateTemplateMediator;
>> >      }
>> >
>> > -    private void initParameters(OMElement templateElem,
>> TemplateMediator templateMediator) {
>> > -        Iterator subElements = templateElem.getChildElements();
>> > -        Collection<String> paramNames = new ArrayList<String>();
>> > -        while (subElements.hasNext()) {
>> > -            OMElement child = (OMElement) subElements.next();
>> > -            if (child.getQName().equals(PARAMETER_Q)) {
>> > -                OMAttribute paramNameAttr =
>> child.getAttribute(ATT_NAME);
>> > -                if (paramNameAttr != null) {
>> > -                    paramNames.add(paramNameAttr.getAttributeValue());
>> > -                }
>> > -//                child.detach();
>> > -            }
>> > -        }
>> > -        templateMediator.setParameters(paramNames);
>> > -    }
>> > -
>> >      public QName getTagQName() {
>> >          return TEMPLATE_Q;
>> >      }
>> >
>> > Modified:
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/TemplateMediatorSerializer.java
>> > URL:
>> http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/TemplateMediatorSerializer.java?rev=1373302&r1=1373301&r2=1373302&view=diff
>> >
>> ==============================================================================
>> > ---
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/TemplateMediatorSerializer.java
>> (original)
>> > +++
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/TemplateMediatorSerializer.java
>> Wed Aug 15 10:03:18 2012
>> > @@ -20,17 +20,17 @@ package org.apache.synapse.config.xml;
>> >
>> >  import org.apache.axiom.om.OMElement;
>> >  import org.apache.synapse.Mediator;
>> > +import org.apache.synapse.mediators.TemplateParameter;
>> >  import org.apache.synapse.mediators.template.TemplateMediator;
>> >
>> >  import java.util.Collection;
>> > -import java.util.Iterator;
>> >  import java.util.List;
>> >
>> >  /**
>> >   *  Serializer class for Template to serialize into a  configuration
>> as follows
>> >   * <template name="simple_func">
>> > -           <parameter name="p1"/>
>> > -        <parameter name="p2"/>*
>> > +           <parameter name="p1" [default="value|expression"]
>> [optional=(true|false)]/>
>> > +        <parameter name="p2" [default="value|expression"]
>> [optional=(true|false)]/>*
>> >          <mediator/>+
>> >      </template>
>> >   */
>> > @@ -47,6 +47,7 @@ public class TemplateMediatorSerializer
>> >          if (mediator.getName() != null) {
>> >              templateElem.addAttribute(fac.createOMAttribute(
>> >                      "name", nullNS, mediator.getName()));
>> > +            //serialize parameters
>> >              serializeParams(templateElem,mediator);
>> >              serializeBody(templateElem, mediator.getList());
>> >              saveTracingState(templateElem, mediator);
>> > @@ -55,14 +56,16 @@ public class TemplateMediatorSerializer
>> >          return templateElem;
>> >      }
>> >
>> > +     /**
>> > +     * Serialize parameters for the template mediator specified
>> > +     *
>> > +     * @param templateElem the OMElement that specifies the template
>> configuration
>> > +     * @param mediator the TemplateMediator
>> > +     */
>> >      private void serializeParams(OMElement templateElem,
>> TemplateMediator mediator) {
>> > -        Collection<String> params = mediator.getParameters();
>> > -        for (String param : params) {
>> > -            if (param != null && !"".equals(param)) {
>> > -                OMElement paramEl = fac.createOMElement("parameter",
>> synNS);
>> > -                paramEl.addAttribute(fac.createOMAttribute("name",
>> nullNS, param));
>> > -                templateElem.addChild(paramEl);
>> > -            }
>> > +        Collection<TemplateParameter> params =
>> mediator.getParameters();
>> > +        if (params != null && params.size() > 0) {
>> > +
>> TemplateParameterSerializer.serializeTemplateParameters(templateElem,mediator.getParameters());
>> >          }
>> >      }
>> >
>> >
>> > Added:
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/TemplateParameterFactory.java
>> > URL:
>> http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/TemplateParameterFactory.java?rev=1373302&view=auto
>> >
>> ==============================================================================
>> > ---
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/TemplateParameterFactory.java
>> (added)
>> > +++
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/TemplateParameterFactory.java
>> Wed Aug 15 10:03:18 2012
>> > @@ -0,0 +1,98 @@
>> > +/*
>> > + *  Licensed to the Apache Software Foundation (ASF) under one
>> > + *  or more contributor license agreements.  See the NOTICE file
>> > + *  distributed with this work for additional information
>> > + *  regarding copyright ownership.  The ASF licenses this file
>> > + *  to you under the Apache License, Version 2.0 (the
>> > + *  "License"); you may not use this file except in compliance
>> > + *  with the License.  You may obtain a copy of the License at
>> > + *
>> > + *   http://www.apache.org/licenses/LICENSE-2.0
>> > + *
>> > + *  Unless required by applicable law or agreed to in writing,
>> > + *  software distributed under the License is distributed on an
>> > + *   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
>> > + *  KIND, either express or implied.  See the License for the
>> > + *  specific language governing permissions and limitations
>> > + *  under the License.
>> > + */
>> > +package org.apache.synapse.config.xml;
>> > +
>> > +import org.apache.axiom.om.OMAttribute;
>> > +import org.apache.axiom.om.OMElement;
>> > +import org.apache.commons.logging.Log;
>> > +import org.apache.commons.logging.LogFactory;
>> > +import org.apache.synapse.SynapseException;
>> > +import org.apache.synapse.mediators.TemplateParameter;
>> > +import org.apache.synapse.mediators.Value;
>> > +
>> > +import java.util.ArrayList;
>> > +import java.util.Iterator;
>> > +import java.util.List;
>> > +
>> > +/**
>> > + * A utility class capable of creating instances of TemplateParameter
>> objects by reading
>> > + * through a given XML configuration
>> > + *
>> > + * <pre>
>> > + * &lt;element&gt;
>> > + *    &lt;parameter name="p1" [default="value|expression"]
>> [optional=(true|false)]/&gt;*
>> > + * &lt;/element&gt;
>> > + * </pre>
>> > + */
>> > +public class TemplateParameterFactory {
>> > +    private static final Log log =
>> LogFactory.getLog(TemplateParameterFactory.class);
>> > +
>> > +     /**
>> > +     * Creates a list of parameters in a given template
>> > +     *
>> > +     * @param elem the OMElement that specifies the template
>> configuration
>> > +     * @return the list of TemplateParameter instances created
>> > +     */
>> > +    public static List<TemplateParameter>
>> getTemplateParameters(OMElement elem) {
>> > +
>> > +        List<TemplateParameter> parameterList = new
>> ArrayList<TemplateParameter>();
>> > +
>> > +        Iterator iter =
>> elem.getChildrenWithName(TemplateParameter.PARAMETER_Q);
>> > +
>> > +        while (iter.hasNext()) {
>> > +
>> > +            OMElement paramEle = (OMElement) iter.next();
>> > +            OMAttribute attName =
>> paramEle.getAttribute(TemplateParameter.ATT_NAME_Q);
>> > +            OMAttribute attDefault =
>> paramEle.getAttribute(TemplateParameter.ATT_DEFAULT_Q);
>> > +            OMAttribute attOptional =
>> paramEle.getAttribute(TemplateParameter.ATT_OPTIONAL_Q);
>> > +
>> > +            TemplateParameter param = new TemplateParameter();
>> > +
>> > +            if (attName == null || attName.getAttributeValue() == null
>> ||
>> > +                    attName.getAttributeValue().trim().length() == 0) {
>> > +                String msg = "Parameter name is a required attribute
>> for a Template Parameter";
>> > +                log.error(msg);
>> > +                throw new SynapseException(msg);
>> > +            } else {
>> > +                param.setName(attName.getAttributeValue());
>> > +            }
>> > +
>> > +
>> > +            if (attDefault == null || attDefault.getAttributeValue()
>> == null ||
>> > +                    attDefault.getAttributeValue().trim().length() ==
>> 0) {
>> > +                String msg = "Default value is not specified for " +
>> param.getName() + " Parameter";
>> > +                log.warn(msg);
>> > +            } else {
>> > +                Value paramValue = new
>> ValueFactory().createValue("default", paramEle);
>> > +                param.setDefaultValue(paramValue);
>> > +            }
>> > +
>> > +            if (attOptional == null || attOptional.getAttributeValue()
>> == null ||
>> > +                    attOptional.getAttributeValue().trim().length() ==
>> 0) {
>> > +            } else {
>> > +
>>  param.setOptional(Boolean.valueOf(attOptional.getAttributeValue()));
>> > +            }
>> > +
>> > +            parameterList.add(param);
>> > +        }
>> > +
>> > +        return parameterList;
>> > +    }
>> > +
>> > +}
>> >
>> > Added:
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/TemplateParameterSerializer.java
>> > URL:
>> http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/TemplateParameterSerializer.java?rev=1373302&view=auto
>> >
>> ==============================================================================
>> > ---
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/TemplateParameterSerializer.java
>> (added)
>> > +++
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/TemplateParameterSerializer.java
>> Wed Aug 15 10:03:18 2012
>> > @@ -0,0 +1,111 @@
>> > +/*
>> > + *  Licensed to the Apache Software Foundation (ASF) under one
>> > + *  or more contributor license agreements.  See the NOTICE file
>> > + *  distributed with this work for additional information
>> > + *  regarding copyright ownership.  The ASF licenses this file
>> > + *  to you under the Apache License, Version 2.0 (the
>> > + *  "License"); you may not use this file except in compliance
>> > + *  with the License.  You may obtain a copy of the License at
>> > + *
>> > + *   http://www.apache.org/licenses/LICENSE-2.0
>> > + *
>> > + *  Unless required by applicable law or agreed to in writing,
>> > + *  software distributed under the License is distributed on an
>> > + *   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
>> > + *  KIND, either express or implied.  See the License for the
>> > + *  specific language governing permissions and limitations
>> > + *  under the License.
>> > + */
>> > +package org.apache.synapse.config.xml;
>> > +
>> > +import org.apache.axiom.om.OMAbstractFactory;
>> > +import org.apache.axiom.om.OMElement;
>> > +import org.apache.axiom.om.OMFactory;
>> > +import org.apache.axiom.om.OMNamespace;
>> > +import org.apache.commons.logging.Log;
>> > +import org.apache.commons.logging.LogFactory;
>> > +import org.apache.synapse.SynapseConstants;
>> > +import org.apache.synapse.SynapseException;
>> > +import org.apache.synapse.mediators.TemplateParameter;
>> > +
>> > +import javax.xml.namespace.QName;
>> > +import java.util.Collection;
>> > +
>> > +/**
>> > + * A utility class for serializing instances of TemplateParameter
>> objects by reading
>> > + * through a given XML configuration
>> > + *
>> > + * <pre>
>> > + * &lt;element&gt;
>> > + *    &lt;parameter name="p1" [default="value|expression"]
>> [optional=(true|false)]/&gt;*
>> > + * &lt;/element&gt;
>> > + * </pre>
>> > + */
>> > +public class TemplateParameterSerializer {
>> > +    private static final Log log =
>> LogFactory.getLog(TemplateParameterSerializer.class);
>> > +
>> > +    protected static final OMFactory fac =
>> OMAbstractFactory.getOMFactory();
>> > +    protected static final OMNamespace synNS =
>> SynapseConstants.SYNAPSE_OMNAMESPACE;
>> > +    protected static final OMNamespace nullNS
>> > +            = fac.createOMNamespace(XMLConfigConstants.NULL_NAMESPACE,
>> "");
>> > +
>> > +    protected static final QName PARAMETER_Q
>> > +        = new QName(XMLConfigConstants.SYNAPSE_NAMESPACE, "parameter");
>> > +
>> > +    /**
>> > +     * Serialize all the parameters to the given parent element. For
>> each and every
>> > +     * parameter there will be a separate parameter element created
>> inside the parent element.
>> > +     *
>> > +     * @param parent element to which parameter elements should be
>> added
>> > +     * @param params the list of  TemplateParameter objects
>> > +     */
>> > +    public static void serializeTemplateParameters(OMElement parent,
>> > +
>> Collection<TemplateParameter> params) {
>> > +            serializeTemplateParameters(parent, params, PARAMETER_Q);
>> > +    }
>> > +
>> > +    /**
>> > +     * Serialize all the parameters to the given parent element. For
>> each and every
>> > +     * parameter there will be a separate parameter element created
>> inside the parent element.
>> > +     *
>> > +     * @param parent element to which parameter elements should be
>> added
>> > +     * @param params the list of  TemplateParameter objects
>> > +     * @param childElementName of the parameter element to be created
>> > +     */
>> > +    public static void serializeTemplateParameters(OMElement parent,
>> > +
>> Collection<TemplateParameter> params,
>> > +                                               QName childElementName)
>> {
>> > +        for (TemplateParameter tp : params) {
>> > +            serializeTemplateParameter(parent,tp, childElementName);
>> > +        }
>> > +    }
>> > +
>> > +    /**
>> > +     * Serialize the parameter to the given parent element. There will
>> be a element created with
>> > +     * given configuration inside the parent element.
>> > +     *
>> > +     * @param parent element to which parameter elements should be
>> added
>> > +     * @param tp a property to be serialized
>> > +     * @param childElementName of the parameter element to be created
>> > +     */
>> > +    public static void serializeTemplateParameter(OMElement parent,
>> > +                                             TemplateParameter tp,
>> > +                                             QName childElementName) {
>> > +        OMElement param = fac.createOMElement(childElementName,
>> parent);
>> > +        if (tp.getName() != null) {
>> > +            param.addAttribute(fac.createOMAttribute("name", nullNS,
>> tp.getName()));
>> > +        } else {
>> > +            String msg = "Template parameter name missing";
>> > +            log.error(msg);
>> > +            throw new SynapseException(msg);
>> > +        }
>> > +
>> > +        if (tp.getDefaultValue() != null) {
>> > +            new ValueSerializer().serializeValue(tp.getDefaultValue(),
>> "default", param);
>> > +
>> > +        if (tp.isOptional()) {
>> > +            param.addAttribute(fac.createOMAttribute("optional",
>> nullNS, "true"));
>> > +        }
>> > +    }
>> > +}
>> > +}
>> > \ No newline at end of file
>> >
>> > Modified:
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/libraries/util/LibDeployerUtils.java
>> > URL:
>> http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/libraries/util/LibDeployerUtils.java?rev=1373302&r1=1373301&r2=1373302&view=diff
>> >
>> ==============================================================================
>> > ---
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/libraries/util/LibDeployerUtils.java
>> (original)
>> > +++
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/libraries/util/LibDeployerUtils.java
>> Wed Aug 15 10:03:18 2012
>> > @@ -56,6 +56,8 @@ public class LibDeployerUtils {
>> >
>> >
>> >      public static Library createSynapseLibrary(String libPath) {
>> > +        createDir(APP_UNZIP_DIR);
>> > +
>> >          String libFilePath = LibDeployerUtils.formatPath(libPath);
>> >          //extract
>> >          String extractPath =
>> LibDeployerUtils.extractSynapseLib(libFilePath);
>> >
>> > Added:
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/TemplateParameter.java
>> > URL:
>> http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/TemplateParameter.java?rev=1373302&view=auto
>> >
>> ==============================================================================
>> > ---
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/TemplateParameter.java
>> (added)
>> > +++
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/TemplateParameter.java
>> Wed Aug 15 10:03:18 2012
>> > @@ -0,0 +1,71 @@
>> > +/*
>> > + *  Licensed to the Apache Software Foundation (ASF) under one
>> > + *  or more contributor license agreements.  See the NOTICE file
>> > + *  distributed with this work for additional information
>> > + *  regarding copyright ownership.  The ASF licenses this file
>> > + *  to you under the Apache License, Version 2.0 (the
>> > + *  "License"); you may not use this file except in compliance
>> > + *  with the License.  You may obtain a copy of the License at
>> > + *
>> > + *   http://www.apache.org/licenses/LICENSE-2.0
>> > + *
>> > + *  Unless required by applicable law or agreed to in writing,
>> > + *  software distributed under the License is distributed on an
>> > + *   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
>> > + *  KIND, either express or implied.  See the License for the
>> > + *  specific language governing permissions and limitations
>> > + *  under the License.
>> > + */
>> > +package org.apache.synapse.mediators;
>> > +
>> > +import javax.xml.namespace.QName;
>> > +
>> > +import org.apache.synapse.config.xml.XMLConfigConstants;
>> > +
>> > +/**
>> > + * A template parameter is a variable which is used when creating
>> templates and contains following configuration
>> > + * parameter name="p1" [default="value|expression"]
>> [optional=(true|false)]
>> > + *
>> > + */
>> > +public class TemplateParameter {
>> > +    public static final QName PARAMETER_Q = new
>> QName(XMLConfigConstants.SYNAPSE_NAMESPACE, "parameter");
>> > +    public static final QName ATT_NAME_Q = new
>> QName(XMLConfigConstants.NULL_NAMESPACE, "name");
>> > +    public static final QName ATT_DEFAULT_Q = new
>> QName(XMLConfigConstants.NULL_NAMESPACE, "default");
>> > +    public static final QName ATT_OPTIONAL_Q = new
>> QName(XMLConfigConstants.NULL_NAMESPACE, "optional");
>> > +
>> > +
>> > +    private String name;
>> > +    private Value defaultValue;
>> > +    private boolean isOptional;
>> > +
>> > +    public TemplateParameter() {
>> > +        this.name = null;
>> > +        this.defaultValue = null;
>> > +        this.isOptional = false;
>> > +    }
>> > +
>> > +    public String getName() {
>> > +        return name;
>> > +    }
>> > +
>> > +    public void setName(String name) {
>> > +        this.name = name;
>> > +    }
>> > +
>> > +    public Value getDefaultValue() {
>> > +        return defaultValue;
>> > +    }
>> > +
>> > +    public void setDefaultValue(Value defaultValue) {
>> > +        this.defaultValue = defaultValue;
>> > +    }
>> > +
>> > +    public boolean isOptional() {
>> > +        return isOptional;
>> > +    }
>> > +
>> > +    public void setOptional(boolean optional) {
>> > +        isOptional = optional;
>> > +    }
>> > +
>> > +}
>> >
>> > Modified:
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/template/TemplateContext.java
>> > URL:
>> http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/template/TemplateContext.java?rev=1373302&r1=1373301&r2=1373302&view=diff
>> >
>> ==============================================================================
>> > ---
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/template/TemplateContext.java
>> (original)
>> > +++
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/template/TemplateContext.java
>> Wed Aug 15 10:03:18 2012
>> > @@ -18,7 +18,10 @@
>> >   */
>> >  package org.apache.synapse.mediators.template;
>> >
>> > +import org.apache.commons.logging.Log;
>> > +import org.apache.commons.logging.LogFactory;
>> >  import org.apache.synapse.MessageContext;
>> > +import org.apache.synapse.mediators.TemplateParameter;
>> >  import org.apache.synapse.mediators.Value;
>> >  import org.apache.synapse.mediators.eip.EIPUtils;
>> >  import org.jaxen.JaxenException;
>> > @@ -30,6 +33,7 @@ import java.util.*;
>> >   * a context will be populated with function parameters.
>> >   */
>> >  public class TemplateContext {
>> > +    private static final Log log =
>> LogFactory.getLog(TemplateContext.class);
>> >      /**
>> >       * refers to the function-template name this context is binded to
>> >       */
>> > @@ -37,31 +41,40 @@ public class TemplateContext {
>> >      /**
>> >       * refers to the parameter names of the function
>> >       */
>> > -    private Collection<String> parameters;
>> > +    private Collection<TemplateParameter> parameters;
>> >      /**
>> >       * contains a map for parameterNames to evaluated values
>> >       */
>> >      private Map mappedValues;
>> >
>> > -    TemplateContext(String name, Collection<String> parameters) {
>> > +    TemplateContext(String name, Collection<TemplateParameter>
>> parameters) {
>> >          this.fName = name;
>> >          this.parameters = parameters;
>> >          mappedValues = new HashMap();
>> >      }
>> >
>> >      /**
>> > -     * evaluate raw parameters passed from an invoke medaiator and
>> store them in this context
>> > +     * evaluate raw parameters passed from an invoke mediator and
>> store them in this context
>> >       * @param synCtxt Synapse MessageContext
>> >       */
>> >      public void setupParams(MessageContext synCtxt) {
>> > -        Iterator<String> paramNames = parameters.iterator();
>> > +        Iterator<TemplateParameter> paramNames = parameters.iterator();
>> >          while (paramNames.hasNext()) {
>> > -            String parameter = paramNames.next();
>> > -            String mapping =
>> EIPUtils.getTemplatePropertyMapping(fName, parameter);
>> > +            TemplateParameter parameter = paramNames.next();
>> > +            String mapping =
>> EIPUtils.getTemplatePropertyMapping(fName, parameter.getName());
>> >              Object propertyValue = synCtxt.getProperty(mapping);
>> > -            Object paramValue = getEvaluatedParamValue(synCtxt,
>> parameter, (Value) propertyValue);
>> > +            //If property value is not provided assign default value
>> > +            if (propertyValue == null && parameter.getDefaultValue()
>> != null) {
>> > +                propertyValue = parameter.getDefaultValue();
>> > +            }
>> > +            //If this parameter is a required one give an error
>> > +            if (!parameter.isOptional() && propertyValue == null) {
>> > +                String msg = parameter.getName() + " is a required
>> parameter for " + fName + " template";
>> > +                log.error(msg);
>> > +            }
>> > +            Object paramValue = getEvaluatedParamValue(synCtxt,
>> parameter.getName(), (Value) propertyValue);
>> >              if (paramValue != null) {
>> > -                mappedValues.put(parameter, paramValue);
>> > +                mappedValues.put(parameter.getName(), paramValue);
>> >                  //remove temp property from the context
>> >                  removeProperty(synCtxt, mapping);
>> >              }
>> >
>> > Modified:
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/template/TemplateMediator.java
>> > URL:
>> http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/template/TemplateMediator.java?rev=1373302&r1=1373301&r2=1373302&view=diff
>> >
>> ==============================================================================
>> > ---
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/template/TemplateMediator.java
>> (original)
>> > +++
>> synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/template/TemplateMediator.java
>> Wed Aug 15 10:03:18 2012
>> > @@ -23,6 +23,7 @@ import org.apache.synapse.SynapseConstan
>> >  import org.apache.synapse.SynapseLog;
>> >  import org.apache.synapse.core.SynapseEnvironment;
>> >  import org.apache.synapse.mediators.AbstractListMediator;
>> > +import org.apache.synapse.mediators.TemplateParameter;
>> >
>> >  import javax.sound.midi.Sequence;
>> >  import java.util.Collection;
>> > @@ -37,19 +38,19 @@ import java.util.Stack;
>> >   */
>> >  public class TemplateMediator extends AbstractListMediator {
>> >
>> > -    private Collection<String> paramNames;
>> > +    private Collection<TemplateParameter> parameters;
>> >
>> >      private String eipPatternName;
>> >      private String fileName;
>> >      /** flag to ensure that each and every sequence is initialized and
>> destroyed atmost once */
>> >      private boolean initialized = false;
>> >
>> > -    public void setParameters(Collection<String> paramNames) {
>> > -        this.paramNames = paramNames;
>> > +    public void setParameters(Collection<TemplateParameter>
>> paramNames) {
>> > +        this.parameters = paramNames;
>> >      }
>> >
>> > -    public Collection<String> getParameters() {
>> > -        return paramNames;
>> > +    public Collection<TemplateParameter> getParameters() {
>> > +        return parameters;
>> >      }
>> >
>> >      public void setName(String name) {
>> > @@ -64,7 +65,7 @@ public class TemplateMediator extends Ab
>> >          SynapseLog synLog = getLog(synCtx);
>> >
>> >          if (synLog.isTraceOrDebugEnabled()) {
>> > -            synLog.traceOrDebug("Start : EIP Sequence " + "paramNames
>> : " + paramNames);
>> > +            synLog.traceOrDebug("Start : EIP Sequence " + "paramNames
>> : " + parameters);
>> >
>> >              if (synLog.isTraceTraceEnabled()) {
>> >                  synLog.traceTrace("Message : " + synCtx.getEnvelope());
>> > @@ -86,7 +87,7 @@ public class TemplateMediator extends Ab
>> >       * @param synCtx  Synapse Message context
>> >       */
>> >      private void pushFuncContextTo(MessageContext synCtx) {
>> > -        TemplateContext funcContext = new
>> TemplateContext(eipPatternName, paramNames);
>> > +        TemplateContext funcContext = new
>> TemplateContext(eipPatternName, parameters);
>> >          //process the raw parameters parsed in
>> >          funcContext.setupParams(synCtx);
>> >          //if a function stack has not already been created for this
>> message flow create new one
>> >
>> > Added:
>> synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/libraries/eip/AbstractEipLibTestCase.java
>> > URL:
>> http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/libraries/eip/AbstractEipLibTestCase.java?rev=1373302&view=auto
>> >
>> ==============================================================================
>> > ---
>> synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/libraries/eip/AbstractEipLibTestCase.java
>> (added)
>> > +++
>> synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/libraries/eip/AbstractEipLibTestCase.java
>> Wed Aug 15 10:03:18 2012
>> > @@ -0,0 +1,26 @@
>> > +package org.apache.synapse.libraries.eip;
>> > +
>> > +import junit.framework.TestCase;
>> > +import org.apache.synapse.libraries.imports.SynapseImport;
>> > +import org.apache.synapse.libraries.model.Library;
>> > +import org.apache.synapse.libraries.util.LibDeployerUtils;
>> > +import org.apache.synapse.mediators.eip.AbstractSplitMediatorTestCase;
>> > +
>> > +import java.io.File;
>> > +import java.net.URISyntaxException;
>> > +
>> > +public abstract class AbstractEipLibTestCase extends TestCase {
>> > +    public String path = null;
>> > +
>> > +    protected String getResourcePath() {
>> > +        try {
>> > +            if (path == null) {
>> > +                path = new
>> File("./target/test_repos/synapse/synapse-libraries/synapse-eip-lib.zip").getAbsolutePath();
>> > +            }
>> > +        } catch (Exception e) {
>> > +            return null;
>> > +        }
>> > +        return path;
>> > +
>> > +    }
>> > +}
>> >
>> > Added:
>> synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/libraries/eip/EipLibTest.java
>> > URL:
>> http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/libraries/eip/EipLibTest.java?rev=1373302&view=auto
>> >
>> ==============================================================================
>> > ---
>> synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/libraries/eip/EipLibTest.java
>> (added)
>> > +++
>> synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/libraries/eip/EipLibTest.java
>> Wed Aug 15 10:03:18 2012
>> > @@ -0,0 +1,87 @@
>> > +package org.apache.synapse.libraries.eip;
>> > +
>> > +import org.apache.axiom.om.OMAbstractFactory;
>> > +import org.apache.axiom.soap.SOAPEnvelope;
>> > +import org.apache.axis2.context.ConfigurationContext;
>> > +import org.apache.axis2.engine.AxisConfiguration;
>> > +import org.apache.synapse.MessageContext;
>> > +import org.apache.synapse.config.SynapseConfigUtils;
>> > +import org.apache.synapse.config.SynapseConfiguration;
>> > +import org.apache.synapse.config.xml.InvokeMediatorFactory;
>> > +import org.apache.synapse.config.xml.MediatorFactory;
>> > +import org.apache.synapse.core.axis2.Axis2MessageContext;
>> > +import org.apache.synapse.core.axis2.Axis2SynapseEnvironment;
>> > +import org.apache.synapse.libraries.imports.SynapseImport;
>> > +import org.apache.synapse.libraries.model.Library;
>> > +import org.apache.synapse.libraries.util.LibDeployerUtils;
>> > +import org.apache.synapse.mediators.base.SequenceMediator;
>> > +import org.apache.synapse.mediators.template.InvokeMediator;
>> > +
>> > +import java.util.Properties;
>> > +
>> > +/**
>> > + * Tests for synapse template invoke
>> > + */
>> > +public class EipLibTest extends AbstractEipLibTestCase {
>> > +    private MessageContext synCtx;
>> > +
>> > +
>> > +    protected void setUp() throws Exception {
>> > +        super.setUp();
>> > +        Library library =
>> LibDeployerUtils.createSynapseLibrary(getResourcePath());
>> > +        SynapseImport validSynImport = new SynapseImport();
>> > +        validSynImport.setLibName("EipLibrary");
>> > +        validSynImport.setLibPackage("synapse.lang.eip");
>> > +        if (validSynImport != null) {
>> > +            LibDeployerUtils.loadLibArtifacts(validSynImport, library);
>> > +        }
>> > +        assertEquals("EipLibrary", library.getQName().getLocalPart());
>> > +        assertEquals("synapse.lang.eip", library.getPackage());
>> > +        assertEquals("eip synapse library", library.getDescription());
>> > +
>>  assertNotNull(library.getArtifact("synapse.lang.eip.splitter"));
>> > +        //setting up synapse context & configuration
>> > +        SynapseConfiguration synConf = new SynapseConfiguration();
>> > +        synConf.addSynapseLibrary(library.toString(), library);
>> > +        synConf.addSequence("main", new SequenceMediator());
>> > +        synConf.addSequence("fault", new SequenceMediator());
>> > +        AxisConfiguration config = new AxisConfiguration();
>> > +        synCtx = new Axis2MessageContext(new
>> org.apache.axis2.context.MessageContext(),
>> > +                synConf, new Axis2SynapseEnvironment(new
>> ConfigurationContext(config), synConf));
>> > +
>>  //((Axis2MessageContext)synCtx).getAxis2MessageContext().setConfigurationContext(new
>> ConfigurationContext(config));
>> > +        SOAPEnvelope envelope =
>> OMAbstractFactory.getSOAP11Factory().getDefaultEnvelope();
>> > +
>>  envelope.getBody().addChild(SynapseConfigUtils.stringToOM("<original><itr><a>IBM</a></itr><itr><a>DELL</a></itr></original>"));
>> > +        synCtx.setEnvelope(envelope);
>> > +        SequenceMediator seqMed = new SequenceMediator();
>> > +        synCtx.getConfiguration().addSequence("seqRef", seqMed);
>> > +
>> > +    }
>> > +
>> > +
>> > +    public void testValidEipLibInvoke() throws Exception {
>> > +
>> > +        //Invoke Template
>> > +        MediatorFactory fac = new InvokeMediatorFactory();
>> > +
>> > +        InvokeMediator iterate = (InvokeMediator)
>> fac.createMediator(SynapseConfigUtils.stringToOM("<call-template xmlns=\"
>> http://ws.apache.org/ns/synapse\" " +
>> > +                "target=\"synapse.lang.eip.splitter\">" +
>> > +                "<with-param xmlns=\"http://ws.apache.org/ns/synapse\"
>> name=\"iterate_exp\" value=\"{{//original/itr}}\"/>" +
>> > +                "<with-param xmlns=\"http://ws.apache.org/ns/synapse\"
>> name=\"endpoint_uri\" value=\"
>> http://localhost:9000/services/IterateTestService\"/>" +
>> > +                "<with-param xmlns=\"http://ws.apache.org/ns/synapse\"
>> name=\"sequence_ref\" value=\"seqRef\"/>" +
>> > +                "</call-template>"), new Properties());
>> > +
>> > +        boolean returnValue = iterate.mediate(synCtx);
>> > +
>> > +        //Test Template Parameters
>> > +        assertEquals("<itr><a>IBM</a></itr><itr><a>DELL</a></itr>",
>> synCtx.getProperty("ItrExp"));
>> > +        assertEquals("
>> http://localhost:9000/services/IterateTestService",
>> synCtx.getProperty("EndPUri"));
>> > +
>>  assertEquals("<original><itr><a>IBM</a></itr><itr><a>DELL</a></itr></original>",
>> synCtx.getProperty("AttachPath"));
>> > +        assertEquals("seqRef", synCtx.getProperty("SRef"));
>> > +
>> > +        //Test Template invoke & mediation
>> > +        assertTrue(returnValue);
>> > +        assertEquals("", synCtx.getProperty("Endpoint_1"));
>> > +        assertEquals("
>> http://localhost:9000/services/IterateTestService",
>> synCtx.getProperty("Endpoint_2"));
>> > +    }
>> > +
>> > +
>> > +}
>> >
>> > Added:
>> synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/assembly/assemble-eip-lib.xml
>> > URL:
>> http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/assembly/assemble-eip-lib.xml?rev=1373302&view=auto
>> >
>> ==============================================================================
>> > ---
>> synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/assembly/assemble-eip-lib.xml
>> (added)
>> > +++
>> synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/assembly/assemble-eip-lib.xml
>> Wed Aug 15 10:03:18 2012
>> > @@ -0,0 +1,23 @@
>> > +<?xml version="1.0" encoding="UTF-8"?>
>> > +<assembly>
>> > +    <formats>
>> > +        <format>zip</format>
>> > +    </formats>
>> > +    <includeBaseDirectory>false</includeBaseDirectory>
>> > +    <fileSets>
>> > +        <fileSet>
>> > +
>>  <directory>src/test/resources/synapse-libraries/synapse-eip-lib</directory>
>> > +            <outputDirectory></outputDirectory>
>> > +        </fileSet>
>> > +        <fileSet>
>> > +            <directory>target/classes</directory>
>> > +            <outputDirectory></outputDirectory>
>> > +            <excludes>
>> > +                <exclude>**/metrics_module.xml</exclude>
>> > +                <exclude>**/META-INF/*</exclude>
>> > +            </excludes>
>> > +        </fileSet>
>> > +    </fileSets>
>> > +
>> > +
>> > +</assembly>
>> >
>> > Added:
>> synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eip-lib/artifacts.xml
>> > URL:
>> http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eip-lib/artifacts.xml?rev=1373302&view=auto
>> >
>> ==============================================================================
>> > ---
>> synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eip-lib/artifacts.xml
>> (added)
>> > +++
>> synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eip-lib/artifacts.xml
>> Wed Aug 15 10:03:18 2012
>> > @@ -0,0 +1,7 @@
>> > +<?xml version="1.0" encoding="UTF-8"?>
>> > +<artifacts>
>> > +    <artifact name="EipLibrary" package="synapse.lang.eip" >
>> > +        <dependency artifact="systemManagement" />
>> > +        <description>eip synapse library</description>
>> > +    </artifact>
>> > +</artifacts>
>> >
>> > Added:
>> synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eip-lib/eip_systemManagement/artifact.xml
>> > URL:
>> http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eip-lib/eip_systemManagement/artifact.xml?rev=1373302&view=auto
>> >
>> ==============================================================================
>> > ---
>> synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eip-lib/eip_systemManagement/artifact.xml
>> (added)
>> > +++
>> synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eip-lib/eip_systemManagement/artifact.xml
>> Wed Aug 15 10:03:18 2012
>> > @@ -0,0 +1,11 @@
>> > +<?xml version="1.0" encoding="UTF-8"?>
>> > +<artifact name="systemManagement" type="synapse/template">
>> > +
>> > +    <subArtifacts>
>> > +        <artifact name="splitter">
>> > +            <file>template_splitter.xml</file>
>> > +            <description>Splitter library function</description>
>> > +        </artifact>
>> > +    </subArtifacts>
>> > +
>> > +</artifact>
>> > \ No newline at end of file
>> >
>> > Added:
>> synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eip-lib/eip_systemManagement/template_splitter.xml
>> > URL:
>> http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eip-lib/eip_systemManagement/template_splitter.xml?rev=1373302&view=auto
>> >
>> ==============================================================================
>> > ---
>> synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eip-lib/eip_systemManagement/template_splitter.xml
>> (added)
>> > +++
>> synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eip-lib/eip_systemManagement/template_splitter.xml
>> Wed Aug 15 10:03:18 2012
>> > @@ -0,0 +1,20 @@
>> > +<template xmlns="http://ws.apache.org/ns/synapse" name="splitter">
>> > +    <parameter name="iterate_exp"/>
>> > +    <parameter name="endpoint_uri"/>
>> > +    <parameter name="attach_path" default="{{//original}}"
>> optional="true"/>
>> > +    <parameter name="sequence_ref"/>
>> > +    <sequence>
>> > +        <property name="ItrExp" expression="$func:iterate_exp" />
>> > +        <property name="EndPUri" expression="$func:endpoint_uri" />
>> > +        <property name="AttachPath" expression="$func:attach_path" />
>> > +        <property name="SRef" expression="$func:sequence_ref" />
>> > +        <property name="Endpoint_1" expression="get-property('To')" />
>> > +        <header name="To" expression="$func:endpoint_uri"/>
>> > +        <iterate xmlns:ns="http://org.apache.synapse/xsd"
>> continueParent="true" preservePayload="true" attachPath="$func:attach_path"
>> expression="$func:iterate_exp">
>> > +            <target>
>> > +              <sequence key="{$func:sequence_ref}"/>
>> > +            </target>
>> > +        </iterate>
>> > +        <property name="Endpoint_2" expression="get-property('To')" />
>> > +    </sequence>
>> > +</template>
>> >
>> > Added: synapse/trunk/java/repository/conf/sample/synapse_sample_850.xml
>> > URL:
>> http://svn.apache.org/viewvc/synapse/trunk/java/repository/conf/sample/synapse_sample_850.xml?rev=1373302&view=auto
>> >
>> ==============================================================================
>> > --- synapse/trunk/java/repository/conf/sample/synapse_sample_850.xml
>> (added)
>> > +++ synapse/trunk/java/repository/conf/sample/synapse_sample_850.xml
>> Wed Aug 15 10:03:18 2012
>> > @@ -0,0 +1,36 @@
>> > +<?xml version="1.0" encoding="ISO-8859-1"?>
>> > +<!--
>> > +  ~  Licensed to the Apache Software Foundation (ASF) under one
>> > +  ~  or more contributor license agreements.  See the NOTICE file
>> > +  ~  distributed with this work for additional information
>> > +  ~  regarding copyright ownership.  The ASF licenses this file
>> > +  ~  to you under the Apache License, Version 2.0 (the
>> > +  ~  "License"); you may not use this file except in compliance
>> > +  ~  with the License.  You may obtain a copy of the License at
>> > +  ~
>> > +  ~   http://www.apache.org/licenses/LICENSE-2.0
>> > +  ~
>> > +  ~  Unless required by applicable law or agreed to in writing,
>> > +  ~  software distributed under the License is distributed on an
>> > +  ~   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
>> > +  ~  KIND, either express or implied.  See the License for the
>> > +  ~  specific language governing permissions and limitations
>> > +  ~  under the License.
>> > +  -->
>> > +
>> > +<!-- Introduction to Synapse Callout Block function template -->
>> > +<definitions xmlns="http://ws.apache.org/ns/synapse">
>> > +<import xmlns="http://ws.apache.org/ns/synapse" name="EipLibrary"
>> package="synapse.lang.eip" />
>> > +   <sequence name="main">
>> > +    <call-template target="synapse.lang.eip.callout_block">
>> > +        <with-param name="action" value="urn:getQuote"/>
>> > +        <with-param name="service_URL" value="
>> http://localhost:9000/services/SimpleStockQuoteService"/>
>> > +        <with-param xmlns:s11="
>> http://schemas.xmlsoap.org/soap/envelope/" xmlns:s12="
>> http://www.w3.org/2003/05/soap-envelope" name="source_xpath"
>> value="{{s11:Body/child::*[fn:position()=1] |
>> s12:Body/child::*[fn:position()=1]}}"/>
>> > +        <with-param xmlns:s11="
>> http://schemas.xmlsoap.org/soap/envelope/" xmlns:s12="
>> http://www.w3.org/2003/05/soap-envelope" name="target_xpath"
>> value="{{s11:Body/child::*[fn:position()=1] |
>> s12:Body/child::*[fn:position()=1]}}"/>
>> > +    </call-template>
>> > +     <property name="RESPONSE" value="true"/>
>> > +        <header name="To" action="remove"/>
>> > +        <send/>
>> > +        <drop/>
>> > +</sequence>
>> > +</definitions>
>> >
>> > Added: synapse/trunk/java/repository/conf/sample/synapse_sample_851.xml
>> > URL:
>> http://svn.apache.org/viewvc/synapse/trunk/java/repository/conf/sample/synapse_sample_851.xml?rev=1373302&view=auto
>> >
>> ==============================================================================
>> > --- synapse/trunk/java/repository/conf/sample/synapse_sample_851.xml
>> (added)
>> > +++ synapse/trunk/java/repository/conf/sample/synapse_sample_851.xml
>> Wed Aug 15 10:03:18 2012
>> > @@ -0,0 +1,57 @@
>> > +<?xml version="1.0" encoding="ISO-8859-1"?>
>> > +<!--
>> > +  ~  Licensed to the Apache Software Foundation (ASF) under one
>> > +  ~  or more contributor license agreements.  See the NOTICE file
>> > +  ~  distributed with this work for additional information
>> > +  ~  regarding copyright ownership.  The ASF licenses this file
>> > +  ~  to you under the Apache License, Version 2.0 (the
>> > +  ~  "License"); you may not use this file except in compliance
>> > +  ~  with the License.  You may obtain a copy of the License at
>> > +  ~
>> > +  ~   http://www.apache.org/licenses/LICENSE-2.0
>> > +  ~
>> > +  ~  Unless required by applicable law or agreed to in writing,
>> > +  ~  software distributed under the License is distributed on an
>> > +  ~   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
>> > +  ~  KIND, either express or implied.  See the License for the
>> > +  ~  specific language governing permissions and limitations
>> > +  ~  under the License.
>> > +  -->
>> > +
>> > +<!-- Introduction to Synapse Splitter & Aggregator eip function
>> template -->
>> > +<definitions xmlns="http://ws.apache.org/ns/synapse">
>> > +<import xmlns="http://ws.apache.org/ns/synapse" name="EipLibrary"
>> package="synapse.lang.eip" />
>> > + <proxy name="StockQuoteProxy" transports="https http"
>> startOnLoad="true" trace="disable">
>> > +        <target>
>> > +        <inSequence>
>> > +            <log level="custom">
>> > +                <property name="text" value="splitterAggrigator"/>
>> > +            </log>
>> > +            <call-template target="synapse.lang.eip.splitter">
>> > +                <with-param xmlns:m0="http://services.samples"
>> name="iterate_exp" value="{{//m0:getQuote/m0:request}}"/>
>> > +                <with-param xmlns:m0="http://services.samples"
>> name="attach_path" value="{{//m0:getQuote}}"/>
>> > +                <with-param name="attach_path_enabled" value="true"/>
>> > +                <with-param name="endpoint_uri" value="
>> http://localhost:9000/services/SimpleStockQuoteService"/>
>> > +            </call-template>
>> > +        </inSequence>
>> > +        <outSequence>
>> > +            <call-template target="synapse.lang.eip.aggregator">
>> > +                <with-param name="sequence_ref" value="enr"/>
>> > +                <with-param xmlns:m0="http://services.samples"
>> name="aggregator_exp" value="{{//m0:return}}"/>
>> > +                <with-param name="oncomplete_seq_enabled"
>> value="true"/>
>> > +            </call-template>
>> > +        </outSequence>
>> > +    </target>
>> > +    </proxy>
>> > +<sequence xmlns="http://ws.apache.org/ns/synapse" name="enr">
>> > +    <log level="custom">
>> > +        <property name="text" value="seqhit"/>
>> > +    </log>
>> > +    <enrich>
>> > +        <source xmlns:m1="http://services.samples/xsd" xmlns:m0="
>> http://services.samples" clone="true"
>> > +
>>  xpath="//m0:return[not(preceding-sibling::m0:return/m1:last &lt;= m1:last)
>> and not(following-sibling::m0:return/m1:last &lt; m1:last)]"/>
>> > +        <target type="body"/>
>> > +    </enrich>
>> > +    <send/>
>> > +</sequence>
>> > +</definitions>
>> >
>> > Added: synapse/trunk/java/repository/conf/sample/synapse_sample_852.xml
>> > URL:
>> http://svn.apache.org/viewvc/synapse/trunk/java/repository/conf/sample/synapse_sample_852.xml?rev=1373302&view=auto
>> >
>> ==============================================================================
>> > --- synapse/trunk/java/repository/conf/sample/synapse_sample_852.xml
>> (added)
>> > +++ synapse/trunk/java/repository/conf/sample/synapse_sample_852.xml
>> Wed Aug 15 10:03:18 2012
>> > @@ -0,0 +1,46 @@
>> > +<?xml version="1.0" encoding="ISO-8859-1"?>
>> > +<!--
>> > +  ~  Licensed to the Apache Software Foundation (ASF) under one
>> > +  ~  or more contributor license agreements.  See the NOTICE file
>> > +  ~  distributed with this work for additional information
>> > +  ~  regarding copyright ownership.  The ASF licenses this file
>> > +  ~  to you under the Apache License, Version 2.0 (the
>> > +  ~  "License"); you may not use this file except in compliance
>> > +  ~  with the License.  You may obtain a copy of the License at
>> > +  ~
>> > +  ~   http://www.apache.org/licenses/LICENSE-2.0
>> > +  ~
>> > +  ~  Unless required by applicable law or agreed to in writing,
>> > +  ~  software distributed under the License is distributed on an
>> > +  ~   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
>> > +  ~  KIND, either express or implied.  See the License for the
>> > +  ~  specific language governing permissions and limitations
>> > +  ~  under the License.
>> > +  -->
>> > +
>> > +<!-- Introduction to Synapse Splitter-Agrregator eip function
>> templates -->
>> > +<definitions xmlns="http://ws.apache.org/ns/synapse">
>> > +<import xmlns="http://ws.apache.org/ns/synapse" name="EipLibrary"
>> package="synapse.lang.eip" />
>> > +   <sequence name="main">
>> > +      <call-template target="synapse.lang.eip.splitter_aggregator">
>> > +        <with-param name="attach_path_enabled" value="true"/>
>> > +        <with-param name="endpoint_uri" value="
>> http://localhost:9000/services/SimpleStockQuoteService"/>
>> > +        <with-param xmlns:m0="http://services.samples"
>> name="iterate_exp" value="{{//m0:getQuote/m0:request}}"/>
>> > +        <with-param xmlns:m0="http://services.samples"
>> name="attach_path" value="{{//m0:getQuote}}"/>
>> > +        <with-param name="sequence_ref" value="enr"/>
>> > +        <with-param xmlns:m0="http://services.samples"
>> name="aggregator_exp" value="{{//m0:return}}"/>
>> > +        <with-param name="oncomplete_seq_enabled" value="true"/>
>> > +    </call-template>
>> > +</sequence>
>> > +<sequence xmlns="http://ws.apache.org/ns/synapse" name="enr">
>> > +    <log level="custom">
>> > +        <property name="text" value="seqhit"/>
>> > +    </log>
>> > +    <enrich>
>> > +        <source xmlns:m1="http://services.samples/xsd" xmlns:m0="
>> http://services.samples" clone="true"
>> > +
>>  xpath="//m0:return[not(preceding-sibling::m0:return/m1:last &lt;= m1:last)
>> and not(following-sibling::m0:return/m1:last &lt; m1:last)]"/>
>> > +        <target type="body"/>
>> > +    </enrich>
>> > +    <send/>
>> > +</sequence>
>> > +</definitions>
>> >
>> > Added: synapse/trunk/java/repository/conf/sample/synapse_sample_853.xml
>> > URL:
>> http://svn.apache.org/viewvc/synapse/trunk/java/repository/conf/sample/synapse_sample_853.xml?rev=1373302&view=auto
>> >
>> ==============================================================================
>> > --- synapse/trunk/java/repository/conf/sample/synapse_sample_853.xml
>> (added)
>> > +++ synapse/trunk/java/repository/conf/sample/synapse_sample_853.xml
>> Wed Aug 15 10:03:18 2012
>> > @@ -0,0 +1,42 @@
>> > +<?xml version="1.0" encoding="ISO-8859-1"?>
>> > +<!--
>> > +  ~  Licensed to the Apache Software Foundation (ASF) under one
>> > +  ~  or more contributor license agreements.  See the NOTICE file
>> > +  ~  distributed with this work for additional information
>> > +  ~  regarding copyright ownership.  The ASF licenses this file
>> > +  ~  to you under the Apache License, Version 2.0 (the
>> > +  ~  "License"); you may not use this file except in compliance
>> > +  ~  with the License.  You may obtain a copy of the License at
>> > +  ~
>> > +  ~   http://www.apache.org/licenses/LICENSE-2.0
>> > +  ~
>> > +  ~  Unless required by applicable law or agreed to in writing,
>> > +  ~  software distributed under the License is distributed on an
>> > +  ~   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
>> > +  ~  KIND, either express or implied.  See the License for the
>> > +  ~  specific language governing permissions and limitations
>> > +  ~  under the License.
>> > +  -->
>> > +
>> > +<!-- Introduction to Synapse Scatter-Gather eip function template -->
>> > +<definitions xmlns="http://ws.apache.org/ns/synapse">
>> > +<import xmlns="http://ws.apache.org/ns/synapse" name="EipLibrary"
>> package="synapse.lang.eip" />
>> > +<sequence name="enr">
>> > +        <log level="custom">
>> > +            <property name="text" value="seqhit"/>
>> > +        </log>
>> > +        <enrich>
>> > +            <source xmlns:m1="http://services.samples/xsd" xmlns:m0="
>> http://services.samples" clone="true"
>> xpath="//m0:return[not(preceding-sibling::m0:return/m1:last &lt;= m1:last)
>> and not(following-sibling::m0:return/m1:last &lt; m1:last)]"/>
>> > +            <target type="body"/>
>> > +        </enrich>
>> > +        <send/>
>> > +    </sequence>
>> > +    <sequence name="main">
>> > +        <call-template target="synapse.lang.eip.scatter_gather">
>> > +            <with-param name="sequence_ref" value="enr"/>
>> > +            <with-param xmlns:m0="http://services.samples"
>> name="aggregator_exp" value="{{//m0:return}}"/>
>> > +            <with-param name="oncomplete_seq_enabled" value="true"/>
>> > +            <with-param name="recipient_list" value="
>> http://localhost:9001/services/SimpleStockQuoteService,http://localhost:9002/services/SimpleStockQuoteService,http://localhost:9003/services/SimpleStockQuoteService
>> "/>
>> > +        </call-template>
>> > +    </sequence>
>> > +</definitions>
>> >
>> > Added: synapse/trunk/java/repository/conf/sample/synapse_sample_854.xml
>> > URL:
>> http://svn.apache.org/viewvc/synapse/trunk/java/repository/conf/sample/synapse_sample_854.xml?rev=1373302&view=auto
>> >
>> ==============================================================================
>> > --- synapse/trunk/java/repository/conf/sample/synapse_sample_854.xml
>> (added)
>> > +++ synapse/trunk/java/repository/conf/sample/synapse_sample_854.xml
>> Wed Aug 15 10:03:18 2012
>> > @@ -0,0 +1,32 @@
>> > +<?xml version="1.0" encoding="ISO-8859-1"?>
>> > +<!--
>> > +  ~  Licensed to the Apache Software Foundation (ASF) under one
>> > +  ~  or more contributor license agreements.  See the NOTICE file
>> > +  ~  distributed with this work for additional information
>> > +  ~  regarding copyright ownership.  The ASF licenses this file
>> > +  ~  to you under the Apache License, Version 2.0 (the
>> > +  ~  "License"); you may not use this file except in compliance
>> > +  ~  with the License.  You may obtain a copy of the License at
>> > +  ~
>> > +  ~   http://www.apache.org/licenses/LICENSE-2.0
>> > +  ~
>> > +  ~  Unless required by applicable law or agreed to in writing,
>> > +  ~  software distributed under the License is distributed on an
>> > +  ~   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
>> > +  ~  KIND, either express or implied.  See the License for the
>> > +  ~  specific language governing permissions and limitations
>> > +  ~  under the License.
>> > +  -->
>> > +
>> > +<!-- Introduction to Synapse Wire Tap eip function template -->
>> > +<definitions xmlns="http://ws.apache.org/ns/synapse">
>> > +<import xmlns="http://ws.apache.org/ns/synapse" name="EipLibrary"
>> package="synapse.lang.eip" />
>> > +    <sequence name="main">
>> > +<property name="OUT_ONLY" value="true"/>
>> > +        <property name="FORCE_SC_ACCEPTED" value="true" scope="axis2"/>
>> > +        <call-template target="synapse.lang.eip.wire_tap">
>> > +<with-param name="wiretap_uri" value="
>> http://localhost:9000/services/SimpleStockQuoteService"/>
>> > +            <with-param name="destination_uri" value="
>> http://localhost:9001/services/SimpleStockQuoteService"/>
>> > +        </call-template>
>> > +    </sequence>
>> > +</definitions>
>> >
>> > Added: synapse/trunk/java/repository/conf/sample/synapse_sample_855.xml
>> > URL:
>> http://svn.apache.org/viewvc/synapse/trunk/java/repository/conf/sample/synapse_sample_855.xml?rev=1373302&view=auto
>> >
>> ==============================================================================
>> > --- synapse/trunk/java/repository/conf/sample/synapse_sample_855.xml
>> (added)
>> > +++ synapse/trunk/java/repository/conf/sample/synapse_sample_855.xml
>> Wed Aug 15 10:03:18 2012
>> > @@ -0,0 +1,66 @@
>> > +<?xml version="1.0" encoding="ISO-8859-1"?>
>> > +<!--
>> > +  ~  Licensed to the Apache Software Foundation (ASF) under one
>> > +  ~  or more contributor license agreements.  See the NOTICE file
>> > +  ~  distributed with this work for additional information
>> > +  ~  regarding copyright ownership.  The ASF licenses this file
>> > +  ~  to you under the Apache License, Version 2.0 (the
>> > +  ~  "License"); you may not use this file except in compliance
>> > +  ~  with the License.  You may obtain a copy of the License at
>> > +  ~
>> > +  ~   http://www.apache.org/licenses/LICENSE-2.0
>> > +  ~
>> > +  ~  Unless required by applicable law or agreed to in writing,
>> > +  ~  software distributed under the License is distributed on an
>> > +  ~   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
>> > +  ~  KIND, either express or implied.  See the License for the
>> > +  ~  specific language governing permissions and limitations
>> > +  ~  under the License.
>> > +  -->
>> > +
>> > +<!-- Introduction to Synapse Content Based Router eip function
>> template -->
>> > +<definitions xmlns="http://ws.apache.org/ns/synapse">
>> > +<import xmlns="http://ws.apache.org/ns/synapse" name="EipLibrary"
>> package="synapse.lang.eip" />
>> > +<proxy name="StockQuoteProxy" transports="https http"
>> startOnLoad="true" trace="disable">
>> > +        <target>
>> > +        <inSequence>
>> > +               <call-template
>> target="synapse.lang.eip.content_based_router">
>> > +<with-param name="routing_exp"
>> value="{{//m0:getQuote/m0:request/m0:symbol}}" xmlns:m0="
>> http://services.samples"/>
>> > +<with-param name="match_content"
>> value="IBM:cnd1_seq,MSFT:cnd2_seq;cnd3_seq"/>
>> > +    </call-template>
>> > +</inSequence>
>> > +<outSequence>
>> > +<send/>
>> > +   </outSequence>
>> > +    </target>
>> > +    </proxy>
>> > +<sequence name="send_seq">
>> > +        <log level="custom">
>> > +            <property name="DEBUG" value="Condition Satisfied"/>
>> > +        </log>
>> > +        <send>
>> > +            <endpoint name="simple">
>> > +                <address uri="
>> http://localhost:9000/services/SimpleStockQuoteService"/>
>> > +            </endpoint>
>> > +        </send>
>> > +    </sequence>
>> > +
>> > +    <sequence name="cnd1_seq">
>> > +        <log level="custom">
>> > +            <property name="MSG_FLOW" value="Condition (I) Satisfied"/>
>> > +        </log>
>> > +        <sequence key="send_seq"/>
>> > +    </sequence>
>> > +    <sequence name="cnd2_seq">
>> > +        <log level="custom">
>> > +            <property name="MSG_FLOW" value="Condition (II)
>> Satisfied"/>
>> > +        </log>
>> > +        <sequence key="send_seq"/>
>> > +    </sequence>
>> > +    <sequence name="cnd3_seq">
>> > +        <log level="custom">
>> > +            <property name="MSG_FLOW" value="Condition (III)
>> Satisfied"/>
>> > +        </log>
>> > +        <sequence key="send_seq"/>
>> > +    </sequence>
>> > +</definitions>
>> >
>> > Added: synapse/trunk/java/repository/conf/sample/synapse_sample_856.xml
>> > URL:
>> http://svn.apache.org/viewvc/synapse/trunk/java/repository/conf/sample/synapse_sample_856.xml?rev=1373302&view=auto
>> >
>> ==============================================================================
>> > --- synapse/trunk/java/repository/conf/sample/synapse_sample_856.xml
>> (added)
>> > +++ synapse/trunk/java/repository/conf/sample/synapse_sample_856.xml
>> Wed Aug 15 10:03:18 2012
>> > @@ -0,0 +1,65 @@
>> > +<?xml version="1.0" encoding="ISO-8859-1"?>
>> > +<!--
>> > +  ~  Licensed to the Apache Software Foundation (ASF) under one
>> > +  ~  or more contributor license agreements.  See the NOTICE file
>> > +  ~  distributed with this work for additional information
>> > +  ~  regarding copyright ownership.  The ASF licenses this file
>> > +  ~  to you under the Apache License, Version 2.0 (the
>> > +  ~  "License"); you may not use this file except in compliance
>> > +  ~  with the License.  You may obtain a copy of the License at
>> > +  ~
>> > +  ~   http://www.apache.org/licenses/LICENSE-2.0
>> > +  ~
>> > +  ~  Unless required by applicable law or agreed to in writing,
>> > +  ~  software distributed under the License is distributed on an
>> > +  ~   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
>> > +  ~  KIND, either express or implied.  See the License for the
>> > +  ~  specific language governing permissions and limitations
>> > +  ~  under the License.
>> > +  -->
>> > +
>> > +<!-- Introduction to Synapse Dynamic Router eip function template -->
>> > +<definitions xmlns="http://ws.apache.org/ns/synapse">
>> > +<import xmlns="http://ws.apache.org/ns/synapse" name="EipLibrary"
>> package="synapse.lang.eip" />
>> > + <proxy name="StockQuoteProxy" transports="https http"
>> startOnLoad="true" trace="disable">
>> > +        <target>
>> > +            <inSequence>
>> > +               <call-template target="synapse.lang.eip.dynamic_router">
>> > +<with-param name="conditions"
>> value="header=foo:bar.*#url=/services/StockQuoteProxy.*;seq=cnd1_seq,header=custom_header1:bar.*@header=custom_header1:foo.*;seq=cnd2_seq,header=custom_header2:foo.*;seq=cnd3_seq"/>
>> > +    </call-template>
>> > +     </inSequence>
>> > +            <outSequence>
>> > +                <send/>
>> > +            </outSequence>
>> > +        </target>
>> > +    </proxy>
>> > +<sequence name="send_seq">
>> > +        <log level="custom">
>> > +            <property name="DEBUG" value="Condition Satisfied"/>
>> > +        </log>
>> > +        <send>
>> > +            <endpoint name="simple">
>> > +                <address uri="
>> http://localhost:9000/services/SimpleStockQuoteService"/>
>> > +            </endpoint>
>> > +        </send>
>> > +    </sequence>
>> > +
>> > +    <sequence name="cnd1_seq">
>> > +        <log level="custom">
>> > +            <property name="MSG_FLOW" value="Condition (I) Satisfied"/>
>> > +        </log>
>> > +        <sequence key="send_seq"/>
>> > +    </sequence>
>> > +    <sequence name="cnd2_seq">
>> > +        <log level="custom">
>> > +            <property name="MSG_FLOW" value="Condition (II)
>> Satisfied"/>
>> > +        </log>
>> > +        <sequence key="send_seq"/>
>> > +    </sequence>
>> > +    <sequence name="cnd3_seq">
>> > +        <log level="custom">
>> > +            <property name="MSG_FLOW" value="Condition (III)
>> Satisfied"/>
>> > +        </log>
>> > +        <sequence key="send_seq"/>
>> > +    </sequence>
>> > +</definitions>
>> >
>> > Added: synapse/trunk/java/repository/conf/sample/synapse_sample_857.xml
>> > URL:
>> http://svn.apache.org/viewvc/synapse/trunk/java/repository/conf/sample/synapse_sample_857.xml?rev=1373302&view=auto
>> >
>> ==============================================================================
>> > --- synapse/trunk/java/repository/conf/sample/synapse_sample_857.xml
>> (added)
>> > +++ synapse/trunk/java/repository/conf/sample/synapse_sample_857.xml
>> Wed Aug 15 10:03:18 2012
>> > @@ -0,0 +1,32 @@
>> > +<?xml version="1.0" encoding="ISO-8859-1"?>
>> > +<!--
>> > +  ~  Licensed to the Apache Software Foundation (ASF) under one
>> > +  ~  or more contributor license agreements.  See the NOTICE file
>> > +  ~  distributed with this work for additional information
>> > +  ~  regarding copyright ownership.  The ASF licenses this file
>> > +  ~  to you under the Apache License, Version 2.0 (the
>> > +  ~  "License"); you may not use this file except in compliance
>> > +  ~  with the License.  You may obtain a copy of the License at
>> > +  ~
>> > +  ~   http://www.apache.org/licenses/LICENSE-2.0
>> > +  ~
>> > +  ~  Unless required by applicable law or agreed to in writing,
>> > +  ~  software distributed under the License is distributed on an
>> > +  ~   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
>> > +  ~  KIND, either express or implied.  See the License for the
>> > +  ~  specific language governing permissions and limitations
>> > +  ~  under the License.
>> > +  -->
>> > +
>> > +<!-- Introduction to Synapse Recipient List eip function template -->
>> > +<definitions xmlns="http://ws.apache.org/ns/synapse">
>> > +<import xmlns="http://ws.apache.org/ns/synapse" name="EipLibrary"
>> package="synapse.lang.eip" />
>> > +   <sequence name="main">
>> > +    <property name="OUT_ONLY" value="true"/>
>> > +                <property name="FORCE_SC_ACCEPTED" value="true"
>> scope="axis2"/>
>> > +    <call-template target="synapse.lang.eip.recipient_list">
>> > +        <with-param name="recipient_list" value="
>> http://localhost:9000/services/SimpleStockQuoteService,http://localhost:9001/services/SimpleStockQuoteService
>> "/>
>> > +    </call-template>
>> > +    <drop/>
>> > +</sequence>
>> > +</definitions>
>> >
>> >
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe@synapse.apache.org
>> For additional commands, e-mail: dev-help@synapse.apache.org
>>
>>

Mime
View raw message