Jason Dillon wrote:

> What is the value for name you are using?


In my test code "java.lang.Object[]"

 
> Why not just use Class.class?


Because I am trying to load a parameter type from an xml file that

just has the string name of the type.



> Or if you really want to use Class.forName to load Class, then you 
> should be able to use the system class loader.

>
> Is this after yesterdays Server/ServerLoader change?


No new feature.  Class.forName docs say you can load arrays but it is 
broken.  Here is the code I use now:

private Class convertToJavaClass(String name) throws DeploymentException {
    // Check primitive first
    for (int i = 0; i < PRIMITIVES.length; i++) {
       if(name.equals(PRIMITIVES[i])) {
          return PRIMITIVE_CLASSES[i];
       }
    }

    int arraySize = 0;
    while(name.endsWith("[]")) {
       name = name.substring(0, name.length()-2);
       arraySize++;
    }

    try {
       // get the base class
       Class c = entity.getClassLoader().loadClass(name);

       // if we have an array get the array class
       if(arraySize > 0) {
          int[] dimensions = new int[arraySize];
          for(int i=0; i<arraySize; i++) {
             dimensions[i]=1;
          }
          c = Array.newInstance(c, dimensions).getClass();
       }

       return c;
    } catch(ClassNotFoundException e) {
       throw new DeploymentException("Parameter class not found: " +
             name);
    }
}

This is lame but works.

-dain


_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to