changeset 342:bf6ae1d345ce

8167405: javapackager test suite modifications for JDK9 as mentioned in description Reviewed-by: cbensen
author rgangadhar
date Tue, 18 Oct 2016 13:17:43 +0530
parents be0c0e2d0d31
children 9fe019fe7f5c
files functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/.project functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/App1-post-image.sh functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/App1-post-image.wsf functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/App1-post-image_1.sh functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/Defaulttest.properties functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/ExampleBundlers.java.template functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/FXApp.java.template functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/License.lic functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/RmApp.java.template functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/SQE-DEFAULT-PARAMS-TEST-APP.spec functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/Util.java.template functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/axis_bujava.properties functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/cert.cfg functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/com.greetings.module.info.template functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/com.shape.serviceinterface.Shape.template functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/com.shape.serviceinterface.ShapeMainClass.template functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/com.shape.serviceinterface.module.info.template functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/com.shape.serviceprovider.Circle.template functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/com.shape.serviceprovider.Rectangle.template functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/com.shape.serviceprovider.circle.module.info.template functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/com.shape.serviceprovider.rectangle.module.info.template functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/com.shape.test.LimitModsMainClass.template functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/com.shape.test.module.info.template functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/getExeCopyright.vbs functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/getServiceInfo.vbs functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/org.eclipse.core.resources.prefs functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/org.eclipse.jdt.core.prefs functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/org.eclipse.ltk.core.refactoring.prefs functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/org.eclipse.wst.xsl.core.prefs functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/prefs.xml.template functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/testrun.properties functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/util.module.template functional/appBundlerTestsJDK9/appBundlerTestsJDK9/build.xml functional/appBundlerTestsJDK9/appBundlerTestsJDK9/nbproject/build-impl.xml functional/appBundlerTestsJDK9/appBundlerTestsJDK9/src/com/oracle/appbundlers/utils/AppWrapper.java functional/appBundlerTestsJDK9/appBundlerTestsJDK9/src/com/oracle/appbundlers/utils/BundlingManager.java functional/appBundlerTestsJDK9/appBundlerTestsJDK9/src/com/oracle/appbundlers/utils/Config.java functional/appBundlerTestsJDK9/appBundlerTestsJDK9/src/com/oracle/appbundlers/utils/ConsoleBundlingManager.java functional/appBundlerTestsJDK9/appBundlerTestsJDK9/src/com/oracle/appbundlers/utils/JavaExtensionTypeFilter.java functional/appBundlerTestsJDK9/appBundlerTestsJDK9/src/com/oracle/appbundlers/utils/PackageTypeFilter.java functional/appBundlerTestsJDK9/appBundlerTestsJDK9/src/com/oracle/appbundlers/utils/PackagerApiFilter.java functional/appBundlerTestsJDK9/appBundlerTestsJDK9/src/com/oracle/appbundlers/utils/Utils.java functional/appBundlerTestsJDK9/appBundlerTestsJDK9/src/com/oracle/appbundlers/utils/installers/WinMsiBundlerUtils.java functional/appBundlerTestsJDK9/appBundlerTestsJDK9/test/com/oracle/appbundlers/tests/BundlerProvider.java functional/appBundlerTestsJDK9/appBundlerTestsJDK9/test/com/oracle/appbundlers/tests/functionality/DefaultClassPathTest.java functional/appBundlerTestsJDK9/appBundlerTestsJDK9/test/com/oracle/appbundlers/tests/functionality/FileAssociationTest.java functional/appBundlerTestsJDK9/appBundlerTestsJDK9/test/com/oracle/appbundlers/tests/functionality/InstallDirTest.java functional/appBundlerTestsJDK9/appBundlerTestsJDK9/test/com/oracle/appbundlers/tests/functionality/LicenseFileTest.java functional/appBundlerTestsJDK9/appBundlerTestsJDK9/test/com/oracle/appbundlers/tests/functionality/TestBase.java functional/appBundlerTestsJDK9/appBundlerTestsJDK9/test/com/oracle/appbundlers/tests/functionality/jdk9test/CheckExecutablesAvailableTest.java functional/appBundlerTestsJDK9/appBundlerTestsJDK9/test/com/oracle/appbundlers/tests/functionality/jdk9test/JmodExplodedModuleAndModularJarDependencyTest.java functional/appBundlerTestsJDK9/appBundlerTestsJDK9/test/com/oracle/appbundlers/tests/functionality/jdk9test/NamedModuleBundledWithMinimumModulesAnd3rdPartyModulesTest.java functional/appBundlerTestsJDK9/appBundlerTestsJDK9/test/com/oracle/appbundlers/tests/functionality/jdk9test/NamedModuleWithEntireJreTest.java functional/appBundlerTestsJDK9/appBundlerTestsJDK9/test/com/oracle/appbundlers/tests/functionality/jdk9test/NamedModuleWithMinimumModulesTest.java functional/appBundlerTestsJDK9/appBundlerTestsJDK9/test/com/oracle/appbundlers/tests/functionality/jdk9test/OtherClassInMainModuleTest.java functional/appBundlerTestsJDK9/appBundlerTestsJDK9/test/com/oracle/appbundlers/tests/functionality/jdk9test/UnnamedModuleDependsOn3rdPartyModulesBundledWithEntireJreTest.java
diffstat 56 files changed, 292 insertions(+), 578 deletions(-) [+]
line wrap: on
line diff
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/.project	Mon Oct 10 20:56:50 2016 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>AppBundler</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/App1-post-image.sh	Mon Oct 10 20:56:50 2016 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-echo 'pass' > /tmp/result
\ No newline at end of file
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/App1-post-image.wsf	Mon Oct 10 20:56:50 2016 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<job id="Test">
-  <script language="VBScript">
-    'WScript.echo "test"
-  </script>
- </job>
\ No newline at end of file
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/App1-post-image_1.sh	Mon Oct 10 20:56:50 2016 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-echo 'pass' > /tmp/result
\ No newline at end of file
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/Defaulttest.properties	Mon Oct 10 20:56:50 2016 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-[SuiteResult context=Default test]
\ No newline at end of file
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/ExampleBundlers.java.template	Mon Oct 10 20:56:50 2016 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-package testapp;
-
-import com.oracle.tools.packager.Bundler;
-import com.oracle.tools.packager.BundlerParamInfo;
-import com.oracle.tools.packager.Bundlers;
-import java.util.Collection;
-import java.util.List;
-import java.util.ArrayList;
-
-/**
- * @author Dmitry Ginzburg &lt;dmitry.x.ginzburg@oracle.com&gt;
- */
-public class ExampleBundlers implements Bundlers {
-    List<Bundler> bundlers = new ArrayList<>();
-
-    @Override
-    public Collection<Bundler> getBundlers() {
-        return bundlers;
-    }
-
-    @Override
-    public Collection<Bundler> getBundlers(String type) {
-        return null;
-    }
-
-    @Override
-    public Collection<BundlerParamInfo> getStandardParameters() {
-        return null;
-    }
-
-    @Override
-    public void loadDefaultBundlers() {
-        bundlers.add(null);
-    }
-
-    @Override
-    public void loadBundlersFromServices(ClassLoader cl) {
-    }
-
-    @Override
-    public void loadBundler(Bundler bundler) {
-    }
-    
-}
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/FXApp.java.template	Mon Oct 10 20:56:50 2016 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +0,0 @@
-package %PACKAGE_NAME%;
-
-import javafx.application.Application;
-import javafx.application.Platform;
-import javafx.event.ActionEvent;
-import javafx.event.EventHandler;
-import javafx.scene.Scene;
-import javafx.scene.control.Button;
-import javafx.scene.layout.StackPane;
-import javafx.stage.Stage;
-import javafx.stage.WindowEvent;
-import java.util.Map.Entry;
-import java.lang.management.ManagementFactory;
-import java.lang.management.RuntimeMXBean;
-import java.util.List;
-
-public class %APP_NAME% extends Application {
-
-    @Override
-    public void start(Stage primaryStage) {
-        %PRINTLN% ("Hello World initialized!");
-        String userJvmAction = "If music be the food of love";
-
-        for (String arg : getParameters().getRaw()) {
-            %PRINTLN% ("Argument: " + arg);
-
-            if ("USER_JVM_OPTIONS_CLEAR_ALL".equals(arg) ||
-                "USER_JVM_OPTIONS_SET_PREDEFINED".equals(arg)) {
-                    userJvmAction = arg;
-            }
-        }
-        
-        /*USER_FRIENDLY_API_TEST*/
-
-        StackPane root = new StackPane();
-
-        Scene scene = new Scene(root, 300, 250);
-
-        primaryStage.setTitle("Hello World!");
-        primaryStage.setScene(scene);
-        primaryStage.setOnShown(new EventHandler<WindowEvent>() {
-            @Override
-            public void handle(WindowEvent t) {
-                try {
-                    for (Entry<Object, Object> entry : System.getProperties().entrySet()) {
-                        String propertyName = entry.getKey().toString();
-                        if (propertyName.startsWith("%PREFIX%")
-                            || "app.preferences.id".equals(propertyName)
-                            || "sun.boot.class.path".equals(propertyName))
-                        {
-                            %PRINTLN% ("-D" + propertyName + "=" + entry.getValue());
-                        }
-                    }
-                    %PRINTLN% ("%PASS_STRING%");
-                    %PRINTLN% ("JREVersion: " + System.getProperty("java.runtime.version"));
-
-                   RuntimeMXBean bean = ManagementFactory.getRuntimeMXBean();
-                   List<String> aList = bean.getInputArguments();
-
-                   for (String prop : aList) {
-                     %PRINTLN% (prop);
-                   }
-                   
-                   long totalMemory = Runtime.getRuntime().totalMemory();
-                   System.out.println("value of total memory from RuntimeMXBean Calculation is "+totalMemory/(1024*1024));
-
-                } finally {
-                    Platform.exit();
-                }
-            }
-        });
-        primaryStage.show();
-    }
-
-    public static void main(String[] args) {
-        launch(args);
-    }
-}
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/License.lic	Mon Oct 10 20:56:50 2016 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc congue dui molestie orci placerat malesuada. Etiam rhoncus adipiscing dui sit amet sodales. Vivamus porttitor lorem erat, ut volutpat lorem ullamcorper ut. Ut arcu odio, bibendum in eleifend non, tempor ut sapien. Sed blandit interdum fermentum. Nunc risus elit, vehicula in lectus id, facilisis fermentum urna. Vestibulum fermentum consequat massa, eu sodales orci venenatis a. Nunc vitae aliquam turpis, eu varius ante. Suspendisse metus velit, lobortis vel justo feugiat, dignissim feugiat dui. Vivamus volutpat neque vel felis cursus facilisis. Proin vestibulum urna sit amet aliquet scelerisque. Maecenas purus arcu, posuere non rutrum vitae, dignissim a lacus. Donec scelerisque magna dolor, vitae sodales sapien consectetur ac. Nulla volutpat, lectus sed molestie vulputate, ligula nisi cursus urna, ac condimentum diam elit sed mauris. Donec pellentesque ut lectus quis varius.
-
-Mauris dui risus, pulvinar et ultricies ac, ultrices imperdiet libero. Nulla consequat, ipsum vel cursus tristique, sem turpis placerat magna, sed ullamcorper turpis dui rhoncus risus. Suspendisse et lacinia lacus. Nunc vestibulum rutrum elit sit amet egestas. Proin porttitor laoreet massa, vel molestie lorem consectetur et. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam varius sed ipsum sit amet iaculis. Sed ac iaculis neque, tincidunt lobortis ipsum. Aenean adipiscing nulla rutrum tortor suscipit, in luctus massa elementum. In pellentesque mi eget risus porta placerat. Donec dignissim dui nec sapien sagittis, ut malesuada velit dignissim. Duis venenatis cursus dui vitae eleifend. Aenean est libero, hendrerit nec augue tristique, molestie porttitor sapien. Integer luctus augue vitae justo vulputate volutpat.
-
-Vivamus placerat ornare metus, sed malesuada ipsum imperdiet id. Vivamus volutpat urna in ipsum fringilla, vitae ornare risus facilisis. Nullam vitae metus ante. Vivamus id lorem risus. Curabitur ac risus tellus. Suspendisse ultrices nisi sit amet neque fringilla sagittis. Suspendisse scelerisque ultrices nisl at interdum. Pellentesque arcu mauris, imperdiet sed tellus sit amet, feugiat lobortis ligula. Ut justo est, ultricies at aliquet in, pulvinar sit amet lectus. Vestibulum ornare orci ac orci bibendum feugiat. Duis vitae massa auctor, tincidunt orci non, adipiscing est. Mauris in sem nec erat faucibus interdum.
-
-Phasellus pellentesque id augue nec viverra. Donec cursus nulla a lorem suscipit egestas. Donec volutpat porttitor mi, a molestie est elementum id. Sed posuere facilisis urna, ut euismod nulla ornare ac. Pellentesque nec erat tortor. Fusce vitae accumsan sapien. Pellentesque egestas pulvinar tortor, ut blandit elit viverra elementum. Sed pulvinar scelerisque ipsum a posuere. Sed dolor arcu, adipiscing sed convallis eget, eleifend sit amet lorem. Curabitur pretium metus quis libero laoreet, egestas vestibulum massa commodo. Suspendisse vehicula in mauris dignissim euismod. Sed dignissim rhoncus placerat. Curabitur laoreet elit erat, nec pellentesque velit fringilla sit amet. Curabitur posuere dui ac velit feugiat, sit amet pellentesque odio placerat. Vestibulum sed purus interdum, iaculis augue a, sodales orci.
-
-Proin commodo sapien massa, non fermentum elit aliquam eu. Etiam eu pulvinar neque, non consequat ligula. Aenean in quam ut libero commodo fringilla. Suspendisse potenti. Sed eleifend quam urna. Nam ultrices convallis lobortis. Sed mi nunc, convallis molestie tortor non, cursus ultrices libero. Mauris ullamcorper erat nec pretium ultricies.
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/RmApp.java.template	Mon Oct 10 20:56:50 2016 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-package com.rm.testapp;
-
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.nio.file.Files;
-import java.io.IOException;
-
-public class %APP_NAME% {
-    public static void main(String[] args) throws IOException {
-        // remove all files passed as parameters
-        for (String arg : args) {
-            Path path = Paths.get(arg);
-            Files.deleteIfExists(path);
-        }
-    }
-}
\ No newline at end of file
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/SQE-DEFAULT-PARAMS-TEST-APP.spec	Mon Oct 10 20:56:50 2016 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-ǹ7L>gfIJ*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"8YYm`< mJ*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"Hi	0}Cm&J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"Xk
-s[eJ*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,
\ No newline at end of file
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/Util.java.template	Mon Oct 10 20:56:50 2016 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-package %PACKAGE_NAME%;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Map.Entry;
-import jdk.packager.services.UserJvmOptionsService;
-
-public class %CLASS_NAME% {
-
-    public static void changeUserOptions(String userJvmAction) {
-
-        UserJvmOptionsService ujo = UserJvmOptionsService.getUserJVMDefaults();
-
-        switch (userJvmAction) {
-            case "USER_JVM_OPTIONS_CLEAR_ALL":
-                println("[UserFriendlyJvmOptionsTest]:Options will be cleared");
-                ujo.setUserJVMOptions(new HashMap<String, String>());
-                break;
-            case "USER_JVM_OPTIONS_SET_PREDEFINED":
-                println("[UserFriendlyJvmOptionsTest]: Predefined options will be set: {-Xmx777m, -Xms256m}");
-                Map<String, String> userJVMOptions = ujo.getUserJVMOptions();
-                userJVMOptions.put("-Xmx", "777m");
-                userJVMOptions.put("-Xms", "256m");
-                ujo.setUserJVMOptions(userJVMOptions);
-                break;
-            default:
-                println("[UserFriendlyJvmOptionsTest]:No options supplied. Not changing user JVM options");
-        }
-    }
-
-    public static void println (String str) {
-        System.out.println (str);
-    }
-    
-    public static void appendClassNameToPrint(String str) {
-    
-     StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
-     String className = stackTrace[1].getClassName();
-     println(str);
-     println(className);
-    }
-}
\ No newline at end of file
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/axis_bujava.properties	Mon Oct 10 20:56:50 2016 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-G]KA^.J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"ۼs9]
-J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"_3|mYۯRKf^J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,">9p5k|J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"R~9ywIW@J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"ԫfRyaW2}J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"h/lC)nJ*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8+,"J*;_8
\ No newline at end of file
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/cert.cfg	Mon Oct 10 20:56:50 2016 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-[ codesign ]
-keyUsage=critical,digitalSignature
-basicConstraints=critical,CA:false
-extendedKeyUsage=critical,codeSigning
-[ productbuild ]
-basicConstraints=critical,CA:false
-keyUsage=critical,digitalSignature
-extendedKeyUsage=critical,1.2.840.113635.100.4.13
-1.2.840.113635.100.6.1.14=critical,DER:0500
\ No newline at end of file
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/com.greetings.module.info.template	Mon Oct 10 20:56:50 2016 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-module com.greetings {
-	requires jdk.packager;
-	requires jdk.packager.services;
-	requires java.logging;
-	requires javafx.base;
-	requires javafx.controls;
-	//requires javafx.deploy;
-	requires javafx.fxml;
-	requires javafx.graphics;
-	requires javafx.media;
-	requires javafx.swing;
-	requires javafx.web;
-	requires java.compiler;
-	requires jdk.management;
-	requires java.base;
-	%REQUIRED_MODULE%
-	exports %PACKAGE_NAME%;
-}
\ No newline at end of file
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/com.shape.serviceinterface.Shape.template	Mon Oct 10 20:56:50 2016 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-package com.shape.serviceinterface;
-
-public interface Shape {
-	String createShape();
-}
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/com.shape.serviceinterface.ShapeMainClass.template	Mon Oct 10 20:56:50 2016 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-package com.shape.serviceinterface;
-import java.util.Iterator;
-import java.util.ServiceLoader;
-import com.shape.serviceinterface.Shape;
-
-/**
- * @author rbgangad
- *
- */
-public class ShapeMainClass {
-
-	/**
-	 * @param args
-	 */
-	public static void main(String[] args) {
-		ServiceLoader<Shape> serviceLoader = ServiceLoader.load(Shape.class);
-		Iterator<Shape> iterator = serviceLoader.iterator();
-		while (iterator.hasNext()) {
-			Shape shape = (Shape) iterator.next();
-			System.out.println(shape);
-		}
-	}
-}
\ No newline at end of file
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/com.shape.serviceinterface.module.info.template	Mon Oct 10 20:56:50 2016 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-module com.shape.serviceinterface {
-	exports com.shape.serviceinterface;
-	uses com.shape.serviceinterface.Shape;
-}
\ No newline at end of file
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/com.shape.serviceprovider.Circle.template	Mon Oct 10 20:56:50 2016 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-package com.shape.serviceprovider.circle;
-
-import com.shape.serviceinterface.Shape;
-
-public class Circle implements Shape {
-
-	
-	public String createShape() {
-		return toString();
-	}
-	
-	public String toString() {
-		return "This is Circle";
-	}
-}
\ No newline at end of file
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/com.shape.serviceprovider.Rectangle.template	Mon Oct 10 20:56:50 2016 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-package com.shape.serviceprovider.rectangle;
-import com.shape.serviceinterface.Shape;
-public class Rectangle implements Shape {
-
-	
-	@Override
-	public String createShape() {
-		return toString();
-	}
-	
-	@Override
-	public String toString() {
-		return "This is Rectangle";
-	}
-}
\ No newline at end of file
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/com.shape.serviceprovider.circle.module.info.template	Mon Oct 10 20:56:50 2016 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-module com.shape.serviceprovider.circle {
-	requires com.shape.serviceinterface;
-	provides com.shape.serviceinterface.Shape with com.shape.serviceprovider.circle.Circle;
-	exports com.shape.serviceprovider.circle;
-}
\ No newline at end of file
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/com.shape.serviceprovider.rectangle.module.info.template	Mon Oct 10 20:56:50 2016 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-module com.shape.serviceprovider.rectangle {
-	requires com.shape.serviceinterface;
-	exports com.shape.serviceprovider.rectangle;
-	provides com.shape.serviceinterface.Shape with com.shape.serviceprovider.rectangle.Rectangle;
-}
\ No newline at end of file
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/com.shape.test.LimitModsMainClass.template	Mon Oct 10 20:56:50 2016 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-package com.shape.test;
-import com.shape.serviceprovider.circle.Circle;
-
-/**
- * @author Ramesh BG
- *
- */
-public class LimitModsMainClass {
-
-	/**
-	 * @param args
-	 */
-	public static void main(String[] args) {
-		Circle circle = new Circle();
-		System.out.println(circle);
-	}
-}
\ No newline at end of file
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/com.shape.test.module.info.template	Mon Oct 10 20:56:50 2016 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-module com.shape.test {
-	requires com.shape.serviceprovider.circle;
-}
\ No newline at end of file
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/getExeCopyright.vbs	Mon Oct 10 20:56:50 2016 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-Set filesys = CreateObject("Scripting.FileSystemObject")
-folder = filesys.GetParentFolderName(Wscript.ScriptFullName)
-
-Set objShell = CreateObject("Shell.Application")
-Set objFolder = objShell.Namespace(folder)
-
-Set objFolderItem = objFolder.ParseName("__FILE_NAME__")
-
-Dim arrHeaders(256)
-For i = 0 to 256
-	header = objFolder.GetDetailsOf(objFolder.Items, i)
-	If (header = "") Then
-		Exit For
-	End If
-	arrHeaders(i) = header
-Next
-
-For i = 0 to UBound(arrHeaders)
-	If (lcase(arrHeaders(i)) = "copyright") Then
-		Wscript.Echo objFolder.GetDetailsOf(objFolderItem, i)
-		Exit For	
-	End If
-Next
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/getServiceInfo.vbs	Mon Oct 10 20:56:50 2016 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
-Set colRunningServices = objWMIService.ExecQuery("SELECT __PROPERTY__ FROM Win32_Service WHERE Name = '__SERVICE_NAME__'")    
-
-If colRunningServices.Count = 0 Then
-	Return
-End If
-For Each objService in colRunningServices          
-     WScript.Echo "Description::- " & objService.Description  & VbCrLf 
-Next
\ No newline at end of file
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/org.eclipse.core.resources.prefs	Mon Oct 10 20:56:50 2016 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-eclipse.preferences.version=1
-encoding//test/com/oracle/appbundlers/tests/functionality/unicode/UnicodeMainClassTest.java=UTF-8
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/org.eclipse.jdt.core.prefs	Mon Oct 10 20:56:50 2016 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.8
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/org.eclipse.ltk.core.refactoring.prefs	Mon Oct 10 20:56:50 2016 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/org.eclipse.wst.xsl.core.prefs	Mon Oct 10 20:56:50 2016 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-CHECK_CALL_TEMPLATES=2
-CHECK_XPATHS=2
-CIRCULAR_REF=2
-DUPLICATE_PARAMETER=2
-EMPTY_PARAM=1
-MISSING_INCLUDE=2
-MISSING_PARAM=1
-NAME_ATTRIBUTE_EMPTY=2
-NAME_ATTRIBUTE_MISSING=2
-TEMPLATE_CONFLICT=2
-eclipse.preferences.version=1
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/prefs.xml.template	Mon Oct 10 20:56:50 2016 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE map SYSTEM "http://java.sun.com/dtd/preferences.dtd">
-<map MAP_XML_VERSION="1.0">
-    <entry key="%KEY%" value="%VALUE%"/>
-</map>
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/testrun.properties	Mon Oct 10 20:56:50 2016 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-#java.home=
-#ant.home=
-#other.jre=
-#ant.javafx=
\ No newline at end of file
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/bin/com/oracle/appbundlers/utils/resources/util.module.template	Mon Oct 10 20:56:50 2016 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-module custom.util {
-	requires jdk.packager;
-	requires jdk.packager.services;
-	requires java.logging;
-	requires javafx.base;
-	requires javafx.controls;
-	//requires javafx.deploy;
-	requires javafx.fxml;
-	requires javafx.graphics;
-	requires javafx.media;
-	requires javafx.swing;
-	requires javafx.web;
-	requires java.compiler;
-	requires java.base;
-	requires jdk.management;
-	exports testapp.util;
-}
\ No newline at end of file
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/build.xml	Mon Oct 10 20:56:50 2016 +0530
+++ b/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/build.xml	Tue Oct 18 13:17:43 2016 +0530
@@ -153,13 +153,13 @@
 	<target name="run-single-test-method">
 		<fail unless="class-name" message="Please, specify the class containing tests methods.${line.separator}
 For example -Dclass-name=com.oracle.appbundlers.tests.functionality.SimpleExecutablesTest" />
