jsonp signature test enhancements.

Signed-off-by: gurunandan.rao@oracle.com <gurunandan.rao@oracle.com>
diff --git a/impl-tck/tck-tests/pom.xml b/impl-tck/tck-tests/pom.xml
index 136181f..e2508ed 100644
--- a/impl-tck/tck-tests/pom.xml
+++ b/impl-tck/tck-tests/pom.xml
@@ -61,34 +61,6 @@
                 <artifactId>maven-dependency-plugin</artifactId>
                 <version>3.2.0</version>
                 <executions>
-                    <execution>
-                        <id>copy-jsonp-tck-signature-files</id>
-                        <phase>generate-test-sources</phase>
-                        <goals>
-                            <goal>unpack</goal>
-                        </goals>
-                        <configuration>
-                        <artifactItems>
-                            <artifactItem>
-                                <groupId>jakarta.json</groupId>
-                                <artifactId>jakarta.json-tck-tests</artifactId>
-                                <version>${jsonp-tck.version}</version>
-                                <type>jar</type>
-                                <overWrite>true</overWrite>
-                            </artifactItem>
-                      </artifactItems>
-                      <!-- We need the signature file, mapping file and package list file -->
-                      <includes>**/*sig-test*,**/*jakarta.json.sig_*,**/*sig-test-pkg-list.txt</includes>
-                      <outputDirectory>${project.build.directory}/signaturedirectory</outputDirectory>
-                      </configuration>
-                    </execution>
-                </executions>
-            </plugin> 
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-dependency-plugin</artifactId>
-                <version>3.2.0</version>
-                <executions>
                   <execution>
                     <id>copy</id>
                     <phase>generate-test-sources</phase>
@@ -120,9 +92,6 @@
                     <dependenciesToScan>jakarta.json:jakarta.json-tck-tests</dependenciesToScan>
                     <systemPropertyVariables>
                         <jimage.dir>${project.build.directory}/jdk11-bundle</jimage.dir>
-                        <signature.mapfile>${project.build.directory}/signaturedirectory/jakarta/jsonp/tck/signaturetest/sig-test.map</signature.mapfile>
-                        <signature.repositoryDir>${project.build.directory}/signaturedirectory/jakarta/jsonp/tck/signaturetest</signature.repositoryDir>
-                        <signature.packagelist>${project.build.directory}/signaturedirectory/jakarta/jsonp/tck/signaturetest/sig-test-pkg-list.txt</signature.packagelist>
                         <signature.sigTestClasspath>${project.build.directory}/signaturedirectory/jakarta.json-api.jar:${project.build.directory}/jdk11-bundle/java.base:${project.build.directory}/jdk11-bundle/java.rmi:${project.build.directory}/jdk11-bundle/java.sql:${project.build.directory}/jdk11-bundle/java.naming</signature.sigTestClasspath>
                     </systemPropertyVariables>
                   </configuration>
@@ -149,9 +118,6 @@
                             </includes>
                             <systemPropertyVariables>
                                 <jimage.dir>${project.build.directory}/jdk11-bundle</jimage.dir>
-                                <signature.mapfile>${project.build.directory}/signaturedirectory/jakarta/jsonp/tck/signaturetest/sig-test.map</signature.mapfile>
-                                <signature.repositoryDir>${project.build.directory}/signaturedirectory/jakarta/jsonp/tck/signaturetest</signature.repositoryDir>
-                                <signature.packagelist>${project.build.directory}/signaturedirectory/jakarta/jsonp/tck/signaturetest/sig-test-pkg-list.txt</signature.packagelist>
                                 <signature.sigTestClasspath>${project.build.directory}/signaturedirectory/jakarta.json-api.jar:${project.build.directory}/jdk11-bundle/java.base:${project.build.directory}/jdk11-bundle/java.rmi:${project.build.directory}/jdk11-bundle/java.sql:${project.build.directory}/jdk11-bundle/java.naming</signature.sigTestClasspath>
                             </systemPropertyVariables>
                         </configuration>
diff --git a/tck/tck-tests/src/main/java/jakarta/jsonp/tck/signaturetest/README b/tck/tck-tests/src/main/java/jakarta/jsonp/tck/signaturetest/README
index 1cc412c..9c061a9 100644
--- a/tck/tck-tests/src/main/java/jakarta/jsonp/tck/signaturetest/README
+++ b/tck/tck-tests/src/main/java/jakarta/jsonp/tck/signaturetest/README
@@ -30,67 +30,21 @@
 
       The signature file name expected is jakarta.json.sig_${version} , where version is the api version for which the signature is generated.
 
-  2. Place the required files in the TCK folder :
-
-    All the below files has to be placed in the folder tck/tck-tests/src/main/java/jakarta/jsonp/tck/signaturetest, so they are included as part of the TCK jar during the build.
-
-    -The signature file generated from above of the name jakarta.json.sig_${version}
-    -The mapping file will be named sig-test.map, it contains the api to version mapping. This file will be used to pick the right signature file when running the signature test.
-    -The package list file will be named sig-test-pkg-list.txt, contains the list of packages tested.
-
-
 
 For TCK users (to run the signature test as a Junit test) :-
 
-  1. The signature test related files will need to be extracted from the jar to a known location to be used for running the test.
-For eg: in maven we can use the below code to extract the signature file, mapping file and package list file to ${project.build.directory}/signaturedirectory.
-
-  <plugin>
-    <groupId>org.apache.maven.plugins</groupId>
-    <artifactId>maven-dependency-plugin</artifactId>
-    <version>3.2.0</version>
-    <executions>
-        <execution>
-            <id>copy-jsonp-tck-signature-files</id>
-            <phase>generate-test-sources</phase>
-            <goals>
-                <goal>unpack</goal>
-            </goals>
-            <configuration>
-            <artifactItems>
-                <artifactItem>
-                    <groupId>jakarta.json</groupId>
-                    <artifactId>jakarta.json-tck-tests</artifactId>
-                    <version>${jsonp-tck.version}</version>
-                    <type>jar</type>
-                    <overWrite>true</overWrite>
-                </artifactItem>
-          </artifactItems>
-          <!-- We need the signature file, mapping file and package list file -->
-          <includes>**/*sig-test*,**/*jakarta.json.sig_*,**/*sig-test-pkg-list.txt</includes>
-          <outputDirectory>${project.build.directory}/signaturedirectory</outputDirectory>
-          </configuration>
-        </execution>
-    </executions>
-  </plugin> 
-  2. Set the below system properties correctly :
+  1.Set the below system properties correctly :
 
     jimage.dir //The jdk9+(jdk11 for this release) will be extracted to this location as to use the Java modules in the path.
     optional.tech.packages.to.ignore // The optional package that should be ignored while running the signature test
