Repository: camel
Updated Branches:
  refs/heads/master e86aa1e75 -> b70c4189c


CAMEL-7744: xslt allow to configure custom error listener.


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/b70c4189
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/b70c4189
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/b70c4189

Branch: refs/heads/master
Commit: b70c4189c61bd5f9b87e40c93f19fa98b74e3620
Parents: fd97b75
Author: Claus Ibsen <davscl...@apache.org>
Authored: Mon Aug 25 14:56:05 2014 +0200
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Mon Aug 25 14:56:35 2014 +0200

----------------------------------------------------------------------
 .../camel/component/xslt/XsltComponent.java     |  2 +-
 .../xslt/XsltCustomErrorListenerTest.java       | 98 ++++++++++++++++++++
 2 files changed, 99 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/b70c4189/camel-core/src/main/java/org/apache/camel/component/xslt/XsltComponent.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/component/xslt/XsltComponent.java 
b/camel-core/src/main/java/org/apache/camel/component/xslt/XsltComponent.java
index 095cdb2..7f4b0ad 100644
--- 
a/camel-core/src/main/java/org/apache/camel/component/xslt/XsltComponent.java
+++ 
b/camel-core/src/main/java/org/apache/camel/component/xslt/XsltComponent.java
@@ -133,7 +133,7 @@ public class XsltComponent extends UriEndpointComponent {
         Integer cs = getAndRemoveParameter(parameters, "transformerCacheSize", 
Integer.class, 0);
         xslt.transformerCacheSize(cs);
 
-        ErrorListener errorListener = getAndRemoveParameter(parameters, 
"errorListener", ErrorListener.class);
+        ErrorListener errorListener = 
resolveAndRemoveReferenceParameter(parameters, "errorListener", 
ErrorListener.class);
         if (errorListener != null) {
             xslt.errorListener(errorListener);
         }

http://git-wip-us.apache.org/repos/asf/camel/blob/b70c4189/camel-core/src/test/java/org/apache/camel/component/xslt/XsltCustomErrorListenerTest.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/test/java/org/apache/camel/component/xslt/XsltCustomErrorListenerTest.java
 
b/camel-core/src/test/java/org/apache/camel/component/xslt/XsltCustomErrorListenerTest.java
new file mode 100644
index 0000000..07f2d09
--- /dev/null
+++ 
b/camel-core/src/test/java/org/apache/camel/component/xslt/XsltCustomErrorListenerTest.java
@@ -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.camel.component.xslt;
+
+import javax.xml.transform.ErrorListener;
+import javax.xml.transform.TransformerException;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.FailedToCreateRouteException;
+import org.apache.camel.TestSupport;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.impl.SimpleRegistry;
+
+/**
+ *
+ */
+public class XsltCustomErrorListenerTest extends TestSupport {
+
+    private MyErrorListener listener = new MyErrorListener();
+
+    private class MyErrorListener implements ErrorListener {
+
+        private boolean warning;
+        private boolean error;
+        private boolean fatalError;
+
+        @Override
+        public void warning(TransformerException exception) throws 
TransformerException {
+            warning = true;
+        }
+
+        @Override
+        public void error(TransformerException exception) throws 
TransformerException {
+            error = true;
+        }
+
+        @Override
+        public void fatalError(TransformerException exception) throws 
TransformerException {
+            fatalError = true;
+        }
+
+        public boolean isWarning() {
+            return warning;
+        }
+
+        public boolean isError() {
+            return error;
+        }
+
+        public boolean isFatalError() {
+            return fatalError;
+        }
+    }
+
+    public void testErrorListener() throws Exception {
+        try {
+            SimpleRegistry registry = new SimpleRegistry();
+            registry.put("myListener", listener);
+
+            RouteBuilder builder = createRouteBuilder();
+            CamelContext context = new DefaultCamelContext(registry);
+            context.addRoutes(builder);
+            context.start();
+
+            fail("Should have thrown an exception due XSLT file not found");
+        } catch (FailedToCreateRouteException e) {
+            // expected
+        }
+
+        assertFalse(listener.isWarning());
+        assertTrue("My error listener should been invoked", 
listener.isError());
+        assertTrue("My error listener should been invoked", 
listener.isFatalError());
+    }
+
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            public void configure() throws Exception {
+                
from("seda:a").to("xslt:org/apache/camel/builder/xml/example-with-errors.xsl?errorListener=#myListener");
+            }
+        };
+    }
+
+}

Reply via email to