|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.sun.rave.web.ui.util.TypeConverter
public class TypeConverter
Provides an efficient and robust mechanism for converting an object
to a different type. For example, one can convert a String
to
an Integer
using the TypeConverter
like this:
Integer i = (Integer) TypeConverter.asType(Integer.class, "123");or using the shortcut method:
int i = TypeConverter.asInt("123");The
TypeConverter
comes ready to convert all the primitive
types, plus a few more like java.sql.Date
and
java.math.BigDecimal
.
The conversion process has been optimized so that it is now a constant
time operation (aside from the conversion itself, which may vary).
Because of this optimization, it is possible to register classes that
implement the new TypeConversion
interface for conversion
to a custom type. For example, this means that you can define a class to
convert arbitrary objects to type Foo
, and register it for
use throughout the VM:
TypeConversion fooConversion = new FooTypeConversion(); TypeConverter.registerTypeConversion(Foo.class, fooConversion); ... Bar bar = new Bar(); Foo foo = (Foo) TypeConverter.asType(Foo.class, bar); ... String s = "bar"; Foo foo = (Foo) TypeConverter.asType(Foo.class, s);The TypeConverter allows specification of an arbitrary type key in the
registerTypeConversion()
and asType()
methods,
so one can simultaneously register a conversion object under a
Class
object, a class name, and a logical type name. For example,
the following are valid ways of converting a string to an int
using TypeConverter
:
Integer i = (Integer) TypeConverter.asType(Integer.class, "123"); Integer i = (Integer) TypeConverter.asType("java.lang.Integer", "123"); Integer i = (Integer) TypeConverter.asType(TypeConverter.TYPE_INT, "123"); Integer i = (Integer) TypeConverter.asType(TypeConverter.TYPE_INTEGER, "123"); Integer i = (Integer) TypeConverter.asType("int", "123"); Integer i = (Integer) TypeConverter.asType("integer", "123"); int i = TypeConverter.asInt("123");Default type conversions have been registered under the following keys:
Classes: java.lang.Object java.lang.String java.lang.Integer java.lang.Integer.TYPE (int) java.lang.Double java.lang.Double.TYPE (double) java.lang.Boolean java.lang.Boolean.TYPE (boolean) java.lang.Long java.lang.Long.TYPE (long) java.lang.Float java.lang.Float.TYPE (float) java.lang.Short java.lang.Short.TYPE (short) java.lang.Byte java.lang.Byte.TYPE (byte) java.lang.Character java.lang.Character.TYPE (char) java.math.BigDecimal java.sql.Date java.sql.Time java.sql.Timestamp Class name strings: "java.lang.Object" "java.lang.String" "java.lang.Integer" "java.lang.Double" "java.lang.Boolean" "java.lang.Long" "java.lang.Float" "java.lang.Short" "java.lang.Byte" "java.lang.Character" "java.math.BigDecimal" "java.sql.Date" "java.sql.Time" "java.sql.Timestamp" Logical type name string constants: TypeConverter.TYPE_UNKNOWN ("null") TypeConverter.TYPE_OBJECT ("object") TypeConverter.TYPE_STRING ("string") TypeConverter.TYPE_INT ("int") TypeConverter.TYPE_INTEGER ("integer") TypeConverter.TYPE_DOUBLE ("double") TypeConverter.TYPE_BOOLEAN ("boolean") TypeConverter.TYPE_LONG ("long") TypeConverter.TYPE_FLOAT ("float") TypeConverter.TYPE_SHORT ("short") TypeConverter.TYPE_BYTE ("byte") TypeConverter.TYPE_CHAR ("char") TypeConverter.TYPE_CHARACTER ("character") TypeConverter.TYPE_BIG_DECIMAL ("bigdecimal") TypeConverter.TYPE_SQL_DATE ("sqldate") TypeConverter.TYPE_SQL_TIME ("sqltime") TypeConverter.TYPE_SQL_TIMESTAMP ("sqltimestamp")The
TypeConverter
treats type keys of type Class
slightly differently than other keys. If the provided value is already of
the type specified by the type key class, it is returned without a
conversion taking place. For example, a value of type MySub
that extends the class MySuper
would not be converted in the
following situation because it is already of the necessary type:
MySub o = (MySub) TypeConverter.asType(MySuper.class, mySub);Be warned that although the type conversion infrastructure in this class is desgned to add only minimal overhead to the conversion process, conversion of an object to another type is a potentially expensive operation and should be used with discretion.
TypeConverter.UnknownTypeConversion
Nested Class Summary | |
---|---|
static class |
TypeConverter.BigDecimalTypeConversion
|
static class |
TypeConverter.BooleanTypeConversion
|
static class |
TypeConverter.ByteTypeConversion
|
static class |
TypeConverter.CharacterTypeConversion
|
static class |
TypeConverter.DoubleTypeConversion
|
static class |
TypeConverter.FloatTypeConversion
|
static class |
TypeConverter.IntegerTypeConversion
|
static class |
TypeConverter.LongTypeConversion
|
static class |
TypeConverter.ObjectTypeConversion
|
static class |
TypeConverter.ShortTypeConversion
|
static class |
TypeConverter.SqlDateTypeConversion
|
static class |
TypeConverter.SqlTimestampTypeConversion
|
static class |
TypeConverter.SqlTimeTypeConversion
|
static class |
TypeConverter.StringTypeConversion
|
static class |
TypeConverter.UnknownTypeConversion
|
Field Summary | |
---|---|
static TypeConversion |
BIG_DECIMAL_TYPE_CONVERSION
|
static TypeConversion |
BOOLEAN_TYPE_CONVERSION
|
static TypeConversion |
BYTE_TYPE_CONVERSION
|
static TypeConversion |
CHARACTER_TYPE_CONVERSION
|
static TypeConversion |
DOUBLE_TYPE_CONVERSION
|
static TypeConversion |
FLOAT_TYPE_CONVERSION
|
static TypeConversion |
INTEGER_TYPE_CONVERSION
|
static TypeConversion |
LONG_TYPE_CONVERSION
|
static TypeConversion |
OBJECT_TYPE_CONVERSION
|
static TypeConversion |
SHORT_TYPE_CONVERSION
|
static TypeConversion |
SQL_DATE_TYPE_CONVERSION
|
static TypeConversion |
SQL_TIME_TYPE_CONVERSION
|
static TypeConversion |
SQL_TIMESTAMP_TYPE_CONVERSION
|
static TypeConversion |
STRING_TYPE_CONVERSION
|
static java.lang.String |
TYPE_BIG_DECIMAL
Logical type name "bigdecimal" |
static java.lang.String |
TYPE_BOOLEAN
Logical type name "boolean" |
static java.lang.String |
TYPE_BYTE
Logical type name "byte" |
static java.lang.String |
TYPE_CHAR
Logical type name "char" |
static java.lang.String |
TYPE_CHARACTER
Logical type name "character" |
static java.lang.String |
TYPE_DOUBLE
Logical type name "double" |
static java.lang.String |
TYPE_FLOAT
Logical type name "float" |
static java.lang.String |
TYPE_INT
Logical type name "int" |
static java.lang.String |
TYPE_INTEGER
Logical type name "integer" |
static java.lang.String |
TYPE_LONG
Logical type name "long" |
static java.lang.String |
TYPE_OBJECT
Logical type name "object" |
static java.lang.String |
TYPE_SHORT
Logical type name "short" |
static java.lang.String |
TYPE_SQL_DATE
Logical type name "sqldate" |
static java.lang.String |
TYPE_SQL_TIME
Logical type name "sqltime" |
static java.lang.String |
TYPE_SQL_TIMESTAMP
Logical type name "sqltimestamp" |
static java.lang.String |
TYPE_STRING
Logical type name "string" |
static java.lang.String |
TYPE_UNKNOWN
Logical type name "null" |
static TypeConversion |
UNKNOWN_TYPE_CONVERSION
|
Method Summary | |
---|---|
static boolean |
asBoolean(java.lang.Object value)
|
static boolean |
asBoolean(java.lang.Object value,
boolean defaultValue)
|
static byte |
asByte(java.lang.Object value)
|
static byte |
asByte(java.lang.Object value,
byte defaultValue)
|
static char |
asChar(java.lang.Object value)
|
static char |
asChar(java.lang.Object value,
char defaultValue)
|
static double |
asDouble(java.lang.Object value)
|
static double |
asDouble(java.lang.Object value,
double defaultValue)
|
static float |
asFloat(java.lang.Object value)
|
static float |
asFloat(java.lang.Object value,
float defaultValue)
|
static int |
asInt(java.lang.Object value)
|
static int |
asInt(java.lang.Object value,
int defaultValue)
|
static long |
asLong(java.lang.Object value)
|
static long |
asLong(java.lang.Object value,
long defaultValue)
|
static short |
asShort(java.lang.Object value)
|
static short |
asShort(java.lang.Object value,
short defaultValue)
|
static java.lang.String |
asString(java.lang.Object value)
|
static java.lang.String |
asString(java.lang.Object value,
java.lang.String defaultValue)
|
static java.lang.Object |
asType(java.lang.Object typeKey,
java.lang.Object value)
Convert an object to the type specified by the provided type key. |
static java.util.Map |
getTypeConversions()
Return the map of type conversion objects. |
static void |
registerTypeConversion(java.lang.Object key,
TypeConversion conversion)
Register a type conversion object under the specified key. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final java.lang.String TYPE_UNKNOWN
public static final java.lang.String TYPE_OBJECT
public static final java.lang.String TYPE_STRING
public static final java.lang.String TYPE_INT
public static final java.lang.String TYPE_INTEGER
public static final java.lang.String TYPE_LONG
public static final java.lang.String TYPE_FLOAT
public static final java.lang.String TYPE_DOUBLE
public static final java.lang.String TYPE_SHORT
public static final java.lang.String TYPE_BOOLEAN
public static final java.lang.String TYPE_BYTE
public static final java.lang.String TYPE_CHAR
public static final java.lang.String TYPE_CHARACTER
public static final java.lang.String TYPE_BIG_DECIMAL
public static final java.lang.String TYPE_SQL_DATE
public static final java.lang.String TYPE_SQL_TIME
public static final java.lang.String TYPE_SQL_TIMESTAMP
public static final TypeConversion UNKNOWN_TYPE_CONVERSION
public static final TypeConversion OBJECT_TYPE_CONVERSION
public static final TypeConversion STRING_TYPE_CONVERSION
public static final TypeConversion INTEGER_TYPE_CONVERSION
public static final TypeConversion DOUBLE_TYPE_CONVERSION
public static final TypeConversion BOOLEAN_TYPE_CONVERSION
public static final TypeConversion LONG_TYPE_CONVERSION
public static final TypeConversion FLOAT_TYPE_CONVERSION
public static final TypeConversion SHORT_TYPE_CONVERSION
public static final TypeConversion BIG_DECIMAL_TYPE_CONVERSION
public static final TypeConversion BYTE_TYPE_CONVERSION
public static final TypeConversion CHARACTER_TYPE_CONVERSION
public static final TypeConversion SQL_DATE_TYPE_CONVERSION
public static final TypeConversion SQL_TIME_TYPE_CONVERSION
public static final TypeConversion SQL_TIMESTAMP_TYPE_CONVERSION
Method Detail |
---|
public static java.util.Map getTypeConversions()
TypeConversion
.
public static void registerTypeConversion(java.lang.Object key, TypeConversion conversion)
public static java.lang.Object asType(java.lang.Object typeKey, java.lang.Object value)
Convert an object to the type specified by the provided type key. A type conversion object must have been previously registered under the provided key in order for the conversion to succeed (with one exception, see below).
Note, this method treats type keys of type Class
differently than other type keys. That is, this method will check
if the provided value is the same as or a subclass of the specified
class. If it is, this method returns the value object immediately
without attempting to convert its type. One exception to this
rule is if the provided type key is Object.class
, in
which case the conversion is attempted anyway. The reason for this
deviation is that this key may have special meaning based on the
type of the provided value. For example, if the provided value is
a byte array, the ObjectTypeConversion
class assumes
it is a serialized object and attempts to deserialize it. Because
all objects, including arrays, are of type Object
,
this conversion would never be attempted without this special
handling. (Note that the default conversion for type key
Object.class
is to simply return the original object.)
typeKey
- The key under which the desired type conversion object
has been previously registered. Most commonly, this key
should be a Class
object, a class name
string, or a logical type string represented by the
various TYPE_*
constants defined in this
class.value
- The value to convert to the specified target type
null
if the
original value is null
public static byte asByte(java.lang.Object value)
public static byte asByte(java.lang.Object value, byte defaultValue)
public static short asShort(java.lang.Object value)
public static short asShort(java.lang.Object value, short defaultValue)
public static int asInt(java.lang.Object value)
public static int asInt(java.lang.Object value, int defaultValue)
public static long asLong(java.lang.Object value)
public static long asLong(java.lang.Object value, long defaultValue)
public static float asFloat(java.lang.Object value)
public static float asFloat(java.lang.Object value, float defaultValue)
public static double asDouble(java.lang.Object value)
public static double asDouble(java.lang.Object value, double defaultValue)
public static char asChar(java.lang.Object value)
public static char asChar(java.lang.Object value, char defaultValue)
public static boolean asBoolean(java.lang.Object value)
public static boolean asBoolean(java.lang.Object value, boolean defaultValue)
public static java.lang.String asString(java.lang.Object value)
public static java.lang.String asString(java.lang.Object value, java.lang.String defaultValue)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |