< prev index next >

src/com/sun/javatest/batch/ObserverCommand.java

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


  75                         if (v == null)
  76                             v = new Vector<>();
  77                         v.add(arg);
  78                     }
  79                 }
  80                 break;
  81             }
  82         }
  83 
  84         if (className == null)
  85             throw new Fault(i18n, "observer.noClassName");
  86 
  87         if (v != null) {
  88             classArgs = new String[v.size()];
  89             v.copyInto(classArgs);
  90         }
  91     }
  92 
  93     public void run(CommandContext ctx) throws Fault {
  94         try {
  95             Class oc = loadClass(className);
  96 
  97             Harness.Observer o = null;
  98             if (classArgs == null || classArgs.length == 0) {
  99                 o = tryConstructor(oc,
 100                                    new Class[] { },
 101                                    new Object[] { });
 102             }
 103             else if (classArgs.length == 1) {
 104                 o = tryConstructor(oc,
 105                                    new Class[] { String.class },
 106                                    new Object[] { classArgs[0] });
 107             }
 108 
 109             if (o == null)
 110                 o = tryConstructor(oc,
 111                                    new Class[] { String[].class },
 112                                    new Object[] { classArgs });
 113 
 114             if (o == null)
 115                 throw new Fault(i18n, "observer.cantFindConstructor", className);
 116 
 117             ctx.addHarnessObserver(o);
 118         }
 119         catch (ClassNotFoundException e) {
 120             throw new Fault(i18n, "observer.cantFindClass", className);
 121         }
 122         catch (IllegalAccessException e) {
 123             throw new Fault(i18n, "observer.cantAccessClass", className);
 124         }
 125         catch (InstantiationException e) {
 126             throw new Fault(i18n, "observer.cantCreateClass", className);
 127         }
 128         catch (InvocationTargetException e) {
 129             throw new Fault(i18n, "observer.cantCreateClass", className);
 130         }
 131     }
 132 
 133     private Harness.Observer tryConstructor(Class<?> obsClass, Class[] argTypes, Object[] args)
 134         throws IllegalAccessException, InstantiationException, InvocationTargetException
 135     {
 136         try {
 137             Constructor c = obsClass.getConstructor(argTypes);
 138             return (Harness.Observer) (c.newInstance(args));
 139         }
 140         catch (NoSuchMethodException e) {
 141             return null;
 142         }
 143     }
 144 
 145     private void setClassPath(String s) throws Fault {
 146         char pathCh = File.pathSeparatorChar;
 147         Vector<URL> v = new Vector<>();
 148         int start = 0;
 149         for (int i = s.indexOf(pathCh); i != -1; i = s.indexOf(pathCh, start)) {
 150             addClassPathEntry(s.substring(start, i), v);
 151             start = i + 1;
 152         }
 153         addClassPathEntry(s.substring(start), v);
 154         URL[] path = new URL[v.size()];
 155         v.copyInto(path);
 156         setClassPath(path);
 157     }
 158 
 159     private void setClassPath(URL[] path) {
 160         classLoader = new URLClassLoader(path);
 161     }
 162 
 163     private Class loadClass(String name) throws ClassNotFoundException {
 164         return (classLoader == null ? Class.forName(name) : classLoader.loadClass(name));
 165     }
 166 
 167     private void addClassPathEntry(String s, Vector<URL> v) throws Fault {
 168         try {
 169             if (s.length() > 0)
 170                 v.add(new File(s).toURL());
 171         }
 172         catch (MalformedURLException e) {
 173             throw new Fault(i18n, "observer.badClassPath", new Object[] { s, e });
 174         }
 175     }
 176 
 177     private ClassLoader classLoader;
 178     private String className;
 179     private String[] classArgs;
 180 
 181     private static I18NResourceBundle i18n = I18NResourceBundle.getBundleForClass(BatchManager.class);
 182 }


  75                         if (v == null)
  76                             v = new Vector<>();
  77                         v.add(arg);
  78                     }
  79                 }
  80                 break;
  81             }
  82         }
  83 
  84         if (className == null)
  85             throw new Fault(i18n, "observer.noClassName");
  86 
  87         if (v != null) {
  88             classArgs = new String[v.size()];
  89             v.copyInto(classArgs);
  90         }
  91     }
  92 
  93     public void run(CommandContext ctx) throws Fault {
  94         try {
  95             Class<?> oc = loadClass(className);
  96 
  97             Harness.Observer o = null;
  98             if (classArgs == null || classArgs.length == 0) {
  99                 o = tryConstructor(oc,
 100                                    new Class<?>[] { },
 101                                    new Object[] { });
 102             }
 103             else if (classArgs.length == 1) {
 104                 o = tryConstructor(oc,
 105                                    new Class<?>[] { String.class },
 106                                    new Object[] { classArgs[0] });
 107             }
 108 
 109             if (o == null)
 110                 o = tryConstructor(oc,
 111                                    new Class<?>[] { String[].class },
 112                                    new Object[] { classArgs });
 113 
 114             if (o == null)
 115                 throw new Fault(i18n, "observer.cantFindConstructor", className);
 116 
 117             ctx.addHarnessObserver(o);
 118         }
 119         catch (ClassNotFoundException e) {
 120             throw new Fault(i18n, "observer.cantFindClass", className);
 121         }
 122         catch (IllegalAccessException e) {
 123             throw new Fault(i18n, "observer.cantAccessClass", className);
 124         }
 125         catch (InstantiationException e) {
 126             throw new Fault(i18n, "observer.cantCreateClass", className);
 127         }
 128         catch (InvocationTargetException e) {
 129             throw new Fault(i18n, "observer.cantCreateClass", className);
 130         }
 131     }
 132 
 133     private Harness.Observer tryConstructor(Class<?> obsClass, Class<?>[] argTypes, Object[] args)
 134         throws IllegalAccessException, InstantiationException, InvocationTargetException
 135     {
 136         try {
 137             Constructor<?> c = obsClass.getConstructor(argTypes);
 138             return (Harness.Observer) (c.newInstance(args));
 139         }
 140         catch (NoSuchMethodException e) {
 141             return null;
 142         }
 143     }
 144 
 145     private void setClassPath(String s) throws Fault {
 146         char pathCh = File.pathSeparatorChar;
 147         Vector<URL> v = new Vector<>();
 148         int start = 0;
 149         for (int i = s.indexOf(pathCh); i != -1; i = s.indexOf(pathCh, start)) {
 150             addClassPathEntry(s.substring(start, i), v);
 151             start = i + 1;
 152         }
 153         addClassPathEntry(s.substring(start), v);
 154         URL[] path = new URL[v.size()];
 155         v.copyInto(path);
 156         setClassPath(path);
 157     }
 158 
 159     private void setClassPath(URL[] path) {
 160         classLoader = new URLClassLoader(path);
 161     }
 162 
 163     private Class<?> loadClass(String name) throws ClassNotFoundException {
 164         return (classLoader == null ? Class.forName(name) : classLoader.loadClass(name));
 165     }
 166 
 167     private void addClassPathEntry(String s, Vector<URL> v) throws Fault {
 168         try {
 169             if (s.length() > 0)
 170                 v.add(new File(s).toURL());
 171         }
 172         catch (MalformedURLException e) {
 173             throw new Fault(i18n, "observer.badClassPath", new Object[] { s, e });
 174         }
 175     }
 176 
 177     private ClassLoader classLoader;
 178     private String className;
 179     private String[] classArgs;
 180 
 181     private static I18NResourceBundle i18n = I18NResourceBundle.getBundleForClass(BatchManager.class);
 182 }
< prev index next >