Merge pull request #59 from tjwatson/issue57

Fix issues with native build of jaxrs example
diff --git a/atomos.examples/atomos.examples.jaxrs/pom.xml b/atomos.examples/atomos.examples.jaxrs/pom.xml
index 097df58..4ea57c6 100644
--- a/atomos.examples/atomos.examples.jaxrs/pom.xml
+++ b/atomos.examples/atomos.examples.jaxrs/pom.xml
@@ -192,6 +192,7 @@
                             <additionalInitializeAtBuildTime>org.eclipse.jetty.util.log.StdErrLog</additionalInitializeAtBuildTime>
                             <additionalInitializeAtBuildTime>org.eclipse.jetty.util.Uptime</additionalInitializeAtBuildTime>
                             <additionalInitializeAtBuildTime>org.eclipse.jetty.server.HttpOutput</additionalInitializeAtBuildTime>
+                            <additionalInitializeAtBuildTime>org.eclipse.jetty.util.ModuleLocation</additionalInitializeAtBuildTime>
                             <additionalInitializeAtBuildTime>org.slf4j</additionalInitializeAtBuildTime>
                             <additionalInitializeAtBuildTime>org.slf4j.impl</additionalInitializeAtBuildTime>
                             <additionalInitializeAtBuildTime>org.apache.cxf.bus.managers.DestinationFactoryManagerImpl</additionalInitializeAtBuildTime>
diff --git a/atomos.examples/atomos.examples.jaxrs/reflectAgentConfig.json b/atomos.examples/atomos.examples.jaxrs/reflectAgentConfig.json
index 0dee691..cfff557 100644
--- a/atomos.examples/atomos.examples.jaxrs/reflectAgentConfig.json
+++ b/atomos.examples/atomos.examples.jaxrs/reflectAgentConfig.json
@@ -359,16 +359,6 @@
   "allPublicConstructors":true
 },
 {
-  "name":"org.apache.felix.atomos.impl.base.AtomosCommands"
-},
-{
-  "name":"org.apache.felix.atomos.impl.modules.AtomosModules",
-  "methods":[{"name":"<init>","parameterTypes":["java.util.Map"] }]
-},
-{
-  "name":"org.apache.felix.atomos.Atomos"
-},
-{
   "name":"org.apache.felix.gogo.command.Activator",
   "methods":[{"name":"<init>","parameterTypes":[] }]
 },
diff --git a/atomos.examples/atomos.examples.jaxrs/reflectConfig_felix_atomos.json b/atomos.examples/atomos.examples.jaxrs/reflectConfig_felix_atomos.json
index efd1cd1..0cae83e 100644
--- a/atomos.examples/atomos.examples.jaxrs/reflectConfig_felix_atomos.json
+++ b/atomos.examples/atomos.examples.jaxrs/reflectConfig_felix_atomos.json
@@ -1,5 +1,12 @@
 [
    {
+     "name":"org.apache.felix.atomos.impl.modules.AtomosModules",
+     "methods":[{"name":"<init>","parameterTypes":["java.util.Map","org.apache.felix.atomos.Atomos$HeaderProvider"] }]
+   },
+   {
+     "name":"org.apache.felix.atomos.Atomos"
+   },
+   {
     "name" : "org.apache.felix.atomos.impl.base.AtomosCommands",
     "allPublicMethods" : true,
     "allDeclaredMethods" : true,
diff --git a/atomos.examples/atomos.examples.substrate.maven/reflectConfig_felix_atomos.json b/atomos.examples/atomos.examples.substrate.maven/reflectConfig_felix_atomos.json
index efd1cd1..0cae83e 100644
--- a/atomos.examples/atomos.examples.substrate.maven/reflectConfig_felix_atomos.json
+++ b/atomos.examples/atomos.examples.substrate.maven/reflectConfig_felix_atomos.json
@@ -1,5 +1,12 @@
 [
    {
+     "name":"org.apache.felix.atomos.impl.modules.AtomosModules",
+     "methods":[{"name":"<init>","parameterTypes":["java.util.Map","org.apache.felix.atomos.Atomos$HeaderProvider"] }]
+   },
+   {
+     "name":"org.apache.felix.atomos.Atomos"
+   },
+   {
     "name" : "org.apache.felix.atomos.impl.base.AtomosCommands",
     "allPublicMethods" : true,
     "allDeclaredMethods" : true,
diff --git a/atomos.utils/atomos.utils.core/src/main/java/org/apache/felix/atomos/utils/core/plugins/finaliser/ni/NativeImagePlugin.java b/atomos.utils/atomos.utils.core/src/main/java/org/apache/felix/atomos/utils/core/plugins/finaliser/ni/NativeImagePlugin.java
index 0a48948..4d89970 100644
--- a/atomos.utils/atomos.utils.core/src/main/java/org/apache/felix/atomos/utils/core/plugins/finaliser/ni/NativeImagePlugin.java
+++ b/atomos.utils/atomos.utils.core/src/main/java/org/apache/felix/atomos/utils/core/plugins/finaliser/ni/NativeImagePlugin.java
@@ -115,7 +115,7 @@
                 config.nativeImageExecutable());
 
             //execute build an native image
-            nOptional.ifPresent(cli -> {
+            nOptional.ifPresentOrElse(cli -> {
                 try
                 {
                     Path binFile = cli.execute(binDir, arguments);
@@ -125,12 +125,17 @@
                 {
                     throw new RuntimeException(e);
                 }
-            });
+            }, () -> {throw new RuntimeException("Missing native image executable. Set 'GRAALVM_HOME' with the path as an environment variable");});
 
         }
         catch (Exception e)
         {
-            e.printStackTrace();
+            if (e instanceof RuntimeException) {
+            	throw (RuntimeException) e;
+            }
+            else {
+            	throw new RuntimeException(e);
+            }
         }
     }
 
diff --git a/atomos.utils/atomos.utils.substrate.impl/src/main/java/org/apache/felix/atomos/utils/substrate/impl/NativeImageCliUtil.java b/atomos.utils/atomos.utils.substrate.impl/src/main/java/org/apache/felix/atomos/utils/substrate/impl/NativeImageCliUtil.java
index f463077..7bbcda2 100644
--- a/atomos.utils/atomos.utils.substrate.impl/src/main/java/org/apache/felix/atomos/utils/substrate/impl/NativeImageCliUtil.java
+++ b/atomos.utils/atomos.utils.substrate.impl/src/main/java/org/apache/felix/atomos/utils/substrate/impl/NativeImageCliUtil.java
@@ -30,7 +30,7 @@
 public class NativeImageCliUtil
 {
 
-    private static final String GRAAL_HOME = "GRAAL_HOME";
+    public static final String GRAALVM_HOME = "GRAALVM_HOME";
 
     private static final String JAVA_HOME = "java.home";
 
@@ -48,7 +48,7 @@
 
         if (exec.isEmpty())
         {
-            throw new Exception("Missing native image executable. Set '" + GRAAL_HOME
+            throw new Exception("Missing native image executable. Set '" + GRAALVM_HOME
                 + "' with the path as an environment variable");
         }
 
@@ -96,9 +96,9 @@
             {
                 return oExec;
             }
-            if (System.getenv(GRAAL_HOME) != null)
+            if (System.getenv(GRAALVM_HOME) != null)
             {
-                oExec = findNativeImageExecutable(Paths.get(System.getenv(GRAAL_HOME)));
+                oExec = findNativeImageExecutable(Paths.get(System.getenv(GRAALVM_HOME)));
                 if (oExec.isPresent())
                 {
                     return oExec;