Package org.apache.sling.api.resource

# Class AbstractResource

java.lang.Object
org.apache.sling.api.adapter.SlingAdaptable
org.apache.sling.api.resource.AbstractResource

All Implemented Interfaces:
  `Adaptable`, `Resource`

Direct Known Subclasses:
  `SyntheticResource`

public abstract class AbstractResource extends SlingAdaptable implements Resource
The `AbstractResource` is an abstract implementation of the `Resource` interface.

Implementations of the `Resource` interface are strongly encouraged to either extend from this class or the `ResourceWrapper` class instead of implementing the `Resource` from the ground up. This will ensure to always be able to support new methods that might be introduced in the `Resource` interface in the future.

Since:
  2.1.0 (Sling API Bundle 2.1.0)

## Field Summary

### Fields inherited from interface org.apache.sling.api.resource.Resource

`RESOURCE_TYPE_NON_EXISTING`

## Constructor Summary

Constructors
Constructor
Description
`AbstractResource()`

## Method Summary

Modifier and Type
Method
Description
`Resource`
`getChild(String relPath)`
Returns the indicated child of this resource.
`Iterable<Resource>`
`getChildren()`
Returns an iterable of the direct children of this resource.
`String`
`getName()`
Returns the name of this resource.
`Resource`
`getParent()`
Returns the parent resource of this resource.
`ValueMap`
`getValueMap()`
This method calls `Adaptable.adaptTo(Class)` with the `ValueMap` class as an argument.
`boolean`
`hasChildren()`
Checks to see if there are direct children of this resource by invoking `ResourceResolver.hasChildren(Resource)`.
`boolean`
`isResourceType(String resourceType)`
Returns `true` if this resource is of the given resource type or if any of the super resource types equals the given resource type.
`Iterator<Resource>`
`listChildren()`
Returns an iterator on the direct child resources.

### Methods inherited from class org.apache.sling.api.adapter.SlingAdaptable

`adaptTo, setAdapterManager, unsetAdapterManager`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface org.apache.sling.api.adapter.Adaptable

`adaptTo`

### Methods inherited from interface org.apache.sling.api.resource.Resource

`getPath, getResourceMetadata, getResourceResolver, getResourceSuperType, getResourceType`

## Constructor Details

### AbstractResource

public AbstractResource()

## Method Details

### getName

public String getName()
Returns the name of this resource.

This method is implemented as a pure string operation by calling the `ResourceUtil.getName(String)` method with the path of this resource.

Specified by:
  `getName` in interface `Resource`
Returns:
  The resource name

### getParent

public Resource getParent()
Returns the parent resource of this resource.

This method is implemented calling the `ResourceResolver.getParent(Resource)` method.

Specified by:
  `getParent` in interface `Resource`
Returns:
  The parent resource or `null`.
See Also:
  - `ResourceResolver.getParent(Resource)`

### getChild

public Resource getChild(String relPath)
Returns the indicated child of this resource.

This method is implemented calling the `ResourceResolver.getResource(Resource, String)` method. As such the `relPath` argument may even be an absolute path or a path containing relative path segments `.` (current resource) and `..` (parent resource).

Implementations should not generally overwrite this method without calling this base class implementation.

Specified by:
  `getChild` in interface `Resource`
Parameters:
  `relPath` - relative path to the child resource
Returns:
  The child resource or `null`
See Also:
  - `ResourceResolver.getResource(Resource, String)`

### listChildren

public Iterator<Resource> listChildren()
Returns an iterator on the direct child resources.

This method is implemented calling the `ResourceResolver.listChildren(Resource)` method.

Implementations should not generally overwrite this method without calling this base class implementation.

Specified by:
  `listChildren` in interface `Resource`
Returns:
  An iterator for child resources.
See Also:
  - `ResourceResolver.listChildren(Resource)`

### getChildren

public Iterable<Resource> getChildren()
Description copied from interface: `Resource`
Returns an iterable of the direct children of this resource.

This method is a convenience and returns exactly the same resources as calling `getResourceResolver().getChildren(resource)`.

Specified by:
  `getChildren` in interface `Resource`
Returns:
  An iterable for child resources
See Also:
  - `Resource.getChildren()`

### hasChildren

public boolean hasChildren()
Checks to see if there are direct children of this resource by invoking `ResourceResolver.hasChildren(Resource)`.

Specified by:
  `hasChildren` in interface `Resource`
Returns:
  `true` if the resource has any child resources

### isResourceType

public boolean isResourceType(String resourceType)
Returns `true` if this resource is of the given resource type or if any of the super resource types equals the given resource type.

This method delegates to `ResourceResolver.isResourceType(Resource, String)`

Specified by:
  `isResourceType` in interface `Resource`
Parameters:
  `resourceType` - the resource type to check this resource against
Returns:
  `true` if the resource type or any of the resource's super type(s) equals the given resource type, `false` otherwise; `false` can also be returned if `resourceType` is null
See Also:
  - `ResourceResolver.isResourceType(Resource, String)`

### getValueMap

public ValueMap getValueMap()
This method calls `Adaptable.adaptTo(Class)` with the `ValueMap` class as an argument. If the `adaptTo` method returns a map, this map is returned. If the resource is not adaptable to a value map, next an adaption to `Map` is tried and if this is successful the map is wrapped as a value map. If the adaptions are not successful an empty value map is returned.

Specified by:
  `getValueMap` in interface `Resource`
Returns:
  A value map
See Also:
  - `Resource.getValueMap()`