Class BeanPropertyMeta
- All Implemented Interfaces:
Comparable<BeanPropertyMeta>
Contains information such as type of property (e.g. field/getter/setter), class type of property value, and whether any transforms are associated with this property.
Developers will typically not need access to this class. The information provided by it is already exposed through
several methods on the BeanMap API.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classBeanPropertyMeta builder class. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedCreates a new BeanPropertyMeta using the contents of the specified builder. -
Method Summary
Modifier and TypeMethodDescriptionvoidAdds a value to aCollectionor array property.voidAdds a value to aMapor bean property.static BeanPropertyMeta.BuilderCreates a builder forBeanPropertyMeta(org.apache.juneau.BeanPropertyMeta.Builder)objects.booleancanRead()Returnstrue if this property can be read.booleancanWrite()Returnstrue if this property can be written.intbooleanEquivalent to callingBeanMap.get(Object), but is faster since it avoids looking up the property meta.Returns all annotations on this property (field, getter, and setter).<A extends Annotation>
Stream<AnnotationInfo<A>>getAnnotations(Class<A> a) Returns a stream of annotations of the specified type on this property.BeanMeta<?>Returns the bean meta that this property belongs to.Returns the bean dictionary in use for this bean property.ClassMeta<?>Returns theClassMetaof the class of this property.Returns the metadata on the property that this metadata is a delegate for.getDynaMap(Object bean) Returns theMapobject returned by the DynaBean getter.getField()Returns the field for this property.Returns the getter method for this property.Returns the field for this property even if the field is private.getName()Returns the name of this bean property.Returns the override list of properties defined through a@Beanp(properties)annotation on this property.Equivalent to callingBeanMap.getRaw(Object), but is faster since it avoids looking up the property meta.Returns the setter method for this property.inthashCode()booleanisDyna()Returnstrue if this bean property is named"*" .booleanReturnstrue if this property is read-only.booleanisUri()Returnstrue if this bean property is a URI.protected booleanReturnstrue if this property is write-only.Equivalent to callingBeanMap.put(String, Object), but is faster since it avoids looking up the property meta.protected voidSets an array field on this bean.toString()
-
Constructor Details
-
BeanPropertyMeta
Creates a new BeanPropertyMeta using the contents of the specified builder.- Parameters:
b- The builder to copy fields from.
-
-
Method Details
-
builder
Creates a builder forBeanPropertyMeta(org.apache.juneau.BeanPropertyMeta.Builder)objects.- Parameters:
beanMeta- The metadata on the beanname- The bean property name.- Returns:
- A new builder.
-
add
Adds a value to aCollectionor array property.Note that adding values to an array property is inefficient for large arrays since it must copy the array into a larger array on each operation.
- Parameters:
m- The bean of the field being set.pName- The property name if this is a dyna property (i.e."*" ).
Otherwise can benull .value- The value to add to the field.- Throws:
BeanRuntimeException- If field is not a collection or array.
-
add
Adds a value to aMapor bean property.- Parameters:
m- The bean of the field being set.pName- The property name if this is a dyna property (i.e."*" ).
Otherwise can benull .key- The key to add to the field.value- The value to add to the field.- Throws:
BeanRuntimeException- If field is not a map or array.
-
canRead
Returnstrue if this property can be read.- Returns:
true if this property can be read.
-
canWrite
Returnstrue if this property can be written.- Returns:
true if this property can be written.
-
compareTo
- Specified by:
compareToin interfaceComparable<BeanPropertyMeta>
-
equals
-
getAnnotations
Returns all annotations on this property (field, getter, and setter).The annotations are found on:
- The field (if present)
- The getter method (if present) - including annotations on the method, its return type, and package
- The setter method (if present) - including annotations on the method, its return type, and package
The result is memoized and computed only once.
- Returns:
- A list of all annotation infos on this property. Never
null .
-
getAnnotations
Returns a stream of annotations of the specified type on this property.The annotations are found on:
- The field (if present)
- The getter method (if present) - including annotations on the method, its return type, and package
- The setter method (if present) - including annotations on the method, its return type, and package
- Type Parameters:
A- The annotation type to find.- Parameters:
a- The annotation class to find.- Returns:
- A stream of annotation infos of the specified type. Never
null .
-
get
Equivalent to callingBeanMap.get(Object), but is faster since it avoids looking up the property meta.- Parameters:
m- The bean map to get the transformed value from.pName- The property name if this is a dyna property (i.e."*" ).
Otherwise can benull .- Returns:
- The property value.
Returnsnull if this is a write-only property.
-
getBeanMeta
Returns the bean meta that this property belongs to.- Returns:
- The bean meta that this property belongs to.
-
getBeanRegistry
Returns the bean dictionary in use for this bean property.The order of lookup for the dictionary is as follows:
- Dictionary defined via
@Beanp(dictionary). - Dictionary defined via
BeanContext.Builder.beanDictionary(Class...).
- Returns:
- The bean dictionary in use for this bean property. Never
null .
- Dictionary defined via
-
getClassMeta
Returns theClassMetaof the class of this property.If this property or the property type class has a
ObjectSwapassociated with it, this method returns the transformed class meta. This matches the class type that is used by theget(BeanMap,String)andset(BeanMap,String,Object)methods.- Returns:
- The
ClassMetaof the class of this property.
-
getDelegateFor
Returns the metadata on the property that this metadata is a delegate for.- Returns:
- the metadata on the property that this metadata is a delegate for, or this object if it's not a delegate.
-
getDynaMap
public Map<String,Object> getDynaMap(Object bean) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException Returns theMapobject returned by the DynaBean getter.The DynaBean property is the property whose name is
"*" and returns a map of "extra" properties on the bean.- Parameters:
bean- The bean.- Returns:
- The map returned by the getter, or an empty map if the getter returned
null or this isn't a DynaBean property. - Throws:
IllegalArgumentException- Thrown by method invocation.IllegalAccessException- Thrown by method invocation.InvocationTargetException- Thrown by method invocation.
-
getField
Returns the field for this property.- Returns:
- The field info for this bean property, or
null if there is no field associated with this bean property.
-
getGetter
Returns the getter method for this property.- Returns:
- The getter method info for this bean property, or
null if there is no getter method.
-
getInnerField
Returns the field for this property even if the field is private.- Returns:
- The field info for this bean property, or
null if there is no field associated with this bean property.
-
getName
Returns the name of this bean property.- Returns:
- The name of the bean property.
-
getProperties
Returns the override list of properties defined through a@Beanp(properties)annotation on this property.- Returns:
- An unmodifiable list of override properties, or
null if annotation not specified.
-
getRaw
Equivalent to callingBeanMap.getRaw(Object), but is faster since it avoids looking up the property meta.- Parameters:
m- The bean map to get the transformed value from.pName- The property name if this is a dyna property (i.e."*" ).
Otherwise can benull .- Returns:
- The raw property value.
-
getSetter
Returns the setter method for this property.- Returns:
- The setter method info for this bean property, or
null if there is no setter method.
-
hashCode
-
isDyna
Returnstrue if this bean property is named"*" .- Returns:
true if this bean property is named"*" .
-
isReadOnly
Returnstrue if this property is read-only.This implies the property MIGHT be writable, but that parsers should not set a value for it.
- Returns:
true if this property is read-only.
-
isUri
Returnstrue if this bean property is a URI.A bean property can be considered a URI if any of the following are true:
- Returns:
true if this bean property is a URI.
-
set
Equivalent to callingBeanMap.put(String, Object), but is faster since it avoids looking up the property meta.This is a no-op on a read-only property.
- Parameters:
m- The bean map to set the property value on.pName- The property name if this is a dyna property (i.e."*" ).
Otherwise can benull .value- The value to set.- Returns:
- The previous property value.
- Throws:
BeanRuntimeException- If property could not be set.
-
properties
-
toString
-
isWriteOnly
Returnstrue if this property is write-only.This implies the property MIGHT be readable, but that serializers should not serialize it.
- Returns:
true if this property is write-only.
-
setArray
protected void setArray(Object bean, List l) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException Sets an array field on this bean.Works on both
Object and primitive arrays.- Parameters:
bean- The bean of the field.l- The collection to use to set the array field.- Throws:
IllegalArgumentException- Thrown by method invocation.IllegalAccessException- Thrown by method invocation.InvocationTargetException- Thrown by method invocation.
-