< prev index next >

src/com/sun/javatest/TestSuite.java

Print this page
rev 145 : 7902237: Fixing raw use of parameterized class
Reviewed-by: jjg

*** 214,228 **** throw new NotTestSuiteFault(i18n, "ts.notTestSuiteFile", canonRoot); } File f = new File(canonRootDir, TESTSUITE_JTT); if (isReadableFile(f)) { ! try { ! Properties p = new Properties(); ! InputStream in = new BufferedInputStream(new FileInputStream(f)); ! p.load(in); ! in.close(); return open(canonRoot, p); } catch (IOException e) { throw new Fault(i18n, "ts.cantReadTestSuiteFile", e.toString()); } --- 214,225 ---- throw new NotTestSuiteFault(i18n, "ts.notTestSuiteFile", canonRoot); } File f = new File(canonRootDir, TESTSUITE_JTT); if (isReadableFile(f)) { ! try (InputStream in = new BufferedInputStream(new FileInputStream(f))) { ! Map<String, String> p = com.sun.javatest.util.Properties.load(in); return open(canonRoot, p); } catch (IOException e) { throw new Fault(i18n, "ts.cantReadTestSuiteFile", e.toString()); }
*** 231,241 **** // check for old style test suite File ts_html = new File(canonRootDir, TESTSUITE_HTML); File parentDir = canonRootDir.getParentFile(); File parent_jtt = (parentDir == null ? null : new File(parentDir, TESTSUITE_JTT)); if (isReadableFile(ts_html) && (parent_jtt == null || !parent_jtt.exists())) ! return open(canonRoot, new HashMap()); else throw new NotTestSuiteFault(i18n, "ts.notTestSuiteFile", canonRoot); } } --- 228,238 ---- // check for old style test suite File ts_html = new File(canonRootDir, TESTSUITE_HTML); File parentDir = canonRootDir.getParentFile(); File parent_jtt = (parentDir == null ? null : new File(parentDir, TESTSUITE_JTT)); if (isReadableFile(ts_html) && (parent_jtt == null || !parent_jtt.exists())) ! return open(canonRoot, new HashMap<String, String>()); else throw new NotTestSuiteFault(i18n, "ts.notTestSuiteFile", canonRoot); } }
*** 244,254 **** * @param root A file identifying the root of the test suite. * @param tsInfo Test Suite properties read from the test suite properties file. * @return A TestSuite object for the test suite in question. * @throws TestSuite.Fault if any problems occur while opening the test suite */ ! private static TestSuite open(File root, Map tsInfo) throws Fault { synchronized (dirMap) { TestSuite ts; // if this test suite has already been opened, return that WeakReference<TestSuite> ref = dirMap.get(root); --- 241,251 ---- * @param root A file identifying the root of the test suite. * @param tsInfo Test Suite properties read from the test suite properties file. * @return A TestSuite object for the test suite in question. * @throws TestSuite.Fault if any problems occur while opening the test suite */ ! private static TestSuite open(File root, Map<String, String> tsInfo) throws Fault { synchronized (dirMap) { TestSuite ts; // if this test suite has already been opened, return that WeakReference<TestSuite> ref = dirMap.get(root);
*** 266,277 **** dirMap.put(root, new WeakReference<>(ts)); return ts; } } ! private static TestSuite open0(File root, Map tsInfo) throws Fault { ! String[] classPath = StringArray.split((String) (tsInfo.get("classpath"))); ClassLoader cl; if (classPath.length == 0) cl = null; else { --- 263,274 ---- dirMap.put(root, new WeakReference<>(ts)); return ts; } } ! private static TestSuite open0(File root, Map<String, String> tsInfo) throws Fault { ! String[] classPath = StringArray.split(tsInfo.get("classpath")); ClassLoader cl; if (classPath.length == 0) cl = null; else {
*** 295,315 **** throw new Fault(i18n, "ts.badClassPath", new Object[] {root, e.getMessage()}); } } ! String[] tsClassAndArgs = StringArray.split((String) (tsInfo.get("testsuite"))); TestSuite testSuite; if (tsClassAndArgs.length == 0) testSuite = new TestSuite(root, tsInfo, cl); else { String className = tsClassAndArgs[0]; try { ! Class c = loadClass(className, cl); ! Class[] tsArgTypes = {File.class, Map.class, ClassLoader.class}; Object[] tsArgs = {root, tsInfo, cl}; testSuite = (TestSuite)(newInstance(c, tsArgTypes, tsArgs)); } catch (ClassCastException e) { throw new Fault(i18n, "ts.notASubtype", --- 292,312 ---- throw new Fault(i18n, "ts.badClassPath", new Object[] {root, e.getMessage()}); } } ! String[] tsClassAndArgs = StringArray.split(tsInfo.get("testsuite")); TestSuite testSuite; if (tsClassAndArgs.length == 0) testSuite = new TestSuite(root, tsInfo, cl); else { String className = tsClassAndArgs[0]; try { ! Class<?> c = loadClass(className, cl); ! Class<?>[] tsArgTypes = {File.class, Map.class, ClassLoader.class}; Object[] tsArgs = {root, tsInfo, cl}; testSuite = (TestSuite)(newInstance(c, tsArgTypes, tsArgs)); } catch (ClassCastException e) { throw new Fault(i18n, "ts.notASubtype",
*** 363,378 **** * in the root directory of the test suite. * @param cl A class loader to be used to load additional classes as required, * typically using a class path defined in the test suite properties file. * @throws TestSuite.Fault if a problem occurs while creating this test suite. */ ! public TestSuite(File root, Map tsInfo, ClassLoader cl) throws Fault { this.root = root; this.tsInfo = tsInfo; this.loader = cl; ! String kw = (tsInfo == null ? null : (String) (tsInfo.get("keywords"))); keywords = (kw == null ? null : StringArray.split(kw)); } /** --- 360,375 ---- * in the root directory of the test suite. * @param cl A class loader to be used to load additional classes as required, * typically using a class path defined in the test suite properties file. * @throws TestSuite.Fault if a problem occurs while creating this test suite. */ ! public TestSuite(File root, Map<String, String> tsInfo, ClassLoader cl) throws Fault { this.root = root; this.tsInfo = tsInfo; this.loader = cl; ! String kw = (tsInfo == null ? null : tsInfo.get("keywords")); keywords = (kw == null ? null : StringArray.split(kw)); } /**
*** 438,448 **** * <li>Otherwise, the result is the root directory of the test suite. * </ol> * @return the directory that contains the tests */ public File getTestsDir() { ! String t = (String) (tsInfo == null ? null : tsInfo.get("tests")); if (t == null || t.length() == 0) { File rootDir = getRootDir(); File testsDir = new File(rootDir, "tests"); if (testsDir.isDirectory()) { // if the tests directory exists, and there is no overriding --- 435,445 ---- * <li>Otherwise, the result is the root directory of the test suite. * </ol> * @return the directory that contains the tests */ public File getTestsDir() { ! String t = (tsInfo == null ? null : tsInfo.get("tests")); if (t == null || t.length() == 0) { File rootDir = getRootDir(); File testsDir = new File(rootDir, "tests"); if (testsDir.isDirectory()) { // if the tests directory exists, and there is no overriding
*** 549,559 **** */ protected TestFinder createTestFinder() throws Fault { File testsDir = getTestsDir(); // no BTF file; look for a finder=class args... entry ! String[] finderCmd = StringArray.split((String) (tsInfo.get("finder"))); String finderClassName; String[] finderArgs = new String[0]; if (finderCmd == null || finderCmd.length == 0) { //finderCmd = new String[] {HTMLTestFinder.class.getName()}; --- 546,556 ---- */ protected TestFinder createTestFinder() throws Fault { File testsDir = getTestsDir(); // no BTF file; look for a finder=class args... entry ! String[] finderCmd = StringArray.split((tsInfo.get("finder"))); String finderClassName; String[] finderArgs = new String[0]; if (finderCmd == null || finderCmd.length == 0) { //finderCmd = new String[] {HTMLTestFinder.class.getName()};
*** 571,581 **** // finderArgs should remain empty array } } // first, try looking for testsuite.jtd ! String jtd = (String) (tsInfo.get("testsuite.jtd")); File jtdFile = (jtd == null ? new File(testsDir, "testsuite.jtd") : new File(root, jtd)); if (jtdFile.exists()) { try { // found a file for BinaryTestFinder // only pass the finder class if it was not defaulted to HTMLTestFinder --- 568,578 ---- // finderArgs should remain empty array } } // first, try looking for testsuite.jtd ! String jtd = tsInfo.get("testsuite.jtd"); File jtdFile = (jtd == null ? new File(testsDir, "testsuite.jtd") : new File(root, jtd)); if (jtdFile.exists()) { try { // found a file for BinaryTestFinder // only pass the finder class if it was not defaulted to HTMLTestFinder
*** 589,599 **** // ignore, try to continue with normal finder } } try { ! Class c = loadClass(finderClassName); TestFinder tf = (TestFinder) (newInstance(c)); // called old deprecated entry till we know no-one cares //tf.init(finderArgs, testsRoot, null, null, tsInfo/*pass in env?*/); // this likely kills ExpandTestFinder, finally tf.init(finderArgs, testsDir, null, null, null/*pass in env?*/); --- 586,596 ---- // ignore, try to continue with normal finder } } try { ! Class<?> c = loadClass(finderClassName); TestFinder tf = (TestFinder) (newInstance(c)); // called old deprecated entry till we know no-one cares //tf.init(finderArgs, testsRoot, null, null, tsInfo/*pass in env?*/); // this likely kills ExpandTestFinder, finally tf.init(finderArgs, testsDir, null, null, null/*pass in env?*/);
*** 629,639 **** String finderArgs[], File testsDir, File jtdFile) throws Fault, TestFinder.Fault { try { TestFinder tf = null; if (finderClassName != null) { ! Class c = loadClass(finderClassName); tf = (TestFinder) (newInstance(c)); } if (tf instanceof BinaryTestFinder) { tf.init(finderArgs, testsDir, null, null, null); --- 626,636 ---- String finderArgs[], File testsDir, File jtdFile) throws Fault, TestFinder.Fault { try { TestFinder tf = null; if (finderClassName != null) { ! Class<?> c = loadClass(finderClassName); tf = (TestFinder) (newInstance(c)); } if (tf instanceof BinaryTestFinder) { tf.init(finderArgs, testsDir, null, null, null);
*** 695,705 **** WorkDirectory workDir, BackupPolicy backupPolicy) throws Fault { if (scriptClass == null) { String[] script = envLookup(scriptEnv, "script"); if (script.length == 0) ! script = StringArray.split((String) tsInfo.get("script")); if (script.length > 0) { scriptClass = loadClass(script[0]); if (!Script.class.isAssignableFrom(scriptClass)) { throw new Fault(i18n, "ts.notASubtype", new Object[] {script[0], "script", Script.class.getName()}); --- 692,702 ---- WorkDirectory workDir, BackupPolicy backupPolicy) throws Fault { if (scriptClass == null) { String[] script = envLookup(scriptEnv, "script"); if (script.length == 0) ! script = StringArray.split(tsInfo.get("script")); if (script.length > 0) { scriptClass = loadClass(script[0]); if (!Script.class.isAssignableFrom(scriptClass)) { throw new Fault(i18n, "ts.notASubtype", new Object[] {script[0], "script", Script.class.getName()});
*** 709,720 **** } else { // for backwards compatibility, // see if KeywordScript is a reasonable default boolean keywordScriptOK = false; ! for (Iterator i = scriptEnv.keys().iterator(); i.hasNext() && !keywordScriptOK; ) { ! String key = (String)(i.next()); keywordScriptOK = key.startsWith("script."); } if (keywordScriptOK) { scriptClass = KeywordScript.class; scriptArgs = new String[] { }; --- 706,717 ---- } else { // for backwards compatibility, // see if KeywordScript is a reasonable default boolean keywordScriptOK = false; ! for (Iterator<String> i = scriptEnv.keys().iterator(); i.hasNext() && !keywordScriptOK; ) { ! String key = i.next(); keywordScriptOK = key.startsWith("script."); } if (keywordScriptOK) { scriptClass = KeywordScript.class; scriptArgs = new String[] { };
*** 756,766 **** * @throws TestSuite.Fault if a problem occurs while creating the interview */ public InterviewParameters createInterview() throws Fault { ! String[] classNameAndArgs = StringArray.split((String) (tsInfo.get("interview"))); if (classNameAndArgs == null || classNameAndArgs.length == 0) { try { return new LegacyParameters(this); } catch (InterviewParameters.Fault e) { --- 753,763 ---- * @throws TestSuite.Fault if a problem occurs while creating the interview */ public InterviewParameters createInterview() throws Fault { ! String[] classNameAndArgs = StringArray.split((tsInfo.get("interview"))); if (classNameAndArgs == null || classNameAndArgs.length == 0) { try { return new LegacyParameters(this); } catch (InterviewParameters.Fault e) {
*** 773,783 **** String className = classNameAndArgs[0]; String[] args = new String[classNameAndArgs.length - 1]; System.arraycopy(classNameAndArgs, 1, args, 0, args.length); try { ! Class c = loadClass(className); InterviewParameters p = (InterviewParameters) (newInstance(c)); p.init(args); p.setTestSuite(this); return p; } --- 770,780 ---- String className = classNameAndArgs[0]; String[] args = new String[classNameAndArgs.length - 1]; System.arraycopy(classNameAndArgs, 1, args, 0, args.length); try { ! Class<?> c = loadClass(className); InterviewParameters p = (InterviewParameters) (newInstance(c)); p.init(args); p.setTestSuite(this); return p; }
*** 840,850 **** * in the .jtt file. * @return a unique ID identifying the test suite, or null if not specified. * @see #getName */ public String getID() { ! return (tsInfo == null ? null : (String) (tsInfo.get("id"))); } /** * Get a string identifying this test suite, or null if not available. * The default is taken from the "name" entry in the .jtt file. --- 837,847 ---- * in the .jtt file. * @return a unique ID identifying the test suite, or null if not specified. * @see #getName */ public String getID() { ! return (tsInfo == null ? null : tsInfo.get("id")); } /** * Get a string identifying this test suite, or null if not available. * The default is taken from the "name" entry in the .jtt file.
*** 852,862 **** * if appropriate. * @return a string identifying the test suite, or null if not specified. * @see #getID */ public String getName() { ! return (tsInfo == null ? null : (String) (tsInfo.get("name"))); } /** * Get the estimated number of tests in the test suite. * The default is to use the value of the "testCount" property from the --- 849,859 ---- * if appropriate. * @return a string identifying the test suite, or null if not specified. * @see #getID */ public String getName() { ! return (tsInfo == null ? null : tsInfo.get("name")); } /** * Get the estimated number of tests in the test suite. * The default is to use the value of the "testCount" property from the
*** 865,875 **** * @return The estimated number of tests, or -1 if this number is not available. */ public int getEstimatedTestCount() { try { if (tsInfo != null) { ! String s = (String) (tsInfo.get("testCount")); if (s != null) return Integer.parseInt(s); } } catch (NumberFormatException e) { --- 862,872 ---- * @return The estimated number of tests, or -1 if this number is not available. */ public int getEstimatedTestCount() { try { if (tsInfo != null) { ! String s = tsInfo.get("testCount"); if (s != null) return Integer.parseInt(s); } } catch (NumberFormatException e) {
*** 884,894 **** * testsuite.jtt file. If the value is a relative filename, it will be made absolute * by evaluating it relative to the test suite root directory. * @return the name of the default exclude list, or null if none specified. */ public File getInitialExcludeList() { ! String s = (tsInfo == null ? null : (String) (tsInfo.get("initial.jtx"))); if (s == null) return null; File f = new File(s.replace('/', File.separatorChar)); if (!f.isAbsolute()) --- 881,891 ---- * testsuite.jtt file. If the value is a relative filename, it will be made absolute * by evaluating it relative to the test suite root directory. * @return the name of the default exclude list, or null if none specified. */ public File getInitialExcludeList() { ! String s = (tsInfo == null ? null : tsInfo.get("initial.jtx")); if (s == null) return null; File f = new File(s.replace('/', File.separatorChar)); if (!f.isAbsolute())
*** 915,925 **** * identifying the latest exclude list for this test suite. * @return the name of the latest exclude list, or null if none specified. */ public URL getLatestExcludeList() { try { ! String s = (tsInfo == null ? null : (String) (tsInfo.get("latest.jtx"))); return (s == null ? null : new URL(s)); } catch (MalformedURLException e) { // ignore return null; --- 912,922 ---- * identifying the latest exclude list for this test suite. * @return the name of the latest exclude list, or null if none specified. */ public URL getLatestExcludeList() { try { ! String s = (tsInfo == null ? null : tsInfo.get("latest.jtx")); return (s == null ? null : new URL(s)); } catch (MalformedURLException e) { // ignore return null;
*** 953,963 **** * such documents. */ public String[] getAdditionalDocNames() { return (tsInfo == null ? null ! : StringArray.split((String) (tsInfo.get("additionalDocs")))); } /** * Get the set of valid keywords for this test suite. * By default, the keywords will be looked up under the name "keywords" --- 950,960 ---- * such documents. */ public String[] getAdditionalDocNames() { return (tsInfo == null ? null ! : StringArray.split((tsInfo.get("additionalDocs")))); } /** * Get the set of valid keywords for this test suite. * By default, the keywords will be looked up under the name "keywords"
*** 1008,1018 **** * Get A URL identifying a logo for this test suite, or null if none available. * @return a URL for a logo for the testsuite, or null if not available */ public URL getLogo() { try { ! String s = (tsInfo == null ? null : (String) (tsInfo.get("logo"))); return (s == null ? null : new URL(getRootDir().toURL(), s)); } catch (MalformedURLException e) { // ignore return null; --- 1005,1015 ---- * Get A URL identifying a logo for this test suite, or null if none available. * @return a URL for a logo for the testsuite, or null if not available */ public URL getLogo() { try { ! String s = (tsInfo == null ? null : tsInfo.get("logo")); return (s == null ? null : new URL(getRootDir().toURL(), s)); } catch (MalformedURLException e) { // ignore return null;
*** 1035,1045 **** * @param c the class to be instantiated * @return an instance of the specified class * @throws TestSuite.Fault if any errors arise while trying to instantiate * the class. */ ! protected static Object newInstance(Class c) throws Fault { try { return c.newInstance(); } catch (InstantiationException e) { throw new Fault(i18n, "ts.cantInstantiate", --- 1032,1042 ---- * @param c the class to be instantiated * @return an instance of the specified class * @throws TestSuite.Fault if any errors arise while trying to instantiate * the class. */ ! protected static Object newInstance(Class<?> c) throws Fault { try { return c.newInstance(); } catch (InstantiationException e) { throw new Fault(i18n, "ts.cantInstantiate",
*** 1061,1071 **** * @param args the arguments to be passed to the constructor * @return an instance of the specified class * @throws TestSuite.Fault if any errors arise while trying to instantiate * the class. */ ! protected static Object newInstance(Class<?> c, Class[] argTypes, Object[] args) throws Fault { try { return c.getConstructor(argTypes).newInstance(args); } --- 1058,1068 ---- * @param args the arguments to be passed to the constructor * @return an instance of the specified class * @throws TestSuite.Fault if any errors arise while trying to instantiate * the class. */ ! protected static Object newInstance(Class<?> c, Class<?>[] argTypes, Object[] args) throws Fault { try { return c.getConstructor(argTypes).newInstance(args); }
*** 1085,1095 **** throw new Fault(i18n, "ts.cantInit", new Object[] { c.getName(), te }); } catch (NoSuchMethodException e) { // don't recurse past the use of a single arg constructor if (argTypes.length > 1 && Boolean.getBoolean(FIND_LEGACY_CONSTRUCTOR)) { ! return newInstance(c, new Class[] {File.class}, new Object[] {args[0]}); } throw new Fault(i18n, "ts.cantFindConstructor", new Object[] { c.getName(), e }); } --- 1082,1092 ---- throw new Fault(i18n, "ts.cantInit", new Object[] { c.getName(), te }); } catch (NoSuchMethodException e) { // don't recurse past the use of a single arg constructor if (argTypes.length > 1 && Boolean.getBoolean(FIND_LEGACY_CONSTRUCTOR)) { ! return newInstance(c, new Class<?>[] {File.class}, new Object[] {args[0]}); } throw new Fault(i18n, "ts.cantFindConstructor", new Object[] { c.getName(), e }); }
*** 1099,1109 **** * Load a class using the class loader provided when this test suite was created. * @param className the name of the class to be loaded * @return the class that was loaded * @throws TestSuite.Fault if there was a problem loading the specified class */ ! public Class loadClass(String className) throws Fault { return loadClass(className, loader); } /** * Load a class using a specified loader, translating any errors that may arise --- 1096,1106 ---- * Load a class using the class loader provided when this test suite was created. * @param className the name of the class to be loaded * @return the class that was loaded * @throws TestSuite.Fault if there was a problem loading the specified class */ ! public Class<?> loadClass(String className) throws Fault { return loadClass(className, loader); } /** * Load a class using a specified loader, translating any errors that may arise
*** 1111,1121 **** * @param className the name of the class to be loaded * @param cl the class loader to use to load the specified class * @return the class that was loaded * @throws TestSuite.Fault if there was a problem loading the specified class */ ! protected static Class loadClass(String className, ClassLoader cl) throws Fault { try { if (cl == null) return Class.forName(className); else return cl.loadClass(className); --- 1108,1118 ---- * @param className the name of the class to be loaded * @param cl the class loader to use to load the specified class * @return the class that was loaded * @throws TestSuite.Fault if there was a problem loading the specified class */ ! protected static Class<?> loadClass(String className, ClassLoader cl) throws Fault { try { if (cl == null) return Class.forName(className); else return cl.loadClass(className);
*** 1167,1177 **** * the extra check is performed: check if the newly introduced method * is abstract or not. */ boolean isLegacy = false; try { ! Method m = sr.getClass().getMethod("getServiceDescriptorFileName", new Class[0]); if (Modifier.isAbstract(m.getModifiers())) { isLegacy = true; } } catch (NoSuchMethodException e) { isLegacy = true; --- 1164,1174 ---- * the extra check is performed: check if the newly introduced method * is abstract or not. */ boolean isLegacy = false; try { ! Method m = sr.getClass().getMethod("getServiceDescriptorFileName", new Class<?>[0]); if (Modifier.isAbstract(m.getModifiers())) { isLegacy = true; } } catch (NoSuchMethodException e) { isLegacy = true;
*** 1191,1205 **** public ServiceReader getServiceReader() { if (serviceReader != null) { return serviceReader; } ! String servInfo = (String)tsInfo.get("serviceReader"); if (servInfo != null) { String[] args = servInfo.split(" "); try { ! Class c = loadClass(args[0]); serviceReader = (ServiceReader) (newInstance(c)); if (args.length > 1) { // problem with java1.5, which has no Arrays.copyOfRange(); String[] copy = new String[args.length - 1]; for (int i = 1; i < args.length; i++) { --- 1188,1202 ---- public ServiceReader getServiceReader() { if (serviceReader != null) { return serviceReader; } ! String servInfo = tsInfo.get("serviceReader"); if (servInfo != null) { String[] args = servInfo.split(" "); try { ! Class<?> c = loadClass(args[0]); serviceReader = (ServiceReader) (newInstance(c)); if (args.length > 1) { // problem with java1.5, which has no Arrays.copyOfRange(); String[] copy = new String[args.length - 1]; for (int i = 1; i < args.length; i++) {
*** 1225,1235 **** /** * Get a map containing the test suite data in the .jtt file. * @return a map containing the test suite data in the .jtt file */ ! protected Map getTestSuiteInfo() { return tsInfo; } /** * Get an entry from the data in the .jtt file. --- 1222,1232 ---- /** * Get a map containing the test suite data in the .jtt file. * @return a map containing the test suite data in the .jtt file */ ! protected Map<String, String> getTestSuiteInfo() { return tsInfo; } /** * Get an entry from the data in the .jtt file.
*** 1238,1248 **** */ public String getTestSuiteInfo(String name) { if (tsInfo == null) return null; else ! return (String) (tsInfo.get(name)); } /** * Get the requested behavior for dealing with conflicts between * which tests are in the test suite vs those in the work directory. --- 1235,1245 ---- */ public String getTestSuiteInfo(String name) { if (tsInfo == null) return null; else ! return (tsInfo.get(name)); } /** * Get the requested behavior for dealing with conflicts between * which tests are in the test suite vs those in the work directory.
*** 1481,1496 **** private static final String TESTSUITE_HTML = "testsuite.html"; private static final String TESTSUITE_JTT = "testsuite.jtt"; private static final String FIND_LEGACY_CONSTRUCTOR = "com.sun.javatest.ts.findLegacyCtor"; private File root; ! private Map tsInfo; private ClassLoader loader; private TestFinder finder; // the following are used by the default impl of createScript ! private Class scriptClass; private String[] scriptArgs; private String[] keywords; private ServiceReader serviceReader; --- 1478,1493 ---- private static final String TESTSUITE_HTML = "testsuite.html"; private static final String TESTSUITE_JTT = "testsuite.jtt"; private static final String FIND_LEGACY_CONSTRUCTOR = "com.sun.javatest.ts.findLegacyCtor"; private File root; ! private Map<String, String> tsInfo; private ClassLoader loader; private TestFinder finder; // the following are used by the default impl of createScript ! private Class<?> scriptClass; private String[] scriptArgs; private String[] keywords; private ServiceReader serviceReader;
< prev index next >