You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@synapse.apache.org by pz...@apache.org on 2005/11/25 14:29:09 UTC

svn commit: r348944 - /incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/

Author: pzf
Date: Fri Nov 25 05:29:00 2005
New Revision: 348944

URL: http://svn.apache.org/viewcvs?rev=348944&view=rev
Log:
separated XML processing out

Added:
    incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/AbstractListProcessorConfigurator.java
    incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/AbstractProcessorConfigurator.java
    incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/AddressingProcessorConfigurator.java
    incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/ClassMediatorProcessorConfigurator.java
    incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/FaultProcessorConfigurator.java
    incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/HeaderProcessorConfigurator.java
    incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/LogProcessorConfigurator.java
    incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/ProcessorConfigurator.java
    incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/ProcessorConfiguratorFinder.java
    incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/RegexProcessorConfigurator.java
    incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/SendProcessorConfigurator.java
    incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/ServiceMediatorProcessorConfigurator.java
    incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/StageProcessorConfigurator.java
    incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/SynapseProcessorConfigurator.java
    incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/XPathProcessorConfigurator.java

Added: incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/AbstractListProcessorConfigurator.java
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/AbstractListProcessorConfigurator.java?rev=348944&view=auto
==============================================================================
--- incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/AbstractListProcessorConfigurator.java (added)
+++ incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/AbstractListProcessorConfigurator.java Fri Nov 25 05:29:00 2005
@@ -0,0 +1,43 @@
+package org.apache.synapse.xml;
+
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axis2.om.OMElement;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.synapse.Processor;
+import org.apache.synapse.SynapseEnvironment;
+import org.apache.synapse.processors.ListProcessor;
+
+public abstract class AbstractListProcessorConfigurator extends AbstractProcessorConfigurator {
+
+	Log log = LogFactory.getLog(getClass());
+	
+	public void compile(SynapseEnvironment se, OMElement el, ListProcessor p)
+	{
+		super.compile(se, el, p);
+
+		Iterator it = el.getChildElements();
+		List processors = new LinkedList();
+		while (it.hasNext()) {
+			OMElement child = (OMElement) it.next();
+			Processor proc = Configurator.getProcessor(se, child);
+			if (proc != null)
+				processors.add(proc);
+			else
+				log.info("Unknown child of all" + child.getLocalName());
+		}
+		p.setList(processors);
+		
+	}
+
+	public abstract QName getTagQName();
+
+	public abstract Processor compile(SynapseEnvironment se, OMElement el);
+		
+
+}

Added: incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/AbstractProcessorConfigurator.java
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/AbstractProcessorConfigurator.java?rev=348944&view=auto
==============================================================================
--- incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/AbstractProcessorConfigurator.java (added)
+++ incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/AbstractProcessorConfigurator.java Fri Nov 25 05:29:00 2005
@@ -0,0 +1,24 @@
+package org.apache.synapse.xml;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axis2.om.OMAttribute;
+import org.apache.axis2.om.OMElement;
+import org.apache.synapse.Processor;
+import org.apache.synapse.SynapseEnvironment;
+
+public abstract class AbstractProcessorConfigurator implements ProcessorConfigurator {
+
+	
+	public abstract Processor compile(SynapseEnvironment se, OMElement el);
+	
+	public void compile(SynapseEnvironment se, OMElement el, Processor p) {
+		OMAttribute nm = el.getAttribute(new QName("name"));
+		if (nm != null)
+			p.setName(nm.getAttributeValue().trim());
+		
+	}
+
+	public abstract QName getTagQName();
+
+}