-		<echo unless:set="installation-package-type">You may want to specify the type of the package:${line.separator}
+		<echo>You may want to specify the type of the package:${line.separator}
 -Dinstallation-package-type=${line.separator}
 [win_app     | exe | msi |${line.separator}
  linux_app   | deb | rpm |${line.separator}
  mac_app     | dmg | pkg ]${line.separator}</echo>
 
-		<echo unless:set="packager-interface">You may want to specify the way of creating the package:${line.separator}
+		<echo>You may want to specify the way of creating the package:${line.separator}
 -Dpackager-interface=[ant | cli | java_api] </echo>
 
 		<echo>You may want to filter out java-extension-type using -Djava-extension-type=[ NormalJar | ModularJar | ExplodedModules | Jmods ]</echo>
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/nbproject/build-impl.xml	Mon Oct 10 20:56:50 2016 +0530
+++ b/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/nbproject/build-impl.xml	Tue Oct 18 13:17:43 2016 +0530
@@ -468,6 +468,15 @@
                         <mapper from="test-sys-prop.*" to="*" type="glob"/>
                     </propertyset>
                     <customize/>
+                	 <jvmarg value="--add-exports"/> <jvmarg value="jdk.packager/com.oracle.tools.packager=ALL-UNNAMED"/>
+                	 <jvmarg value="--add-exports"/> <jvmarg value="jdk.packager/com.sun.javafx.tools.packager=ALL-UNNAMED"/>
+                	 <jvmarg value="--add-exports"/> <jvmarg value="jdk.packager/com.sun.javafx.tools.packager.bundlers=ALL-UNNAMED"/>
+                	 <jvmarg value="--add-exports"/> <jvmarg value="jdk.packager/com.sun.javafx.tools.resource=ALL-UNNAMED"/>
+                	 <jvmarg value="--add-exports"/> <jvmarg value="jdk.packager.services/jdk.packager.services=ALL-UNNAMED"/>
+                	 <jvmarg value="--add-exports"/> <jvmarg value="jdk.packager/com.oracle.tools.packager.linux=ALL-UNNAMED"/>
+                	 <jvmarg value="--add-exports"/> <jvmarg value="jdk.packager/com.oracle.tools.packager.windows=ALL-UNNAMED"/>
+                	 <jvmarg value="--add-exports"/> <jvmarg value="jdk.packager/com.oracle.tools.packager.mac=ALL-UNNAMED"/>
+                	 <jvmarg value="--add-exports"/> <jvmarg value="jdk.packager/com.oracle.tools.packager.jnlp=ALL-UNNAMED"/>
                 </testng>
             </sequential>
         </macrodef>
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/src/com/oracle/appbundlers/utils/AppWrapper.java	Mon Oct 10 20:56:50 2016 +0530
+++ b/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/src/com/oracle/appbundlers/utils/AppWrapper.java	Tue Oct 18 13:17:43 2016 +0530
@@ -217,12 +217,12 @@
         return compileApp(javacOptions, null, classpath);
     }
 
