Cleanup xalan and junit

- remove junit 4
- remove xalan 2.7.2
This commit is contained in:
Oliver Warz 2022-09-09 01:27:30 +02:00
parent 7637f030da
commit 42a38ea9a5
6 changed files with 60 additions and 24 deletions

View File

@ -6,9 +6,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
## [0.10.2] - 2022-09-09
### Changed
- remove junit 4
- remove xalan 2.7.2
## [0.10.1] - 2022-09-02
### Changed
- fixes for sonarcube ce scan results
- fixes for sonarqube ce scan results
- add units tests for servlet with mokito
## [0.9.9] - 2022-06-18

16
pom.xml
View File

@ -6,7 +6,7 @@
<groupId>de.pdv.apex</groupId>
<artifactId>fop4apex</artifactId>
<version>0.10.1-SNAPSHOT</version>
<version>0.10.2-SNAPSHOT</version>
<name>fop4apex</name>
<packaging>war</packaging>
<url>https://www.pdv.de</url>
@ -25,12 +25,6 @@
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
@ -65,6 +59,12 @@
<artifactId>fop-core</artifactId>
<version>2.7</version>
<scope>compile</scope>
<exclusions>
<exclusion>
<groupId>xalan</groupId>
<artifactId>xalan</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- https://mvnrepository.com/artifact/net.bull.javamelody/javamelody-core -->
@ -158,7 +158,7 @@
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>3.3.0</version>
<version>3.2.1</version>
<configuration>
<from>
<image>compile.pdv.lan:8001/product/base/vis-tomcat:9.0</image>

View File

@ -10,10 +10,8 @@ import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.XMLConstants;
import javax.xml.transform.*;
import javax.xml.transform.sax.SAXResult;
import javax.xml.transform.stream.StreamSource;
import java.io.File;
@ -30,9 +28,22 @@ import java.util.logging.Logger;
public class PdfServlet extends HttpServlet {
private static final Logger logger = Logger.getLogger(PdfServlet.class.getName());
private final TransformerFactory tFactory = TransformerFactory.newInstance();
private static final TransformerFactory tFactory = TransformerFactory.newInstance();
// <editor-fold default state="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Init the servlet and setup TransformerFactory
*/
@Override
public void init() {
try {
tFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
tFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
tFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, "");
logger.info("TransformerFactory configured with FEATURE_SECURE_PROCESSING and without ACCESS_EXTERNAL_DTD/ACCESS_EXTERNAL_STYLESHEET");
} catch (TransformerConfigurationException e) {
logger.warning(String.format("TransformerConfigurationException while setup TransformerFactory - possible security issue: %s", e.getMessage()));
}
}
/**
* Handles the HTTP <code>GET</code> method.
@ -40,7 +51,7 @@ public class PdfServlet extends HttpServlet {
* @param request servlet request
* @param response servlet response
*/
@Override
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
logger.log(Level.FINEST,"Finest output");
logger.log(Level.FINER,"Finer output");
@ -102,7 +113,6 @@ public class PdfServlet extends HttpServlet {
FOUserAgent foUserAgent = fopFactory.newFOUserAgent();
// Construct fop with desired output format
Fop fop = fopFactory.newFop(MIME_PDF, foUserAgent, response.getOutputStream());
Transformer transformer = tFactory.newTransformer( new StreamSource(new StringReader(templateFile)));
// Set the value of a <param> in the stylesheet
transformer.setParameter("versionParam", "2.0");

View File

@ -49,6 +49,8 @@ class ExampleFO2PDFTest {
// Setup JAXP using identity transformer
TransformerFactory factory = TransformerFactory.newInstance();
factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, "");
Transformer transformer = factory.newTransformer(); // identity transformer
// Setup input stream

View File

@ -8,6 +8,7 @@ import org.apache.pdfbox.pdmodel.PDDocument;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import javax.xml.XMLConstants;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
@ -60,6 +61,10 @@ class ExampleXML2PDFTest {
// Setup XSLT
TransformerFactory factory = TransformerFactory.newInstance();
factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, "");
Transformer transformer = factory.newTransformer(new StreamSource(xsltFile));
// Set the value of a <param> in the stylesheet

View File

@ -1,8 +1,9 @@
package de.pdv.apex;
import org.apache.commons.io.IOUtils;
import org.junit.Before;
import org.junit.Test;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
@ -17,25 +18,26 @@ import java.io.PrintWriter;
import java.io.StringWriter;
import java.nio.charset.StandardCharsets;
public class PdfServletTest extends Mockito {
class PdfServletTest extends Mockito {
@Spy private PdfServlet servlet;
@Mock private ServletConfig servletConfig;
@Mock private HttpServletRequest request;
@Mock private HttpServletResponse response;
@Mock private ServletOutputStream outputStream;
@Before
@BeforeEach
public void setUp() {
MockitoAnnotations.openMocks(this);
}
@Test
public void assertThatNoMethodHasBeenCalled() {
void assertThatNoMethodHasBeenCalled() {
when(servlet.getServletConfig()).thenReturn(servletConfig);
Mockito.verifyNoInteractions(servlet);
}
@Test
public void testServletGet() throws Exception {
void doGet() throws Exception {
when(servlet.getServletConfig()).thenReturn(servletConfig);
when(response.getOutputStream()).thenReturn(outputStream);
when(response.getWriter()).thenReturn(new PrintWriter(new StringWriter()));
@ -47,7 +49,7 @@ public class PdfServletTest extends Mockito {
}
@Test
public void testServletPost() throws Exception {
void doPost() throws Exception {
PdfServletTest app = new PdfServletTest();
InputStream xsltFile = app.getClass().getClassLoader().getResourceAsStream("samples/kostenblatt_2014.xsl");
assert xsltFile != null;
@ -67,4 +69,16 @@ public class PdfServletTest extends Mockito {
System.out.println("Success!");
}
@Test
void init() {
when(servlet.getServletConfig()).thenReturn(servletConfig);
servlet.init();
}
@Test
void getServletInfo() {
when(servlet.getServletConfig()).thenReturn(servletConfig);
String s = servlet.getServletInfo();
Assertions.assertEquals("APEX FOP Server",s);
}
}