This patch cleans up the gjavah source code so it
no longer produces a mass of warnings related to generics.
We're a little restricted in what we can do by the external
ASM library which is not yet using generics, either in
GNU Classpath or upstream.

ChangeLog:

2009-03-20  Andrew John Hughes  <ahug...@redhat.com>

        * tools/gnu/classpath/tools/javah/ClassWrapper.java,
        * tools/gnu/classpath/tools/javah/CniPrintStream.java,
        * tools/gnu/classpath/tools/javah/CniStubPrinter.java,
        * tools/gnu/classpath/tools/javah/GcjhMain.java,
        * tools/gnu/classpath/tools/javah/JniIncludePrinter.java,
        * tools/gnu/classpath/tools/javah/JniPrintStream.java,
        * tools/gnu/classpath/tools/javah/JniStubPrinter.java,
        * tools/gnu/classpath/tools/javah/Keywords.java,
        * tools/gnu/classpath/tools/javah/Main.java,
        * tools/gnu/classpath/tools/javah/MethodHelper.java,
        * tools/gnu/classpath/tools/javah/PathOptionGroup.java:
        Fix generic issues in gjavah.

-- 
Andrew :)

Red Hat Free Java Software Engineer
Index: tools/gnu/classpath/tools/javah/ClassWrapper.java
===================================================================
RCS file: 
/sources/classpath/classpath/tools/gnu/classpath/tools/javah/ClassWrapper.java,v
retrieving revision 1.4
diff -u -r1.4 ClassWrapper.java
--- tools/gnu/classpath/tools/javah/ClassWrapper.java   2 Sep 2008 22:00:31 
-0000       1.4
+++ tools/gnu/classpath/tools/javah/ClassWrapper.java   20 Mar 2009 12:27:14 
-0000
@@ -58,21 +58,21 @@
 
   ClassWrapper superClass;
 
-  ArrayList interfaceClasses;
+  ArrayList<ClassWrapper> interfaceClasses;
 
   // The virtual table for this class.
-  ArrayList vtable;
+  ArrayList<MethodNode> vtable;
 
   // A set of all the bridge method targets we've found.
-  HashSet bridgeTargets;
+  HashSet<String> bridgeTargets;
 
   // A set of all the method names in this class.
-  HashSet methodNames = new HashSet();
+  HashSet<String> methodNames = new HashSet<String>();
 
   // This maps a method name + descriptor, e.g. "method()V", to the
   // name chosen for the method.  This is used when computing the
   // names of bridge method targets.