-    public int compileAndCreateJavaExtensionProduct(ExtensionType extension,
+    public int compileAndCreateJavaExtensionType(String[] javacOptions, ExtensionType extension,
             Path... classpath) throws IOException, ExecutionException {
         int resultForModule = compileAppForModules(new String[0], extension,
                 classpath);
         jarApp(extension);
-        compileAppForJars(new String[0], extension, classpath);
+        compileAppForJars(javacOptions, extension, classpath);
         jarApp(ExtensionType.NormalJar);
         return resultForModule;
     }
@@ -554,10 +554,10 @@
             command.add(getJmodsDir() + File.separator + source.getModuleName()
                     + ".jmod");
             System.out.println(
-                    "=========================JMOD CREATION STARTS For Module "+source.getModuleName()+" =========================");
+                    "=========================JMOD CREATION STARTS for module "+source.getModuleName()+" =========================");
             Utils.runCommand(command, CONFIG_INSTANCE.getInstallTimeout());
             System.out.println(
-                    "=========================JMOD CREATION ENDS For Module "+source.getModuleName()+" ===========================");
+                    "=========================JMOD CREATION ENDS for module "+source.getModuleName()+" ===========================");
             System.out.println();
         }
     }
@@ -589,13 +589,13 @@
             command.add(moduleAbsouleDirectoryPath);
             command.add(".");
             System.out.println(
-                    "====================MODULAR JAR CREATION STARTS For "+ source.getJarName() +"==================");
+                    "====================MODULAR JAR CREATION STARTS for "+ source.getJarName() +"==================");
             ProcessOutput output = Utils.runCommand(command, CONFIG_INSTANCE.getInstallTimeout());
             if( output.exitCode() != 0) {
                 throw new RuntimeException("Modular Jar Creation failed for module "+source.getJarName());
             }
             System.out.println(
-                    "====================MODULAR JAR CREATION ENDS For "+ source.getJarName() +"==================");
+                    "====================MODULAR JAR CREATION ENDS for "+ source.getJarName() +"==================");
             System.out.println();
         }
     }
