diff options
Diffstat (limited to 'jdisc_core/src/main/java/com/yahoo/jdisc/core')
3 files changed, 52 insertions, 34 deletions
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/core/ExportPackages.java b/jdisc_core/src/main/java/com/yahoo/jdisc/core/ExportPackages.java index e8e6373f2ed..7a09690b35d 100644 --- a/jdisc_core/src/main/java/com/yahoo/jdisc/core/ExportPackages.java +++ b/jdisc_core/src/main/java/com/yahoo/jdisc/core/ExportPackages.java @@ -13,7 +13,6 @@ import java.io.FileInputStream; import java.io.FileWriter; import java.io.IOException; import java.nio.file.Files; -import java.nio.file.Paths; import java.util.HashMap; import java.util.Map; import java.util.Properties; @@ -36,45 +35,45 @@ public class ExportPackages { if (!fileName.endsWith(PROPERTIES_FILE)) { throw new IllegalArgumentException("Expected '" + PROPERTIES_FILE + "', got '" + fileName + "'."); } - StringBuilder out = new StringBuilder(); - out.append(getSystemPackages()).append(",") - .append("com.sun.security.auth,") - .append("com.sun.security.auth.module,") - .append("com.sun.management,") - .append("com.yahoo.jdisc,") - .append("com.yahoo.jdisc.application,") - .append("com.yahoo.jdisc.handler,") - .append("com.yahoo.jdisc.service,") - .append("com.yahoo.jdisc.statistics,") - .append("javax.inject;version=1.0.0,") // Included in guice, but not exported. Needed by container-jersey. - .append("org.aopalliance.intercept,") - .append("org.aopalliance.aop,") - .append("sun.misc,") - .append("sun.net.util,") - .append("sun.security.krb5,") - - // TODO: remove for Vespa 7 (xml-apis:xml-apis:1.4.01 is not a bundle, but exposed from system classpath on Java 9) - .append("org.w3c.dom.bootstrap,") - .append("org.w3c.dom.css,") - .append("org.w3c.dom.events,") - .append("org.w3c.dom.html,") - .append("org.w3c.dom.ls,") - .append("org.w3c.dom.ranges,") - .append("org.w3c.dom.stylesheets,") - .append("org.w3c.dom.traversal,") - .append("org.w3c.dom.views"); - - for (int i = 1; i < args.length; ++i) { - out.append(",").append(getExportedPackages(args[i])); - } + String exportPackages = getExportPackages(args); Properties props = new Properties(); - props.setProperty(EXPORT_PACKAGES, out.toString()); + props.setProperty(EXPORT_PACKAGES, exportPackages); try (FileWriter writer = new FileWriter(new File(fileName))) { props.store(writer, "generated by " + ExportPackages.class.getName()); } } + private static String getExportPackages(String[] jars) throws IOException { + StringBuilder out = new StringBuilder(); + out.append(getSystemPackages()).append(", ") + .append("com.yahoo.jdisc, ") + .append("com.yahoo.jdisc.application, ") + .append("com.yahoo.jdisc.handler, ") + .append("com.yahoo.jdisc.service, ") + .append("com.yahoo.jdisc.statistics, ") + .append("javax.inject;version=1.0.0, ") // Included in guice, but not exported. Needed by container-jersey. + .append("org.aopalliance.intercept, ") + .append("org.aopalliance.aop"); + + for (int i = 1; i < jars.length; ++i) { + out.append(", ").append(getExportedPackages(jars[i])); + } + + //TODO: temporary additions for backwards compatibility with Vespa 6. Remove when all apps have been built with 7 + out.append(", ") + .append("javax.annotation, ") + .append("javax.activation, ") + .append("javax.xml.bind.annotation.adapters, ") + .append("javax.xml.bind.annotation, ") + .append("javax.xml.bind.attachment, ") + .append("javax.xml.bind.helpers, ") + .append("javax.xml.bind.util, ") + .append("javax.xml.bind"); + + return out.toString(); + } + public static String readExportProperty() { Properties props = new Properties(); try { diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/core/FelixParams.java b/jdisc_core/src/main/java/com/yahoo/jdisc/core/FelixParams.java index 10dbd09792f..9b877f68efd 100644 --- a/jdisc_core/src/main/java/com/yahoo/jdisc/core/FelixParams.java +++ b/jdisc_core/src/main/java/com/yahoo/jdisc/core/FelixParams.java @@ -12,10 +12,21 @@ import java.util.Map; */ public class FelixParams { - private final StringBuilder exportPackages = new StringBuilder(ExportPackages.readExportProperty()); + private final StringBuilder exportPackages; private String cachePath = null; private boolean loggerEnabled = true; + public FelixParams() { + this(ExportPackages.readExportProperty()); + } + + // For testing only + // Needed because the set of system packages is no longer constant between JVM invocations, + // since Felix 6 and JDK 9. + FelixParams(String exportPackages) { + this.exportPackages = new StringBuilder(exportPackages); + } + public FelixParams exportPackage(String pkg) { exportPackages.append(",").append(pkg); return this; diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/core/OsgiLogHandler.java b/jdisc_core/src/main/java/com/yahoo/jdisc/core/OsgiLogHandler.java index e72df8fc7e1..d774b857b49 100644 --- a/jdisc_core/src/main/java/com/yahoo/jdisc/core/OsgiLogHandler.java +++ b/jdisc_core/src/main/java/com/yahoo/jdisc/core/OsgiLogHandler.java @@ -6,7 +6,9 @@ import org.osgi.framework.Bundle; import org.osgi.framework.ServiceReference; import org.osgi.service.log.LogService; +import java.util.Dictionary; import java.util.HashMap; +import java.util.Hashtable; import java.util.Map; import java.util.logging.Handler; import java.util.logging.Level; @@ -160,5 +162,11 @@ class OsgiLogHandler extends Handler { public int compareTo(Object o) { return 0; } + + @Override + public Dictionary<String, Object> getProperties() { + return new Hashtable<>(); + } + } } |