-    signature.mapfile //The full path of the signature mapping file
-    signature.repositoryDir // The directory where the signature file is placed.
-    signature.packagelist //The full path of the list of packages that will be tested.
     signature.sigTestClasspath // the sigTestClasspath that will contain the implementation jar that needs to be tested along with dependent jars.
 
     For eg:
 
     <jimage.dir>${project.build.directory}/jdk11-bundle</jimage.dir>
     <optional.tech.packages.to.ignore>jakarta.xml.bind</optional.tech.packages.to.ignore>
-    <signature.mapfile>${project.build.directory}/signaturedirectory/jakarta/jsonp/tck/signaturetest/sig-test.map</signature.mapfile>
-    <signature.repositoryDir>${project.build.directory}/signaturedirectory/jakarta/jsonp/tck/signaturetest</signature.repositoryDir>
-    <signature.packagelist>${project.build.directory}/signaturedirectory/jakarta/jsonp/tck/signaturetest/sig-test-pkg-list.txt</signature.packagelist>
     <signature.sigTestClasspath>${project.build.directory}/signaturedirectory/jakarta.json-api.jar:${project.build.directory}/jdk11-bundle/java.base:${project.build.directory}/jdk11-bundle/java.rmi:${project.build.directory}/jdk11-bundle/java.sql:${project.build.directory}/jdk11-bundle/java.naming</signature.sigTestClasspath>
 