Added: incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/AddressingProcessorConfigurator.java
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/AddressingProcessorConfigurator.java?rev=348944&view=auto
==============================================================================
--- incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/AddressingProcessorConfigurator.java (added)
+++ incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/AddressingProcessorConfigurator.java Fri Nov 25 05:29:00 2005
@@ -0,0 +1,36 @@
+package org.apache.synapse.xml;
+
+import javax.xml.namespace.QName;
+
+
+import org.apache.axis2.om.OMElement;
+import org.apache.synapse.Constants;
+import org.apache.synapse.Processor;
+import org.apache.synapse.SynapseEnvironment;
+import org.apache.synapse.processors.builtin.axis2.AddressingProcessor;
+
+/**
+ * @author Paul Fremantle
+ *         <p>
+ *         This class turns on the addressing module and then calls an empty
+ *         service There's probably a better way but this should work!
+ * 
+ */
+public class AddressingProcessorConfigurator extends AbstractProcessorConfigurator {
+	private static final QName ADD_Q = new QName(Constants.SYNAPSE_NAMESPACE,
+			"addressing");
+
+
+	public QName getTagQName() {
+
+		return ADD_Q;
+	}
+
+
+	public Processor compile(SynapseEnvironment se, OMElement el) {
+		AddressingProcessor ap = new AddressingProcessor();
+		super.compile(se,el,ap);
+		return ap;
+	}
+
+}

Added: incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/ClassMediatorProcessorConfigurator.java
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/ClassMediatorProcessorConfigurator.java?rev=348944&view=auto
==============================================================================
--- incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/ClassMediatorProcessorConfigurator.java (added)
+++ incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/ClassMediatorProcessorConfigurator.java Fri Nov 25 05:29:00 2005
@@ -0,0 +1,39 @@
+package org.apache.synapse.xml;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axis2.om.OMAttribute;
+import org.apache.axis2.om.OMElement;
+import org.apache.synapse.Constants;
+import org.apache.synapse.Processor;
+import org.apache.synapse.SynapseEnvironment;
+import org.apache.synapse.SynapseException;
+import org.apache.synapse.processors.mediatortypes.ClassMediatorProcessor;
+
+public class ClassMediatorProcessorConfigurator extends AbstractProcessorConfigurator {
+	private static final QName CLM_Q = new QName(Constants.SYNAPSE_NAMESPACE,
+			"classmediator");
+	public Processor compile(SynapseEnvironment se, OMElement el) {
+		ClassMediatorProcessor cmp = new ClassMediatorProcessor();
+		super.compile(se, el, cmp);
+
+		OMAttribute clsName = el.getAttribute(new QName("class"));
+		if (clsName == null)
+			throw new SynapseException("missing class attribute on element"
+					+ el.toString());
+		try {
+			Class clazz = se.getClassLoader().loadClass(clsName.getAttributeValue());
+			cmp.setClazz(clazz);
+		} catch (ClassNotFoundException e) {
+			throw new SynapseException("class loading error", e);
+		}
+		return cmp;
+
+	}
+
+	
+	public QName getTagQName() {
+		return CLM_Q;
+	}
+
+}

Added: incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/FaultProcessorConfigurator.java
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/FaultProcessorConfigurator.java?rev=348944&view=auto
==============================================================================
--- incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/FaultProcessorConfigurator.java (added)
+++ incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/FaultProcessorConfigurator.java Fri Nov 25 05:29:00 2005
@@ -0,0 +1,36 @@
+package org.apache.synapse.xml;
+
+import javax.xml.namespace.QName;
+
+
+import org.apache.axis2.om.OMElement;
+import org.apache.synapse.Constants;
+import org.apache.synapse.Processor;
+import org.apache.synapse.SynapseEnvironment;
+import org.apache.synapse.processors.builtin.axis2.FaultProcessor;
+
+/**
+ * @author Paul Fremantle
+ *         <p>
+ *         <xmp><synapse:fault/> </xmp>
+ * 
+ * 
+ */
+public class FaultProcessorConfigurator extends AbstractProcessorConfigurator {
+	private static final QName HEADER_Q = new QName(
+			Constants.SYNAPSE_NAMESPACE, "fault");
+
+	
+
+	
+	public Processor compile(SynapseEnvironment se, OMElement el) {
+		FaultProcessor fp = new FaultProcessor();
+		super.compile(se, el, fp);
+		return fp;
+	}
+
+		public QName getTagQName() {
+		return HEADER_Q;
+	}
+
+}

