org.aspectj.util
Class LangUtil

java.lang.Object
  extended by org.aspectj.util.LangUtil

public class LangUtil
extends java.lang.Object


Nested Class Summary
static class LangUtil.ProcessController
          Handle an external process asynchrously.
static class LangUtil.StringChecker
          check if input contains any packages to elide.
 
Field Summary
static java.lang.String EOL
           
 
Constructor Summary
LangUtil()
           
 
Method Summary
static java.util.List<java.lang.String> anySplit(java.lang.String input, java.lang.String delim)
          Splits input, removing delimiter and trimming any white space.
static java.util.List<java.lang.Object> arrayAsList(java.lang.Object[] array)
          Replacement for Arrays.asList(..) which gacks on null and returns a List in which remove is an unsupported operation.
static java.util.List<java.lang.String> commaSplit(java.lang.String input)
          Splits input at commas, trimming any white space.
static java.lang.String[][] copyStrings(java.lang.String[][] in)
          copy non-null two-dimensional String[][]
static java.lang.String[] extractOptions(java.lang.String[] args, java.lang.String[][] options)
          Extract options and arguments to input option list, returning remainder.
static boolean getBoolean(java.lang.String propertyName, boolean defaultValue)
          Get System property as boolean, but use default value where the system property is not set.
static java.io.File getJavaExecutable()
          Find java executable File path from java.home system property.
static boolean is13VMOrGreater()
           
static boolean is14VMOrGreater()
           
static boolean is15VMOrGreater()
           
static boolean is16VMOrGreater()
           
static boolean is17VMOrGreater()
           
static boolean isEmpty(byte[] ra)
           
static boolean isEmpty(java.util.Collection<?> collection)
           
static boolean isEmpty(java.util.Map<?,?> map)
           
static boolean isEmpty(java.lang.Object[] ra)
           
static boolean isEmpty(java.lang.String s)
           
static java.lang.String makeClasspath(java.lang.String bootclasspath, java.lang.String classpath, java.lang.String classesDir, java.lang.String outputJar)
          Gen classpath.
static LangUtil.ProcessController makeProcess(LangUtil.ProcessController controller, java.lang.String classpath, java.lang.String mainClass, java.lang.String[] args)
          Create or initialize a process controller to run a process in another VM asynchronously.
static java.lang.String renderException(java.lang.Throwable t)
          Renders exception t after unwrapping and eliding any test packages.
static java.lang.String renderException(java.lang.Throwable t, boolean elide)
          Renders exception t, unwrapping, optionally eliding and limiting total number of lines.
static java.lang.String renderExceptionShort(java.lang.Throwable e)
           
static java.lang.String replace(java.lang.String in, java.lang.String sought, java.lang.String replace)
          inefficient way to replace all instances of sought with replace
static java.lang.Object[] safeCopy(java.lang.Object[] source, java.lang.Object[] sink)
          Convert arrays safely.
static
<T> java.util.List<T>
safeList(java.util.List<T> list)
           
static boolean sleepUntil(long time)
          Sleep until a particular time.
static java.lang.String[] split(java.lang.String text)
          Splits text at whitespace.
static java.lang.String[] splitClasspath(java.lang.String classpath)
          Split string as classpath, delimited at File.pathSeparator.
static java.lang.StringBuffer stackToString(java.lang.Throwable throwable, boolean skipMessage)
          Dump message and stack to StringBuffer.
static java.util.List<java.lang.String> strings(java.lang.String text)
          Splits strings into a List using a StringTokenizer.
static void throwIaxIfFalse(boolean test, java.lang.String message)
          Shorthand for "if false, throw IllegalArgumentException"
static void throwIaxIfNotAssignable(java.lang.Object[] ra, java.lang.Class<?> c, java.lang.String name)
          Shorthand for "if not null or not assignable, throw IllegalArgumentException"
static void throwIaxIfNotAssignable(java.lang.Object o, java.lang.Class<?> c, java.lang.String name)
          Shorthand for "if not null or not assignable, throw IllegalArgumentException"
static void throwIaxIfNull(java.lang.Object o, java.lang.String name)
          Shorthand for "if null, throw IllegalArgumentException"
