org.jboss.soa.esb.actions.soap.attachment
Class JavaUtils

java.lang.Object
  extended by org.jboss.soa.esb.actions.soap.attachment.JavaUtils

public class JavaUtils
extends java.lang.Object

Java utilities

Since:
22-Dec-2004
Author:
Thomas.Diesler@jboss.org

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 getJustClassName(java.lang.Class<?> cls)
          Given a class, strip out the package name
static java.lang.String getJustClassName(java.lang.String classname)
          Given a FQN of a class, strip out the package name
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
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 - maybe the source notation of a primitve, class name, array of both
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.


isPrimitive

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


getPrimitiveType

public static java.lang.Class<?> getPrimitiveType(java.lang.String javaType)

getJustClassName

public static java.lang.String getJustClassName(java.lang.Class<?> cls)
Given a class, strip out the package name

Parameters:
cls -
Returns:
just the classname

getJustClassName

public static java.lang.String getJustClassName(java.lang.String classname)
Given a FQN of a class, strip out the package name

Parameters:
classname -
Returns:
just the classname

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.


getPrimitiveValueArray

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


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.


getWrapperValueArray

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


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.


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:

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:
t - type to erase
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:

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