@@ -659,7 +659,7 @@
         }
     }
 
-    public Path getJavaExtensionPathBasedonExtension(ExtensionType extension) {
+    public Path getJavaExtensionDirPathBasedonExtension(ExtensionType extension) {
         if (extension == null) {
             throw new NullPointerException("Extension cannot be null");
         }
@@ -675,11 +675,11 @@
         }
     }
 
-    public RelativeFileSet getRelativeFileSetBasedOnExtension(
+    public RelativeFileSet getNewRelativeFileSetBasedOnExtension(
             ExtensionType extension) throws IOException {
         RelativeFileSet relativeFileSet = null;
         Path javaExtensionDirPath = this
-                .getJavaExtensionPathBasedonExtension(extension);
+                .getJavaExtensionDirPathBasedonExtension(extension);
         switch (extension) {
         case NormalJar:
             relativeFileSet = new RelativeFileSet(javaExtensionDirPath.toFile(),
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/src/com/oracle/appbundlers/utils/BundlingManager.java	Mon Oct 10 20:56:50 2016 +0530
+++ b/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/src/com/oracle/appbundlers/utils/BundlingManager.java	Tue Oct 18 13:17:43 2016 +0530
@@ -8,6 +8,7 @@
 import java.io.IOException;
 import java.nio.file.Path;
 import java.util.Map;
+import java.util.Objects;
 import java.util.concurrent.ExecutionException;
 import java.util.logging.Level;
 import java.util.logging.Logger;
@@ -32,6 +33,12 @@
     protected AppWrapper app;
     protected ExtensionType extensionType;
 
+    /*
+     * modulePath is used only by JmodExplodedModuleAndModularJarDependencyTest,
+     * couldn't find any other alternative.
+     */
+    protected Path modulePath;
+
     public BundlingManager(AbstractBundlerUtils bundlerUtils) {
         this.bundlerUtils = bundlerUtils;
     }
@@ -135,8 +142,21 @@
 
     @Override
     public String toString() {
-        return getShortName() + "-" + getExtensionType() + "-"
-                + getBundler().getID();
+        StringBuilder stringBuilder = new StringBuilder();
+        if (Objects.nonNull(getShortName())) {
+            stringBuilder.append(getShortName());
+        }
+
+        if (Objects.nonNull(getExtensionType())) {
+            stringBuilder.append("-");
+            stringBuilder.append(getExtensionType());
+        }
+
+        if (Objects.nonNull(getBundler().getID())) {
+            stringBuilder.append("-");
+            stringBuilder.append(getBundler().getID());
+        }
+        return stringBuilder.toString();
     }
 
     public Path getAppCDSCacheFile(AppWrapper app, String appName) {
@@ -154,4 +174,12 @@
     public void setExtensionType(ExtensionType extensionType) {
         this.extensionType = extensionType;
     }
+
+    public Path getModulePath() {
+        return this.modulePath;
+    }
+
+    public void setModulePath(Path modulePath) {
+        this.modulePath = modulePath;
+    }
 }
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/src/com/oracle/appbundlers/utils/Config.java	Mon Oct 10 20:56:50 2016 +0530
+++ b/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/src/com/oracle/appbundlers/utils/Config.java	Tue Oct 18 13:17:43 2016 +0530
@@ -11,8 +11,11 @@
 import java.io.InputStream;
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.util.HashSet;
 import java.util.Map;
 import java.util.Properties;
+import java.util.Set;
+import java.util.StringTokenizer;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
@@ -31,9 +34,9 @@
 
     private final Properties properties = new Properties();
     private boolean manualOnly = false;
-    private BundlerUtils acceptedInstallationPackagerType;
-    private BundlingManagers acceptedPackagerInterface;
-    private ExtensionType javaExtensionType;
+    private Set<BundlerUtils> acceptedInstallationPackagerType = new HashSet<>();
+    private Set<BundlingManagers> acceptedPackagerInterface = new HashSet<>();
+    private Set<ExtensionType> javaExtensionType = new HashSet<>();
 
     private Config() {
         tryLoadTestSuiteProperties();
@@ -103,8 +106,13 @@
         try {
             String value = System.getProperty("installation-package-type");
             value = value.toUpperCase();
-            acceptedInstallationPackagerType = getEnumInstance(
-                    BundlerUtils.class, value);
+            StringTokenizer stringTokenizer = new StringTokenizer(value, ",");
+            while (stringTokenizer.hasMoreElements()) {
+                String eachInstallationType = ((String) stringTokenizer.nextElement()).trim();
+                BundlerUtils bundlerUtil = getEnumInstance(
+                        BundlerUtils.class, eachInstallationType);
+                acceptedInstallationPackagerType.add(bundlerUtil);
+            }
             System.out.println("[Installation package type filter: "
                     + acceptedInstallationPackagerType + "]");
         } catch (Throwable t) {
@@ -117,10 +125,16 @@
         try {
             String value = System.getProperty("packager-interface");
             value = value.toUpperCase();
-            acceptedPackagerInterface = getEnumInstance(BundlingManagers.class,
-                    value);
-            System.out.println("[Packager interface filter: "
-                    + acceptedPackagerInterface + "]");
+            StringTokenizer stringTokenizer = new StringTokenizer(value, ",");
+            while (stringTokenizer.hasMoreElements()) {
+                String eachBundlingMgr = ((String) stringTokenizer
+                        .nextElement()).trim();
+                BundlingManagers bundlingMgr = getEnumInstance(
+                        BundlingManagers.class, eachBundlingMgr);
+                acceptedPackagerInterface.add(bundlingMgr);
+                System.out.println("[Packager interface filter: "
+                        + acceptedPackagerInterface + "]");
+            }
         } catch (Throwable t) {
             System.out.println("[Packager interfaces won't be filtered]");
         }
@@ -130,11 +144,18 @@
         try {
             String javaExtensionString = System
                     .getProperty("java-extension-type");
-            if(!javaExtensionString.trim().equals("")) {
-                javaExtensionType = getEnumInstance(ExtensionType.class,
-                        javaExtensionString);
-                System.out.println(
-                        "[Filtered java extension type: " + javaExtensionString+"]");
+            if (!javaExtensionString.trim().equals("")) {
+                StringTokenizer stringTokenizer = new StringTokenizer(
+                        javaExtensionString, ",");
+                while (stringTokenizer.hasMoreElements()) {
+                    String eachJavaExtension = ((String) stringTokenizer
+                            .nextElement()).trim();
+                    ExtensionType extensionType = getEnumInstance(
+                            ExtensionType.class, eachJavaExtension);
+                    javaExtensionType.add(extensionType);
+                    System.out.println("[Filtered java extension type: "
+                            + javaExtensionString + "]");
+                }
             } else {
                 System.out.println("[Java Extension Type won't be Filtered]");
             }
@@ -221,15 +242,15 @@
                 .valueOf(properties.getProperty("after.install.pause.ms"));
     }
 
-    public BundlerUtils getAcceptedInstallationPackageType() {
-        return acceptedInstallationPackagerType;
+    public Set<BundlerUtils> getAcceptedInstallationPackageType() {
+        return this.acceptedInstallationPackagerType;
     }
 
-    public BundlingManagers getAcceptedPackagerApi() {
-        return acceptedPackagerInterface;
+    public Set<BundlingManagers> getAcceptedPackagerApi() {
+        return this.acceptedPackagerInterface;
     }
 
-    public ExtensionType getAcceptedJavaExtensionType() {
+    public Set<ExtensionType> getAcceptedJavaExtensionType() {
         return this.javaExtensionType;
     }
 
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/src/com/oracle/appbundlers/utils/ConsoleBundlingManager.java	Mon Oct 10 20:56:50 2016 +0530
+++ b/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/src/com/oracle/appbundlers/utils/ConsoleBundlingManager.java	Tue Oct 18 13:17:43 2016 +0530
@@ -110,7 +110,7 @@
     public File execute(Map<String, Object> params, File file,
             boolean isSrcDirRequired) throws IOException {
         try {
-            List<String> command = command(file, toConsole(params));
+            List<String> command = command(file, toConsole(params, isSrcDirRequired));
             System.out.println("execution command is " + command);
             ProcessOutput process = Utils.runCommand(command,
                     CONFIG_INSTANCE.getInstallTimeout());
@@ -161,7 +161,7 @@
 
     @SuppressWarnings("unchecked")
     private List<Pair<String, Collection<String>>> toConsole(
-            Map<String, Object> params) {
+            Map<String, Object> params, boolean isSrcDirRequired) {
         List<Pair<String, Collection<String>>> key2Value = new ArrayList<>();
         for (Map.Entry<String, Object> entry : params.entrySet()) {
             String key = entry.getKey();
@@ -169,7 +169,7 @@
             RelativeFileSet fileSet;
             switch (key) {
             case "appResources":
-                if(ExtensionType.NormalJar == extensionType) {
+                if(ExtensionType.NormalJar == extensionType || isSrcDirRequired) {
                     fileSet = (RelativeFileSet) value;
                     String path = fileSet.getBaseDirectory().getPath();
                     key2Value.add(new Pair<>("-srcdir", Arrays.asList(path)));
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/src/com/oracle/appbundlers/utils/JavaExtensionTypeFilter.java	Mon Oct 10 20:56:50 2016 +0530
+++ b/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/src/com/oracle/appbundlers/utils/JavaExtensionTypeFilter.java	Tue Oct 18 13:17:43 2016 +0530
@@ -9,8 +9,8 @@
     }
 
     public static boolean accept(ExtensionType javaExtensionType) {
-        return CONFIG_INSTANCE.getAcceptedJavaExtensionType() == null
-                || CONFIG_INSTANCE
-                        .getAcceptedJavaExtensionType() == javaExtensionType;
+        return CONFIG_INSTANCE.getAcceptedJavaExtensionType().isEmpty()
+                || CONFIG_INSTANCE.getAcceptedJavaExtensionType()
+                        .contains(javaExtensionType);
     }
 }
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/src/com/oracle/appbundlers/utils/PackageTypeFilter.java	Mon Oct 10 20:56:50 2016 +0530
+++ b/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/src/com/oracle/appbundlers/utils/PackageTypeFilter.java	Tue Oct 18 13:17:43 2016 +0530
@@ -11,7 +11,8 @@
     }
 
     public static boolean accept(BundlerUtils obj) {
-        return CONFIG_INSTANCE.getAcceptedInstallationPackageType() == null
-                || CONFIG_INSTANCE.getAcceptedInstallationPackageType() == obj;
+        return CONFIG_INSTANCE.getAcceptedInstallationPackageType().isEmpty()
+                || CONFIG_INSTANCE.getAcceptedInstallationPackageType()
+                        .contains(obj);
     }
 }
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/src/com/oracle/appbundlers/utils/PackagerApiFilter.java	Mon Oct 10 20:56:50 2016 +0530
+++ b/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/src/com/oracle/appbundlers/utils/PackagerApiFilter.java	Tue Oct 18 13:17:43 2016 +0530
@@ -11,7 +11,7 @@
     }
 
     public static boolean accept(BundlingManagers obj) {
-        return CONFIG_INSTANCE.getAcceptedPackagerApi() == null
-                || CONFIG_INSTANCE.getAcceptedPackagerApi() == obj;
+        return CONFIG_INSTANCE.getAcceptedPackagerApi().isEmpty()
+                || CONFIG_INSTANCE.getAcceptedPackagerApi().contains(obj);
     }
 }
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/src/com/oracle/appbundlers/utils/Utils.java	Mon Oct 10 20:56:50 2016 +0530
+++ b/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/src/com/oracle/appbundlers/utils/Utils.java	Tue Oct 18 13:17:43 2016 +0530
@@ -148,7 +148,6 @@
     }
 
     public static void removeRecursive(Path path) throws IOException {
-        // removeRecursive(path, false);
         deleteDir(path.toFile());
     }
 
@@ -180,8 +179,6 @@
                                 + " is deleted successfully" + "time is "
                                 + System.currentTimeMillis());
                     }
-                    System.out.println("Deleting File, Thread Name is "
-                            + Thread.currentThread().getName());
                 }
                 return FileVisitResult.CONTINUE;
             }
@@ -201,8 +198,6 @@
                                 + dir.getFileName() + "deletion failed"
                                 + " time is " + System.currentTimeMillis());
                     }
-                    System.out.println("Deleting Directory, Thread Name is "
-                            + Thread.currentThread().getName());
                 }
                 return FileVisitResult.CONTINUE;
             }
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/src/com/oracle/appbundlers/utils/installers/WinMsiBundlerUtils.java	Mon Oct 10 20:56:50 2016 +0530
+++ b/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/src/com/oracle/appbundlers/utils/installers/WinMsiBundlerUtils.java	Tue Oct 18 13:17:43 2016 +0530
@@ -122,7 +122,7 @@
             String[] cmd = new String[] { "msiexec.exe", "/x", msiPath1,
                     "/quiet" };
             runCommand(cmd, true, CONFIG_INSTANCE.getInstallTimeout());
-            LOG.info("Uninstallation done.");
+            LOG.info("Uninstallation done from "+msiPath1);
         } catch (ExecutionException e) {
             throw new IOException(e);
         }
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/test/com/oracle/appbundlers/tests/BundlerProvider.java	Mon Oct 10 20:56:50 2016 +0530
+++ b/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/test/com/oracle/appbundlers/tests/BundlerProvider.java	Tue Oct 18 13:17:43 2016 +0530
@@ -5,6 +5,7 @@
 
 package com.oracle.appbundlers.tests;
 
+import java.nio.file.Path;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
@@ -39,4 +40,23 @@
         }
         return list.iterator();
     }
