Remove com.sun.org.apache.xml.internal (#4812) * Remove com.sun.org.apache.xml.internal Signed-off-by: Jorge Bescos Gascon <jorge.bescos.gascon@oracle.com> Co-authored-by: Maxim Nesen <maxim.nesen@oracle.com>
diff --git a/examples/osgi-helloworld-webapp/functional-test/pom.xml b/examples/osgi-helloworld-webapp/functional-test/pom.xml index ffaba75..5f39937 100644 --- a/examples/osgi-helloworld-webapp/functional-test/pom.xml +++ b/examples/osgi-helloworld-webapp/functional-test/pom.xml
@@ -91,6 +91,11 @@ <!-- JUnit and Pax-Exam dependencies --> <dependency> + <groupId>org.osgi</groupId> + <artifactId>org.osgi.service.cm</artifactId> + <scope>test</scope> + </dependency> + <dependency> <groupId>org.ops4j.pax.exam</groupId> <artifactId>pax-exam-junit4</artifactId> <scope>test</scope>
diff --git a/examples/osgi-helloworld-webapp/functional-test/src/test/java/org/glassfish/jersey/examples/helloworld/test/WebAppFelixTest.java b/examples/osgi-helloworld-webapp/functional-test/src/test/java/org/glassfish/jersey/examples/helloworld/test/WebAppFelixTest.java index 4a6c251..44fc574 100644 --- a/examples/osgi-helloworld-webapp/functional-test/src/test/java/org/glassfish/jersey/examples/helloworld/test/WebAppFelixTest.java +++ b/examples/osgi-helloworld-webapp/functional-test/src/test/java/org/glassfish/jersey/examples/helloworld/test/WebAppFelixTest.java
@@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2018 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2021 Oracle and/or its affiliates. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Distribution License v. 1.0, which is available at @@ -37,6 +37,7 @@ @Override public List<Option> osgiRuntimeOptions() { return Arrays.asList(CoreOptions.options( + mavenBundle().groupId("org.osgi").artifactId("org.osgi.service.cm").versionAsInProject(), mavenBundle() .groupId("org.apache.felix").artifactId("org.apache.felix.eventadmin") .versionAsInProject()
diff --git a/examples/osgi-http-service/functional-test/pom.xml b/examples/osgi-http-service/functional-test/pom.xml index 6f58093..4cf8383 100644 --- a/examples/osgi-http-service/functional-test/pom.xml +++ b/examples/osgi-http-service/functional-test/pom.xml
@@ -107,6 +107,19 @@ </dependency> <dependency> + <groupId>org.osgi</groupId> + <artifactId>org.osgi.service.http</artifactId> + <version>1.2.1</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.osgi</groupId> + <artifactId>org.osgi.service.cm</artifactId> + <scope>test</scope> + </dependency> + + + <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>test</scope> @@ -200,6 +213,16 @@ <goals> <goal>test</goal> </goals> + <configuration> + <excludes> + <!-- + excluded due to javax.servlet-api collision - + more than one version is required, so it is not possible to execute that test. + (since pax-exam version 4.13.4) + --> + <exclude>org.glassfish.jersey.examples.osgihttpservice.test.GrizzlyHttpServiceFelixTest</exclude> + </excludes> + </configuration> </execution> </executions> </plugin>
diff --git a/examples/osgi-http-service/functional-test/src/test/java/org/glassfish/jersey/examples/osgihttpservice/test/JettyHttpServiceFelixTest.java b/examples/osgi-http-service/functional-test/src/test/java/org/glassfish/jersey/examples/osgihttpservice/test/JettyHttpServiceFelixTest.java index f73bb11..0f5ee0c 100644 --- a/examples/osgi-http-service/functional-test/src/test/java/org/glassfish/jersey/examples/osgihttpservice/test/JettyHttpServiceFelixTest.java +++ b/examples/osgi-http-service/functional-test/src/test/java/org/glassfish/jersey/examples/osgihttpservice/test/JettyHttpServiceFelixTest.java
@@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2018 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2021 Oracle and/or its affiliates. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Distribution License v. 1.0, which is available at @@ -27,6 +27,8 @@ @Override public List<Option> osgiRuntimeOptions() { return Arrays.asList(CoreOptions.options( + mavenBundle().groupId("org.osgi").artifactId("org.osgi.service.http").versionAsInProject(), + mavenBundle().groupId("org.osgi").artifactId("org.osgi.service.cm").versionAsInProject(), mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.eventadmin").versionAsInProject() )); }
diff --git a/ext/wadl-doclet/src/main/java/org/glassfish/jersey/wadl/doclet/DocletUtils.java b/ext/wadl-doclet/src/main/java/org/glassfish/jersey/wadl/doclet/DocletUtils.java index 4dea216..8712e98 100644 --- a/ext/wadl-doclet/src/main/java/org/glassfish/jersey/wadl/doclet/DocletUtils.java +++ b/ext/wadl-doclet/src/main/java/org/glassfish/jersey/wadl/doclet/DocletUtils.java
@@ -1,5 +1,5 @@ /* - * Copyright (c) 2019 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2019, 2021 Oracle and/or its affiliates. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v. 2.0, which is available at @@ -16,29 +16,37 @@ package org.glassfish.jersey.wadl.doclet; -import com.sun.org.apache.xml.internal.serialize.OutputFormat; -import com.sun.org.apache.xml.internal.serialize.XMLSerializer; - import java.io.BufferedOutputStream; +import java.io.ByteArrayInputStream; import java.io.FileOutputStream; import java.io.OutputStream; import java.io.StringWriter; import java.lang.reflect.Array; import java.lang.reflect.Field; +import java.util.Arrays; import java.util.logging.Level; import java.util.logging.Logger; import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; import org.glassfish.jersey.server.wadl.internal.generators.resourcedoc.model.ResourceDocType; +import org.w3c.dom.CDATASection; +import org.w3c.dom.Document; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; class DocletUtils { private static final Logger LOG = Logger.getLogger(DocletUtils.class.getName()); private static String[] getCDataElements(DocProcessor docProcessor) { - String[] original = new String[]{"ns1^commentText", "ns2^commentText", "^commentText" }; + String[] original = new String[]{"commentText"}; if (docProcessor == null) { return original; } else { @@ -64,30 +72,6 @@ return copy; } - private static XMLSerializer getXMLSerializer(OutputStream os, String[] cdataElements) - throws InstantiationException, IllegalAccessException, ClassNotFoundException { - // configure an OutputFormat to handle CDATA - OutputFormat of = new OutputFormat(); - - // specify which of your elements you want to be handled as CDATA. - // The use of the '^' between the namespaceURI and the localname - // seems to be an implementation detail of the xerces code. - // When processing xml that doesn't use namespaces, simply omit the - // namespace prefix as shown in the third CDataElement below. - of.setCDataElements(cdataElements); - - // set any other options you'd like - of.setPreserveSpace(true); - of.setIndenting(true); - - // create the serializer - XMLSerializer serializer = new XMLSerializer(of); - - serializer.setOutputByteStream(os); - - return serializer; - } - private static Class<?>[] getJAXBContextClasses(ResourceDocType result, DocProcessor docProcessor) { Class<?>[] clazzes; if (docProcessor == null) { @@ -108,15 +92,39 @@ } static boolean createOutputFile(String filePath, DocProcessor docProcessor, ResourceDocType result) { + String[] cdataElements = getCDataElements(docProcessor); + Class<?>[] classes = getJAXBContextClasses(result, docProcessor); + LOG.info("cdataElements " + Arrays.asList(cdataElements)); + LOG.info("classes " + Arrays.asList(classes)); try (OutputStream out = new BufferedOutputStream(new FileOutputStream(filePath))) { - Class<?>[] clazzes = getJAXBContextClasses(result, docProcessor); - JAXBContext c = JAXBContext.newInstance(clazzes); + JAXBContext c = JAXBContext.newInstance(classes); Marshaller m = c.createMarshaller(); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); - String[] cdataElements = getCDataElements(docProcessor); - XMLSerializer serializer = getXMLSerializer(out, cdataElements); - m.marshal(result, serializer); - LOG.info("Wrote " + result); + StringWriter sw = new StringWriter(); + // Produces XML in memory + m.marshal(result, sw); + // Loads the XML from memory for processing + Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder() + .parse(new ByteArrayInputStream(sw.toString().getBytes())); + for (String cdata : cdataElements) { + NodeList nodes = document.getElementsByTagName(cdata); + LOG.info(nodes.getLength() + " nodes found by " + cdata); + for (int i = 0; i < nodes.getLength(); i++) { + Node node = nodes.item(i); + CDATASection cdataSection = document.createCDATASection(node.getTextContent()); + // Remove current content + node.setTextContent(null); + // Add it again, but wrapped with CDATA + node.appendChild(cdataSection); + } + document.createCDATASection(cdata); + } + DOMSource source = new DOMSource(document); + StreamResult streamResult = new StreamResult(out); + TransformerFactory transformerFactory = TransformerFactory.newInstance(); + Transformer transformer = transformerFactory.newTransformer(); + transformer.transform(source, streamResult); + LOG.info("Wrote " + result + " in " + filePath); return true; } catch (Exception e) { LOG.log(Level.SEVERE, "Could not serialize ResourceDoc.", e);
diff --git a/pom.xml b/pom.xml index e7166b7..64261c5 100644 --- a/pom.xml +++ b/pom.xml
@@ -1800,6 +1800,13 @@ </dependency> <dependency> + <groupId>org.osgi</groupId> + <artifactId>org.osgi.service.cm</artifactId> + <version>${osgi.service.cm.version}</version> + <scope>provided</scope> + </dependency> + + <dependency> <groupId>org.glassfish.main.ejb</groupId> <artifactId>ejb-container</artifactId> <version>${gf.impl.version}</version> @@ -2140,7 +2147,8 @@ <osgi.version>6.0.0</osgi.version> <osgi.framework.version>1.10.0</osgi.framework.version> <osgi.compendium.version>5.0.0</osgi.compendium.version> - <pax.exam.version>4.13.1</pax.exam.version> + <osgi.service.cm.version>1.6.0</osgi.service.cm.version> + <pax.exam.version>4.13.4</pax.exam.version> <pax.web.version>0.7.4</pax.web.version><!-- TODO: UPGRADE! --> <paxexam.mvn.plugin.version>1.2.4</paxexam.mvn.plugin.version> <rxjava.version>1.2.5</rxjava.version>
diff --git a/tests/osgi/functional/pom.xml b/tests/osgi/functional/pom.xml index c9a5ff1..fe64512 100644 --- a/tests/osgi/functional/pom.xml +++ b/tests/osgi/functional/pom.xml
@@ -101,6 +101,11 @@ <scope>test</scope> </dependency> <dependency> + <groupId>org.osgi</groupId> + <artifactId>org.osgi.service.cm</artifactId> + <scope>test</scope> + </dependency> + <dependency> <groupId>org.ops4j.pax.exam</groupId> <artifactId>pax-exam</artifactId> <scope>test</scope>
diff --git a/tests/osgi/functional/src/test/java/org/glassfish/jersey/osgi/test/basic/ApacheOsgiIntegrationTest.java b/tests/osgi/functional/src/test/java/org/glassfish/jersey/osgi/test/basic/ApacheOsgiIntegrationTest.java index 1207b51..d6df4e8 100644 --- a/tests/osgi/functional/src/test/java/org/glassfish/jersey/osgi/test/basic/ApacheOsgiIntegrationTest.java +++ b/tests/osgi/functional/src/test/java/org/glassfish/jersey/osgi/test/basic/ApacheOsgiIntegrationTest.java
@@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2019 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2021 Oracle and/or its affiliates. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v. 2.0, which is available at @@ -55,6 +55,7 @@ final List<Option> options = Helper.getCommonOsgiOptions(); options.addAll(Helper.expandedList( mavenBundle().groupId("org.ops4j.pax.logging").artifactId("pax-logging-api").versionAsInProject(), + mavenBundle().groupId("org.osgi").artifactId("org.osgi.service.cm").versionAsInProject(), mavenBundle().groupId("org.apache.httpcomponents").artifactId("httpcore-osgi").versionAsInProject(), mavenBundle().groupId("org.apache.httpcomponents").artifactId("httpclient-osgi").versionAsInProject(), mavenBundle().groupId("org.glassfish.jersey.connectors").artifactId("jersey-apache-connector")