changeset 2435:2bb866bd090e

Load jffi-native as a bundle fragment Reviewed-by: jerboaa Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2016-August/020707.html
author Elliott Baron <ebaron@redhat.com>
date Tue, 30 Aug 2016 11:18:08 -0400
parents 46b76de8b058
children 7fedcccddf46
files dev/ipc-test/test-launcher/scripts/run.sh dev/ipc-test/test-launcher/src/main/java/com/redhat/thermostat/dev/ipc/test/launcher/internal/TestLauncher.java dev/ipc-test/test-launcher/src/main/resources/com/redhat/thermostat/dev/ipc/test/launcher/internal/bundles.properties distribution/config/commands/agent.properties distribution/config/commands/service.properties distribution/scripts/thermostat pom.xml vm-byteman/distribution/thermostat-plugin.xml web/endpoint-plugin/distribution/thermostat-plugin.xml
diffstat 9 files changed, 25 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/dev/ipc-test/test-launcher/scripts/run.sh	Tue Aug 30 11:16:51 2016 -0400
+++ b/dev/ipc-test/test-launcher/scripts/run.sh	Tue Aug 30 11:18:08 2016 -0400
@@ -4,6 +4,5 @@
 . ${thermostat.home}/bin/thermostat-common
 
 CLASSPATH=".:${thermostat.home}/libs/org.apache.felix.framework-${felix.framework.version}.jar"
-CLASSPATH="${CLASSPATH}:${thermostat.home}/libs/jffi-${jffi.version}-native.jar"
 CLASSPATH="${CLASSPATH}:${project.parent.basedir}/test-server/target/thermostat-dev-ipc-test-server-${project.version}.jar"
 exec ${JAVA} -cp "${CLASSPATH}" com.redhat.thermostat.dev.ipc.test.launcher.internal.TestLauncher
--- a/dev/ipc-test/test-launcher/src/main/java/com/redhat/thermostat/dev/ipc/test/launcher/internal/TestLauncher.java	Tue Aug 30 11:16:51 2016 -0400
+++ b/dev/ipc-test/test-launcher/src/main/java/com/redhat/thermostat/dev/ipc/test/launcher/internal/TestLauncher.java	Tue Aug 30 11:18:08 2016 -0400
@@ -39,6 +39,7 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
+import java.util.Dictionary;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -122,19 +123,33 @@
         
         // Start bundles
         for (Bundle bundle : installed) {
-            bundle.start();
-            System.out.println("BundleLoader: starting bundle: \"" + bundle.getSymbolicName() + "\"");
+            if (isFragment(bundle)) {
+                System.out.println("BundleLoader: not starting fragment bundle: \"" + bundle.getSymbolicName() + "\"");
+            } else {
+                bundle.start();
+                System.out.println("BundleLoader: starting bundle: \"" + bundle.getSymbolicName() + "\"");
+            }
         }
         
         // Okay to shutdown now
         started.countDown();
     }
     