Added: incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/HeaderProcessorConfigurator.java
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/HeaderProcessorConfigurator.java?rev=348944&view=auto
==============================================================================
--- incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/HeaderProcessorConfigurator.java (added)
+++ incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/HeaderProcessorConfigurator.java Fri Nov 25 05:29:00 2005
@@ -0,0 +1,49 @@
+package org.apache.synapse.xml;
+
+import javax.xml.namespace.QName;
+
+
+import org.apache.axis2.om.OMAttribute;
+import org.apache.axis2.om.OMElement;
+import org.apache.synapse.Constants;
+import org.apache.synapse.Processor;
+import org.apache.synapse.SynapseEnvironment;
+import org.apache.synapse.SynapseException;
+import org.apache.synapse.processors.builtin.HeaderProcessor;
+
+/**
+ * @author Paul Fremantle
+ *         <p>
+ *         <xmp><synapse:header type="to|from|faultto|replyto|action"
+ *         value="newvalue"/> </xmp>
+ * 
+ * 
+ */
+public class HeaderProcessorConfigurator extends AbstractProcessorConfigurator{
+	private static final QName HEADER_Q = new QName(
+			Constants.SYNAPSE_NAMESPACE, "header");
+
+	
+
+		private static final QName TYPE_ATT_Q = new QName("type"),
+			VALUE_ATT_Q = new QName("value");
+
+		public Processor compile(SynapseEnvironment se, OMElement el) {
+			HeaderProcessor hp = new HeaderProcessor();
+			super.compile(se, el, hp);
+			OMAttribute val = el.getAttribute(VALUE_ATT_Q);
+			OMAttribute type = el.getAttribute(TYPE_ATT_Q);
+			if (val == null || type == null) {
+				throw new SynapseException("<header> must have both " + VALUE_ATT_Q
+					+ " and " + TYPE_ATT_Q + " attributes: " + el.toString());
+			}
+			hp.setHeaderType(type.getAttributeValue());
+			hp.setValue( val.getAttributeValue());
+			return hp;
+	}
+
+	public QName getTagQName() {
+		return HEADER_Q;
+	}
+
+}

Added: incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/LogProcessorConfigurator.java
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/LogProcessorConfigurator.java?rev=348944&view=auto
==============================================================================
--- incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/LogProcessorConfigurator.java (added)
+++ incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/LogProcessorConfigurator.java Fri Nov 25 05:29:00 2005
@@ -0,0 +1,28 @@
+package org.apache.synapse.xml;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axis2.om.OMElement;
+
+import org.apache.synapse.Constants;
+import org.apache.synapse.Processor;
+import org.apache.synapse.SynapseEnvironment;
+import org.apache.synapse.processors.builtin.LogProcessor;
+
+public class LogProcessorConfigurator extends AbstractProcessorConfigurator {
+	private static final QName LOG_Q = new QName(Constants.SYNAPSE_NAMESPACE,
+			"log");
+
+
+	public QName getTagQName() {
+		return LOG_Q;
+	}
+
+
+	public Processor compile(SynapseEnvironment se, OMElement el) {
+		LogProcessor lp = new LogProcessor();
+		super.compile(se,el,lp);
+		return lp;
+	}
+
+}

Added: incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/ProcessorConfigurator.java
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/ProcessorConfigurator.java?rev=348944&view=auto
==============================================================================
--- incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/ProcessorConfigurator.java (added)
+++ incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/ProcessorConfigurator.java Fri Nov 25 05:29:00 2005
@@ -0,0 +1,13 @@
+package org.apache.synapse.xml;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axis2.om.OMElement;
+import org.apache.synapse.Processor;
+import org.apache.synapse.SynapseEnvironment;
+
+public interface ProcessorConfigurator {
+	public Processor compile(SynapseEnvironment se, OMElement el);
+	public QName getTagQName();
+
+}

