Class AbstractResource
- java.lang.Object
-
- org.onehippo.cms7.crisp.api.resource.AbstractResource
-
- All Implemented Interfaces:
Serializable
,Resource
public abstract class AbstractResource extends Object implements Resource
AbstractResource
representation.- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description AbstractResource(String resourceType)
Construct resource representation by using resource type name.AbstractResource(String resourceType, String name)
Constructs resource representation by using resource type name and resource name.AbstractResource(Resource parent, String resourceType, String name)
Constructs resource representation by using parent resoruce representation, resource type name and resource name.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected static <T> T
convertValueOfBasicType(Object value, Class<T> expectedType)
Convert thevalue
of a basic type to one of theexpectedType
.long
getChildCount()
Returns child resource count of this resource representation.ResourceCollection
getChildren()
Return aResourceCollection
of child resource representations.Object
getDefaultValue()
Resolves the default property value of this resource if available, or null if unavailable.<T> T
getDefaultValue(Class<T> type)
Resolves the default property value of this resource if available and converts it into the given type, or null if unavailable.String
getName()
Returns the name of this resource representation if there's any.Object
getNodeData()
Return the underlying, internal node data that thisResource
represents.Resource
getParent()
Returns parent resource representation if there's any.String
getPath()
Returns the path of this resource representation if there's any.String
getResourceType()
Returns the resource type name of this resource representation if there's any.Object
getValue(String relPath)
Resolves a property value of this resource by the givenrelPath
.<T> T
getValue(String relPath, Class<T> type)
Resolves a property value of this resource by the givenrelPath
and converts it into the given type.boolean
isAnyChildContained()
Returns true if this resource representation contains any child resource representation.boolean
isArray()
Returns true if this resource representation is purely for an array (e.g, JSON Array if underlying data is based on JSON).boolean
isResourceType(String resourceType)
Returns true if this resource representation is typed and of the specificresourceType
name.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.onehippo.cms7.crisp.api.resource.Resource
dump, getChildren, getMetadata, getValueMap
-
-
-
-
Constructor Detail
-
AbstractResource
public AbstractResource(String resourceType)
Construct resource representation by using resource type name.- Parameters:
resourceType
- resource type name
-
AbstractResource
public AbstractResource(String resourceType, String name)
Constructs resource representation by using resource type name and resource name.- Parameters:
resourceType
- resource type namename
- resource name
-
AbstractResource
public AbstractResource(Resource parent, String resourceType, String name)
Constructs resource representation by using parent resoruce representation, resource type name and resource name.- Parameters:
parent
- parent resource representationresourceType
- resource type namename
- resource name
-
-
Method Detail
-
convertValueOfBasicType
protected static <T> T convertValueOfBasicType(Object value, Class<T> expectedType)
Convert thevalue
of a basic type to one of theexpectedType
.- Parameters:
value
- the input value of a basic typeexpectedType
- the expected type to convert to- Returns:
- Converted value of the
expectedType
-
getResourceType
public String getResourceType()
Returns the resource type name of this resource representation if there's any. For example, a JSON data based implementation may return '@type' property based on its domain rules, or a JCR based implementation may simply returnjavax.jcr.Node#getPrimaryNodeType().getName()
.- Specified by:
getResourceType
in interfaceResource
- Returns:
- the resource type name of this resource representation if there's any
-
isResourceType
public boolean isResourceType(String resourceType)
Returns true if this resource representation is typed and of the specificresourceType
name.- Specified by:
isResourceType
in interfaceResource
- Parameters:
resourceType
- resource type name- Returns:
- true if this resource representation is typed and of the specific
resourceType
name
-
getName
public String getName()
Returns the name of this resource representation if there's any. For example, a JSON data based implementation may return '@name' property based on its domain rules, or a JCR based implementation may simply returnjavax.jcr.Item#getName()
.
-
getPath
public String getPath()
Returns the path of this resource representation if there's any. For example, a JSON data based implementation may construct an XPath-like path based on object hierarchy, or a JCR based implementation may simply returnjavax.jcr.Item#getPath()
.
-
getParent
public Resource getParent()
Returns parent resource representation if there's any.
-
isAnyChildContained
public boolean isAnyChildContained()
Returns true if this resource representation contains any child resource representation.- Specified by:
isAnyChildContained
in interfaceResource
- Returns:
- true if this resource representation contains any child resource representation
-
isArray
public boolean isArray()
Returns true if this resource representation is purely for an array (e.g, JSON Array if underlying data is based on JSON).
-
getChildCount
public long getChildCount()
Returns child resource count of this resource representation.- Specified by:
getChildCount
in interfaceResource
- Returns:
- child resource count of this resource representation
-
getChildren
public ResourceCollection getChildren()
Return aResourceCollection
of child resource representations.- Specified by:
getChildren
in interfaceResource
- Returns:
- a
ResourceCollection
of child resource representations
-
getValue
public Object getValue(String relPath)
Resolves a property value of this resource by the givenrelPath
. Or null if not resolved by therelPath
.If
relPath
is a relative value path, like"content/title"
, then the return should be equivalent to the result of the call,((Resource) getValueMap().get("content")).getValueMap().get("title")
if existing.In addition, a path segment may contain an array index notation like
"content/images[1]/title"
. In this case, the value atcontent/images
must be an array typeResource
object which returns true onResource.isArray()
.
-
getValue
public <T> T getValue(String relPath, Class<T> type)
Resolves a property value of this resource by the givenrelPath
and converts it into the given type. Or null if not resolved by therelPath
.If
relPath
is a relative value path, like"content/title"
, then the return should be equivalent to the result of the call,((Resource) getValueMap().get("content")).getValueMap().get("title")
if existing.In addition, a path segment may contain an array index notation like
"content/images[1]/title"
. In this case, the value atcontent/images
must be an array typeResource
object which returns true onResource.isArray()
.
-
getDefaultValue
public Object getDefaultValue()
Resolves the default property value of this resource if available, or null if unavailable. The default value resolution totally depends on the implementations. For example, an XML element based implementation may choose to return the text content of the underlying element.This default implementation is equivalent to
getValueMap().get("")
if not overriden.- Specified by:
getDefaultValue
in interfaceResource
- Returns:
- the default property value of this resource if available, or null if unavailable
-
getDefaultValue
public <T> T getDefaultValue(Class<T> type)
Resolves the default property value of this resource if available and converts it into the given type, or null if unavailable. The default value resolution totally depends on the implementations. For example, an XML element based implementation may choose to return the text content of the underlying element.This default implementation is equivalent to
getValueMap().get("", type)
if not overriden.- Specified by:
getDefaultValue
in interfaceResource
- Returns:
- the default property value of this resource if available, or null if unavailable
-
getNodeData
public Object getNodeData()
Description copied from interface:Resource
Return the underlying, internal node data that thisResource
represents.WARNING: This method is for experts only who understands the risk of accessing the underlying internal, node data, and who is willing to change and upgrade their applications if the type of the underlying, internal data changes at any time in the future. The return object and its type of the underlying, internal data is not guaranteed in the future versions because this method is really implementation specific.
NOTE: The return of this method is really implementation specific. If a underlying
ResourceResolver
maintains a Jackson node object for aResource
object, then it might support this method by returning the Jackson node or just returnnull
when it doesn't support this method.- Specified by:
getNodeData
in interfaceResource
- Returns:
- the underlying node data if supported by the underlying
ResourceResolver
ornull
otherwise.
-
-