EJBs do often use several helper classes, that apper as exceptions,
arguments and return values in their signatures. With a little more
reflection, we can find most of them.

.. attached is a diff, that could be applied to revision 1.20 of
GenericDeployTool.java

Holger
60a61
> import java.lang.reflect.*;
768a770
>                           checkMethods(c, checkEntries);
827a830,872
>     }
> 
>     private void checkMethods(Class clazz, Hashtable checkEntries) {
>       Method methods[] = clazz.getMethods();
>       for (int m=0; m < methods.length; m++) {
>           Class[] classes;
>           // parameters
>           classes = methods[m].getParameterTypes();
>           for (int c=0; c < classes.length; c++) {
>               if (classes[c].getName().startsWith("java"))
>                   continue;
> 
>               String name = classes[c].getName().replace('.', 
> File.separatorChar) + ".class";
>               File classFile = new File(config.srcDir.getAbsolutePath() 
>                                                  + File.separatorChar + name);
> 
>               if (classFile.exists() && classFile.isFile())
>                   checkEntries.put(name, classFile);
>           }
>           // exceptions
>           classes = methods[m].getExceptionTypes();
>           for (int c=0; c < classes.length; c++) {
>               if (classes[c].getName().startsWith("java"))
>                   continue;
> 
>               String name = classes[c].getName().replace('.', 
> File.separatorChar) + ".class";
>               File classFile = new File(config.srcDir.getAbsolutePath() 
>                                                  + File.separatorChar + name);
> 
>               if (classFile.exists() && classFile.isFile())
>                   checkEntries.put(name, classFile);
>           }
>           // return type
>           Class type = methods[m].getReturnType();
>           if (!type.getName().startsWith("java")) {
>               String name = type.getName().replace('.', File.separatorChar) + 
> ".class";
>               File classFile = new File(config.srcDir.getAbsolutePath() 
>                                                  + File.separatorChar + name);
> 
>               if (classFile.exists() && classFile.isFile())
>                   checkEntries.put(name, classFile);
>           }
>       }

Reply via email to