Added: incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/ProcessorConfiguratorFinder.java
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/ProcessorConfiguratorFinder.java?rev=348944&view=auto
==============================================================================
--- incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/ProcessorConfiguratorFinder.java (added)
+++ incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/ProcessorConfiguratorFinder.java Fri Nov 25 05:29:00 2005
@@ -0,0 +1,73 @@
+package org.apache.synapse.xml;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import javax.xml.namespace.QName;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import org.apache.synapse.SynapseException;
+
+import sun.misc.Service;
+
+/**
+ * @author Paul Fremantle
+ * 
+ * This class is based on J2SE Service Provider model
+ * http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html#Service%20Provider
+ */
+
+public class ProcessorConfiguratorFinder {
+
+	private static Map lookup = null;
+
+	private static Log log = LogFactory
+			.getLog(ProcessorConfiguratorFinder.class);
+
+	private static Class[] processorConfigurators = {
+			SynapseProcessorConfigurator.class,
+			StageProcessorConfigurator.class, RegexProcessorConfigurator.class,
+			XPathProcessorConfigurator.class,
+			HeaderProcessorConfigurator.class,
+			ClassMediatorProcessorConfigurator.class,
+			ServiceMediatorProcessorConfigurator.class,
+			LogProcessorConfigurator.class, SendProcessorConfigurator.class,
+			FaultProcessorConfigurator.class, AddressingProcessorConfigurator.class };
+
+	private static void initialise() {
+
+		if (lookup != null)
+			return;
+		lookup = new HashMap();
+
+		for (int i = 0; i < processorConfigurators.length; i++) {
+			Class c = processorConfigurators[i];
+			try {
+				lookup.put(((ProcessorConfigurator) c.newInstance())
+						.getTagQName(), c);
+			} catch (Exception e) {
+				throw new SynapseException(e);
+			}
+		}
+		// now try additional processors
+		Iterator it = Service.providers(ProcessorConfigurator.class);
+		while (it.hasNext()) {
+			ProcessorConfigurator p = (ProcessorConfigurator) it.next();
+			QName tag = p.getTagQName();
+			lookup.put(tag, p.getClass());
+			log.debug("added Processor " + p.getClass() + " to handle " + tag);
+		}
+	}
+
+	/**
+	 * @param QName
+	 * @return the class which implements the Processor for the given QName
+	 */
+	public static Class find(QName qn) {
+		initialise();
+		return (Class) lookup.get(qn);
+	}
+}

Added: incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/RegexProcessorConfigurator.java
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/RegexProcessorConfigurator.java?rev=348944&view=auto
==============================================================================
--- incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/RegexProcessorConfigurator.java (added)
+++ incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/RegexProcessorConfigurator.java Fri Nov 25 05:29:00 2005
@@ -0,0 +1,69 @@
+package org.apache.synapse.xml;
+
+
+
+import javax.xml.namespace.QName;
+
+import org.apache.axis2.om.OMAttribute;
+import org.apache.axis2.om.OMElement;
+
+
+import org.apache.synapse.Constants;
+import org.apache.synapse.Processor;
+import org.apache.synapse.SynapseEnvironment;
+import org.apache.synapse.SynapseException;
+
+
+import org.apache.synapse.processors.rules.RegexProcessor;
+
+/**
+ * @author Paul Fremantle
+ * 
+ */
+public class RegexProcessorConfigurator extends
+		AbstractListProcessorConfigurator {
+	private static final String REGEX = "regex";
+
+	private static final QName REGEX_Q = new QName(Constants.SYNAPSE_NAMESPACE,
+			REGEX);
+
+	private static final QName REGEX_PATTERN_ATT_Q = new QName("pattern");
+
+	private static final QName REGEX_PROPERTY_ATT_Q = new QName("property");
+
+	private static final QName REGEX_HEADER_ATT_Q = new QName("message-address");
+
+	
+
+	public Processor compile(SynapseEnvironment se, OMElement el) {
+		RegexProcessor rp = new RegexProcessor();
+		super.compile(se, el, rp);
+
+		OMAttribute patt = el.getAttribute(REGEX_PATTERN_ATT_Q);
+		if (patt == null) {
+			throw new SynapseException(REGEX + " must have "
+					+ REGEX_PATTERN_ATT_Q + " attribute: " + el.toString());
+		}
+
+		OMAttribute prop = el.getAttribute(REGEX_PROPERTY_ATT_Q);
+		OMAttribute head = el.getAttribute(REGEX_HEADER_ATT_Q);
+		if (prop == null && head == null) {
+			throw new SynapseException(REGEX + " must have either "
+					+ REGEX_PROPERTY_ATT_Q + " or " + REGEX_HEADER_ATT_Q
+					+ " attributes: " + el.toString());
+		}
+		rp.setPattern(patt.getAttributeValue());
+		if (prop != null) {
+			rp.setPropertyName(prop.getAttributeValue());
+		} else {
+			String header = head.getAttributeValue();
+			rp.setHeaderType(header);
+		}
+		return rp;
+	}
+
+	public QName getTagQName() {
+		return REGEX_Q;
+	}
+
+}