+
+    public static Iterator<Object[]> createBundlingManagers(
+            List<AbstractBundlerUtils> systemExtFormatList,
+            List<BundlingManagers> bundlingMgrList, List<Path> modulePathList,
+            boolean dummy) {
+        List<Object[]> list = new ArrayList<Object[]>();
+        for (BundlingManagers eachBundlingMgr : bundlingMgrList) {
+            for (AbstractBundlerUtils eachSystemExtension : systemExtFormatList) {
+                for (Path modulePath : modulePathList) {
+                    BundlingManager bundlingMgr = eachBundlingMgr.getFactory()
+                            .createInstance(eachSystemExtension);
+                    bundlingMgr.setModulePath(modulePath);
+                    Object[] object = new Object[] { bundlingMgr };
+                    list.add(object);
+                }
+            }
+        }
+        return list.iterator();
+    }
 }
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/test/com/oracle/appbundlers/tests/functionality/DefaultClassPathTest.java	Mon Oct 10 20:56:50 2016 +0530
+++ b/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/test/com/oracle/appbundlers/tests/functionality/DefaultClassPathTest.java	Tue Oct 18 13:17:43 2016 +0530
@@ -19,6 +19,8 @@
 import com.oracle.appbundlers.tests.functionality.functionalinterface.VerifiedOptions;
 import com.oracle.appbundlers.utils.AppWrapper;
 import com.oracle.appbundlers.utils.ExtensionType;
+import com.oracle.appbundlers.utils.SourceFactory;
+import com.oracle.appbundlers.utils.Utils;
 import com.oracle.tools.packager.RelativeFileSet;
 
 /**
@@ -56,6 +58,7 @@
     @Override
     public void overrideParameters(ExtensionType intermediate)
             throws IOException {
+        this.currentParameter.setApp(getNewApp());
         this.currentParameter.setVerifiedOptions(getVerifiedOptions());
         this.currentParameter.setBasicParams(getBasicParams());
     }
@@ -79,4 +82,13 @@
             ExtensionType extension) {
         return ExtensionType.NormalJar == extension;
     }
+
+    protected AppWrapper getNewApp() throws IOException {
+        Map<String, String> hashMap = new HashMap<String, String>();
+        hashMap.put(PRINTLN_STATEMENT, CUSTOM_UTIL_PRINTLN_STATEMENT);
+        return new AppWrapper(Utils.getTempSubDir(WORK_DIRECTORY),
+                COM_GREETINGS_APP1_QUALIFIED_CLASS_NAME,
+                SourceFactory.get_test_app_util_unnamed_module(), SourceFactory
+                        .get_com_greetings_unnamed_module_depends_on_test_app_util_unnamed_module());
+    }
 }
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/test/com/oracle/appbundlers/tests/functionality/FileAssociationTest.java	Mon Oct 10 20:56:50 2016 +0530
+++ b/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/test/com/oracle/appbundlers/tests/functionality/FileAssociationTest.java	Tue Oct 18 13:17:43 2016 +0530
@@ -33,6 +33,7 @@
  */
 
 public class FileAssociationTest extends TestBase {
+    private static final String COM_RM_MODULE_NAME = "com.rm";
     public static final String RM_NAME = Utils.isMacOS() ? "MacRmApp" : "RmApp";
     public static final String ext1 = "foo", ext2 = "bar", ext3 = "baz",
             ext4 = "qux";
@@ -68,6 +69,10 @@
             additionalParams.put(FILE_ASSOCIATIONS,
                     Arrays.asList(association1, association2));
             additionalParams.put(SYSTEM_WIDE, true);
+            additionalParams.put(JVM_OPTIONS,
+                    DOUBLE_HYPHEN + ADD_EXPORTS + SPACE
+                            + "java.desktop/com.apple.eawt=ALL-UNNAMED" + ","
+                            + FileAssociationTest.COM_RM_MODULE_NAME);
             return additionalParams;
         };
     }