static java.lang.String toSizedString(long i, int width)
          render i right-justified with a given width less than about 40
static java.lang.String unqualifiedClassName(java.lang.Class<?> c)
           
static java.lang.String unqualifiedClassName(java.lang.Object o)
           
static java.lang.Throwable unwrapException(java.lang.Throwable t)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

EOL

public static final java.lang.String EOL
Constructor Detail

LangUtil

public LangUtil()
Method Detail

is13VMOrGreater

public static boolean is13VMOrGreater()

is14VMOrGreater

public static boolean is14VMOrGreater()

is15VMOrGreater

public static boolean is15VMOrGreater()

is16VMOrGreater

public static boolean is16VMOrGreater()

is17VMOrGreater

public static boolean is17VMOrGreater()

throwIaxIfNull

public static final void throwIaxIfNull(java.lang.Object o,
                                        java.lang.String name)
Shorthand for "if null, throw IllegalArgumentException"

Throws:
java.lang.IllegalArgumentException - "null {name}" if o is null

throwIaxIfNotAssignable

public static final void throwIaxIfNotAssignable(java.lang.Object[] ra,
                                                 java.lang.Class<?> c,
                                                 java.lang.String name)
Shorthand for "if not null or not assignable, throw IllegalArgumentException"

Parameters:
c - the Class to check - use null to ignore type check
Throws:
java.lang.IllegalArgumentException - "null {name}" if o is null

throwIaxIfNotAssignable

public static final void throwIaxIfNotAssignable(java.lang.Object o,
                                                 java.lang.Class<?> c,
                                                 java.lang.String name)
Shorthand for "if not null or not assignable, throw IllegalArgumentException"

Throws:
java.lang.IllegalArgumentException - "null {name}" if o is null

throwIaxIfFalse

public static final void throwIaxIfFalse(boolean test,
                                         java.lang.String message)
Shorthand for "if false, throw IllegalArgumentException"

Throws:
java.lang.IllegalArgumentException - "{message}" if test is false

isEmpty

public static boolean isEmpty(java.lang.String s)
Returns:
((null == s) || (0 == s.length()));

isEmpty

public static boolean isEmpty(java.lang.Object[] ra)
Returns:
((null == ra) || (0 == ra.length))

isEmpty

public static boolean isEmpty(byte[] ra)
Returns:
((null == ra) || (0 == ra.length))

isEmpty

public static boolean isEmpty(java.util.Collection<?> collection)
Returns:
((null == collection) || (0 == collection.size()))

isEmpty

public static boolean isEmpty(java.util.Map<?,?> map)
Returns:
((null == map) || (0 == map.size()))

split

public static java.lang.String[] split(java.lang.String text)
Splits text at whitespace.

Parameters:
text - String to split.

commaSplit

public static java.util.List<java.lang.String> commaSplit(java.lang.String input)
Splits input at commas, trimming any white space.

Parameters:
input - String to split.
Returns:
List of String of elements.

splitClasspath

public static java.lang.String[] splitClasspath(java.lang.String classpath)
Split string as classpath, delimited at File.pathSeparator. Entries are not trimmed, but empty entries are ignored.

Parameters:
classpath - the String to split - may be null or empty
Returns:
String[] of classpath entries

getBoolean

public static boolean getBoolean(java.lang.String propertyName,
                                 boolean defaultValue)
Get System property as boolean, but use default value where the system property is not set.

Returns:
true if value is set to true, false otherwise

anySplit

public static java.util.List<java.lang.String> anySplit(java.lang.String input,
                                                        java.lang.String delim)
Splits input, removing delimiter and trimming any white space. Returns an empty collection if the input is null. If delimiter is null or empty or if the input contains no delimiters, the input itself is returned after trimming white space.

Parameters:
input - String to split.
delim - String separators for input.
Returns:
List of String of elements.

strings

public static java.util.List<java.lang.String> strings(java.lang.String text)
Splits strings into a List using a StringTokenizer.

Parameters:
text - String to split.

safeList

public static <T> java.util.List<T> safeList(java.util.List<T> list)
Returns:
a non-null unmodifiable List

copyStrings

public static java.lang.String[][] copyStrings(java.lang.String[][] in)
copy non-null two-dimensional String[][]

