java.lang.Object
org.jruby.javasupport.JavaUtil
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classstatic interfacestatic class -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final JavaUtil.JavaConverterstatic final JavaUtil.JavaConverterstatic final JavaUtil.JavaConverterstatic final JavaUtil.JavaConverterstatic final JavaUtil.JavaConverterstatic final JavaUtil.JavaConverterstatic final JavaUtil.JavaConverterstatic final JavaUtil.JavaConverterstatic final JavaUtil.JavaConverterstatic final JavaUtil.JavaConverterstatic final JavaUtil.JavaConverterstatic final JavaUtil.JavaConverterstatic final JavaUtil.JavaConverterstatic final JavaUtil.JavaConverterstatic final JavaUtil.JavaConverterstatic final JavaUtil.JavaConverterstatic final JavaUtil.JavaConverterstatic final JavaUtil.JavaConverterstatic final JavaUtil.JavaConverterstatic final JavaUtil.JavaConverterstatic final JavaUtil.StringConverter -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic <T> TClone a Java object, assuming its class has an accessibleclonemethod.static Object[]convertArguments(IRubyObject[] args, Class<?>[] types) static Object[]convertArguments(IRubyObject[] args, Class<?>[] types, int offset) static IRubyObjectconvertJavaArrayElementToRuby(Ruby runtime, JavaUtil.JavaConverter converter, Object array, int i) static IRubyObject[]convertJavaArrayToRuby(Ruby runtime, Object[] objects) static RubyArrayconvertJavaArrayToRubyWithNesting(ThreadContext context, Object array) static IRubyObjectconvertJavaToRuby(Ruby runtime, boolean b) static IRubyObjectconvertJavaToRuby(Ruby runtime, double d) static IRubyObjectconvertJavaToRuby(Ruby runtime, float f) static IRubyObjectconvertJavaToRuby(Ruby runtime, int i) static IRubyObjectconvertJavaToRuby(Ruby runtime, long l) static IRubyObjectconvertJavaToRuby(Ruby runtime, Object object) static IRubyObjectconvertJavaToRuby(Ruby runtime, Object object, Class javaClass) static IRubyObjectconvertJavaToUsableRubyObject(Ruby runtime, Object object) Returns a usable RubyObject; for types that are not converted to Ruby native types, a Java proxy will be returned.static IRubyObjectconvertJavaToUsableRubyObjectWithConverter(Ruby runtime, Object object, JavaUtil.JavaConverter converter) static <T> TconvertProcToInterface(ThreadContext context, RubyBasicObject rubyObject, Class<T> targetType) static <T> TconvertProcToInterface(ThreadContext context, RubyObject rubyObject, Class<T> targetType) static IRubyObject[]convertStringArrayToRuby(Ruby runtime, String[] strings, JavaUtil.StringConverter converter) static MethodHandlegetGetterSafe(Field field, Class caller, MethodHandles.Lookup lookup) static MethodHandlegetHandleSafe(Method method, Class caller, MethodHandles.Lookup lookup) static StringgetJavaCasedName(String javaCasedName) static Class<?> getJavaClass(RubyModule type) Deprecated.static Class<?> getJavaClass(RubyModule type, Supplier<Class<?>> ifNone) Get the associated JavaClass for a Java proxy module/class or wrapper.static Class<?> getJavaClass(ThreadContext context, RubyModule type) Get the associated JavaClass for a Java proxy module/class or wrapper.static JavaUtil.JavaConvertergetJavaConverter(Class clazz) static StringgetJavaPropertyName(String beanMethodName) For methods that match /(get|set|is)([A-Z0-9])(.*)/, return the "name" part of the property with leading lower-case.static <T> JavaUtil.NumericConverter<T> getNumericConverter(Class<T> target) static Class<?> getPrimitiveClass(String name) static StringgetRubyCasedName(String javaCasedName) Build a Ruby name from a Java name by treating '_' as divider and successive caps as all the same word.getRubyNamesForJavaName(String javaName, List<Method> methods) Given a simple Java method name and the Java Method objects that represent all its overloads, add to the given nameSet all possible Ruby names that would be valid.static MethodHandlegetSetterSafe(Field field, Class caller, MethodHandles.Lookup lookup) static RubyStringinspectObject(ThreadContext context, Object obj) static booleanisDuckTypeConvertable(Class<?> argumentType, Class<?> targetType) static booleanisJavaObject(IRubyObject object) Test if a passed instance is a wrapper Java object.static Objectstatic Class<?> primitiveToWrapper(Class<?> type) static StringtoJavaGetName(String propertyName) static StringtoJavaIsName(String propertyName) static IRubyObjecttrySimpleConversions(Ruby runtime, Object object) static <T> TunwrapIfJavaObject(IRubyObject object) Unwrap if the passed object is a Java object, otherwise return object.static <T> TunwrapJava(Object wrapped, T defaultValue) static <T> TunwrapJava(IRubyObject wrapped) Deprecated.static <T> TunwrapJava(ThreadContext context, IRubyObject wrapped) static <T> TunwrapJavaObject(IRubyObject object) Unwrap a wrapped Java object.static <T> TunwrapJavaValue(IRubyObject object)
-
Field Details
-
JAVA_DEFAULT_CONVERTER
-
JAVA_BOOLEAN_CONVERTER
-
JAVA_FLOAT_CONVERTER
-
JAVA_DOUBLE_CONVERTER
-
JAVA_CHAR_CONVERTER
-
JAVA_BYTE_CONVERTER
-
JAVA_SHORT_CONVERTER
-
JAVA_INT_CONVERTER
-
JAVA_LONG_CONVERTER
-
JAVA_BOOLEANPRIM_CONVERTER
-
JAVA_FLOATPRIM_CONVERTER
-
JAVA_DOUBLEPRIM_CONVERTER
-
JAVA_CHARPRIM_CONVERTER
-
JAVA_BYTEPRIM_CONVERTER
-
JAVA_SHORTPRIM_CONVERTER
-
JAVA_INTPRIM_CONVERTER
-
JAVA_LONGPRIM_CONVERTER
-
JAVA_STRING_CONVERTER
-
JAVA_CHARSEQUENCE_CONVERTER
-
BYTELIST_CONVERTER
-
JAVA_BIGINTEGER_CONVERTER
-
PRIMITIVE_CLASSES
-
-
Constructor Details
-
JavaUtil
public JavaUtil()
-
-
Method Details
-
convertJavaArrayToRuby
-
convertStringArrayToRuby
public static IRubyObject[] convertStringArrayToRuby(Ruby runtime, String[] strings, JavaUtil.StringConverter converter) -
convertJavaArrayToRubyWithNesting
-
getJavaConverter
-
convertJavaToRuby
-
convertJavaToRuby
-
convertJavaToRuby
-
convertJavaToRuby
-
convertJavaToRuby
-
convertJavaToRuby
-
convertJavaToRuby
-
convertJavaToUsableRubyObject
Returns a usable RubyObject; for types that are not converted to Ruby native types, a Java proxy will be returned.- Parameters:
runtime-object-- Returns:
- corresponding Ruby type, or a functional Java proxy
-
convertJavaToUsableRubyObjectWithConverter
public static IRubyObject convertJavaToUsableRubyObjectWithConverter(Ruby runtime, Object object, JavaUtil.JavaConverter converter) -
convertJavaArrayElementToRuby
public static IRubyObject convertJavaArrayElementToRuby(Ruby runtime, JavaUtil.JavaConverter converter, Object array, int i) -
primitiveToWrapper
-
isDuckTypeConvertable
-
convertProcToInterface
public static <T> T convertProcToInterface(ThreadContext context, RubyObject rubyObject, Class<T> targetType) -
convertProcToInterface
public static <T> T convertProcToInterface(ThreadContext context, RubyBasicObject rubyObject, Class<T> targetType) -
getNumericConverter
-
isJavaObject
Test if a passed instance is a wrapper Java object.- Parameters:
object-- Returns:
- true if the object is wrapping a Java object
-
unwrapJavaObject
Unwrap a wrapped Java object.- Parameters:
object-- Returns:
- Java object
- See Also:
-
unwrapIfJavaObject
Unwrap if the passed object is a Java object, otherwise return object.- Parameters:
object-- Returns:
- java object or passed object
- See Also:
-
inspectObject
-
unwrapJavaValue
- Parameters:
object-Note: Returns null if not a wrapped Java value.
- Returns:
- unwrapped Java (object's) value
-
getJavaPropertyName
For methods that match /(get|set|is)([A-Z0-9])(.*)/, return the "name" part of the property with leading lower-case.Note: Does not use regular expression for performance reasons.
- Parameters:
beanMethodName- the bean method from which to extract a name- Returns:
- the bean property name (or null)
-
toJavaGetName
-
toJavaIsName
-
getRubyCasedName
Build a Ruby name from a Java name by treating '_' as divider and successive caps as all the same word.- Parameters:
javaCasedName-- Returns:
- Ruby (under-score) cased named e.g. "get_foo_bar"
-
getJavaCasedName
-
getRubyNamesForJavaName
Given a simple Java method name and the Java Method objects that represent all its overloads, add to the given nameSet all possible Ruby names that would be valid.- Parameters:
javaName-methods-- Returns:
- method names
-
convertArguments
-
convertArguments
-
clone
Clone a Java object, assuming its class has an accessibleclonemethod.- Parameters:
object-- Returns:
- cloned object or null (if method is not found or inaccessible)
-
getHandleSafe
-
getGetterSafe
-
getSetterSafe
-
trySimpleConversions
-
objectFromJavaProxy
-
getPrimitiveClass
-
unwrapJava
-
unwrapJava
Deprecated. -
unwrapJava
-
getJavaClass
Deprecated.- Throws:
TypeError
-
getJavaClass
Get the associated JavaClass for a Java proxy module/class or wrapper.Note: Works best when passed module/class is assumed to be a Java proxy wrapper.
- Parameters:
type-- Returns:
- class
- Throws:
TypeError
-
getJavaClass
Get the associated JavaClass for a Java proxy module/class or wrapper.- Parameters:
type-ifNone- fallback if none Java class wrapper- Returns:
- class or the result of the supplier function
-