-  3. The signature test alone can be run using below command within jersey-tck/ directory.
+  2. The signature test alone can be run using below command within impl-tck/ directory.
 
-  mvn clean verify -Dit.test=jakarta.jsonp.tck.signaturetest.**
+    mvn clean test -Dtest=jakarta.jsonp.tck.signaturetest.jsonp.JSONPSigTest#signatureTest
diff --git a/tck/tck-tests/src/main/java/jakarta/jsonp/tck/signaturetest/jsonp/JSONPSigTest.java b/tck/tck-tests/src/main/java/jakarta/jsonp/tck/signaturetest/jsonp/JSONPSigTest.java
index e09f542..042db22 100644
--- a/tck/tck-tests/src/main/java/jakarta/jsonp/tck/signaturetest/jsonp/JSONPSigTest.java
+++ b/tck/tck-tests/src/main/java/jakarta/jsonp/tck/signaturetest/jsonp/JSONPSigTest.java
@@ -31,12 +31,7 @@
 import jakarta.jsonp.tck.signaturetest.SigTestResult;
 
 
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.InputStreamReader;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.io.PrintStream;
+import java.io.*;
 
 import java.util.ArrayList;
 import java.util.Properties;
@@ -72,6 +67,62 @@
 
   }
 
+
+  public File writeStreamToTempFile(InputStream inputStream, String tempFilePrefix, String tempFileSuffix) throws IOException {
+    FileOutputStream outputStream = null;
+
+    try {
+        File file = File.createTempFile(tempFilePrefix, tempFileSuffix);
+        outputStream = new FileOutputStream(file);
+        byte[] buffer = new byte[1024];
+        while (true) {
+            int bytesRead = inputStream.read(buffer);
+            if (bytesRead == -1) {
+                break;
+            }
+            outputStream.write(buffer, 0, bytesRead);
+        }
+        return file;
+    }
+
+    finally {
+        if (outputStream != null) {
+            outputStream.close();
+        }
+    }
+  }
+
+  public File writeStreamToSigFile(InputStream inputStream, String packageVersion) throws IOException {
+    FileOutputStream outputStream = null;
+    String tmpdir = System.getProperty("java.io.tmpdir");
+    try {
+        File sigfile = new File(tmpdir+File.separator+"jakarta.json.sig_"+packageVersion);
+        if(sigfile.exists()){
+          sigfile.delete();
+          System.out.println("Existing signature file deleted to create new one");
+        }
+        if(!sigfile.createNewFile()){
+          System.out.println("signature file is not created");
+        }
+        outputStream = new FileOutputStream(sigfile);
+        byte[] buffer = new byte[1024];
+        while (true) {
+            int bytesRead = inputStream.read(buffer);
+            if (bytesRead == -1) {
+                break;
+            }
+            outputStream.write(buffer, 0, bytesRead);
+        }
+        return sigfile;
+    }
+
+    finally {
+        if (outputStream != null) {
+            outputStream.close();
+        }
+    }
+  }
+
   /***** Boilerplate Code *****/
 
 