+    private static boolean isFragment(Bundle bundle) {
+        Dictionary<String, String> headers = bundle.getHeaders();
+        String fragHost = headers.get(Constants.FRAGMENT_HOST);
+        return fragHost != null;
+    }
+
     private static void shutdown(Framework framework, List<Bundle> bundles) throws BundleException {
         try {
             for (Bundle bundle : bundles) {
-                printStoppingBundle(bundle);
-                bundle.stop();
+                if (isFragment(bundle)) {
+                    System.out.println("BundleLoader: not stopping fragment bundle: \"" + bundle.getSymbolicName() + "\"");
+                } else {
+                    printStoppingBundle(bundle);
+                    bundle.stop();
+                }
             }
         } finally {
             // Shut down the framework
--- a/dev/ipc-test/test-launcher/src/main/resources/com/redhat/thermostat/dev/ipc/test/launcher/internal/bundles.properties	Tue Aug 30 11:16:51 2016 -0400
+++ b/dev/ipc-test/test-launcher/src/main/resources/com/redhat/thermostat/dev/ipc/test/launcher/internal/bundles.properties	Tue Aug 30 11:18:08 2016 -0400
@@ -12,6 +12,7 @@
         ${thermostat.home}/libs/jnr-ffi-${jnr-ffi.version}.jar, \
         ${thermostat.home}/libs/jnr-x86asm-${jnr-x86asm.version}.jar, \
         ${thermostat.home}/libs/jffi-${jffi.version}.jar, \
+        ${thermostat.home}/libs/jffi-${jffi.version}-native.jar, \
         ${thermostat.home}/libs/asm-${asm.version}.jar, \
         ${thermostat.home}/libs/asm-commons-${asm.version}.jar, \
         ${thermostat.home}/libs/asm-util-${asm.version}.jar, \
--- a/distribution/config/commands/agent.properties	Tue Aug 30 11:16:51 2016 -0400
+++ b/distribution/config/commands/agent.properties	Tue Aug 30 11:18:08 2016 -0400
@@ -21,6 +21,7 @@
           ${jnr-ffi.bundle.symbolic.name}=${jnr-ffi.version}, \
           ${jnr-x86asm.bundle.symbolic.name}=${jnr-x86asm.version}, \
           ${jffi.bundle.symbolic.name}=${jffi.version}, \
+          ${jffi-native.bundle.symbolic.name}=${jffi.version}, \
           org.objectweb.asm=${asm.version}, \
           org.objectweb.asm.commons=${asm.version}, \
           org.objectweb.asm.util=${asm.version}, \
--- a/distribution/config/commands/service.properties	Tue Aug 30 11:16:51 2016 -0400
+++ b/distribution/config/commands/service.properties	Tue Aug 30 11:18:08 2016 -0400
@@ -21,6 +21,7 @@
           ${jnr-ffi.bundle.symbolic.name}=${jnr-ffi.version}, \
           ${jnr-x86asm.bundle.symbolic.name}=${jnr-x86asm.version}, \
           ${jffi.bundle.symbolic.name}=${jffi.version}, \
+          ${jffi-native.bundle.symbolic.name}=${jffi.version}, \
           org.objectweb.asm=${asm.version}, \
           org.objectweb.asm.commons=${asm.version}, \
           org.objectweb.asm.util=${asm.version}, \
--- a/distribution/scripts/thermostat	Tue Aug 30 11:16:51 2016 -0400
+++ b/distribution/scripts/thermostat	Tue Aug 30 11:18:08 2016 -0400
@@ -49,7 +49,6 @@
 # This is the minimal boot classpath thermostat needs. Other dependencies
 # will get started by the OSGi framework once that's up.
 BOOT_CLASSPATH="${THERMOSTAT_LIBS}/org.apache.felix.framework-@felix.framework.version@.jar"
-BOOT_CLASSPATH="${BOOT_CLASSPATH}:${THERMOSTAT_LIBS}/jffi-@jffi.version@-native.jar"
 BOOT_CLASSPATH="${BOOT_CLASSPATH}:${THERMOSTAT_LIBS}/thermostat-launcher-@project.version@.jar"
 BOOT_CLASSPATH="${BOOT_CLASSPATH}:${THERMOSTAT_LIBS}/thermostat-main-@project.version@.jar"
 BOOT_CLASSPATH="${BOOT_CLASSPATH}:${THERMOSTAT_LIBS}/thermostat-shared-config-@project.version@.jar"
--- a/pom.xml	Tue Aug 30 11:16:51 2016 -0400
+++ b/pom.xml	Tue Aug 30 11:18:08 2016 -0400
@@ -248,6 +248,7 @@
     <jnr-x86asm.bundle.symbolic.name>com.github.jnr.x86asm</jnr-x86asm.bundle.symbolic.name>
     <jnr-x86asm.version>1.0.2</jnr-x86asm.version>
     <jffi.bundle.symbolic.name>com.github.jnr.jffi</jffi.bundle.symbolic.name>
+    <jffi-native.bundle.symbolic.name>com.github.jnr.jffi.native</jffi-native.bundle.symbolic.name>
     <jffi.version>1.2.12</jffi.version>
 
     <jline.version>2.13</jline.version>
--- a/vm-byteman/distribution/thermostat-plugin.xml	Tue Aug 30 11:16:51 2016 -0400
+++ b/vm-byteman/distribution/thermostat-plugin.xml	Tue Aug 30 11:18:08 2016 -0400
@@ -129,6 +129,7 @@
                 <bundle><symbolic-name>${jnr-ffi.bundle.symbolic.name}</symbolic-name><version>${jnr-ffi.version}</version></bundle>
                 <bundle><symbolic-name>${jnr-x86asm.bundle.symbolic.name}</symbolic-name><version>${jnr-x86asm.version}</version></bundle>
                 <bundle><symbolic-name>${jffi.bundle.symbolic.name}</symbolic-name><version>${jffi.version}</version></bundle>
+                <bundle><symbolic-name>${jffi-native.bundle.symbolic.name}</symbolic-name><version>${jffi.version}</version></bundle>
                 <bundle><symbolic-name>org.objectweb.asm</symbolic-name><version>${asm.version}</version></bundle>
             </bundles>
         </extension>
--- a/web/endpoint-plugin/distribution/thermostat-plugin.xml	Tue Aug 30 11:16:51 2016 -0400
+++ b/web/endpoint-plugin/distribution/thermostat-plugin.xml	Tue Aug 30 11:18:08 2016 -0400
@@ -90,6 +90,7 @@
         <bundle><symbolic-name>${jnr-ffi.bundle.symbolic.name}</symbolic-name><version>${jnr-ffi.version}</version></bundle>
         <bundle><symbolic-name>${jnr-x86asm.bundle.symbolic.name}</symbolic-name><version>${jnr-x86asm.version}</version></bundle>
         <bundle><symbolic-name>${jffi.bundle.symbolic.name}</symbolic-name><version>${jffi.version}</version></bundle>
+        <bundle><symbolic-name>${jffi-native.bundle.symbolic.name}</symbolic-name><version>${jffi.version}</version></bundle>
         <bundle><symbolic-name>org.objectweb.asm</symbolic-name><version>${asm.version}</version></bundle>
         <bundle><symbolic-name>org.objectweb.asm.commons</symbolic-name><version>${asm.version}</version></bundle>
         <bundle><symbolic-name>org.objectweb.asm.util</symbolic-name><version>${asm.version}</version></bundle>