-  HashMap methodNameMap = new HashMap();
+  HashMap<String,String> methodNameMap = new HashMap<String,String>();
 
   public ClassWrapper(Main classpath)
   {
@@ -81,7 +81,7 @@
 
   public boolean hasNativeMethod()
   {
-    Iterator i = methods.iterator();
+    Iterator<?> i = methods.iterator();
     while (i.hasNext())
       {
         MethodNode method = (MethodNode) i.next();
@@ -115,7 +115,7 @@
       {
         superClass = classpath.getClass(superName);
         assert interfaceClasses == null;
-        interfaceClasses = new ArrayList();
+        interfaceClasses = new ArrayList<ClassWrapper>();
         for (int i = 0; i < interfaces.size(); ++i)
           {
             String ifname = (String) interfaces.get(i);
@@ -131,7 +131,7 @@
   {
     for (int i = vtable.size() - 1; i >= 0; --i)
       {
-        MethodNode base = (MethodNode) vtable.get(i);
+        MethodNode base = vtable.get(i);
         if (MethodHelper.overrides(method, base))
           return i;
       }
@@ -140,7 +140,7 @@
 
   private void addInterfaceMethods(ClassWrapper iface)
   {
-    Iterator i = iface.methods.iterator();
+    Iterator<?> i = iface.methods.iterator();
     while (i.hasNext())
       {
         MethodNode im = (MethodNode) i.next();
@@ -159,7 +159,7 @@
   {
     if (base.interfaceClasses == null)
       return;
-    Iterator i = base.interfaceClasses.iterator();
+    Iterator<?> i = base.interfaceClasses.iterator();
     while (i.hasNext())
       {
         ClassWrapper iface = (ClassWrapper) i.next();
@@ -169,7 +169,7 @@
 
   private void addLocalMethods()
   {
-    Iterator i = methods.iterator();
+    Iterator<?> i = methods.iterator();
     while (i.hasNext())
       {
         MethodNode meth = (MethodNode) i.next();
@@ -191,16 +191,16 @@
     if (superClass != null)
       {
         superClass.makeVtable();
-        vtable = new ArrayList(superClass.vtable);
-        bridgeTargets = new HashSet(superClass.bridgeTargets);
-       methodNameMap = new HashMap(superClass.methodNameMap);
+        vtable = new ArrayList<MethodNode>(superClass.vtable);
+        bridgeTargets = new HashSet<String>(superClass.bridgeTargets);
+       methodNameMap = new HashMap<String,String>(superClass.methodNameMap);
       }
     else
       {
         // Object.
-        vtable = new ArrayList();
-        bridgeTargets = new HashSet();
-       methodNameMap = new HashMap();
+        vtable = new ArrayList<MethodNode>();
+        bridgeTargets = new HashSet<String>();
+       methodNameMap = new HashMap<String,String>();
       }
     addLocalMethods();
     addInterfaces(this);
@@ -211,7 +211,7 @@
     // methods by definition override a method from the superclass --
     // and we have to consider the superclass' header as an
     // unchangeable entity.
-    Iterator i = methods.iterator();
+    Iterator<?> i = methods.iterator();
     while (i.hasNext())
       {
         MethodNode m = (MethodNode) i.next();
@@ -234,7 +234,7 @@
 
   private void printFields(CniPrintStream out)
   {
-    Iterator i = fields.iterator();
+    Iterator<?> i = fields.iterator();
     ClassWrapper self = superClass;
     while (i.hasNext())
       {
@@ -251,7 +251,7 @@
 
     // A given method is either static, overrides a super method, or
     // is already in vtable order.
-    Iterator i = methods.iterator();
+    Iterator<?> i = methods.iterator();
     while (i.hasNext())
       {
         MethodNode m = (MethodNode) i.next();
@@ -266,15 +266,15 @@
       }
   }
 
-  private void printTextList(PrintStream out, int what, ArrayList textList)
+  private void printTextList(PrintStream out, int what, ArrayList<Text> 
textList)
   {
     if (textList == null)
       return;
-    Iterator i = textList.iterator();
+    Iterator<Text> i = textList.iterator();
     boolean first = true;
     while (i.hasNext())
       {
-        Text item = (Text) i.next();
+        Text item = i.next();
         if (item.type == what)
           {
             if (first)
@@ -295,7 +295,7 @@
   }
 
   // This prints the body of a class to a CxxPrintStream.
-  private void printContents(CniPrintStream out, ArrayList textList)
+  private void printContents(CniPrintStream out, ArrayList<Text> textList)
       throws IOException
   {
     printTextList(out, Text.PREPEND, textList);
@@ -337,7 +337,7 @@
   {
     linkSupers();
 
-    ArrayList textList = classpath.getClassTextList(name);
+    ArrayList<Text> textList = classpath.getClassTextList(name);
 
     out.println("// DO NOT EDIT THIS FILE - it is machine generated -*- c++ 
-*-");
     out.println();
Index: tools/gnu/classpath/tools/javah/CniPrintStream.java
===================================================================
RCS file: 
/sources/classpath/classpath/tools/gnu/classpath/tools/javah/CniPrintStream.java,v
retrieving revision 1.2
diff -u -r1.2 CniPrintStream.java
--- tools/gnu/classpath/tools/javah/CniPrintStream.java 20 Oct 2006 22:37:06 
-0000      1.2
+++ tools/gnu/classpath/tools/javah/CniPrintStream.java 20 Mar 2009 12:27:14 
-0000
@@ -55,7 +55,7 @@
   boolean sawArray;
 
   // All the classes referenced by this header.
-  HashSet allClasses = new HashSet();
+  HashSet<String> allClasses = new HashSet<String>();
 
   String[] previousPackage = new String[0];
 
@@ -214,7 +214,7 @@
         out.println();
       }
 
-    String[] classes = (String[]) allClasses.toArray(new String[0]);
+    String[] classes = allClasses.toArray(new String[0]);
     Arrays.sort(classes);
 
     boolean first = true;
Index: tools/gnu/classpath/tools/javah/CniStubPrinter.java
===================================================================
RCS file: 
/sources/classpath/classpath/tools/gnu/classpath/tools/javah/CniStubPrinter.java,v
retrieving revision 1.3
diff -u -r1.3 CniStubPrinter.java
--- tools/gnu/classpath/tools/javah/CniStubPrinter.java 16 Mar 2007 22:42:43 
-0000      1.3
+++ tools/gnu/classpath/tools/javah/CniStubPrinter.java 20 Mar 2009 12:27:14 
-0000
@@ -103,7 +103,7 @@
     out.println("#include <" + klass.name + ".h>");
     out.println();
 
-    Iterator i = klass.methods.iterator();
+    Iterator<?> i = klass.methods.iterator();
     boolean first = true;
     while (i.hasNext())
       {
Index: tools/gnu/classpath/tools/javah/GcjhMain.java
===================================================================
RCS file: 
/sources/classpath/classpath/tools/gnu/classpath/tools/javah/GcjhMain.java,v
retrieving revision 1.2
diff -u -r1.2 GcjhMain.java
--- tools/gnu/classpath/tools/javah/GcjhMain.java       5 Jun 2008 23:58:47 
-0000       1.2
+++ tools/gnu/classpath/tools/javah/GcjhMain.java       20 Mar 2009 12:27:14 
-0000
@@ -49,7 +49,7 @@
 
 public class GcjhMain extends Main
 {
-  ArrayList commands = new ArrayList();
+  ArrayList<Text> commands = new ArrayList<Text>();
 
   public GcjhMain()
   {
Index: tools/gnu/classpath/tools/javah/JniIncludePrinter.java
===================================================================
RCS file: 
/sources/classpath/classpath/tools/gnu/classpath/tools/javah/JniIncludePrinter.java,v
retrieving revision 1.8
diff -u -r1.8 JniIncludePrinter.java
--- tools/gnu/classpath/tools/javah/JniIncludePrinter.java      31 Jul 2007 
16:15:53 -0000      1.8
+++ tools/gnu/classpath/tools/javah/JniIncludePrinter.java      20 Mar 2009 
12:27:14 -0000
@@ -63,7 +63,7 @@
     boolean wroteAny = false;
     for (; klass != null; klass = klass.superClass)
       {
-        Iterator i = klass.fields.iterator();
+        Iterator<?> i = klass.fields.iterator();
         while (i.hasNext())
           {
             FieldNode field = (FieldNode) i.next();
@@ -138,7 +138,7 @@
     out.println("#endif");
     out.println();
 
-    Iterator i = klass.methods.iterator();
+    Iterator<?> i = klass.methods.iterator();
     while (i.hasNext())
       {
         MethodNode method = (MethodNode) i.next();
Index: tools/gnu/classpath/tools/javah/JniPrintStream.java
===================================================================
RCS file: 
/sources/classpath/classpath/tools/gnu/classpath/tools/javah/JniPrintStream.java,v
retrieving revision 1.1
diff -u -r1.1 JniPrintStream.java
--- tools/gnu/classpath/tools/javah/JniPrintStream.java 28 Jul 2006 15:22:29 
-0000      1.1
+++ tools/gnu/classpath/tools/javah/JniPrintStream.java 20 Mar 2009 12:27:14 
-0000
@@ -54,7 +54,7 @@
   Main classpath;
 
   // This is used to determine whether a method has an overload.
-  HashMap methodNameMap = new HashMap();
+  HashMap<String,Integer> methodNameMap = new HashMap<String,Integer>();
 
   public JniPrintStream(Main classpath, OutputStream out, ClassWrapper klass)
   {
@@ -65,7 +65,7 @@
 
   private void computeOverloads(ClassWrapper klass)
   {
-    Iterator i = klass.methods.iterator();
+    Iterator<?> i = klass.methods.iterator();
     while (i.hasNext())
       {
         MethodNode method = (MethodNode) i.next();
@@ -73,11 +73,11 @@
           continue;
         if (methodNameMap.containsKey(method.name))
           {
-            Integer val = (Integer) methodNameMap.get(method.name);
-            methodNameMap.put(method.name, new Integer(val.intValue() + 1));
+            Integer val = methodNameMap.get(method.name);
+            methodNameMap.put(method.name, Integer.valueOf(val.intValue() + 
1));
           }
         else
-          methodNameMap.put(method.name, new Integer(1));
+          methodNameMap.put(method.name, Integer.valueOf(1));
       }
   }
 
Index: tools/gnu/classpath/tools/javah/JniStubPrinter.java
===================================================================
RCS file: 
/sources/classpath/classpath/tools/gnu/classpath/tools/javah/JniStubPrinter.java,v
retrieving revision 1.5
diff -u -r1.5 JniStubPrinter.java
--- tools/gnu/classpath/tools/javah/JniStubPrinter.java 16 Mar 2007 22:42:43 
-0000      1.5
+++ tools/gnu/classpath/tools/javah/JniStubPrinter.java 20 Mar 2009 12:27:14 
-0000
@@ -87,7 +87,7 @@
     out.print(klass.name.replace('/', '_'));
     out.println(".h>");
 
-    Iterator i = klass.methods.iterator();
+    Iterator<?> i = klass.methods.iterator();
     while (i.hasNext())
       {
         MethodNode method = (MethodNode) i.next();
Index: tools/gnu/classpath/tools/javah/Keywords.java
===================================================================
RCS file: 
/sources/classpath/classpath/tools/gnu/classpath/tools/javah/Keywords.java,v
retrieving revision 1.1
diff -u -r1.1 Keywords.java
--- tools/gnu/classpath/tools/javah/Keywords.java       28 Jul 2006 15:22:29 
-0000      1.1
+++ tools/gnu/classpath/tools/javah/Keywords.java       20 Mar 2009 12:27:14 
-0000
@@ -65,10 +65,10 @@
                                          "void", "volatile", "wchar_t",
                                          "while", "xor", "xor_eq" };
 
-  private static final HashSet keywords;
+  private static final HashSet<String> keywords;
   static
     {
-      keywords = new HashSet();
+      keywords = new HashSet<String>();
       for (int i = 0; i < words.length; ++i)
         keywords.add(words[i]);
     }
Index: tools/gnu/classpath/tools/javah/Main.java
===================================================================
RCS file: 
/sources/classpath/classpath/tools/gnu/classpath/tools/javah/Main.java,v
retrieving revision 1.11
diff -u -r1.11 Main.java
--- tools/gnu/classpath/tools/javah/Main.java   5 Jun 2008 23:58:47 -0000       
1.11
+++ tools/gnu/classpath/tools/javah/Main.java   20 Mar 2009 12:27:14 -0000
@@ -96,10 +96,10 @@
   boolean force;
 
   // Map class names to class wrappers.
-  HashMap classMap = new HashMap();
+  HashMap<String,ClassWrapper> classMap = new HashMap<String,ClassWrapper>();
 
   // Map class names to lists of Text objects.
-  HashMap textMap = new HashMap();
+  HashMap<String,ArrayList<Text>> textMap = new 
HashMap<String,ArrayList<Text>>();
 
   void readCommandFile(String textFileName) throws OptionException
   {
@@ -114,7 +114,7 @@
       }
     BufferedReader reader = new BufferedReader(new InputStreamReader(fis));
     String currentClass = null;
-    ArrayList currentValues = null;
+    ArrayList<Text> currentValues = null;
     while (true)
       {
         String line;
@@ -142,7 +142,7 @@
                 textMap.put(currentClass, currentValues);
               }
             currentClass = value;
-            currentValues = new ArrayList();
+            currentValues = new ArrayList<Text>();
             continue;
           }
         if (currentClass == null)
@@ -165,7 +165,7 @@
       }
   }
 
-  void scanDirectory(File dir, final HashSet results)
+  void scanDirectory(File dir, final HashSet<Object> results)
   {
     File[] files = dir.listFiles(new FileFilter()
     {
@@ -317,15 +317,15 @@
     return result;
   }
 
-  private void writeHeaders(HashMap klasses, Printer printer)
+  private void writeHeaders(HashMap<File,ClassWrapper> klasses, Printer 
printer)
       throws IOException
   {
-    Iterator i = klasses.entrySet().iterator();
+    Iterator<Map.Entry<File,ClassWrapper>> i = klasses.entrySet().iterator();
     while (i.hasNext())
       {
-       Map.Entry e = (Map.Entry) i.next();
-       File file = (File) e.getKey();
-        ClassWrapper klass = (ClassWrapper) e.getValue();
+       Map.Entry<File,ClassWrapper> e = i.next();
+       File file = e.getKey();
+        ClassWrapper klass = e.getValue();
         if (verbose)
           System.err.println("[writing " + klass + " as " + file + "]");
         printer.printClass(file, klass);
@@ -368,7 +368,7 @@
     // First we load all of the files. That way if
     // there are references between the files we will
     // be loading the set that the user asked for.
-    HashSet klasses = new HashSet();
+    HashSet<Object> klasses = new HashSet<Object>();
     if (allDirectory != null)
       scanDirectory(new File(allDirectory), klasses);
     // Add the command-line arguments. We use the type of
@@ -385,8 +385,8 @@
           }
       }
 
-    Iterator i = klasses.iterator();
-    HashMap results = new HashMap();
+    Iterator<Object> i = klasses.iterator();
+    HashMap<File,ClassWrapper> results = new HashMap<File,ClassWrapper>();
     while (i.hasNext())
       {
         // Let user specify either kind of class name or a
@@ -419,9 +419,9 @@
     writeHeaders(results, printer);
   }
 
-  public ArrayList getClassTextList(String name)
+  public ArrayList<Text> getClassTextList(String name)
   {
-    return (ArrayList) textMap.get(name);
+    return textMap.get(name);
   }
 
   private ClassWrapper readClass(InputStream is) throws IOException
Index: tools/gnu/classpath/tools/javah/MethodHelper.java
===================================================================
RCS file: 
/sources/classpath/classpath/tools/gnu/classpath/tools/javah/MethodHelper.java,v
retrieving revision 1.2
diff -u -r1.2 MethodHelper.java
--- tools/gnu/classpath/tools/javah/MethodHelper.java   19 Apr 2007 00:14:15 
-0000      1.2
+++ tools/gnu/classpath/tools/javah/MethodHelper.java   20 Mar 2009 12:27:14 
-0000
@@ -64,7 +64,7 @@
   {
     if ((meth.access & Opcodes.ACC_BRIDGE) == 0)
       return null;
-    Iterator i = meth.instructions.iterator();
+    Iterator<?> i = meth.instructions.iterator();
     while (i.hasNext())
       {
         AbstractInsnNode insn = (AbstractInsnNode) i.next();
Index: tools/gnu/classpath/tools/javah/PathOptionGroup.java
===================================================================
RCS file: 
/sources/classpath/classpath/tools/gnu/classpath/tools/javah/PathOptionGroup.java,v
retrieving revision 1.4
diff -u -r1.4 PathOptionGroup.java
--- tools/gnu/classpath/tools/javah/PathOptionGroup.java        7 Feb 2007 
21:49:49 -0000       1.4
+++ tools/gnu/classpath/tools/javah/PathOptionGroup.java        20 Mar 2009 
12:27:14 -0000
@@ -55,11 +55,11 @@
 public class PathOptionGroup
     extends OptionGroup
 {
-  ArrayList classpath = new ArrayList();
+  ArrayList<String> classpath = new ArrayList<String>();
 
-  ArrayList bootclasspath = new ArrayList();
+  ArrayList<String> bootclasspath = new ArrayList<String>();
 
-  void setPath(ArrayList list, String path)
+  void setPath(ArrayList<String> list, String path)
   {
     list.clear();
     StringTokenizer st = new StringTokenizer(path, File.pathSeparator);
@@ -69,7 +69,7 @@
       }
   }
 
-  void addExtDirs(ArrayList list, String path)
+  void addExtDirs(ArrayList<String> list, String path)
   {
     StringTokenizer tok = new StringTokenizer(path, File.pathSeparator);
     while (tok.hasMoreTokens())
@@ -133,15 +133,15 @@
 
   public URLClassLoader getLoader() throws MalformedURLException
   {
-    ArrayList urls = new ArrayList();
+    ArrayList<URL> urls = new ArrayList<URL>();
     classpath.addAll(bootclasspath);
-    Iterator i = classpath.iterator();
+    Iterator<String> i = classpath.iterator();
     while (i.hasNext())
       {
-        String f = (String) i.next();
+        String f = i.next();
         urls.add(new File(f).toURL());
       }
-    URL[] urlArray = (URL[]) urls.toArray(new URL[0]);
+    URL[] urlArray = urls.toArray(new URL[0]);
     return new URLClassLoader(urlArray);
   }
 }

Reply via email to