You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by ve...@apache.org on 2008/06/17 22:19:47 UTC
svn commit: r668815 - in /synapse/trunk/java/modules/core/src:
main/java/org/apache/synapse/mediators/transform/
test/java/org/apache/synapse/
test/java/org/apache/synapse/mediators/transform/ test/resources/org/
test/resources/org/apache/ test/resourc...
Author: veithen
Date: Tue Jun 17 13:19:46 2008
New Revision: 668815
URL: http://svn.apache.org/viewvc?rev=668815&view=rev
Log:
SYNAPSE-307:
* Resolved the issue by setting an appropriate ErrorListener on the TransformerFactory.
* Added a unit test.
Added:
synapse/trunk/java/modules/core/src/test/resources/org/
synapse/trunk/java/modules/core/src/test/resources/org/apache/
synapse/trunk/java/modules/core/src/test/resources/org/apache/synapse/
synapse/trunk/java/modules/core/src/test/resources/org/apache/synapse/mediators/
synapse/trunk/java/modules/core/src/test/resources/org/apache/synapse/mediators/transform/
synapse/trunk/java/modules/core/src/test/resources/org/apache/synapse/mediators/transform/invalid.xslt
Modified:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/transform/XSLTMediator.java
synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/TestMessageContextBuilder.java
synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/mediators/transform/XSLTMediatorTest.java
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/transform/XSLTMediator.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/transform/XSLTMediator.java?rev=668815&r1=668814&r2=668815&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/transform/XSLTMediator.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/transform/XSLTMediator.java Tue Jun 17 13:19:46 2008
@@ -207,6 +207,27 @@
boolean isSoapEnvelope = (sourceNode == synCtx.getEnvelope());
boolean isSoapBody = (sourceNode == synCtx.getEnvelope().getBody());
+ ErrorListener errorListener = new ErrorListener() {
+
+ public void warning(TransformerException e) throws TransformerException {
+
+ if (traceOrDebugOn) {
+ traceOrDebugWarn(
+ traceOn, "Warning encountered during transformation : " + e);
+ }
+ }
+
+ public void error(TransformerException e) throws TransformerException {
+ log.error("Error occured in XSLT transformation : " + e);
+ throw e;
+ }
+
+ public void fatalError(TransformerException e) throws TransformerException {
+ log.error("Fatal error occured in the XSLT transformation : " + e);
+ throw e;
+ }
+ };
+
if (traceOrDebugOn) {
trace.trace("Transformation source : " + sourceNode.toString());
}
@@ -265,6 +286,8 @@
synchronized (transformerLock) {
if (reCreate || cachedTemplates == null) {
+ // Set an error listener (SYNAPSE-307).
+ transFact.setErrorListener(errorListener);
try {
cachedTemplates = transFact.newTemplates(
SynapseConfigUtils.getStreamSource(synCtx.getEntry(xsltKey)));
@@ -295,26 +318,7 @@
}
}
- transformer.setErrorListener(new ErrorListener() {
-
- public void warning(TransformerException e) throws TransformerException {
-
- if (traceOrDebugOn) {
- traceOrDebugWarn(
- traceOn, "Warning encountered during transformation : " + e);
- }
- }
-
- public void error(TransformerException e) throws TransformerException {
- log.error("Error occured in XSLT transformation : " + e);
- throw e;
- }
-
- public void fatalError(TransformerException e) throws TransformerException {
- log.error("Fatal error occured in the XSLT transformation : " + e);
- throw e;
- }
- });
+ transformer.setErrorListener(errorListener);
transformer.transform(transformSrc, transformTgt);
Modified: synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/TestMessageContextBuilder.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/TestMessageContextBuilder.java?rev=668815&r1=668814&r2=668815&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/TestMessageContextBuilder.java (original)
+++ synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/TestMessageContextBuilder.java Tue Jun 17 13:19:46 2008
@@ -23,6 +23,7 @@
import java.io.FileInputStream;
import java.io.StringReader;
import java.net.MalformedURLException;
+import java.net.URL;
import java.util.HashMap;
import java.util.Map;
@@ -82,14 +83,18 @@
return this;
}
- public TestMessageContextBuilder addFileEntry(String key, String path) throws MalformedURLException {
+ public TestMessageContextBuilder addEntry(String key, URL url) {
Entry entry = new Entry();
entry.setType(Entry.URL_SRC);
- entry.setSrc(new File(path).toURL());
+ entry.setSrc(url);
entries.put(key, entry);
return this;
}
+ public TestMessageContextBuilder addFileEntry(String key, String path) throws MalformedURLException {
+ return addEntry(key, new File(path).toURL());
+ }
+
/**
* Build the test message context.
* This method returns a new (and independent) instance on every invocation.
Modified: synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/mediators/transform/XSLTMediatorTest.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/mediators/transform/XSLTMediatorTest.java?rev=668815&r1=668814&r2=668815&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/mediators/transform/XSLTMediatorTest.java (original)
+++ synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/mediators/transform/XSLTMediatorTest.java Tue Jun 17 13:19:46 2008
@@ -25,6 +25,7 @@
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMNode;
import org.apache.synapse.MessageContext;
+import org.apache.synapse.SynapseException;
import org.apache.synapse.TestMessageContextBuilder;
import org.apache.synapse.transport.base.BaseConstants;
import org.apache.synapse.util.xpath.SynapseXPath;
@@ -237,4 +238,22 @@
assertEquals(BaseConstants.DEFAULT_TEXT_WRAPPER, resultElement.getQName());
assertEquals("\u00e0 peine arriv\u00e9s nous entr\u00e2mes dans sa chambre", resultElement.getText());
}
+
+ // Test for SYNAPSE-307
+ public void testInvalidStylesheet() throws Exception {
+ transformMediator = new XSLTMediator();
+ transformMediator.setXsltKey("xslt-key");
+
+ MessageContext mc = new TestMessageContextBuilder()
+ .addEntry("xslt-key", getClass().getResource("invalid.xslt"))
+ .setBodyFromString("<root/>")
+ .build();
+
+ try {
+ transformMediator.mediate(mc);
+ fail("Expected a SynapseException to be thrown");
+ } catch (SynapseException ex) {
+ // this is what is expected
+ }
+ }
}
Added: synapse/trunk/java/modules/core/src/test/resources/org/apache/synapse/mediators/transform/invalid.xslt
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/test/resources/org/apache/synapse/mediators/transform/invalid.xslt?rev=668815&view=auto
==============================================================================
--- synapse/trunk/java/modules/core/src/test/resources/org/apache/synapse/mediators/transform/invalid.xslt (added)
+++ synapse/trunk/java/modules/core/src/test/resources/org/apache/synapse/mediators/transform/invalid.xslt Tue Jun 17 13:19:46 2008
@@ -0,0 +1,26 @@
+<?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.
+ -->
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:template match="root">
+ <root>
+ <xsl:non-existing-tag/>
+ </root>
+ </xsl:template>
+</xsl:stylesheet>