Added: incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/SendProcessorConfigurator.java
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/SendProcessorConfigurator.java?rev=348944&view=auto
==============================================================================
--- incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/SendProcessorConfigurator.java (added)
+++ incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/SendProcessorConfigurator.java Fri Nov 25 05:29:00 2005
@@ -0,0 +1,32 @@
+package org.apache.synapse.xml;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axis2.om.OMElement;
+
+import org.apache.synapse.processors.builtin.SendProcessor;
+import org.apache.synapse.Constants;
+import org.apache.synapse.Processor;
+import org.apache.synapse.SynapseEnvironment;
+
+public class SendProcessorConfigurator extends AbstractProcessorConfigurator {
+	
+
+	private static final QName SEND_Q = new QName(Constants.SYNAPSE_NAMESPACE,
+			"send");
+
+	
+
+	public Processor compile(SynapseEnvironment se, OMElement el) {
+		SendProcessor sp =  new SendProcessor();
+		super.compile(se, el,sp);
+		return sp;
+		
+	}
+
+	public QName getTagQName() {
+
+		return SEND_Q;
+	}
+
+}

Added: incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/ServiceMediatorProcessorConfigurator.java
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/ServiceMediatorProcessorConfigurator.java?rev=348944&view=auto
==============================================================================
--- incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/ServiceMediatorProcessorConfigurator.java (added)
+++ incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/ServiceMediatorProcessorConfigurator.java Fri Nov 25 05:29:00 2005
@@ -0,0 +1,35 @@
+package org.apache.synapse.xml;
+
+import javax.xml.namespace.QName;
+
+
+import org.apache.axis2.om.OMAttribute;
+import org.apache.axis2.om.OMElement;
+
+import org.apache.synapse.Constants;
+import org.apache.synapse.Processor;
+import org.apache.synapse.SynapseEnvironment;
+import org.apache.synapse.SynapseException;
+import org.apache.synapse.processors.mediatortypes.axis2.ServiceMediatorProcessor;
+
+public class ServiceMediatorProcessorConfigurator extends AbstractProcessorConfigurator {
+	private static final QName tagName = new QName(Constants.SYNAPSE_NAMESPACE,
+			"servicemediator");
+	public Processor compile(SynapseEnvironment se, OMElement el) {
+		ServiceMediatorProcessor smp = new ServiceMediatorProcessor();
+		super.compile(se,el,smp);
+		
+		OMAttribute attr = el.getAttribute(new QName("service"));
+		if (attr == null)
+			throw new SynapseException(
+					"<servicemediator> must have <service> attribute");
+		smp.setServiceName(attr.getAttributeValue());
+		return smp;
+	}
+
+	public QName getTagQName() {
+
+		return tagName;
+	}
+
+}

Added: incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/StageProcessorConfigurator.java
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/StageProcessorConfigurator.java?rev=348944&view=auto
==============================================================================
--- incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/StageProcessorConfigurator.java (added)
+++ incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/StageProcessorConfigurator.java Fri Nov 25 05:29:00 2005
@@ -0,0 +1,26 @@
+package org.apache.synapse.xml;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axis2.om.OMElement;
+import org.apache.synapse.Constants;
+import org.apache.synapse.Processor;
+import org.apache.synapse.SynapseEnvironment;
+import org.apache.synapse.processors.StageProcessor;
+
+public class StageProcessorConfigurator extends
+		AbstractListProcessorConfigurator {
+	private static final QName STAGE_Q = new QName(Constants.SYNAPSE_NAMESPACE,
+			"stage");
+
+	public QName getTagQName() {
+		return STAGE_Q;
+	}
+
+	public Processor compile(SynapseEnvironment se, OMElement el) {
+		StageProcessor sp = new StageProcessor();
+		super.compile(se, el, sp);
+		return sp;
+	}
+
+}

