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);
> }
> }