Class ArrayProperty
- java.lang.Object
-
- org.nuxeo.ecm.core.api.model.impl.AbstractProperty
-
- org.nuxeo.ecm.core.api.model.impl.ScalarProperty
-
- org.nuxeo.ecm.core.api.model.impl.ArrayProperty
-
- All Implemented Interfaces:
Serializable
,Cloneable
,Iterable<Property>
,Property
public class ArrayProperty extends ScalarProperty
- Author:
- Bogdan Stefanescu
- See Also:
- Serialized Form
-
-
Field Summary
-
Fields inherited from class org.nuxeo.ecm.core.api.model.impl.ScalarProperty
field, value
-
Fields inherited from class org.nuxeo.ecm.core.api.model.impl.AbstractProperty
flags, forceDirty, IS_DEPRECATED, IS_READONLY, IS_SECURED, NON_CANON_INDEX, parent
-
Fields inherited from interface org.nuxeo.ecm.core.api.model.Property
DIRTY_MASK, IS_DIRTY, IS_MODIFIED, IS_MOVED, IS_NEW, IS_PHANTOM, IS_REMOVED, NONE
-
-
Constructor Summary
Constructors Constructor Description ArrayProperty(Property parent, Field field, int flags)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
clearDirtyFlags()
Notify the property that its changes was stored so it can safely remove dirty flags.protected Serializable
convert(Collection<?> value)
<T> T
convertTo(Serializable value, Class<T> toType)
Converts the given normalized value to the given type.protected boolean[]
getChildDirty()
ListType
getType()
Get the type of the field corresponding to this property.boolean
isContainer()
Whether this property is a container - this means the property value is a map or a list.boolean
isDirty(int index)
This method provides a way to know if some arrayproperty values are dirty: value or index changed.boolean
isNormalized(Object value)
Checks if the given value is a normalized one.protected boolean
isSameValue(Serializable value1, Serializable value2)
Object
newInstance()
Creates a new and empty instance of a normalized value.Serializable
normalize(Object value)
Normalizes the given value as dictated by the property type.void
setValue(Object value)
Sets this property value.-
Methods inherited from class org.nuxeo.ecm.core.api.model.impl.ScalarProperty
accept, addEmpty, addValue, addValue, clone, get, get, getChildren, getDirtyChildren, getField, getName, internalGetValue, internalSetValue, isSameAs, set, toString
-
Methods inherited from class org.nuxeo.ecm.core.api.model.impl.AbstractProperty
appendDirtyFlags, areFlagsSet, clearFlags, collectPath, computeRemovedProperty, getDefaultValue, getDeprecatedFallback, getDeprecatedParent, getDirtyFlags, getObjectResolver, getParent, getPath, getRoot, getSchema, getValue, getValue, getValue, getValue, getValueDeprecation, getValueForWrite, getXPath, getXPath, hasDefaultValue, init, isComplex, isDeprecated, isDirty, isForceDirty, isList, isModified, isMoved, isNew, isPhantom, isReadOnly, isRemoved, isScalar, isSecured, isSecuredForContext, iterator, moveTo, newDeprecatedMessage, remove, removePhantomFlag, resolvePath, resolvePath, setDirtyFlags, setFlags, setForceDirty, setIsModified, setIsMoved, setIsNew, setIsRemoved, setReadOnly, setValue, setValue, setValueDeprecation, size, validateType
-
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
-
-
-
Method Detail
-
getType
public ListType getType()
Description copied from interface:Property
Get the type of the field corresponding to this property.- Specified by:
getType
in interfaceProperty
- Overrides:
getType
in classScalarProperty
- Returns:
- the property type
-
isContainer
public boolean isContainer()
Description copied from interface:Property
Whether this property is a container - this means the property value is a map or a list.Container properties don't have a scalar values. Container values are computed each time they are requested - by calling on of the
getValue
methods - by collecting the values of the child properties.- Specified by:
isContainer
in interfaceProperty
- Overrides:
isContainer
in classScalarProperty
- Returns:
- true if scalar false otherwise
-
setValue
public void setValue(Object value) throws PropertyException
Description copied from interface:Property
Sets this property value. The value will be first normalized and then set.For complex or list properties the value will be set recursively (as a map or list value).
- Specified by:
setValue
in interfaceProperty
- Overrides:
setValue
in classAbstractProperty
- Parameters:
value
- the value to set- Throws:
InvalidPropertyValueException
- if the given value type is not compatible with the expected value typePropertyException
-
isSameValue
protected boolean isSameValue(Serializable value1, Serializable value2)
- Overrides:
isSameValue
in classAbstractProperty
-
isNormalized
public boolean isNormalized(Object value)
Description copied from interface:Property
Checks if the given value is a normalized one. This means the value has a type that is normalized.Null values are considered as normalized.
- Specified by:
isNormalized
in interfaceProperty
- Overrides:
isNormalized
in classAbstractProperty
- Parameters:
value
- the value to check- Returns:
- true if the value is normalized false otherwise
-
normalize
public Serializable normalize(Object value) throws PropertyConversionException
Description copied from interface:Property
Normalizes the given value as dictated by the property type.Normalized values are the ones that are used for transportation over the net and that are given to the storage implementation to be stored in the repository
Normalized values must be
Serializable
If the given value is already normalized it will be returned back.
- Specified by:
normalize
in interfaceProperty
- Overrides:
normalize
in classAbstractProperty
- Parameters:
value
- the value to normalize according to the property type- Returns:
- the normalized value
- Throws:
PropertyConversionException
-
convert
protected Serializable convert(Collection<?> value) throws PropertyConversionException
- Throws:
PropertyConversionException
-
convertTo
public <T> T convertTo(Serializable value, Class<T> toType) throws PropertyConversionException
Description copied from interface:Property
Converts the given normalized value to the given type.If the value has already the given type it will be returned back.
- Specified by:
convertTo
in interfaceProperty
- Overrides:
convertTo
in classAbstractProperty
- Parameters:
value
- the normalized value to converttoType
- the conversion type- Returns:
- the converted value, which may be null
- Throws:
PropertyConversionException
- if the conversion cannot be made because of type incompatibilities
-
newInstance
public Object newInstance()
Description copied from interface:Property
Creates a new and empty instance of a normalized value.Empty is used in the sense of a value that has not been initialized or can be considered as an empty value. For example for the
String
type the empty value will be the empty string ""- Specified by:
newInstance
in interfaceProperty
- Overrides:
newInstance
in classAbstractProperty
- Returns:
- the empty instance the empty instance, or null for some implementations
-
getChildDirty
protected boolean[] getChildDirty()
-
isDirty
public boolean isDirty(int index)
This method provides a way to know if some arrayproperty values are dirty: value or index changed. since 7.2
-
clearDirtyFlags
public void clearDirtyFlags()
Description copied from interface:Property
Notify the property that its changes was stored so it can safely remove dirty flags.Dirty flags are removed according to the type of the modifications. This way if the property was REMOVED it becomes a PHANTOM otherwise all dirty flags are cleared.
This method should be used by storage implementors to notify the property it should reset its dirty flags. Note that clearing dirty flags is not propagated to the parent property or to children. You need to clear dirty flags explicitly for each property.
- Specified by:
clearDirtyFlags
in interfaceProperty
- Overrides:
clearDirtyFlags
in classAbstractProperty
-
-