Added: incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/SynapseProcessorConfigurator.java
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/SynapseProcessorConfigurator.java?rev=348944&view=auto
==============================================================================
--- incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/SynapseProcessorConfigurator.java (added)
+++ incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/SynapseProcessorConfigurator.java Fri Nov 25 05:29:00 2005
@@ -0,0 +1,27 @@
+package org.apache.synapse.xml;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axis2.om.OMElement;
+import org.apache.synapse.Constants;
+import org.apache.synapse.Processor;
+import org.apache.synapse.SynapseEnvironment;
+import org.apache.synapse.processors.SynapseProcessor;
+
+public class SynapseProcessorConfigurator extends
+		AbstractListProcessorConfigurator {
+
+	private final static QName tagname = new QName(Constants.SYNAPSE_NAMESPACE,
+			"synapse");
+
+	public QName getTagQName() {
+		return tagname;
+	}
+
+	public Processor compile(SynapseEnvironment se, OMElement el) {
+		SynapseProcessor sp = new SynapseProcessor();
+		super.compile(se, el, sp);
+		return sp;
+	}
+
+}

Added: incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/XPathProcessorConfigurator.java
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/XPathProcessorConfigurator.java?rev=348944&view=auto
==============================================================================
--- incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/XPathProcessorConfigurator.java (added)
+++ incubator/synapse/trunk/scratch/prototype3/src/org/apache/synapse/xml/XPathProcessorConfigurator.java Fri Nov 25 05:29:00 2005
@@ -0,0 +1,65 @@
+package org.apache.synapse.xml;
+
+import java.util.Iterator;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axis2.om.OMAttribute;
+import org.apache.axis2.om.OMElement;
+import org.apache.axis2.om.OMNamespace;
+import org.apache.synapse.Constants;
+import org.apache.synapse.Processor;
+import org.apache.synapse.SynapseEnvironment;
+import org.apache.synapse.SynapseException;
+import org.apache.synapse.processors.rules.XPathProcessor;
+
+/**
+ * @author Paul Fremantle
+ * 
+ * <p>
+ * This class executes a test and then processes all subsequent rules/mediations
+ * if the test is true
+ * 
+ */
+public class XPathProcessorConfigurator extends
+		AbstractListProcessorConfigurator {
+	private static final String XPATH = "xpath";
+
+	private static final QName XPATH_Q = new QName(Constants.SYNAPSE_NAMESPACE,
+			"xpath");
+
+	private static final QName XPATH_EXPRESSION_ATT_Q = new QName("expr");
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.synapse.spi.Processor#compile(org.apache.synapse.api.SynapseEnvironment,
+	 *      org.apache.axis2.om.OMElement)
+	 */
+	public Processor compile(SynapseEnvironment se, OMElement el) {
+		XPathProcessor xp = new XPathProcessor();
+
+		super.compile(se, el, xp);
+
+		OMAttribute expr = el.getAttribute(XPATH_EXPRESSION_ATT_Q);
+		if (expr == null) {
+			throw new SynapseException(XPATH + " must have "
+					+ XPATH_EXPRESSION_ATT_Q + " attribute: " + el.toString());
+		}
+
+		xp.setXPathExpr(expr.getAttributeValue());
+		Iterator it = el.getAllDeclaredNamespaces();
+		while (it.hasNext()) {
+			OMNamespace n = (OMNamespace) it.next();
+			xp.addXPathNamespace(n.getPrefix(), n.getName());
+		}
+
+		return xp;
+	}
+
+	public QName getTagQName() {
+
+		return XPATH_Q;
+	}
+
+}



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