Skip to content

Commit

Permalink
Add JKD11 support for Karaf
Browse files Browse the repository at this point in the history
  • Loading branch information
johnpoth committed Jan 9, 2019
1 parent 5bcf62b commit 1bd63f4
Show file tree
Hide file tree
Showing 5 changed files with 112 additions and 52 deletions.
3 changes: 3 additions & 0 deletions hapi-fhir-base/src/main/java/ca/uhn/fhir/util/XmlUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -1687,6 +1687,9 @@ static XMLInputFactory newInputFactory() throws FactoryConfigurationError {
XMLInputFactory inputFactory;
try {
inputFactory = XMLInputFactory.newInstance();
if (inputFactory.isPropertySupported(XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES)) {
inputFactory.setProperty(XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES, true);
}
throwUnitTestExceptionIfConfiguredToDoSo();
} catch (Throwable e) {
throw new ConfigurationException("Unable to initialize StAX - XML processing is disabled", e);
Expand Down
21 changes: 8 additions & 13 deletions osgi/hapi-fhir-karaf-features/src/main/resources/features.xml
Original file line number Diff line number Diff line change
Expand Up @@ -56,12 +56,8 @@
<feature name='hapi-fhir-hl7org-dstu2' version='${project.version}' start-level='50'>
<feature version='${project.version}'>hapi-fhir</feature>
<feature version='${project.version}'>hapi-fhir-utilities</feature>
<bundle dependency='true'>
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.saxon/${servicemix_saxon_version}
</bundle>
<bundle dependency='true'>
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xmlresolver/${servicemix_xmlresolver_version}
</bundle>
<bundle dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.saxon/${servicemix_saxon_version}</bundle>
<bundle dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xmlresolver/${servicemix_xmlresolver_version}</bundle>
<bundle>mvn:ca.uhn.hapi.fhir/hapi-fhir-structures-hl7org-dstu2/${project.version}</bundle>
</feature>

Expand All @@ -84,18 +80,17 @@
</feature>

<feature name='hapi-fhir-ph-schematron' version='${project.version}' start-level='50'>
<bundle dependency='true'>
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.saxon/${servicemix_saxon_version}
</bundle>
<bundle dependency='true'>
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xmlresolver/${servicemix_xmlresolver_version}
</bundle>
<bundle dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.saxon/${servicemix_saxon_version}</bundle>
<bundle dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xmlresolver/${servicemix_xmlresolver_version}</bundle>
<bundle dependency="true">mvn:org.apache.aries.spifly/org.apache.aries.spifly.dynamic.bundle/${aries_spifly_version}</bundle>
<bundle dependency='true'>mvn:com.google.code.findbugs/jsr305/${jsr305_version}</bundle>
<bundle dependency='true'>mvn:com.helger/ph-commons/${ph_commons_version}</bundle>
<bundle dependency='true'>mvn:com.helger/ph-collection/${ph_commons_version}</bundle>
<!-- needed by ph-xml 9.1.1, will be removed in later versions -->
<bundle dependency='true'>mvn:javax.jws/javax.jws-api/1.1</bundle>
<bundle dependency='true'>mvn:com.helger/ph-xml/${ph_commons_version}</bundle>
<bundle dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jaxb-impl/${jaxb_bundle_version}</bundle>
<bundle start-level="20">mvn:com.sun.xml.bind/jaxb-impl/${jaxb_core_version}</bundle>
<bundle start-level="20">mvn:com.sun.xml.bind/jaxb-core/${jaxb_core_version}</bundle>
<bundle dependency='true'>mvn:com.helger/ph-jaxb/${ph_commons_version}</bundle>
<bundle dependency='true'>mvn:com.helger/ph-schematron/${ph_schematron_version}</bundle>
</feature>
Expand Down
60 changes: 34 additions & 26 deletions osgi/hapi-fhir-karaf-integration-tests/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -97,11 +97,11 @@
<artifactId>hapi-fhir-validation</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.ops4j.pax.url</groupId>
<artifactId>pax-url-aether</artifactId>
<version>2.5.4</version>
</dependency>
<dependency>
<groupId>org.ops4j.pax.url</groupId>
<artifactId>pax-url-aether</artifactId>
<version>2.5.4</version>
</dependency>

<!-- karaf test -->
<dependency>
Expand Down Expand Up @@ -129,8 +129,8 @@
<type>tar.gz</type>
<exclusions>
<exclusion>
<groupId>org.ops4j.pax.logging</groupId>
<artifactId>pax-logging-api</artifactId>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
Expand All @@ -150,30 +150,35 @@
</dependency>
<dependency>
<groupId>org.apache.karaf.features</groupId>
<artifactId>enterprise</artifactId>
<artifactId>standard</artifactId>
<version>${apache_karaf_version}</version>
<classifier>features</classifier>
<type>xml</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.servicemix.bundles</groupId>
<artifactId>org.apache.servicemix.bundles.hamcrest</artifactId>
<version>1.3_1</version>
<scope>runtime</scope>
</dependency>

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<optional>true</optional>
</dependency>


<dependency>
<groupId>org.apache.karaf.features</groupId>
<artifactId>enterprise</artifactId>
<version>${apache_karaf_version}</version>
<classifier>features</classifier>
<type>xml</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.servicemix.bundles</groupId>
<artifactId>org.apache.servicemix.bundles.hamcrest</artifactId>
<version>1.3_1</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<optional>true</optional>
</dependency>
</dependencies>

<build>
Expand All @@ -197,6 +202,9 @@
<configuration>
<forkCount>1</forkCount>
<reuseForks>false</reuseForks>
<systemPropertyVariables>
<karaf.version>${apache_karaf_version}</karaf.version>
</systemPropertyVariables>
</configuration>
</plugin>
</plugins>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,19 @@
package ca.uhn.fhir.tests.integration.karaf;

import org.ops4j.pax.exam.CoreOptions;
import org.ops4j.pax.exam.Option;
import org.ops4j.pax.exam.karaf.container.internal.JavaVersionUtil;
import org.ops4j.pax.exam.karaf.options.KarafDistributionOption;
import org.ops4j.pax.exam.karaf.options.LogLevelOption;
import org.ops4j.pax.exam.options.DefaultCompositeOption;
import org.ops4j.pax.exam.options.extra.VMOption;

import java.io.File;
import java.net.ServerSocket;

import static org.ops4j.pax.exam.CoreOptions.maven;
import static org.ops4j.pax.exam.CoreOptions.systemProperty;
import static org.ops4j.pax.exam.CoreOptions.when;
import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.configureConsole;
import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.karafDistributionConfiguration;
import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.keepRuntimeFolder;
Expand All @@ -16,15 +23,51 @@
public enum PaxExamOptions {
KARAF(
karafDistributionConfiguration()
.frameworkUrl(
maven()
.groupId("org.apache.karaf")
.artifactId("apache-karaf")
.versionAsInProject()
.type("zip"))
.name("Apache Karaf")
.useDeployFolder(false)
.unpackDirectory(new File("target/paxexam/unpack/")),
.frameworkUrl(
maven()
.groupId("org.apache.karaf")
.artifactId("apache-karaf")
.versionAsInProject()
.type("tar.gz"))
.name("Apache Karaf")
.useDeployFolder(false)
.unpackDirectory(new File("target/paxexam/unpack/")),
when(JavaVersionUtil.getMajorVersion() >= 9)
.useOptions(
systemProperty("pax.exam.osgi.unresolved.fail").value("true"),
systemProperty("java.awt.headless").value("true"),
KarafDistributionOption.logLevel(LogLevelOption.LogLevel.INFO),
KarafDistributionOption.editConfigurationFilePut("etc/org.ops4j.pax.web.cfg", "org.osgi.service.http.port", Integer.toString(getAvailablePort(9080, 9999))),
KarafDistributionOption.editConfigurationFilePut("etc/org.apache.karaf.management.cfg", "rmiRegistryPort", Integer.toString(getAvailablePort(1099, 9999))),
KarafDistributionOption.editConfigurationFilePut("etc/org.apache.karaf.management.cfg", "rmiServerPort", Integer.toString(getAvailablePort(44444, 66666))),
KarafDistributionOption.editConfigurationFilePut("etc/org.apache.karaf.shell.cfg", "sshPort", Integer.toString(getAvailablePort(8101, 8888))),
new VMOption("--add-reads=java.xml=java.logging"),
new VMOption("--add-exports=java.base/org.apache.karaf.specs.locator=java.xml,ALL-UNNAMED"),
new VMOption("--patch-module"),
new VMOption("java.base=lib/endorsed/org.apache.karaf.specs.locator-"
+ System.getProperty("karaf.version", "4.2.2") + ".jar"),
new VMOption("--patch-module"),
new VMOption("java.xml=lib/endorsed/org.apache.karaf.specs.java.xml-"
+ System.getProperty("karaf.version", "4.2.2") + ".jar"),
new VMOption("--add-opens"),
new VMOption("java.base/java.security=ALL-UNNAMED"),
new VMOption("--add-opens"),
new VMOption("java.base/java.net=ALL-UNNAMED"),
new VMOption("--add-opens"),
new VMOption("java.base/java.lang=ALL-UNNAMED"),
new VMOption("--add-opens"),
new VMOption("java.base/java.util=ALL-UNNAMED"),
new VMOption("--add-opens"),
new VMOption("java.naming/javax.naming.spi=ALL-UNNAMED"),
new VMOption("--add-opens"),
new VMOption("java.rmi/sun.rmi.transport.tcp=ALL-UNNAMED"),
new VMOption("--add-exports=java.base/sun.net.www.protocol.http=ALL-UNNAMED"),
new VMOption("--add-exports=java.base/sun.net.www.protocol.https=ALL-UNNAMED"),
new VMOption("--add-exports=java.base/sun.net.www.protocol.jar=ALL-UNNAMED"),
new VMOption("--add-exports=jdk.naming.rmi/com.sun.jndi.url.rmi=ALL-UNNAMED"),
new VMOption("-classpath"),
new VMOption("lib/jdk9plus/*" + File.pathSeparator + "lib/boot/*")
),
keepRuntimeFolder(),
configureConsole().ignoreLocalConsole(),
logLevel(LogLevelOption.LogLevel.INFO)
Expand All @@ -33,7 +76,7 @@ public enum PaxExamOptions {
features(
maven()
.groupId("org.apache.karaf.features")
.artifactId("enterprise")
.artifactId("standard")
.type("xml")
.classifier("features")
.versionAsInProject(),
Expand Down Expand Up @@ -136,6 +179,18 @@ public enum PaxExamOptions {
this.options = options;
}

public static int getAvailablePort(int min, int max) {
for (int i = min; i <= max; i++) {
try (ServerSocket socket = new ServerSocket(i)) {
return socket.getLocalPort();
} catch (Exception e) {
System.err.println("Port " + i + " not available, trying next one");
continue; // try next port
}
}
throw new IllegalStateException("Can't find available network ports");
}

public Option option() {
return new DefaultCompositeOption(options);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,6 @@
import org.hl7.fhir.dstu3.model.StringType;
import org.hl7.fhir.dstu3.model.UriType;
import org.hl7.fhir.dstu3.model.ValueSet;
import org.hl7.fhir.exceptions.FHIRFormatError;
import org.hl7.fhir.instance.model.api.IBaseResource;
import org.hl7.fhir.instance.model.api.IIdType;
import org.junit.Assert;
Expand Down Expand Up @@ -3197,8 +3196,8 @@ public void testXxe() {
try {
ourCtx.newXmlParser().parseResource(Patient.class, input);
fail();
} catch (FHIRFormatError e) {
assertThat(e.toString(), containsString("unable to parse character reference "));
} catch (DataFormatException e) {
assertThat(e.toString(), containsString("Undeclared general entity"));
}

}
Expand Down

0 comments on commit 1bd63f4

Please sign in to comment.