From f48c9620fcb877d23492c6fdd3cc7f7be5cc10e7 Mon Sep 17 00:00:00 2001 From: Lukasz Lenart Date: Tue, 10 Jan 2017 10:28:54 +0100 Subject: [PATCH] WW-4731 Adds additional test case to confirm that everything is ok --- .../apache/struts2/views/xslt/XSLTResult.java | 6 +-- .../struts2/views/xslt/XSLTResultTest.java | 29 ++++++++++++-- core/src/test/resources/XSLTResultTest6.xsl | 40 +++++++++++++++++++ core/src/test/resources/log4j2.xml | 1 + 4 files changed, 70 insertions(+), 6 deletions(-) create mode 100644 core/src/test/resources/XSLTResultTest6.xsl diff --git a/core/src/main/java/org/apache/struts2/views/xslt/XSLTResult.java b/core/src/main/java/org/apache/struts2/views/xslt/XSLTResult.java index c264a59a2..2e2746e25 100644 --- a/core/src/main/java/org/apache/struts2/views/xslt/XSLTResult.java +++ b/core/src/main/java/org/apache/struts2/views/xslt/XSLTResult.java @@ -171,8 +171,9 @@ public class XSLTResult implements Result { if (location != null) { templates = getTemplates(location); transformer = templates.newTransformer(); - } else + } else { transformer = TransformerFactory.newInstance().newTransformer(); + } transformer.setURIResolver(getURIResolver()); transformer.setErrorListener(buildErrorListener()); @@ -247,8 +248,7 @@ public class XSLTResult implements Result { * function. The default is an instance of ServletURIResolver, which operates relative to the servlet context. */ protected URIResolver getURIResolver() { - return new ServletURIResolver( - ServletActionContext.getServletContext()); + return new ServletURIResolver(ServletActionContext.getServletContext()); } protected Templates getTemplates(final String path) throws TransformerException, IOException { diff --git a/core/src/test/java/org/apache/struts2/views/xslt/XSLTResultTest.java b/core/src/test/java/org/apache/struts2/views/xslt/XSLTResultTest.java index 3e8c7f184..47e73452b 100644 --- a/core/src/test/java/org/apache/struts2/views/xslt/XSLTResultTest.java +++ b/core/src/test/java/org/apache/struts2/views/xslt/XSLTResultTest.java @@ -35,6 +35,7 @@ import javax.xml.transform.TransformerException; import javax.xml.transform.URIResolver; import javax.xml.transform.stream.StreamSource; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; /** @@ -82,6 +83,22 @@ public class XSLTResultTest extends StrutsInternalTestCase { assertTrue(out.indexOf(" -1); } + public void testSimpleTransform5() throws Exception { + result.setParse(false); + result.setStylesheetLocation("XSLTResultTest6.xsl"); + result.execute(mai); + + String out = response.getContentAsString(); + assertTrue(out.startsWith("")); + assertTrue(out.contains("WebWork in Action")); + assertTrue(out.contains("Patrick and Jason")); + assertTrue(out.contains("IIV")); + assertTrue(out.contains("<author/><editions/></book>")); + assertTrue(out.contains("<title>XWork not in Action")); + assertTrue(out.contains("Superman")); + assertTrue(out.contains("12343456667")); + } + public void testSimpleTransformParse() throws Exception { result.setParse(true); result.setStylesheetLocation("${top.myLocation}"); @@ -277,9 +294,9 @@ public class XSLTResultTest extends StrutsInternalTestCase { public List getBooks() { List list = new ArrayList(); - list.add(new Book("WebWork in Action", "Patrick and Jason")); + list.add(new Book("WebWork in Action", "Patrick and Jason", Arrays.asList("I", "IV"))); list.add(null); - list.add(new Book("XWork not in Action", "Superman")); + list.add(new Book("XWork not in Action", "Superman", Arrays.asList("1234", "345", "6667"))); return list; } @@ -289,10 +306,12 @@ public class XSLTResultTest extends StrutsInternalTestCase { private String title; private String author; + private List editions; - public Book(String title, String author) { + public Book(String title, String author, List editions) { this.title = title; this.author = author; + this.editions = editions; } public String getTitle() { @@ -302,5 +321,9 @@ public class XSLTResultTest extends StrutsInternalTestCase { public String getAuthor() { return author; } + + public List getEditions() { + return editions; + } } } diff --git a/core/src/test/resources/XSLTResultTest6.xsl b/core/src/test/resources/XSLTResultTest6.xsl new file mode 100644 index 000000000..606466d40 --- /dev/null +++ b/core/src/test/resources/XSLTResultTest6.xsl @@ -0,0 +1,40 @@ + + + + + + + + + + <xsl:value-of select="title"/> + + + + + + + + + + + diff --git a/core/src/test/resources/log4j2.xml b/core/src/test/resources/log4j2.xml index 263585ef9..c93452b50 100644 --- a/core/src/test/resources/log4j2.xml +++ b/core/src/test/resources/log4j2.xml @@ -9,5 +9,6 @@ + \ No newline at end of file