You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@synapse.apache.org by sa...@apache.org on 2006/01/16 06:26:15 UTC
svn commit: r369353 - in /incubator/synapse/trunk/java: ./
extensions/XSLTTransform/ src/org/apache/synapse/processors/builtin/xslt/
synapse-test-resources/tranformation/ test/org/apache/synapse/spi/processors/
Author: saminda
Date: Sun Jan 15 21:26:01 2006
New Revision: 369353
URL: http://svn.apache.org/viewcvs?rev=369353&view=rev
Log:
1. Added XSLTProcessor/Configuratior to core
2. Added XSLTProcessor test case
3. Added resources and updated maven.xml
Added:
incubator/synapse/trunk/java/src/org/apache/synapse/processors/builtin/xslt/
incubator/synapse/trunk/java/src/org/apache/synapse/processors/builtin/xslt/XSLTProcessor.java
incubator/synapse/trunk/java/src/org/apache/synapse/processors/builtin/xslt/XSLTProcessorConfigurator.java
incubator/synapse/trunk/java/synapse-test-resources/tranformation/
incubator/synapse/trunk/java/synapse-test-resources/tranformation/simple_transformation.xsl
Removed:
incubator/synapse/trunk/java/extensions/XSLTTransform/
Modified:
incubator/synapse/trunk/java/maven.xml
incubator/synapse/trunk/java/test/org/apache/synapse/spi/processors/XSLTProcessorTest.java
Modified: incubator/synapse/trunk/java/maven.xml
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/java/maven.xml?rev=369353&r1=369352&r2=369353&view=diff
==============================================================================
--- incubator/synapse/trunk/java/maven.xml (original)
+++ incubator/synapse/trunk/java/maven.xml Sun Jan 15 21:26:01 2006
@@ -288,6 +288,29 @@
</fileset>
</jar>
</goal>
+
+ <!-- ================================================================ -->
+ <!--- Create the Java Docs -->
+ <!-- ================================================================ -->
+
+ <goal name="javadocs" prereqs="init">
+ <ant:javadoc packagenames="org.apache.synapse.*"
+ defaultexcludes="yes"
+ destdir="target/apidocs"
+ author="true"
+ version="true"
+ use="true"
+ windowtitle="Synpase API">
+ <ant:sourcepath>
+ <ant:pathelement location="src"/>
+ </ant:sourcepath>
+ <ant:classpath>
+ <ant:fileset dir="target/lib">
+ <ant:include name="**/*.jar"/>
+ </ant:fileset>
+ </ant:classpath>
+ </ant:javadoc>
+ </goal>
<!-- ================================================================ -->
<!--- Reports -->
<!-- ================================================================ -->
Added: incubator/synapse/trunk/java/src/org/apache/synapse/processors/builtin/xslt/XSLTProcessor.java
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/java/src/org/apache/synapse/processors/builtin/xslt/XSLTProcessor.java?rev=369353&view=auto
==============================================================================
--- incubator/synapse/trunk/java/src/org/apache/synapse/processors/builtin/xslt/XSLTProcessor.java (added)
+++ incubator/synapse/trunk/java/src/org/apache/synapse/processors/builtin/xslt/XSLTProcessor.java Sun Jan 15 21:26:01 2006
@@ -0,0 +1,92 @@
+package org.apache.synapse.processors.builtin.xslt;
+
+
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+
+
+import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamWriter;
+import javax.xml.transform.Source;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+
+import org.apache.axis2.om.OMAbstractFactory;
+import org.apache.axis2.om.OMElement;
+import org.apache.axis2.om.impl.llom.builder.StAXOMBuilder;
+import org.apache.synapse.SynapseEnvironment;
+import org.apache.synapse.SynapseException;
+import org.apache.synapse.SynapseMessage;
+
+import org.apache.synapse.processors.AbstractProcessor;
+
+/**
+ *
+ * @see org.apache.synapse.processors.builtin.xslt.XSLTProcessorConfigurator
+ * <p> This class is the class that transforms messages using XSLT.
+ *
+
+ *
+ */
+public class XSLTProcessor extends AbstractProcessor {
+
+ private Transformer tran = null;
+
+ private boolean isBody = false;
+
+ public boolean process(SynapseEnvironment se, SynapseMessage smc) {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ XMLStreamWriter xsw;
+ try {
+ xsw = XMLOutputFactory.newInstance().createXMLStreamWriter(baos);
+
+ if (isBody) smc.getEnvelope().getBody().serialize(xsw);
+ else smc.getEnvelope().serialize(xsw);
+
+ Source src = new StreamSource(new ByteArrayInputStream(baos.toByteArray()));
+ ByteArrayOutputStream baos2 = new ByteArrayOutputStream();
+ StreamResult result = new StreamResult(baos2);
+ tran.transform(src, result);
+ StAXOMBuilder builder = new StAXOMBuilder(new ByteArrayInputStream(baos2.toByteArray()));
+ OMElement nw = builder.getDocumentElement();
+ if (isBody) smc.getEnvelope().setFirstChild(nw);
+ //TODO don't assume SOAP 1.1
+ else smc.setEnvelope(OMAbstractFactory.getSOAP11Factory().createSOAPEnvelope(builder));
+
+ } catch (Exception e) {
+ throw new SynapseException(e);
+ }
+ return true;
+ }
+
+ /**
+ * @param b
+ * <p> If isBody is true then the XSLT is applied to the Body of the SOAP message, otherwise to the whole env
+ */
+ public void setIsBody(boolean b) {
+ isBody = b;
+ }
+
+
+ /**
+ * @param is
+ * <p>
+ * This sets the correct XSL transform
+ */
+ public void setXSLInputStream(InputStream is) {
+ try {
+ Source src = new StreamSource(is);
+ tran = TransformerFactory.newInstance().newTransformer(src);
+ } catch (Exception e) {
+ throw new SynapseException(e);
+
+ }
+ }
+
+}
+
+
Added: incubator/synapse/trunk/java/src/org/apache/synapse/processors/builtin/xslt/XSLTProcessorConfigurator.java
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/java/src/org/apache/synapse/processors/builtin/xslt/XSLTProcessorConfigurator.java?rev=369353&view=auto
==============================================================================
--- incubator/synapse/trunk/java/src/org/apache/synapse/processors/builtin/xslt/XSLTProcessorConfigurator.java (added)
+++ incubator/synapse/trunk/java/src/org/apache/synapse/processors/builtin/xslt/XSLTProcessorConfigurator.java Sun Jan 15 21:26:01 2006
@@ -0,0 +1,57 @@
+package org.apache.synapse.processors.builtin.xslt;
+
+import java.io.InputStream;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axis2.om.OMAttribute;
+import org.apache.axis2.om.OMElement;
+import org.apache.synapse.xml.Constants;
+import org.apache.synapse.Processor;
+import org.apache.synapse.SynapseEnvironment;
+import org.apache.synapse.SynapseException;
+
+
+
+import org.apache.synapse.xml.AbstractProcessorConfigurator;
+
+
+
+/**
+ *
+ * @see org.apache.synapse.processors.builtin.xslt.XSLTProcessor
+ * <p> This class configures the XSLT transformer
+ * <p> The tag looks like this
+ * <xmp><xslt name="x" xsl="file.xsl" type="body|envelope"/></xmp>
+ * Perform the given XSLT on the SOAP-Envelope or Body
+ * <p>If type is not present, assumed to be body
+ */
+public class XSLTProcessorConfigurator extends AbstractProcessorConfigurator {
+ private static final QName tagName = new QName(Constants.SYNAPSE_NAMESPACE, "xslt");
+
+ public Processor createProcessor(SynapseEnvironment se, OMElement el) {
+ XSLTProcessor xp = new XSLTProcessor();
+ super.setNameOnProcessor(se,el,xp);
+
+ OMAttribute type = el.getAttribute(new QName("type"));
+ if (type != null && type.getAttributeValue().trim().toLowerCase().equals("envelope")) xp.setIsBody(false);
+ else xp.setIsBody(true);
+
+ OMAttribute xsl = el.getAttribute(new QName("xsl"));
+ if (xsl == null) throw new SynapseException("no xsl attribute on: "+el.toString());
+
+ InputStream xslStream = se.getClassLoader().getResourceAsStream(xsl.getAttributeValue());
+ xp.setXSLInputStream(xslStream);
+
+ return xp;
+
+
+
+ }
+
+ public QName getTagQName() {
+
+ return tagName;
+ }
+
+}
Added: incubator/synapse/trunk/java/synapse-test-resources/tranformation/simple_transformation.xsl
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/java/synapse-test-resources/tranformation/simple_transformation.xsl?rev=369353&view=auto
==============================================================================
--- incubator/synapse/trunk/java/synapse-test-resources/tranformation/simple_transformation.xsl (added)
+++ incubator/synapse/trunk/java/synapse-test-resources/tranformation/simple_transformation.xsl Sun Jan 15 21:26:01 2006
@@ -0,0 +1,8 @@
+<xsl:stylesheet version='1.0'
+ xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
+ <xsl:template match="/">
+ <transformedText>
+ <xsl:value-of select="//text"/>
+ </transformedText>
+ </xsl:template>
+</xsl:stylesheet>
\ No newline at end of file
Modified: incubator/synapse/trunk/java/test/org/apache/synapse/spi/processors/XSLTProcessorTest.java
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/java/test/org/apache/synapse/spi/processors/XSLTProcessorTest.java?rev=369353&r1=369352&r2=369353&view=diff
==============================================================================
--- incubator/synapse/trunk/java/test/org/apache/synapse/spi/processors/XSLTProcessorTest.java (original)
+++ incubator/synapse/trunk/java/test/org/apache/synapse/spi/processors/XSLTProcessorTest.java Sun Jan 15 21:26:01 2006
@@ -1,6 +1,12 @@
package org.apache.synapse.spi.processors;
import junit.framework.TestCase;
+import org.apache.synapse.SynapseMessage;
+import org.apache.synapse.processors.builtin.xslt.XSLTProcessor;
+import org.apache.synapse.util.Axis2EvnSetup;
+import org.apache.synapse.axis2.Axis2SynapseMessage;
+
+import java.io.ByteArrayInputStream;
/*
* Copyright 2004,2005 The Apache Software Foundation.
*
@@ -19,7 +25,23 @@
*/
public class XSLTProcessorTest extends TestCase {
+ private String xsl = "<xsl:stylesheet version='1.0'\n" +
+ " xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>\n" +
+ " <xsl:template match=\"/\">\n" +
+ " <transformedText>\n" +
+ " <xsl:value-of select=\"//text\"/>\n" +
+ " <xsl:text>Test Being Transformed</xsl:text>" +
+ " </transformedText>\n" +
+ " </xsl:template>\n" +
+ "</xsl:stylesheet>";
+
public void testXSLTProcessor() throws Exception {
- //todo;
+ SynapseMessage sm = new Axis2SynapseMessage(
+ Axis2EvnSetup.axis2Deployment("target/synapse-repository"));
+ XSLTProcessor pro = new XSLTProcessor();
+ pro.setXSLInputStream(new ByteArrayInputStream(xsl.getBytes()));
+ pro.setIsBody(true);
+ boolean result = pro.process(null, sm);
+ assertTrue(result);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: synapse-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: synapse-dev-help@ws.apache.org