@@ -109,7 +114,7 @@
                     templateName);
             return new AppWrapper(Utils.getTempSubDir(WORK_DIRECTORY),
                     mainClassfullyQualifiedName,
-                    new Source("com.rm", "com.rm.module.info.template",
+                    new Source(FileAssociationTest.COM_RM_MODULE_NAME, "com.rm.module.info.template",
                             classNameToTemplateMap, mainClassfullyQualifiedName,
                             "rmApp", replacementsInSrcCodeInternal, true));
         }
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/test/com/oracle/appbundlers/tests/functionality/InstallDirTest.java	Mon Oct 10 20:56:50 2016 +0530
+++ b/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/test/com/oracle/appbundlers/tests/functionality/InstallDirTest.java	Tue Oct 18 13:17:43 2016 +0530
@@ -49,7 +49,7 @@
                     .getBasicParams().get(APP_RESOURCES);
             if (existingRelativeFileSet == null) {
                 RelativeFileSet newRelativeFileSet = this.currentParameter
-                        .getApp().getRelativeFileSetBasedOnExtension(extension);
+                        .getApp().getNewRelativeFileSetBasedOnExtension(extension);
                 newRelativeFileSet.getIncludedFiles().add(LICENSE_FILE_NAME);
                 additionalParams.put(APP_RESOURCES, newRelativeFileSet);
             } else {
@@ -82,7 +82,7 @@
             overrideParameters(extension);
             initializeAndPrepareApp();
             licenseFile = this.currentParameter.getApp()
-                    .getJavaExtensionPathBasedonExtension(extension)
+                    .getJavaExtensionDirPathBasedonExtension(extension)
                     .resolve(LICENSE_FILE_NAME);
             initializeVars();
             Files.copy(licenseFileSrc, licenseFile);
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/test/com/oracle/appbundlers/tests/functionality/LicenseFileTest.java	Mon Oct 10 20:56:50 2016 +0530
+++ b/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/test/com/oracle/appbundlers/tests/functionality/LicenseFileTest.java	Tue Oct 18 13:17:43 2016 +0530
@@ -56,7 +56,7 @@
                     .getBasicParams().get(APP_RESOURCES);
             if (existingRelativeFileSet == null) {
                 existingRelativeFileSet = this.currentParameter
-                        .getApp().getRelativeFileSetBasedOnExtension(extension);
+                        .getApp().getNewRelativeFileSetBasedOnExtension(extension);
                 existingRelativeFileSet.getIncludedFiles().add(LICENSE_FILE_NAME);
                 additionalParams.put(APP_RESOURCES, existingRelativeFileSet);
             } else {
@@ -89,7 +89,7 @@
             overrideParameters(extension);
             initializeAndPrepareApp();
             licenseFile = this.currentParameter.getApp()
-                    .getJavaExtensionPathBasedonExtension(extension)
+                    .getJavaExtensionDirPathBasedonExtension(extension)
                     .resolve(LICENSE_FILE_NAME);
             initializeVars();
             Files.copy(licenseFileSrc, licenseFile);
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/test/com/oracle/appbundlers/tests/functionality/TestBase.java	Mon Oct 10 20:56:50 2016 +0530
+++ b/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/test/com/oracle/appbundlers/tests/functionality/TestBase.java	Tue Oct 18 13:17:43 2016 +0530
@@ -124,7 +124,7 @@
      * return App Name
      */
     public String getResultingAppName() {
-        return this.getClass().getSimpleName();
+        return String.join("_", this.getClass().getSimpleName(), this.bundlingManager.toString().replace('-', '_'));
     }
 
     protected boolean isConfigExceptionExpected(Bundler bundler) {
@@ -177,6 +177,7 @@
 
     @Test(dataProvider = "getBundlers")
     public void runTest(BundlingManager bundlingManager) throws Exception {
+        this.bundlingManager = bundlingManager;
         this.currentParameter = intermediateToParametersMap
                 .get(bundlingManager.getExtensionType());
         if (!isTestCaseApplicableForExtensionType(
@@ -187,7 +188,7 @@
         Map<String, Object> allParams = getAllParams();
         String testName = this.getClass().getName() + "::"
                 + testMethod.getName() + "$" + bundlingManager.toString();
-        this.bundlingManager = bundlingManager;
+
         LOG.log(Level.INFO, "Starting test \"{0}\".", testName);
         try {
             validate();
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/test/com/oracle/appbundlers/tests/functionality/jdk9test/CheckExecutablesAvailableTest.java	Mon Oct 10 20:56:50 2016 +0530
+++ b/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/test/com/oracle/appbundlers/tests/functionality/jdk9test/CheckExecutablesAvailableTest.java	Tue Oct 18 13:17:43 2016 +0530
@@ -14,10 +14,10 @@
 import com.oracle.appbundlers.utils.ExtensionType;
 
 /**
- *  aim of this testcase is to check for executables available
- *  in bin directory when "-strip-native-commands false" is passed to
- *  javapackager.
- *  @author Ramesh BG
+ * aim of this testcase is to check for executables available in bin directory
+ * when "javapackager -strip-native-commands false" is executed.
+ *
+ * @author Ramesh BG
  */
 public class CheckExecutablesAvailableTest extends ModuleTestBase {
 
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/test/com/oracle/appbundlers/tests/functionality/jdk9test/JmodExplodedModuleAndModularJarDependencyTest.java	Mon Oct 10 20:56:50 2016 +0530
+++ b/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/test/com/oracle/appbundlers/tests/functionality/jdk9test/JmodExplodedModuleAndModularJarDependencyTest.java	Tue Oct 18 13:17:43 2016 +0530
@@ -4,7 +4,11 @@
  */
 package com.oracle.appbundlers.tests.functionality.jdk9test;
 
+import static java.util.stream.Collectors.toList;
+import static java.util.stream.Collectors.toSet;
+
 import java.io.IOException;
+import java.nio.file.DirectoryStream;
 import java.nio.file.FileVisitResult;
 import java.nio.file.Files;
 import java.nio.file.Path;
@@ -15,23 +19,33 @@
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
 import java.util.logging.Level;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 import org.testng.Assert;
+import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
 
+import com.oracle.appbundlers.tests.BundlerProvider;
 import com.oracle.appbundlers.tests.functionality.functionalinterface.VerifiedOptions;
-import com.oracle.appbundlers.tests.functionality.parameters.Parameters;
 import com.oracle.appbundlers.utils.AppWrapper;
+import com.oracle.appbundlers.utils.BundlerUtils;
 import com.oracle.appbundlers.utils.BundlingManager;
+import com.oracle.appbundlers.utils.BundlingManagers;
 import com.oracle.appbundlers.utils.ExtensionType;
+import com.oracle.appbundlers.utils.PackageTypeFilter;
+import com.oracle.appbundlers.utils.PackagerApiFilter;
 import com.oracle.appbundlers.utils.SourceFactory;
 import com.oracle.appbundlers.utils.Utils;
 import com.oracle.appbundlers.utils.installers.AbstractBundlerUtils;
 import com.oracle.tools.packager.ConfigException;
+import com.oracle.tools.packager.RelativeFileSet;
+import com.sun.javafx.tools.packager.bundlers.BundleParams;
 
 import javafx.util.Pair;
 
@@ -70,10 +84,14 @@
     private static String CIRCLE = COM_SHAPE_SERVICEPROVIDER_CIRCLE_MODULENAME;
     private static String RECTANGLE = COM_SHAPE_SERVICEPROVIDER_RECTANGLE_MODULE_NAME;
 
-    private static String[][] array = new String[][] { { SI, CIRCLE, RECTANGLE },
-            { CIRCLE, SI, RECTANGLE }, { RECTANGLE, CIRCLE, SI },
-            { RECTANGLE, SI, CIRCLE }, { CIRCLE, RECTANGLE, SI },
-            { SI, RECTANGLE, CIRCLE } };
+    private static String[][] array = new String[][] {
+            { SI, CIRCLE, RECTANGLE },
+            { CIRCLE, SI, RECTANGLE },
+            { RECTANGLE, CIRCLE, SI },
+            { RECTANGLE, SI, CIRCLE },
+            { CIRCLE, RECTANGLE, SI },
+            { SI, RECTANGLE, CIRCLE }
+    };
 
     private List<Path> modulePathList = new ArrayList<Path>();
 
@@ -93,23 +111,19 @@
 
     @Override
     public void overrideParameters(ExtensionType extension) throws IOException {
-        if (ExtensionType.NormalJar != extension) {
-            this.currentParameter.setApp(getApp());
-        }
+        this.currentParameter.setApp(getApp());
         this.currentParameter.setVerifiedOptions(getVerifiedOptions());
     }
 
     @Override
     protected void prepareTestEnvironment() throws Exception {
-        for (ExtensionType intermediate : ExtensionType.values()) {
+        for (ExtensionType javaExtensionFormat : ExtensionType.values()) {
             this.currentParameter = this.intermediateToParametersMap
-                    .get(intermediate);
-            overrideParameters(intermediate);
+                    .get(javaExtensionFormat);
+            overrideParameters(javaExtensionFormat);
             initializeAndPrepareApp();
         }
 
-        Parameters normalJarParameter = intermediateToParametersMap
-                .get(ExtensionType.NormalJar);
         /*
          * create directories mixmods1 ... mixmods6
          * copy different ExtensionType format into mixmods* directory
@@ -117,7 +131,7 @@
          *
          */
         for (int i = 0; i < array.length; i++) {
-            Path mixmodsPath = normalJarParameter.getApp().getWorkDir()
+            Path mixmodsPath = Utils.getTempSubDir(WORK_DIRECTORY)
                     .resolve("mixmods" + i);
             modulePathList.add(mixmodsPath);
             Path mixmodsdir = Files.createDirectories(mixmodsPath);
@@ -160,15 +174,33 @@
     protected Map<String, Object> getAllParams(Path modulepath)
             throws Exception {
         Map<String, Object> allParams = new HashMap<String, Object>();
-        allParams.put(APP_NAME, getResultingAppName());
+        allParams.put(APP_NAME,
+                getResultingAppName(modulepath.getFileName().toString()));
         AppWrapper app = this.intermediateToParametersMap
                 .get(ExtensionType.ModularJar).getApp();
         allParams.put(MAIN_MODULE,
                 String.join("/", app.getMainModuleName(), app.getMainClass()));
         allParams.put(MODULEPATH, modulepath.toString());
+        allParams.put(BundleParams.PARAM_APP_RESOURCES,
+                new RelativeFileSet(modulepath.toFile(),
+                        getModuleList(modulepath).stream().map(Path::toFile)
+                                .collect(toSet())));
+        allParams.put(STRIP_NATIVE_COMMANDS, false);
+        allParams.put(ADD_MODS,
+                app.getAllModuleNamesSeperatedByCommaExceptMainmodule());
         return allParams;
     }
 
+    /**
+     * return App Name
+     * @param modulePathFileName
+     */
+    public String getResultingAppName(String modulePathFileName) {
+        return String.join("_", this.getClass().getSimpleName(),
+                this.bundlingManager.toString().replace('-', '_'),
+                modulePathFileName);
+    }
+
     public VerifiedOptions getVerifiedOptions() {
         return () -> {
             Map<String, Object> hashMap = new HashMap<String, Object>();
@@ -180,53 +212,49 @@
 
     @Test(dataProvider = "getBundlers")
     public void runTest(BundlingManager bundlingManager) throws Exception {
+        this.bundlingManager = bundlingManager;
+        Path modulePath = this.bundlingManager.getModulePath();
+        Map<String, Object> allParams = getAllParams(modulePath);
+        String testName = this.getClass().getName() + "::"
+                + testMethod.getName() + "$" + bundlingManager.toString() + "::"
+                + bundlingManager.getModulePath().getFileName().toString();
 
-        for (int i = 0; i < array.length; i++) {
-            Map<String, Object> allParams = getAllParams(modulePathList.get(i));
-            String testName = this.getClass().getName() + "::"
-                    + testMethod.getName() + "$" + bundlingManager.toString();
-            this.bundlingManager = bundlingManager;
-            LOG.log(Level.INFO, "Starting test \"{0}\".", testName);
+        LOG.log(Level.INFO, "Starting test \"{0}\".", testName);
 
-            try {
-                validate();
-                if (isConfigExceptionExpected(bundlingManager.getBundler())) {
-                    Assert.fail(
-                            "ConfigException is expected, but isn't thrown");
-                }
-            } catch (ConfigException ex) {
-                if (isConfigExceptionExpected(bundlingManager.getBundler())) {
-                    return;
-                } else {
-                    LOG.log(Level.SEVERE, "Configuration error: {0}.",
-                            new Object[] { ex });
-                    throw ex;
-                }
+        try {
+            validate();
+            if (isConfigExceptionExpected(bundlingManager.getBundler())) {
+                Assert.fail("ConfigException is expected, but isn't thrown");
             }
+        } catch (ConfigException ex) {
+            if (isConfigExceptionExpected(bundlingManager.getBundler())) {
+                return;
+            } else {
+                LOG.log(Level.SEVERE, "Configuration error: {0}.",
+                        new Object[] { ex });
+                throw ex;
+            }
+        }
 
-            try {
-                AppWrapper app = intermediateToParametersMap
-                .get(ExtensionType.NormalJar).getApp();
-                bundlingManager.execute(allParams,
-                        app);
-                String path = bundlingManager.install(
-                        app, getResultingAppName(),
-                        false);
-                LOG.log(Level.INFO, "Installed at: {0}", path);
+        try {
+            AppWrapper app = intermediateToParametersMap
+                    .get(ExtensionType.NormalJar).getApp();
+            bundlingManager.execute(allParams, app);
+            String path = bundlingManager.install(app,
+                    getResultingAppName(modulePath.getFileName().toString()),
+                    false);
+            LOG.log(Level.INFO, "Installed at: {0}", path);
 
-                Pair<TimeUnit, Integer> tuple = getDelayAfterInstall();
-                tuple.getKey().sleep(tuple.getValue());
-                AppWrapper app2 = this.currentParameter.getApp();
-                this.intermediateToParametersMap
-                .get(ExtensionType.NormalJar).getVerifiedOptions().forEach(
-                        (name, value) -> bundlingManager.verifyOption(name,
-                                value, app2, getResultingAppName()));
-            }
-
-            finally {
-                uninstallApp(modulePathList.get(i));
-                LOG.log(Level.INFO, "Finished test: {0}", testName);
-            }
+            Pair<TimeUnit, Integer> tuple = getDelayAfterInstall();
+            tuple.getKey().sleep(tuple.getValue());
+            this.intermediateToParametersMap.get(ExtensionType.NormalJar)
+                    .getVerifiedOptions()
+                    .forEach((name, value) -> bundlingManager.verifyOption(name,
+                            value, app, getResultingAppName(
+                                    modulePath.getFileName().toString())));
+        } finally {
+            uninstallApp(modulePath);
+            LOG.log(Level.INFO, "Finished test: {0}", testName);
         }
     }
 
@@ -237,5 +265,29 @@
                     .get(ExtensionType.NormalJar).getApp(), appName);
         }
     }
+
+    public List<Path> getModuleList(Path dir) throws IOException {
+        try (DirectoryStream<Path> jarsStream = Files
+                .newDirectoryStream(dir, "*")) {
+            List<Path> modFiles = new ArrayList<>();
+            jarsStream.forEach(modFiles::add);
+            return modFiles;
+        }
+    }
+
+    @DataProvider(name = "getBundlers")
+    public Iterator<Object[]> getBundlers() {
+        List<BundlingManagers> packagerInterfaces = Stream
+                .of(getBundlingManagers()).filter(PackagerApiFilter::accept)
+                .collect(Collectors.toList());
+
+        List<AbstractBundlerUtils> installationPackageTypes = Stream
+                .of(getBundlerUtils()).filter(BundlerUtils::isSupported)
+                .filter(PackageTypeFilter::accept)
+                .map(BundlerUtils::getBundlerUtils).collect(toList());
+
+        return BundlerProvider.createBundlingManagers(installationPackageTypes,
+                packagerInterfaces, modulePathList, true);
+    }
 }
 
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/test/com/oracle/appbundlers/tests/functionality/jdk9test/NamedModuleBundledWithMinimumModulesAnd3rdPartyModulesTest.java	Mon Oct 10 20:56:50 2016 +0530
+++ b/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/test/com/oracle/appbundlers/tests/functionality/jdk9test/NamedModuleBundledWithMinimumModulesAnd3rdPartyModulesTest.java	Tue Oct 18 13:17:43 2016 +0530
@@ -19,9 +19,9 @@
 import com.oracle.appbundlers.utils.Utils;
 
 /**
- * Named Module + Minimum modules + 3rd party modules
- * -m hello.world/HelloWorld -addmods hello.world,3rd.party
- * -modulepath <path to 3rd party JARs>
+ * Named Module  + 3rd party modules
+ * -m hello.world/HelloWorld -addmods 3rd.party
+ * -modulepath <path to 3rd party modular JARs>
  * @author Ramesh BG
  */
 public class NamedModuleBundledWithMinimumModulesAnd3rdPartyModulesTest
@@ -40,7 +40,8 @@
     public AdditionalParams getAdditionalParams() {
         return () -> {
             Map<String, Object> hashMap = new HashMap<String, Object>();
-            hashMap.put(ADD_MODS, this.currentParameter.getApp().getAllModuleNamesSeparatedByComma());
+            hashMap.put(ADD_MODS, this.currentParameter.getApp()
+                    .getAllModuleNamesSeperatedByCommaExceptMainmodule());
             return hashMap;
         };
     }
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/test/com/oracle/appbundlers/tests/functionality/jdk9test/NamedModuleWithEntireJreTest.java	Mon Oct 10 20:56:50 2016 +0530
+++ b/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/test/com/oracle/appbundlers/tests/functionality/jdk9test/NamedModuleWithEntireJreTest.java	Tue Oct 18 13:17:43 2016 +0530
@@ -4,7 +4,6 @@
  */
 package com.oracle.appbundlers.tests.functionality.jdk9test;
 
-import static com.oracle.appbundlers.utils.installers.AbstractBundlerUtils.CHECK_MODULE_IN_JAVA_EXECUTABLE;
 import static com.oracle.appbundlers.utils.installers.AbstractBundlerUtils.OUTPUT_CONTAINS;
 
 import java.io.IOException;
@@ -18,9 +17,9 @@
 import com.oracle.appbundlers.utils.Utils;
 
 /**
- *  Named Module App + JRE
- * -m hello.world/HelloWorld -addmods hello.world, ALL_JRE
- * (implicit so not required)
+ * Named Module App + JRE
+ * -m hello.world/HelloWorld
+ * Simple Test Which Displays Hello World using Module.
  * @author Ramesh BG
  */
 public class NamedModuleWithEntireJreTest extends ModuleTestBase {
@@ -29,8 +28,6 @@
         return () -> {
             Map<String, Object> hashMap = new HashMap<String, Object>();
             hashMap.put(OUTPUT_CONTAINS, HELLO_WORLD_OUTPUT);
-            hashMap.put(CHECK_MODULE_IN_JAVA_EXECUTABLE,
-                    COM_GREETINGS_MODULE_CUM_PACKAGE_NAME);
             return hashMap;
         };
     }
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/test/com/oracle/appbundlers/tests/functionality/jdk9test/NamedModuleWithMinimumModulesTest.java	Mon Oct 10 20:56:50 2016 +0530
+++ b/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/test/com/oracle/appbundlers/tests/functionality/jdk9test/NamedModuleWithMinimumModulesTest.java	Tue Oct 18 13:17:43 2016 +0530
@@ -11,7 +11,6 @@
 import java.util.HashMap;
 import java.util.Map;
 
-import com.oracle.appbundlers.tests.functionality.functionalinterface.AdditionalParams;
 import com.oracle.appbundlers.tests.functionality.functionalinterface.VerifiedOptions;
 import com.oracle.appbundlers.utils.AppWrapper;
 import com.oracle.appbundlers.utils.ExtensionType;
@@ -21,6 +20,7 @@
 /**
  *  Named Module + Minimum modules
  *  -m hello.world/HelloWorld -mp hello.world.jar -addmods hello.world
+ *  checks for existence of module by executing java --list-modules
  *  @author Ramesh BG
  */
 public class NamedModuleWithMinimumModulesTest extends ModuleTestBase {
@@ -35,14 +35,6 @@
         };
     }
 
-    protected AdditionalParams getAdditionalParams() {
-        return () -> {
-            HashMap<String, Object> hashMap = new HashMap<String, Object>();
-            hashMap.put(ADD_MODS, COM_GREETINGS_MODULE_CUM_PACKAGE_NAME);
-            return hashMap;
-        };
-    }
-
     protected AppWrapper getApp() throws IOException {
         return new AppWrapper(Utils.getTempSubDir(WORK_DIRECTORY),
                 COM_GREETINGS_APP1_QUALIFIED_CLASS_NAME,
@@ -54,7 +46,6 @@
             throws IOException {
         if (ExtensionType.NormalJar != javaExtensionType) {
             this.currentParameter.setApp(getApp());
-            this.currentParameter.setAdditionalParams(getAdditionalParams());
             this.currentParameter.setVerifiedOptions(getVerifiedOptions());
         }
     }
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/test/com/oracle/appbundlers/tests/functionality/jdk9test/OtherClassInMainModuleTest.java	Mon Oct 10 20:56:50 2016 +0530
+++ b/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/test/com/oracle/appbundlers/tests/functionality/jdk9test/OtherClassInMainModuleTest.java	Tue Oct 18 13:17:43 2016 +0530
@@ -12,9 +12,8 @@
 import java.util.LinkedHashMap;
 import java.util.Map;
 
-import com.oracle.appbundlers.tests.functionality.functionalinterface.BasicParams;
+import com.oracle.appbundlers.tests.functionality.functionalinterface.AdditionalParams;
 import com.oracle.appbundlers.tests.functionality.functionalinterface.VerifiedOptions;
-import com.oracle.appbundlers.tests.functionality.parameters.GenericModuleParameters;
 import com.oracle.appbundlers.utils.AppWrapper;
 import com.oracle.appbundlers.utils.ExtensionType;
 import com.oracle.appbundlers.utils.Source;
@@ -27,13 +26,12 @@
  */
 public class OtherClassInMainModuleTest extends ModuleTestBase {
 
-    protected BasicParams getBasicParams() {
-        return (AppWrapper app) -> {
+    protected AdditionalParams getAdditionalParams() {
+        return () -> {
             Map<String, Object> params = new HashMap<>();
-            params.put(MODULEPATH, ((GenericModuleParameters) this.currentParameter).getModulePath());
-            params.put(APP_NAME, getResultingAppName());
             params.put(MAIN_MODULE,
-                    app.getMainModuleName() + "/" + COM_GREETINGS_APP2_QUALIFIED_CLASS_NAME);
+                    this.currentParameter.getApp().getMainModuleName() + "/"
+                            + COM_GREETINGS_APP2_QUALIFIED_CLASS_NAME);
             return params;
         };
     }
@@ -42,7 +40,7 @@
     public void overrideParameters(ExtensionType intermediate)
             throws IOException {
         this.currentParameter.setApp(getApp());
-        this.currentParameter.setBasicParams(getBasicParams());
+        this.currentParameter.setAdditionalParams(getAdditionalParams());
         this.currentParameter.setVerifiedOptions(getVerifiedOptions());
     }
 
--- a/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/test/com/oracle/appbundlers/tests/functionality/jdk9test/UnnamedModuleDependsOn3rdPartyModulesBundledWithEntireJreTest.java	Mon Oct 10 20:56:50 2016 +0530
+++ b/functional/appBundlerTestsJDK9/appBundlerTestsJDK9/test/com/oracle/appbundlers/tests/functionality/jdk9test/UnnamedModuleDependsOn3rdPartyModulesBundledWithEntireJreTest.java	Tue Oct 18 13:17:43 2016 +0530
@@ -22,6 +22,7 @@
 import com.oracle.appbundlers.tests.functionality.functionalinterface.VerifiedOptions;
 import com.oracle.appbundlers.tests.functionality.parameters.GenericModuleParameters;
 import com.oracle.appbundlers.utils.AppWrapper;
+import com.oracle.appbundlers.utils.BundlingManager;
 import com.oracle.appbundlers.utils.ExtensionType;
 import com.oracle.appbundlers.utils.SourceFactory;
 import com.oracle.appbundlers.utils.Utils;
@@ -38,21 +39,13 @@
         extends TestBase {
 
     protected AppWrapper getApp() throws IOException {
+        Map<String, String> hashMap = new HashMap<String, String>();
+        hashMap.put(PRINTLN_STATEMENT, CUSTOM_UTIL_PRINTLN_STATEMENT);
         return new AppWrapper(Utils.getTempSubDir(WORK_DIRECTORY),
                 COM_GREETINGS_APP1_QUALIFIED_CLASS_NAME,
-                DOUBLE_HYPHEN + ADD_EXPORTS + SPACE
-                        +
-                "custom.util/testapp.util=ALL-UNNAMED",
                 SourceFactory.get_custom_util_module(),
                 SourceFactory.get_com_greetings_app_unnamed_module(
-                        new HashMap<String, String>() {
-                            private static final long serialVersionUID = 2076100253408663958L;
-
-                            {
-                                put(PRINTLN_STATEMENT,
-                                        CUSTOM_UTIL_PRINTLN_STATEMENT);
-                            }
-                        }));
+                        hashMap));
     }
 
     public VerifiedOptions getVerifiedOptions() {
@@ -70,6 +63,7 @@
             Map<String, Object> hashMap = new HashMap<String, Object>();
             hashMap.put(ADD_MODS,
                     this.currentParameter.getApp().getAllModuleNamesSeparatedByComma());
+            hashMap.put(STRIP_NATIVE_COMMANDS, false);
             return hashMap;
         };
     }
@@ -99,7 +93,10 @@
         app.preinstallApp(
                 new ExtensionType[] { extension, ExtensionType.NormalJar });
         app.writeSourcesToAppDirectory();
-        app.compileAndCreateJavaExtensionProduct(extension);
+        app.compileAndCreateJavaExtensionType(
+                new String[] { DOUBLE_HYPHEN + ADD_EXPORTS,
+                        "custom.util/testapp.util=ALL-UNNAMED" },
+                extension);
     }
 
     @Override
@@ -126,6 +123,8 @@
                     this.currentParameter.getApp().getJarFilesList().stream()
                             .map(Path::getFileName).map(Path::toString)
                             .collect(Collectors.joining(File.pathSeparator)));
+            basicParams.put(MAIN_JAR,
+                    this.currentParameter.getApp().getMainJarFile().toFile().getName());
             basicParams.put(MODULEPATH, String.join(File.pathSeparator,
                     JMODS_PATH_IN_JDK, ((GenericModuleParameters) this.currentParameter).getModulePath()));
             return basicParams;
@@ -136,5 +135,11 @@
     public ExtensionType[] getExtensionArray() {
         return ExtensionType.getModuleTypes();
     }
+
+    @Override
+    protected void executeJavaPackager(BundlingManager bundlingManager,
+            Map<String, Object> allParams) throws IOException {
+        bundlingManager.execute(allParams, this.currentParameter.getApp(), true);
+    }
 }