org.jboss.wise.core.utils
Class JavaUtils

java.lang.Object
  extended by org.jboss.wise.core.utils.JavaUtils

public class JavaUtils
extends java.lang.Object

Java utilities

Author:
stefano.maestri@javalinux.it class imported from JBossWS.

Constructor Summary
JavaUtils()
           
 
Method Summary
static java.lang.String capitalize(java.lang.String source)
           
static void clearBlacklists(java.lang.ClassLoader loader)
          Clears black lists on a JBoss RepositoryClassLoader.
static java.lang.String convertJVMNameToSourceName(java.lang.String typeName, java.lang.ClassLoader loader)
           
static java.lang.Class erasure(java.lang.reflect.Type type)
          Erases a type according to the JLS type erasure rules
static java.lang.String getPackageName(java.lang.Class<?> clazz)
           
static java.lang.Class getPrimitiveType(java.lang.Class javaType)
          Get the corresponding primitive for a give wrapper type.
static java.lang.Class getPrimitiveType(java.lang.String javaType)
           
static java.lang.Object getPrimitiveValueArray(java.lang.Object value)
          Converts an n-dimensional array of wrapper types to primitive types
static java.lang.String[] getRawParameterTypeArguments(java.lang.reflect.ParameterizedType type)
           
static java.lang.String getSourceName(java.lang.Class type)
           
static java.lang.Class getWrapperType(java.lang.Class javaType)
          Get the corresponding wrapper type for a give primitive.
static java.lang.Object getWrapperValueArray(java.lang.Object value)
          Converts an n-dimensional array of primitive types to wrapper types
static boolean isAssignableFrom(java.lang.Class dest, java.lang.Class src)
          Return true if the dest class is assignable from the src.
static boolean isJBossRepositoryClassLoader(java.lang.ClassLoader loader)
          Tests if this class loader is a JBoss RepositoryClassLoader
static boolean isLoaded(java.lang.String className, java.lang.ClassLoader loader)
           
static boolean isPrimitive(java.lang.Class javaType)
          True if the given class is a primitive or array of which.
static boolean isPrimitive(java.lang.String javaType)
          True if the given type name is the source notation of a primitive or array of which.
static boolean isReservedKeyword(java.lang.String keyword)
           
static boolean isRetro14()
          This method tests for retro translation by searching for a known problem where Class does not implement Type.
static java.lang.Class loadJavaType(java.lang.String typeName)
          Load a Java type from a given class loader.
static java.lang.Class loadJavaType(java.lang.String typeName, java.lang.ClassLoader classLoader)
          Load a Java type from a given class loader.
static java.lang.String printArray(java.lang.Object[] val)
           
static java.lang.Object syncArray(java.lang.Object array, java.lang.Class target)
           
static java.lang.String toSignature(java.lang.String externalName)
          Converts a JVM external name to a JVM signature name.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JavaUtils

public JavaUtils()
Method Detail

loadJavaType

public static java.lang.Class loadJavaType(java.lang.String typeName)
                                    throws java.lang.ClassNotFoundException
Load a Java type from a given class loader.

Parameters:
typeName - maybe the source notation of a primitve, class name, array of both
Returns:
Class
Throws:
java.lang.ClassNotFoundException

loadJavaType

public static java.lang.Class loadJavaType(java.lang.String typeName,
                                           java.lang.ClassLoader classLoader)
                                    throws java.lang.ClassNotFoundException
Load a Java type from a given class loader.

Parameters:
typeName -
classLoader -
Returns:
Class
Throws:
java.lang.ClassNotFoundException

isPrimitive

public static boolean isPrimitive(java.lang.String javaType)
True if the given type name is the source notation of a primitive or array of which.

Parameters:
javaType -
Returns:
boolean

isPrimitive

public static boolean isPrimitive(java.lang.Class javaType)
True if the given class is a primitive or array of which.

Parameters:
javaType - boolean
Returns:
boolean

getPrimitiveType

public static java.lang.Class getPrimitiveType(java.lang.String javaType)

getPrimitiveType

public static java.lang.Class getPrimitiveType(java.lang.Class javaType)
Get the corresponding primitive for a give wrapper type. Also handles arrays of which.

Parameters:
javaType -
Returns:
Class

getPrimitiveValueArray

public static java.lang.Object getPrimitiveValueArray(java.lang.Object value)
Converts an n-dimensional array of wrapper types to primitive types

Parameters:
value -
Returns:
Object

getWrapperType

public static java.lang.Class getWrapperType(java.lang.Class javaType)
Get the corresponding wrapper type for a give primitive. Also handles arrays of which.

Parameters:
javaType -
Returns:
Class

getWrapperValueArray

public static java.lang.Object getWrapperValueArray(java.lang.Object value)
Converts an n-dimensional array of primitive types to wrapper types

Parameters:
value -
Returns:
Object

syncArray

public static java.lang.Object syncArray(java.lang.Object array,
                                         java.lang.Class target)

isAssignableFrom

public static boolean isAssignableFrom(java.lang.Class dest,
                                       java.lang.Class src)
Return true if the dest class is assignable from the src. Also handles arrays and primitives.

Parameters:
dest -
src -
Returns:
boolean

convertJVMNameToSourceName

public static java.lang.String convertJVMNameToSourceName(java.lang.String typeName,
                                                          java.lang.ClassLoader loader)

toSignature

public static java.lang.String toSignature(java.lang.String externalName)
Converts a JVM external name to a JVM signature name. An external name is that which is returned from Class.getName() A signature name is the name in class file format.

For example:

[java.lang.Object

becomes:

[Ljava/lang/Object;

Parameters:
externalName -
Returns:
Strimg

printArray

public static java.lang.String printArray(java.lang.Object[] val)

getSourceName

public static java.lang.String getSourceName(java.lang.Class type)

capitalize

public static java.lang.String capitalize(java.lang.String source)

isLoaded

public static boolean isLoaded(java.lang.String className,
                               java.lang.ClassLoader loader)

getPackageName

public static java.lang.String getPackageName(java.lang.Class<?> clazz)

isReservedKeyword

public static boolean isReservedKeyword(java.lang.String keyword)

erasure

public static java.lang.Class erasure(java.lang.reflect.Type type)
Erases a type according to the JLS type erasure rules

Parameters:
type -
Returns:
erased type

getRawParameterTypeArguments

public static java.lang.String[] getRawParameterTypeArguments(java.lang.reflect.ParameterizedType type)

isRetro14

public static boolean isRetro14()
This method tests for retro translation by searching for a known problem where Class does not implement Type. If this is true, then code must never cast a Class to a Type.

Returns:
true if we are in retro

isJBossRepositoryClassLoader

public static boolean isJBossRepositoryClassLoader(java.lang.ClassLoader loader)
Tests if this class loader is a JBoss RepositoryClassLoader

Parameters:
loader -
Returns:
boolean

clearBlacklists

public static void clearBlacklists(java.lang.ClassLoader loader)
Clears black lists on a JBoss RepositoryClassLoader. This is somewhat of a hack, and could be replaced with an integration module. This is needed when the following order of events occur.
  1. loadClass() returns not found
  2. Some call to defineClass()
    1. The CNFE triggers a black list addition, which cause the class never again to be found.

      Parameters:
      loader - the loader to clear black lists for