From 2f040208ac7ffdad6ddf8bffaf3b82f4256d4ae0 Mon Sep 17 00:00:00 2001 From: Rik van Ballegooijen Date: Mon, 9 Aug 2021 18:44:16 +0200 Subject: [PATCH 1/3] CAMEL-16853: fix resultHandlerFactory, add unit test --- components/camel-xslt/pom.xml | 12 +++++ .../camel/component/xslt/XsltEndpoint.java | 8 +-- .../XsltEndpointResultHandlerFactoryTest.java | 53 +++++++++++++++++++ .../XsltEndpointResultHandlerFactoryTest.xml | 42 +++++++++++++++ .../apache/camel/component/xslt/transform.xsl | 41 ++++++++++++++ 5 files changed, 153 insertions(+), 3 deletions(-) create mode 100644 components/camel-xslt/src/test/java/org/apache/camel/component/xslt/XsltEndpointResultHandlerFactoryTest.java create mode 100644 components/camel-xslt/src/test/resources/org/apache/camel/component/xslt/XsltEndpointResultHandlerFactoryTest.xml create mode 100644 components/camel-xslt/src/test/resources/org/apache/camel/component/xslt/transform.xsl diff --git a/components/camel-xslt/pom.xml b/components/camel-xslt/pom.xml index 9fc509e918ff6..6aa6dd43e2fdd 100644 --- a/components/camel-xslt/pom.xml +++ b/components/camel-xslt/pom.xml @@ -43,5 +43,17 @@ camel-xml-jaxp + + + org.apache.camel + camel-test-spring-junit5 + test + + + org.apache.logging.log4j + log4j-slf4j-impl + test + + diff --git a/components/camel-xslt/src/main/java/org/apache/camel/component/xslt/XsltEndpoint.java b/components/camel-xslt/src/main/java/org/apache/camel/component/xslt/XsltEndpoint.java index bccd61fe8dd98..9d3b8971a382d 100644 --- a/components/camel-xslt/src/main/java/org/apache/camel/component/xslt/XsltEndpoint.java +++ b/components/camel-xslt/src/main/java/org/apache/camel/component/xslt/XsltEndpoint.java @@ -386,9 +386,7 @@ protected XsltBuilder createXsltBuilder() throws Exception { LOG.debug("Using TransformerFactory {}", factory); xslt.setTransformerFactory(factory); } - if (resultHandlerFactory != null) { - xslt.setResultHandlerFactory(resultHandlerFactory); - } + if (errorListener != null) { xslt.errorListener(errorListener); } @@ -400,6 +398,10 @@ protected XsltBuilder createXsltBuilder() throws Exception { configureOutput(xslt, output.name()); + if (resultHandlerFactory != null) { + xslt.setResultHandlerFactory(resultHandlerFactory); + } + // any additional transformer parameters then make a copy to avoid side-effects if (parameters != null) { Map copy = new HashMap<>(parameters); diff --git a/components/camel-xslt/src/test/java/org/apache/camel/component/xslt/XsltEndpointResultHandlerFactoryTest.java b/components/camel-xslt/src/test/java/org/apache/camel/component/xslt/XsltEndpointResultHandlerFactoryTest.java new file mode 100644 index 0000000000000..6e49041535428 --- /dev/null +++ b/components/camel-xslt/src/test/java/org/apache/camel/component/xslt/XsltEndpointResultHandlerFactoryTest.java @@ -0,0 +1,53 @@ +/* + * 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 org.apache.camel.Endpoint; +import org.apache.camel.test.spring.junit5.CamelSpringTestSupport; +import org.junit.jupiter.api.Test; +import org.springframework.context.support.AbstractXmlApplicationContext; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +public class XsltEndpointResultHandlerFactoryTest extends CamelSpringTestSupport { + + @Test + public void testResultHandlerFactory() { + ResultHandlerFactory factory = context.getRegistry().lookupByNameAndType("factory", ResultHandlerFactory.class); + XsltEndpoint endpoint = null; + + assertNotNull(factory); + + for (Endpoint ep : context.getEndpoints()) { + if (ep instanceof XsltEndpoint) { + endpoint = (XsltEndpoint) ep; + break; + } + } + + assertNotNull(endpoint); + assertEquals(DomResultHandlerFactory.class, factory.getClass()); + assertEquals(factory, endpoint.getResultHandlerFactory()); + assertEquals(factory, endpoint.getXslt().getResultHandlerFactory()); + } + + @Override + protected AbstractXmlApplicationContext createApplicationContext() { + return newAppContext("XsltEndpointResultHandlerFactoryTest.xml"); + } +} diff --git a/components/camel-xslt/src/test/resources/org/apache/camel/component/xslt/XsltEndpointResultHandlerFactoryTest.xml b/components/camel-xslt/src/test/resources/org/apache/camel/component/xslt/XsltEndpointResultHandlerFactoryTest.xml new file mode 100644 index 0000000000000..6ebd0aeaef7b4 --- /dev/null +++ b/components/camel-xslt/src/test/resources/org/apache/camel/component/xslt/XsltEndpointResultHandlerFactoryTest.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + diff --git a/components/camel-xslt/src/test/resources/org/apache/camel/component/xslt/transform.xsl b/components/camel-xslt/src/test/resources/org/apache/camel/component/xslt/transform.xsl new file mode 100644 index 0000000000000..d2cef190c0fd1 --- /dev/null +++ b/components/camel-xslt/src/test/resources/org/apache/camel/component/xslt/transform.xsl @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + From bdb3df0932ca00b654ef5e5592e6a1a12d5cb900 Mon Sep 17 00:00:00 2001 From: Rik van Ballegooijen Date: Tue, 10 Aug 2021 08:23:56 +0200 Subject: [PATCH 2/3] CAMEL-16853: Change unit test to DSL version, without depending on spring (note: still cyclic!) --- components/camel-xslt/pom.xml | 2 +- .../XsltEndpointResultHandlerFactoryTest.java | 31 +++++++++----- .../XsltEndpointResultHandlerFactoryTest.xml | 42 ------------------- 3 files changed, 21 insertions(+), 54 deletions(-) delete mode 100644 components/camel-xslt/src/test/resources/org/apache/camel/component/xslt/XsltEndpointResultHandlerFactoryTest.xml diff --git a/components/camel-xslt/pom.xml b/components/camel-xslt/pom.xml index 6aa6dd43e2fdd..bd40f02fe6c10 100644 --- a/components/camel-xslt/pom.xml +++ b/components/camel-xslt/pom.xml @@ -46,7 +46,7 @@ org.apache.camel - camel-test-spring-junit5 + camel-test-junit5 test diff --git a/components/camel-xslt/src/test/java/org/apache/camel/component/xslt/XsltEndpointResultHandlerFactoryTest.java b/components/camel-xslt/src/test/java/org/apache/camel/component/xslt/XsltEndpointResultHandlerFactoryTest.java index 6e49041535428..64ed8af5bcbe2 100644 --- a/components/camel-xslt/src/test/java/org/apache/camel/component/xslt/XsltEndpointResultHandlerFactoryTest.java +++ b/components/camel-xslt/src/test/java/org/apache/camel/component/xslt/XsltEndpointResultHandlerFactoryTest.java @@ -17,22 +17,23 @@ package org.apache.camel.component.xslt; import org.apache.camel.Endpoint; -import org.apache.camel.test.spring.junit5.CamelSpringTestSupport; +import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.test.junit5.CamelTestSupport; import org.junit.jupiter.api.Test; -import org.springframework.context.support.AbstractXmlApplicationContext; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; -public class XsltEndpointResultHandlerFactoryTest extends CamelSpringTestSupport { +public class XsltEndpointResultHandlerFactoryTest extends CamelTestSupport { @Test - public void testResultHandlerFactory() { - ResultHandlerFactory factory = context.getRegistry().lookupByNameAndType("factory", ResultHandlerFactory.class); - XsltEndpoint endpoint = null; - - assertNotNull(factory); + public void testResultHandlerFactory() throws Exception { + ResultHandlerFactory factory = new DomResultHandlerFactory(); + context.getRegistry().bind("factory", factory); + configureRoute(); + context.start(); + XsltEndpoint endpoint = null; for (Endpoint ep : context.getEndpoints()) { if (ep instanceof XsltEndpoint) { endpoint = (XsltEndpoint) ep; @@ -46,8 +47,16 @@ public void testResultHandlerFactory() { assertEquals(factory, endpoint.getXslt().getResultHandlerFactory()); } - @Override - protected AbstractXmlApplicationContext createApplicationContext() { - return newAppContext("XsltEndpointResultHandlerFactoryTest.xml"); + + private void configureRoute() throws Exception { + context.addRoutes(new RouteBuilder() { + @Override + public void configure() { + from("direct:start") + .to("xslt:org/apache/camel/component/xslt/transform.xsl?output=bytes&resultHandlerFactory=#factory"); +// .to("mock:result"); + } + }); } + } diff --git a/components/camel-xslt/src/test/resources/org/apache/camel/component/xslt/XsltEndpointResultHandlerFactoryTest.xml b/components/camel-xslt/src/test/resources/org/apache/camel/component/xslt/XsltEndpointResultHandlerFactoryTest.xml deleted file mode 100644 index 6ebd0aeaef7b4..0000000000000 --- a/components/camel-xslt/src/test/resources/org/apache/camel/component/xslt/XsltEndpointResultHandlerFactoryTest.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - From ce3807fafadb8c7f3563c5f2c6fa967b742e8084 Mon Sep 17 00:00:00 2001 From: Rik van Ballegooijen Date: Tue, 10 Aug 2021 18:36:03 +0200 Subject: [PATCH 3/3] CAMEL-16853: Fix cyclic dep: Moved unit test to camel-core, removed test dependencies from camel-xslt --- components/camel-xslt/pom.xml | 12 ------ .../apache/camel/component/xslt/transform.xsl | 41 ------------------- .../component/xslt/XsltResultHandlerTest.java | 25 +++++------ 3 files changed, 13 insertions(+), 65 deletions(-) delete mode 100644 components/camel-xslt/src/test/resources/org/apache/camel/component/xslt/transform.xsl rename components/camel-xslt/src/test/java/org/apache/camel/component/xslt/XsltEndpointResultHandlerFactoryTest.java => core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltResultHandlerTest.java (72%) diff --git a/components/camel-xslt/pom.xml b/components/camel-xslt/pom.xml index bd40f02fe6c10..9fc509e918ff6 100644 --- a/components/camel-xslt/pom.xml +++ b/components/camel-xslt/pom.xml @@ -43,17 +43,5 @@ camel-xml-jaxp - - - org.apache.camel - camel-test-junit5 - test - - - org.apache.logging.log4j - log4j-slf4j-impl - test - - diff --git a/components/camel-xslt/src/test/resources/org/apache/camel/component/xslt/transform.xsl b/components/camel-xslt/src/test/resources/org/apache/camel/component/xslt/transform.xsl deleted file mode 100644 index d2cef190c0fd1..0000000000000 --- a/components/camel-xslt/src/test/resources/org/apache/camel/component/xslt/transform.xsl +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/components/camel-xslt/src/test/java/org/apache/camel/component/xslt/XsltEndpointResultHandlerFactoryTest.java b/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltResultHandlerTest.java similarity index 72% rename from components/camel-xslt/src/test/java/org/apache/camel/component/xslt/XsltEndpointResultHandlerFactoryTest.java rename to core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltResultHandlerTest.java index 64ed8af5bcbe2..ae3efa43fc54e 100644 --- a/components/camel-xslt/src/test/java/org/apache/camel/component/xslt/XsltEndpointResultHandlerFactoryTest.java +++ b/core/camel-core/src/test/java/org/apache/camel/component/xslt/XsltResultHandlerTest.java @@ -16,21 +16,25 @@ */ package org.apache.camel.component.xslt; +import org.apache.camel.CamelContext; import org.apache.camel.Endpoint; +import org.apache.camel.TestSupport; import org.apache.camel.builder.RouteBuilder; -import org.apache.camel.test.junit5.CamelTestSupport; +import org.apache.camel.impl.DefaultCamelContext; import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; -public class XsltEndpointResultHandlerFactoryTest extends CamelTestSupport { +public class XsltResultHandlerTest extends TestSupport { @Test public void testResultHandlerFactory() throws Exception { + RouteBuilder builder = createRouteBuilder(); + CamelContext context = new DefaultCamelContext(); ResultHandlerFactory factory = new DomResultHandlerFactory(); context.getRegistry().bind("factory", factory); - configureRoute(); + context.addRoutes(builder); context.start(); XsltEndpoint endpoint = null; @@ -48,15 +52,12 @@ public void testResultHandlerFactory() throws Exception { } - private void configureRoute() throws Exception { - context.addRoutes(new RouteBuilder() { - @Override - public void configure() { - from("direct:start") - .to("xslt:org/apache/camel/component/xslt/transform.xsl?output=bytes&resultHandlerFactory=#factory"); -// .to("mock:result"); + protected RouteBuilder createRouteBuilder() throws Exception { + return new RouteBuilder() { + public void configure() throws Exception { + from("direct:start").to("xslt:org/apache/camel/component/xslt/example.xsl?output=bytes&resultHandlerFactory=#factory"); } - }); + }; } }