@@ -96,8 +147,8 @@
   /*
    * @testName: signatureTest
    * 
-   * @assertion: A JSONB container must implement the required classes and APIs
-   * specified in the JSONB Specification.
+   * @assertion: A JSONP container must implement the required classes and APIs
+   * specified in the JSONP Specification.
    * 
    * @test_Strategy: Using reflection, gather the implementation specific
    * classes and APIs. Compare these results with the expected (required)
@@ -106,13 +157,40 @@
    */
   @Test
   public void signatureTest() throws Fault {
-    System.out.println("$$$ JSONBSigTest.signatureTest() called");
+    System.out.println("$$$ JSONPSigTest.signatureTest() called");
     SigTestResult results = null;
-    String mapFile = System.getProperty("signature.mapfile");
-    String repositoryDir = System.getProperty("signature.repositoryDir");
+    String mapFile = null;
+    String packageFile = null;
+    String repositoryDir = null;
+    Properties mapFileAsProps = null;
+    try {
+
+    InputStream inStreamMapfile = JSONPSigTest.class.getClassLoader().getResourceAsStream("jakarta/jsonp/tck/signaturetest/sig-test.map");
+    File mFile = writeStreamToTempFile(inStreamMapfile, "sig-test", ".map");
+    mapFile = mFile.getCanonicalPath();
+    System.out.println("mapFile location is :"+mapFile);
+
+    InputStream inStreamPackageFile = JSONPSigTest.class.getClassLoader().getResourceAsStream("jakarta/jsonp/tck/signaturetest/sig-test-pkg-list.txt");
+    File pFile = writeStreamToTempFile(inStreamPackageFile, "sig-test-pkg-list", ".txt");
+    packageFile = pFile.getCanonicalPath();
+    System.out.println("packageFile location is :"+packageFile);
+  
+    mapFileAsProps = getSigTestDriver().loadMapFile(mapFile);
+    String packageVersion = mapFileAsProps.getProperty("jakarta.json");
+    System.out.println("Package version from mapfile :"+ packageVersion);
+
+    InputStream inStreamSigFile = JSONPSigTest.class.getClassLoader().getResourceAsStream("jakarta/jsonp/tck/signaturetest/jakarta.json.sig_"+packageVersion);
+    File sigFile = writeStreamToSigFile(inStreamSigFile, packageVersion);
+    System.out.println("signature File location is :"+sigFile.getCanonicalPath());
+    repositoryDir = System.getProperty("java.io.tmpdir");
+
+
+    } catch(IOException ex){
+        System.out.println("Exception while creating temp files :"+ex);
+    }
+
     String[] packages = getPackages(testInfo.getVehicle());
     String[] classes = getClasses(testInfo.getVehicle());
-    String packageFile = System.getProperty("signature.packagelist");
     String testClasspath = System.getProperty("signature.sigTestClasspath");
     String optionalPkgToIgnore = testInfo.getOptionalTechPackagesToIgnore();
 
@@ -168,10 +246,9 @@
       // Call verifyJtaJarTest based on some conditions, please check the
       // comment for verifyJtaJarTest.
       if ("standalone".equalsIgnoreCase(testInfo.getVehicle())) {
-        Properties mapFileAsProps = getSigTestDriver().loadMapFile(mapFile);
         if (mapFileAsProps == null || mapFileAsProps.size() == 0) {
           // empty signature file, something unusual
-          System.out.println("JSONBSigTest.signatureTest() returning, " +
+          System.out.println("JSONPSigTest.signatureTest() returning, " +
               "as signature map file is empty.");
           return;
         }
@@ -182,7 +259,7 @@
         // jakarta.transaction
         String jtaVersion = mapFileAsProps.getProperty("jakarta.transaction");
         if (jtaVersion == null || "".equals(jtaVersion.trim())) {
-          System.out.println("JSONBSigTest.signatureTest() returning, " +
+          System.out.println("JSONPSigTest.signatureTest() returning, " +
               "as this is neither JTA TCK run, not Java EE CTS run.");
           return;
         }
@@ -198,10 +275,10 @@
           verifyJtaJarTest();
         }
       }
-      System.out.println("$$$ JSONBSigTest.signatureTest() returning");
+      System.out.println("$$$ JSONPSigTest.signatureTest() returning");
     } catch (Exception e) {
       if (results != null && !results.passed()) {
-        throw new Fault("JSONBSigTest.signatureTest() failed!, diffs found");
+        throw new Fault("JSONPSigTest.signatureTest() failed!, diffs found");
       } else {
         System.out.println("Unexpected exception " + e.getMessage());
         throw new Fault("signatureTest failed with an unexpected exception", e);
@@ -209,5 +286,9 @@
     }
   }
 
+  /*
+   * Call the parent class's cleanup method.
+   */
 
-} // end class JSONBSigTest
+
+} // end class JSONPSigTest