Class MarshallingSession
- All Implemented Interfaces:
BeanSession,ConverterSession
- Direct Known Subclasses:
MarshallingTraverseSession,ParserSession,RestRequest
MarshallingContext.
- Typically session objects are not thread safe nor reusable. However, bean sessions do not maintain any state and thus can be safely cached and reused.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classBuilder class.static final classConcrete default builder leaf for the non-subclassedcreate()path (CRTP terminal). -
Field Summary
Fields -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedMarshallingSession(MarshallingSession.Builder<?> builder) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionvoidaddWarning(String msg, Object... args) Logs a warning message.final <T> TconvertToMemberType(Object outer, Object value, Class<T> type) Same asconvertToType(Object, Class), except used for instantiating inner member classes that must be instantiated within another class instance.final ObjectconvertToMemberType(Object outer, Object value, Object targetType) Bridge implementation ofBeanSession.convertToMemberType(Object, Object, Object)that dispatches to theClassMeta-typed overload when the suppliedtargetTypeis aClassMeta, or to theClass-typed overload when it is aClass.protected final <T> TconvertToMemberType(Object outer, Object value, ClassMeta<T> to) Same asconvertToType(Object, ClassMeta), except used for instantiating inner member classes that must be instantiated within another class instance.final <T> TconvertToType(Object value, Class<T> type) Converts the specified value to the specified class type.final ObjectconvertToType(Object value, Object targetType) Bridge implementation ofBeanSession.convertToType(Object, Object)that dispatches to theClassMeta-typed overload when the suppliedtargetTypeis aClassMeta, or to theClass-typed overload when it is aClass.final <T> TconvertToType(Object value, Type type, Type... args) Same asconvertToType(Object, Class), but allows for complex data types consisting of collections or maps.final <T> TconvertToType(Object value, ClassMeta<T> type) Casts the specified value into the specified type.static MarshallingSession.Builder<?>create(MarshallingContext ctx) Creates a builder of this object.<T> Optional<T>Returns a contextual object of the specified type, orOptional.empty()if none is registered.final StringActive view.Returns the annotation provider for this session.getArgsClassMeta(Type[] classes) final VisibilityMinimum bean class visibility.final VisibilityMinimum bean constructor visibility.Bean dictionary.final VisibilityMinimum bean field visibility.final <T> BeanMeta<T>getBeanMeta(Class<T> c) Returns theBeanMetaclass for the specified class.final VisibilityMinimum bean method visibility.final BeanRegistryReturns the bean registry defined in this bean context defined byMarshallingContext.Builder.beanDictionary(ClassInfo...).final StringBean type property name.final StringReturns the type property name as defined byMarshallingContext.Builder.typePropertyName(String).final ClassLoaderSession classloader.final <T> ClassMeta<T>getClassMeta(Class<T> c) Returns aClassMetawrapper around aClassobject.final <T> ClassMeta<T>getClassMeta(Type type, Type... args) Used to resolveClassMetas of typeCollection andMap that haveClassMeta values that themselves could be collections or maps.protected final ClassMeta<?>getClassMetaForObject(Object o, ClassMeta<?> def) Returns theClassMetafor the object's class, unwrapping recognized proxies first.final <T> ClassMeta<T>Returns theClassMetafor the object's class, unwrapping recognized proxies first.Locale.final MarshallingContextReturns theMarshallingContextbacking this session.final MediaTypeMedia type.Bean class exclusions.Bean package exclusions.final PropertyNamerBean property namer.final List<ObjectSwap<?,?>> getSwaps()Java object swaps.final TimeZoneTime zone.final ZoneIdTime zone.final booleanDetermines whether the specified class matches the requirements on this context of being a bean.final booleanDetermines whether the specified object matches the requirements on this context of being a bean.final booleanBeanMap.put() returns old property value.final booleanBeans require no-arg constructors.final booleanBeans require Serializable interface.final booleanBeans require setters for getters.final booleanBeans require at least one property.final booleanFind fluent setters.final booleanIgnore invocation errors on getters.final booleanIgnore invocation errors on setters.final booleanSilently ignore missing setters.final booleanIgnore unknown properties.final booleanIgnore unknown properties with null values.booleanReturnstrue if the specified bean property is visible under the current active view.final booleanRecord component order.final booleanUnsorted properties.final booleanUse interface proxies.final booleanUse Java Introspector.final booleanSchema validation mode.final <T> TCreates a new empty bean of the specified type, except used for instantiating inner member classes that must be instantiated within another class instance.final <T> TSame asnewBean(Class), except used for instantiating inner member classes that must be instantiated within another class instance.final <T> BeanMap<T>newBeanMap(Class<T> c) final <T> BeanMap<T>newBeanMap(Object outer, Class<T> c) Same asnewBeanMap(Class), except used for instantiating inner member classes that must be instantiated within another class instance.protected MarshalledListCreates a generic list for parser-driven list population.protected MarshalledMapCreates a string-keyed generic map for parser-driven map population.protected MapnewGenericMap(ClassMeta mapMeta) Creates a genericMapfor parser-driven map population, choosing the map type based on the key type.object()Returns a reusableClassMetarepresentation for the classObject .final Collection<?>parseToList(CharSequence value) Bridge implementation ofBeanSession.parseToList(CharSequence)that delegates toJson5List(CharSequence)paired with this session.final Map<?,?> parseToMap(CharSequence value) Bridge implementation ofBeanSession.parseToMap(CharSequence)that delegates toJson5Map.ofString(CharSequence)paired with this session.Returns the properties on this bean as a map for debugging.string()Returns a reusableClassMetarepresentation for the classString .protected final ObjecttoArray(ClassMeta<?> type, Collection<?> list) Converts the contents of the specified list into an array.final <T> BeanMap<T>toBeanMap(T o) final <T> BeanMap<T>final <T> BeanMap<T>toBeanMap(T o, PropertyNamer propertyNamer) Methods inherited from class org.apache.juneau.marshall.ContextSession
checkForWarnings, getContext, getSessionProperties, getWarnings, isDebug, toStringMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.apache.juneau.commons.conversion.ConverterSession
get
-
Field Details
-
NAME_PROPERTY_NAME
The name property name.Currently this always returns
"_name" .- See Also:
-
-
Constructor Details
-
MarshallingSession
Constructor.- Parameters:
builder- The builder for this object. Cannot benull .
-
-
Method Details
-
create
Creates a builder of this object.- Parameters:
ctx- The context creating this builder.
Cannot benull .- Returns:
- A new builder.
-
get
Description copied from interface:ConverterSessionReturns a contextual object of the specified type, orOptional.empty()if none is registered.- Specified by:
getin interfaceConverterSession- Type Parameters:
T- The object type.- Parameters:
c- The object type to look up.- Returns:
- The contextual object wrapped in an
Optional, orOptional.empty()if not available.
-
addWarning
Logs a warning message.- Overrides:
addWarningin classContextSession- Parameters:
msg- The warning message.args- OptionalString.format-style arguments.
-
convertToMemberType
public final <T> T convertToMemberType(Object outer, Object value, Class<T> type) throws InvalidDataConversionException Same asconvertToType(Object, Class), except used for instantiating inner member classes that must be instantiated within another class instance.- Type Parameters:
T- The class type to convert the value to.- Parameters:
outer- If class is a member class, this is the instance of the containing class. Should benull if not a member class.value- The value to convert.type- The class type to convert the value to.- Returns:
- The converted value.
- Throws:
InvalidDataConversionException- If the specified value cannot be converted to the specified type.
-
convertToType
Converts the specified value to the specified class type.See
convertToType(Object, ClassMeta)for the list of valid conversions.- Type Parameters:
T- The class type to convert the value to.- Parameters:
value- The value to convert. Can benull (returnsnull ).type- The class type to convert the value to.- Returns:
- The converted value.
- Throws:
InvalidDataConversionException- If the specified value cannot be converted to the specified type.
-
convertToType
public final <T> T convertToType(Object value, ClassMeta<T> type) throws InvalidDataConversionException Casts the specified value into the specified type.If the value isn't an instance of the specified type, then converts the value if possible.
The following conversions are valid:
Convert to type Valid input value types Notes A class that is the normal type of a registered ObjectSwap.A value whose class matches the transformed type of that registered ObjectSwap.A class that is the transformed type of a registered ObjectSwap.A value whose class matches the normal type of that registered ObjectSwap.Number(e.g.Integer,Short,Float,...)Number.(e.g.TYPE Integer.,TYPE Short.,TYPE Float.,...)TYPE Number,String,null For primitive TYPES,null returns the JVM default value for that type.Map(e.g.Map,HashMap,TreeMap,JsonMap)MapIf Mapis not constructible, anJsonMapis created.Collection(e.g.List,LinkedList,HashSet,JsonList)Collection<Object>Object[]If Collectionis not constructible, anJsonListis created.X[](array of any type X)List<X>X[][](multi-dimensional arrays)List<List<X>>List<X[]>List[]<X>EnumStringBean MapStringAnything Arrays are converted to JSON arrays Anything with one of the following methods: public static T fromString(String)public static T valueOf(String)public T(String)String
- Type Parameters:
T- The class type to convert the value to.- Parameters:
value- The value to be converted. Can benull (returnsnull ).type- The target object type. Can benull (treated as theObjecttype).- Returns:
- The converted type.
- Throws:
InvalidDataConversionException- If the specified value cannot be converted to the specified type.
-
convertToType
public final <T> T convertToType(Object value, Type type, Type... args) throws InvalidDataConversionException Same asconvertToType(Object, Class), but allows for complex data types consisting of collections or maps.- Type Parameters:
T- The class type to convert the value to.- Parameters:
value- The value to be converted.type- The target object type.args- The target object parameter types.- Returns:
- The converted type.
- Throws:
InvalidDataConversionException- If the specified value cannot be converted to the specified type.
-
getAnnotationProvider
Returns the annotation provider for this session.- Returns:
- The annotation provider for this session.
-
getMarshallingContext
Returns theMarshallingContextbacking this session.- Returns:
- The marshalling context.
-
getBeanClassVisibility
Minimum bean class visibility.- Returns:
- Classes are not considered beans unless they meet the minimum visibility requirements.
- See Also:
-
getBeanConstructorVisibility
Minimum bean constructor visibility.- Returns:
- Only look for constructors with this specified minimum visibility.
- See Also:
-
getBeanDictionary
Bean dictionary.- Returns:
- The list of classes that make up the bean dictionary in this bean context.
Nevernull .
List is unmodifiable. - See Also:
-
getBeanFieldVisibility
Minimum bean field visibility.- Returns:
- Only look for bean fields with this specified minimum visibility.
- See Also:
-
getBeanMeta
Returns theBeanMetaclass for the specified class.- Type Parameters:
T- The class type to get the meta-data on.- Parameters:
c- The class to get the meta-data on. Can benull (returnsnull ).- Returns:
- The
BeanMetafor the specified class, ornull if the class is not a bean per the settings on this context.
-
getBeanMethodVisibility
Minimum bean method visibility.- Returns:
- Only look for bean methods with this specified minimum visibility.
- See Also:
-
getBeanRegistry
Returns the bean registry defined in this bean context defined byMarshallingContext.Builder.beanDictionary(ClassInfo...).- Returns:
- The bean registry defined in this bean context. Never
null .
-
getBeanTypePropertyName
Bean type property name.- Returns:
- The name of the bean property used to store the dictionary name of a bean type so that the parser knows the data type to reconstruct.
- See Also:
-
getBeanTypePropertyName
Returns the type property name as defined byMarshallingContext.Builder.typePropertyName(String).- Parameters:
cm- The class meta of the type we're trying to resolve the type name for. Can benull (falls back to the session-widetypePropertyName).- Returns:
- The type property name. Never
null .
-
getClassMeta
Returns aClassMetawrapper around aClassobject.- Type Parameters:
T- The class type being wrapped.- Parameters:
c- The class being wrapped.- Returns:
- The class meta object containing information about the class.
-
getClassMeta
Used to resolveClassMetas of typeCollection andMap that haveClassMeta values that themselves could be collections or maps.Collection meta objects are assumed to be followed by zero or one meta objects indicating the element type.Map meta objects are assumed to be followed by zero or two meta objects indicating the key and value types.The array can be arbitrarily long to indicate arbitrarily complex data structures.
Examples:
getClassMeta(String.- A normal type.class );getClassMeta(List.- A list containing objects.class );getClassMeta(List.- A list containing strings.class , String.class );getClassMeta(LinkedList.- A linked-list containing strings.class , String.class );getClassMeta(LinkedList.- A linked-list containing linked-lists of strings.class , LinkedList.class , String.class );getClassMeta(Map.- A map containing object keys/values.class );getClassMeta(Map.- A map containing string keys/values.class , String.class , String.class );getClassMeta(Map.- A map containing string keys and values of lists containing beans.class , String.class , List.class , MyBean.class );
- Type Parameters:
T- The class to resolve.- Parameters:
type- The class to resolve.
Can be any of the following:ClassMeta,Class,ParameterizedType,GenericArrayTypeargs- The type arguments of the class if it's a collection or map.
Can be any of the following:ClassMeta,Class,ParameterizedType,GenericArrayType
Ignored if the main type is not a map or collection.- Returns:
- The class meta.
-
getClassMetaForObject
Returns theClassMetafor the object's class, unwrapping recognized proxies first.Delegates to
getClassMetaForObject(Object,ClassMeta)with anull default.- Type Parameters:
T- The class of the object being passed in.- Parameters:
o- The class to find the class type for. Can benull (returnsnull ).- Returns:
- The ClassMeta object, or
null ifoisnull .
-
getLocale
Locale.The locale is determined in the following order:
locale parameter passed in through constructor.MarshallingContext.Builder.locale(Locale)setting on bean context.- Locale returned by
Locale.getDefault().
- Returns:
- The session locale.
- See Also:
-
getActiveView
Active view.Returns the active view name for this session. When non-
null , only bean properties whose declaredMarshalledProp.view()set contains this name are included during serialization, and out-of-view properties encountered during parsing are treated as unknown.This is the per-call override value, which defaults to
MarshallingContext.getActiveView().- Returns:
- The active view for this session, or
null if view filtering is not active. - Since:
- 10.0.0
- See Also:
-
isPropertyInActiveView
Description copied from interface:BeanSessionReturnstrue if the specified bean property is visible under the current active view.When no active view is set on the session, this method always returns
true (all properties visible). The marshalling-sideMarshallingSessionoverrides this to implement the actual view-membership check using the property's declared view set and the active view name.Default-view-inclusion policy (configurable): an untagged property — one whose view set is empty — is considered in-view under every active view unless the
MarshallingContext.Builder.disableDefaultViewInclusion()flag is set.- Specified by:
isPropertyInActiveViewin interfaceBeanSession- Parameters:
pMeta- The property metadata. Must not benull .- Returns:
true if the property should be included under the current active view.
-
getMediaType
Media type.For example,
"application/json" .- Returns:
- The media type for this session, or
null if not specified. - See Also:
-
getNotBeanClasses
Bean class exclusions.- Returns:
- The list of classes that are explicitly not beans.
Nevernull .
List is unmodifiable. - See Also:
-
getNotBeanPackagesNames
Bean package exclusions.- Returns:
- The set of fully-qualified package names to exclude from being classified as beans.
Nevernull .
Set is unmodifiable. - See Also:
-
getPropertyNamer
Bean property namer.- Returns:
- The interface used to calculate bean property names.
- See Also:
-
getClassLoader
Session classloader.Returns the classloader explicitly configured via
MarshallingContext.Builder.classLoader(ClassLoader), ornull if none was set (callers should fall back to the thread-context classloader).- Returns:
- The session classloader, or
null if not set.
-
getSwaps
Java object swaps.- Returns:
- The list POJO swaps defined.
Nevernull .
List is unmodifiable. - See Also:
-
getTimeZone
Time zone.The timezone is determined in the following order:
timeZone parameter passed in through constructor.MarshallingContext.Builder.timeZone(TimeZone)setting on bean context.
- Returns:
- The session timezone, or
null if timezone not specified. - See Also:
-
getTimeZoneId
Time zone.The timezone is determined in the following order:
timeZone parameter passed in through constructor.MarshallingContext.Builder.timeZone(TimeZone)setting on bean context.
- Returns:
- The session timezone, or the system timezone if not specified. Never
null . - See Also:
-
isBean
Determines whether the specified class matches the requirements on this context of being a bean.- Parameters:
c- The class being tested.- Returns:
true if the specified class is considered a bean.
-
isBean
Determines whether the specified object matches the requirements on this context of being a bean.- Parameters:
o- The object being tested.- Returns:
true if the specified object is considered a bean.
-
isBeanMapPutReturnsOldValue
BeanMap.put() returns old property value.- Returns:
true if theBeanMap.put()method will return old property values.
Otherwise, it returnsnull .- See Also:
-
isBeansRequireDefaultConstructor
Beans require no-arg constructors.- Returns:
true if a Java class must implement a default no-arg constructor to be considered a bean.
Otherwise, the bean will be serialized as a string using theObject.toString()method.- See Also:
-
isBeansRequireSerializable
Beans require Serializable interface.- Returns:
true if a Java class must implement theSerializableinterface to be considered a bean.
Otherwise, the bean will be serialized as a string using theObject.toString()method.- See Also:
-
isBeansRequireSettersForGetters
Beans require setters for getters.- Returns:
true if only getters that have equivalent setters will be considered as properties on a bean.
Otherwise, they are ignored.- See Also:
-
isBeansRequireSomeProperties
Beans require at least one property.- Returns:
true if a Java class doesn't need to contain at least 1 property to be considered a bean.
Otherwise, the bean is serialized as a string using theObject.toString()method.- See Also:
-
isFindFluentSetters
Find fluent setters.Description:
- Returns:
true if fluent setters are detected on beans.- See Also:
-
isIgnoreInvocationExceptionsOnGetters
Ignore invocation errors on getters.- Returns:
true if errors thrown when calling bean getter methods are silently ignored.- See Also:
-
isIgnoreInvocationExceptionsOnSetters
Ignore invocation errors on setters.- Returns:
true if errors thrown when calling bean setter methods are silently ignored.- See Also:
-
isIgnoreMissingSetters
Silently ignore missing setters.- Returns:
true if trying to set a value on a bean property without a setter should throw aBeanRuntimeException.- See Also:
-
isIgnoreUnknownBeanProperties
Ignore unknown properties.- Returns:
true if trying to set a value on a non-existent bean property is silently ignored.
Otherwise, aRuntimeExceptionis thrown.- See Also:
-
isValidateSchema
Schema validation mode.- Returns:
true if bean property values should be validated against their@Schema-declared constraints during parsing and serialization.- Since:
- 10.0.0
- See Also:
-
isIgnoreUnknownNullBeanProperties
Ignore unknown properties with null values.- Returns:
true if trying to set anull value on a non-existent bean property should not throw aBeanRuntimeException.- See Also:
-
isUnsortedProperties
Unsorted properties.- Returns:
true if bean properties are serialized in declaration order instead of alphabetically.- See Also:
-
isRecordComponentOrder
Record component order.- Returns:
true ifRecordbean properties use component order.- See Also:
-
isUseInterfaceProxies
Use interface proxies.- Returns:
true if interfaces will be instantiated as proxy classes through the use of anInvocationHandlerif there is no other way of instantiating them.- See Also:
-
isUseJavaBeanIntrospector
Use Java Introspector.- Returns:
true if the built-in Java bean introspector should be used for bean introspection.- See Also:
-
newBean
Creates a new empty bean of the specified type, except used for instantiating inner member classes that must be instantiated within another class instance.Example:
// Construct a new instance of the specified bean class Personperson = MarshallingContext.DEFAULT .newBean(Person.class );- Type Parameters:
T- The class type of the bean being created.- Parameters:
c- The class type of the bean being created.- Returns:
- A new bean object, or
null if the class is not a bean. - Throws:
BeanRuntimeException- If the specified class is not a valid bean.
-
newBean
Same asnewBean(Class), except used for instantiating inner member classes that must be instantiated within another class instance.- Type Parameters:
T- The class type of the bean being created.- Parameters:
c- The class type of the bean being created.outer- If class is a member class, this is the instance of the containing class. Should benull if not a member class.- Returns:
- A new bean object, or
null if the class is not a bean. - Throws:
BeanRuntimeException- If the specified class is not a valid bean.
-
newBeanMap
Creates a newBeanMapobject (a modifiableMap) of the given class with uninitialized property values.If object is not a true bean, then throws a
BeanRuntimeExceptionwith an explanation of why it's not a bean.Example:
// Construct a new bean map wrapped around a new Person object BeanMap<Person>beanMap = MarshallingContext.DEFAULT .newBeanMap(Person.class );- Type Parameters:
T- The class of the object being wrapped.- Parameters:
c- The name of the class to create a new instance of.- Returns:
- A new instance of the class, or
null if the class is not a bean.
-
newBeanMap
Same asnewBeanMap(Class), except used for instantiating inner member classes that must be instantiated within another class instance.- Type Parameters:
T- The class of the object being wrapped.- Parameters:
c- The name of the class to create a new instance of.outer- If class is a member class, this is the instance of the containing class. Should benull if not a member class.- Returns:
- A new instance of the class, or
null if the class is not a bean.
-
object
Returns a reusableClassMetarepresentation for the classObject .This
ClassMeta is often used to represent "any object type" when an object type is not known.This method is identical to calling
getClassMeta(Object.but uses a cached copy to avoid a hashmap lookup.class )- Returns:
- The
ClassMetaobject associated with theObject class.
-
string
Returns a reusableClassMetarepresentation for the classString .This
ClassMeta is often used to represent key types in maps.This method is identical to calling
getClassMeta(String.but uses a cached copy to avoid a hashmap lookup.class )- Returns:
- The
ClassMetaobject associated with theString class.
-
toBeanMap
Wraps an object inside aBeanMapobject (a modifiableMap).If object is not a true bean, then throws a
BeanRuntimeExceptionwith an explanation of why it's not a bean.If object is already a
BeanMap, simply returns the same object.Example:
// Construct a bean map around a bean instance BeanMap<Person>beanMap = MarshallingContext.DEFAULT .toBeanMap(new Person());- Specified by:
toBeanMapin interfaceBeanSession- Type Parameters:
T- The class of the object being wrapped.- Parameters:
o- The object to wrap in a map interface. Must not be null.- Returns:
- The wrapped object.
-
toBeanMap
Wraps an object inside aBeanMapobject (i.e.: a modifiableMap) defined as a bean for one of its class, a super class, or an implemented interface.If object is not a true bean, throws a
BeanRuntimeExceptionwith an explanation of why it's not a bean.Example:
// Construct a bean map for new bean using only properties defined in a superclass BeanMap<MySubBean>beanMap = MarshallingContext.DEFAULT .toBeanMap(new MySubBean(), MySuperBean.class );// Construct a bean map for new bean using only properties defined in an interface BeanMap<MySubBean>beanMap = MarshallingContext.DEFAULT .toBeanMap(new MySubBean(), MySuperInterface.class );- Type Parameters:
T- The class of the object being wrapped.- Parameters:
o- The object to wrap in a bean interface. Must not be null.c- The superclass to narrow the bean properties to. Must not be null.- Returns:
- The bean representation.
- Throws:
IllegalArgumentException- If either parameter isnull , or if the specified object is not an instance of the specified class.BeanRuntimeException- If specified object is not a bean according to the bean rules specified in this context class.
-
toBeanMap
Wraps an object inside aBeanMapobject (a modifiableMap).Same as
toBeanMap(Object)but allows you to specify a property namer instance.Example:
// Construct a bean map around a bean instance BeanMap<Person>beanMap = MarshallingContext.DEFAULT .toBeanMap(new Person(), PropertyNamerDLC.INSTANCE );The supplied
propertyNamercontrols the names of the properties exposed by the returnedBeanMap. For example, passingPropertyNamerDLC.INSTANCErenames afooBar property tofoo-bar .When
propertyNamerisnull or equal to this session'sdefault namer, the shared,Class-keyedBeanMetacache is used exactly as bytoBeanMap(Object). Otherwise a fresh, non-cachedBeanMetais built with the supplied namer so the default cache is never polluted with alternate-namer property keys.- Type Parameters:
T- The class of the object being wrapped.- Parameters:
o- The object to wrap in a map interface. Must not be null.propertyNamer- The property namer to use. Can benull to use the session's default namer.- Returns:
- The wrapped object.
-
convertToMemberType
protected final <T> T convertToMemberType(Object outer, Object value, ClassMeta<T> to) throws InvalidDataConversionException Same asconvertToType(Object, ClassMeta), except used for instantiating inner member classes that must be instantiated within another class instance.- Type Parameters:
T- The class type to convert the value to.- Parameters:
outer- If class is a member class, this is the instance of the containing class. Should benull if not a member class.value- The value to convert. Can benull (returnsnull ).to- The class type to convert the value to. Can benull (treated as theObjecttype).- Returns:
- The converted value.
- Throws:
InvalidDataConversionException- If the specified value cannot be converted to the specified type.
-
getArgsClassMeta
Given an array ofTypeobjects, returns aClassMetarepresenting those arguments.Constructs a new meta on each call.
- Parameters:
classes- The array of classes to get class metas for. Must not benull .- Returns:
- The args
ClassMetaobject corresponding to the classes. Nevernull .
-
getClassMetaForObject
Returns theClassMetafor the object's class, unwrapping recognized proxies first.If
ClassUtils.getProxyFor(Object)returns a class, that class is used; otherwiseo.getClass(). JDK dynamic proxies (including annotation instances) resolve to the first interface. Subclass proxies (CGLIB, Javassist, ByteBuddy, Hibernate$HibernateProxy$) resolve to the immediate superclass. Spring CGLIB objects may havegetTargetClass()invoked on the live instance. Names matching$$SpringCGLIB$$only (Spring 6) are not recognized.- Parameters:
o- The object to find the class type for. Can benull (returnsdef).def- The defaultClassMetaif the object is null. Can benull (returned as-is ifo isnull ).- Returns:
- The ClassMeta object, or the default value if
oisnull .
-
newGenericMap
Creates a genericMapfor parser-driven map population, choosing the map type based on the key type.Returns the flavored
MarshalledMapsubclass when the key type is String (vianewGenericMap()), otherwise returns a plainLinkedHashMap(sinceMarshalledMapis keyed by String).Per-marshaller parser sessions override
newGenericMap()(not this method) to return their flavoredXMapvariant.- Parameters:
mapMeta- The metadata of the map to create. Must not benull .- Returns:
- A new map.
-
newGenericMap
Creates a string-keyed generic map for parser-driven map population.This is the main factory hook overridden by per-marshaller parser sessions to return their flavored
XMapvariant (for example,JsonParserSessionreturnsJsonMap;Json5ParserSessionreturnsJson5Map).- Returns:
- A new map.
-
newGenericList
Creates a generic list for parser-driven list population.Per-marshaller parser sessions override this hook to return their flavored
XListvariant (for example,JsonParserSessionreturnsJsonList;Json5ParserSessionreturnsJson5List).- Returns:
- A new list.
-
properties
Description copied from class:ContextSessionReturns the properties on this bean as a map for debugging.- Overrides:
propertiesin classContextSession- Returns:
- The properties on this bean as a map for debugging.
-
toArray
Converts the contents of the specified list into an array.Works on both object and primitive arrays.
In the case of multi-dimensional arrays, the incoming list must contain elements of type n-1 dimension. i.e. if
typeisthenint [][]listmust have entries of type.int []- Parameters:
type- The type to convert to. Must be an array type. Must not benull .list- The contents to populate the array with. Can benull (returnsnull ).- Returns:
- A new object or primitive array, or
null if the list wasnull .
-
convertToType
Bridge implementation ofBeanSession.convertToType(Object, Object)that dispatches to theClassMeta-typed overload when the suppliedtargetTypeis aClassMeta, or to theClass-typed overload when it is aClass.The bean-modeling layer calls this method through the
BeanSessioninterface so it can request type conversion without referencing the marshalling-sideClassMetaconcrete type.- Specified by:
convertToTypein interfaceBeanSession- Parameters:
value- The value to convert. May benull .targetType- AClassMetaorClassdescribing the target type. Can benull (treated as theObjecttype).- Returns:
- The converted value.
- Throws:
IllegalArgumentException- IftargetTypeis neither aClassMetanor aClass.
-
convertToMemberType
Bridge implementation ofBeanSession.convertToMemberType(Object, Object, Object)that dispatches to theClassMeta-typed overload when the suppliedtargetTypeis aClassMeta, or to theClass-typed overload when it is aClass.- Specified by:
convertToMemberTypein interfaceBeanSession- Parameters:
outer- The outer-class instance for non-static inner classes. May benull .value- The value to convert. May benull .targetType- AClassMetaorClassdescribing the target type. Can benull (treated as theObjecttype).- Returns:
- The converted value.
- Throws:
IllegalArgumentException- IftargetTypeis neither aClassMetanor aClass.
-
parseToMap
Bridge implementation ofBeanSession.parseToMap(CharSequence)that delegates toJson5Map.ofString(CharSequence)paired with this session.Used by
BeanPropertyMeta.setPropertyValue(org.apache.juneau.commons.bean.BeanMap<?>, java.lang.String, java.lang.Object, java.lang.Object, boolean, boolean, org.apache.juneau.commons.bean.BeanSession)to parse aCharSequenceinto aMapwhen the property is map-typed. Lifted out ofBeanPropertyMetaso the bean-modeling layer no longer references the marshalling-side JSON parser.Uses
Json5Mapso that historic JSON5-form inputs (e.g. annotation default values written as{a:'b'} ) continue to parse — the strict-JSONJsonMapretargeting in v10.0 would otherwise break those call sites.- Specified by:
parseToMapin interfaceBeanSession- Parameters:
value- The JSON-formatted character sequence to parse. Can benull (returns an empty map).- Returns:
- The parsed
Json5Map(empty ifvalueisnull ), nevernull .
-
parseToList
Bridge implementation ofBeanSession.parseToList(CharSequence)that delegates toJson5List(CharSequence)paired with this session.Used by
BeanPropertyMeta.setPropertyValue(org.apache.juneau.commons.bean.BeanMap<?>, java.lang.String, java.lang.Object, java.lang.Object, boolean, boolean, org.apache.juneau.commons.bean.BeanSession)to parse aCharSequenceinto aCollectionwhen the property is collection-typed. Lifted out ofBeanPropertyMetaso the bean-modeling layer no longer references the marshalling-side JSON parser.Uses
Json5Listfor the same back-compat reasons asparseToMap(CharSequence).- Specified by:
parseToListin interfaceBeanSession- Parameters:
value- The JSON-formatted character sequence to parse. Must not benull .- Returns:
- The parsed
Json5List.
-