See Also:
extractOptions(String[], String[][])

extractOptions

public static java.lang.String[] extractOptions(java.lang.String[] args,
                                                java.lang.String[][] options)
Extract options and arguments to input option list, returning remainder. The input options will be nullified if not found. e.g.,
 String[] options = new String[][] { new String[] { "-verbose" }, new String[] { "-classpath", null } };
 String[] args = extractOptions(args, options);
 boolean verbose = null != options[0][0];
 boolean classpath = options[1][1];
 

Parameters:
args - the String[] input options
options - the String[][]options to find in the input args - not null for each String[] component the first subcomponent is the option itself, and there is one String subcomponent for each additional argument.
Returns:
String[] of args remaining after extracting options to extracted

safeCopy

public static java.lang.Object[] safeCopy(java.lang.Object[] source,
                                          java.lang.Object[] sink)
Convert arrays safely. The number of elements in the result will be 1 smaller for each element that is null or not assignable. This will use sink if it has exactly the right size. The result will always have the same component type as sink.

Returns:
an array with the same component type as sink containing any assignable elements in source (in the same order).
Throws:
java.lang.IllegalArgumentException - if either is null

unqualifiedClassName

public static java.lang.String unqualifiedClassName(java.lang.Class<?> c)
Returns:
a String with the unqualified class name of the class (or "null")

unqualifiedClassName

public static java.lang.String unqualifiedClassName(java.lang.Object o)
Returns:
a String with the unqualified class name of the object (or "null")

replace

public static java.lang.String replace(java.lang.String in,
                                       java.lang.String sought,
                                       java.lang.String replace)
inefficient way to replace all instances of sought with replace


toSizedString

public static java.lang.String toSizedString(long i,
                                             int width)
render i right-justified with a given width less than about 40


renderExceptionShort

public static java.lang.String renderExceptionShort(java.lang.Throwable e)
Returns:
"({UnqualifiedExceptionClass}) {message}"

renderException

public static java.lang.String renderException(java.lang.Throwable t)
Renders exception t after unwrapping and eliding any test packages.

Parameters:
t - Throwable to print.
See Also:
#maxStackTrace

renderException

public static java.lang.String renderException(java.lang.Throwable t,
                                               boolean elide)
Renders exception t, unwrapping, optionally eliding and limiting total number of lines.

Parameters:
t - Throwable to print.
elide - true to limit to 100 lines and elide test packages
See Also:
LangUtil.StringChecker.TEST_PACKAGES

stackToString

public static java.lang.StringBuffer stackToString(java.lang.Throwable throwable,
                                                   boolean skipMessage)
Dump message and stack to StringBuffer.


unwrapException

public static java.lang.Throwable unwrapException(java.lang.Throwable t)
Returns:
Throwable input or tail of any wrapped exception chain

arrayAsList

public static java.util.List<java.lang.Object> arrayAsList(java.lang.Object[] array)
Replacement for Arrays.asList(..) which gacks on null and returns a List in which remove is an unsupported operation.

Parameters:
array - the Object[] to convert (may be null)
Returns:
the List corresponding to array (never null)

makeClasspath

public static java.lang.String makeClasspath(java.lang.String bootclasspath,
                                             java.lang.String classpath,
                                             java.lang.String classesDir,
                                             java.lang.String outputJar)
Gen classpath.

Parameters:
bootclasspath -
classpath -
classesDir -
outputJar -
Returns:
String combining classpath elements

makeProcess

public static LangUtil.ProcessController makeProcess(LangUtil.ProcessController controller,
                                                     java.lang.String classpath,
                                                     java.lang.String mainClass,
                                                     java.lang.String[] args)
Create or initialize a process controller to run a process in another VM asynchronously.

Parameters:
controller - the ProcessController to initialize, if not null
classpath -
mainClass -
args -
Returns:
initialized ProcessController

getJavaExecutable

public static java.io.File getJavaExecutable()
Find java executable File path from java.home system property.

Returns:
File associated with the java command, or null if not found.

sleepUntil

public static boolean sleepUntil(long time)
Sleep until a particular time.

Parameters:
time - the long time in milliseconds to sleep until
Returns:
true if delay succeeded, false if interrupted 100 times