org.glassfish.jersey.server.model

## Class RuntimeResource

- java.lang.Object
- - org.glassfish.jersey.server.model.RuntimeResource

All Implemented Interfaces:
  ResourceModelComponent

    public class RuntimeResource
    extends Object
    implements ResourceModelComponent

Runtime resource is a group of `resources` with the same `path` regular expression. Runtime resource is constructed from `resources` creating the `resource model`.

Runtime resource can have child runtime resources which are groups of child resources of all resources constructing this runtime resource.

The following example shows how Runtime resource structure is built from Resource model:

     @Path("{foo}")
     public class TemplateResourceFoo {
         @GET
         @Path("child")
         public String getFoo() {...}

         @Path("{x}")
         @GET
         public String getX() {...}

         @Path("{y}")
         @POST
         public String postY(String entity) {...}
     }

     @Path("{bar}")
     public class TemplateResourceBar {
         @Path("{z}")
         @PUT
         public String putZ(String entity) {...}
     }

Will be represented by RuntimeResources:

line | RuntimeResource regex | Grouped Resources (paths) | Parent RuntimeResource (line)
--- | --- | --- | ---
1 | "/([^/]+?)" | Resource("{foo}"), Resource("{bar}") | no parent
2 | "child" | Child Resource("child") | 1
3 | "/([^/]+?)" | Child Resource("{x}"), Child Resource("{y}"), Child Resource("{z}") | 1

Author:
  Miroslav Fuksa

### Field Summary

Fields
`static Comparator<RuntimeResource>` `COMPARATOR` Comparator of RuntimeResources based on rules respecting resource matching algorithm.

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `accept(ResourceModelVisitor visitor)` A component should call the visitor back with an appropriate visitor interface method to give it a chance to process.
`List<RuntimeResource>` `getChildRuntimeResources()` Get child runtime resources of this resource.
`List<? extends ResourceModelComponent>` `getComponents()` Should return all existing resource model sub-components.
`String` `getFullPathRegex()` Get full regular expression of this runtime resource prefixed by regular expression of parent if present.
`RuntimeResource` `getParent()` Get parent of this runtime resource.
`List<Resource>` `getParentResources()` Return parent `resources` of `resources` from this runtime resource.
`PathPattern` `getPathPattern()` Get path pattern for matching purposes.
`String` `getRegex()` Get regular expression of path pattern of this runtime resource.
`ResourceMethod` `getResourceLocator()` Return the resource locator of this resource.
`List<ResourceMethod>` `getResourceLocators()` Get resource locators of all `resources` of this runtime resource.
`List<ResourceMethod>` `getResourceMethods()` Get resource methods (excluding resource locators) of all `resources` of this runtime resource.
`List<Resource>` `getResources()` Get resources creating this runtime resource.

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

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

### Field Detail

#### COMPARATOR

    public static final Comparator<RuntimeResource> COMPARATOR

Comparator of RuntimeResources based on rules respecting resource matching algorithm.

### Method Detail

#### getChildRuntimeResources

    public List<RuntimeResource> getChildRuntimeResources()

Get child runtime resources of this resource.

Returns:
  List of child runtime resource.

#### getRegex

    public String getRegex()

Get regular expression of path pattern of this runtime resource.

Returns:
  Matching regular expression.

#### getResourceMethods

    public List<ResourceMethod> getResourceMethods()

Get resource methods (excluding resource locators) of all `resources` of this runtime resource.

Returns:
  List of resource methods.

#### getResourceLocators

    public List<ResourceMethod> getResourceLocators()

Get resource locators of all `resources` of this runtime resource.

Note that valid RuntimeResource should have only one resource locator. This method is used for validation purposes.

Returns:
  List of resource locators.

#### getResourceLocator

    public ResourceMethod getResourceLocator()

Return the resource locator of this resource.

Returns:
  Resource locator of this runtime resource.

#### getParent

    public RuntimeResource getParent()

Get parent of this runtime resource.

Returns:
  Parent runtime resource if this runtime resource is a child resource, null otherwise.

#### getPathPattern

    public PathPattern getPathPattern()

Get path pattern for matching purposes.

Returns:
  Path pattern.

#### getFullPathRegex

    public String getFullPathRegex()

Get full regular expression of this runtime resource prefixed by regular expression of parent if present.

Returns:
  Full resource regular expression.

#### getParentResources

    public List<Resource> getParentResources()

Return parent `resources` of `resources` from this runtime resource. The returned list is ordered so that the position of the parent resource in the returned list is the same as position of its child resource in list returned by `getResources()`. Simply said the order of lists returned from `getParentResources()` and `getResources()` from parent-child point of view is the same. If the resource has no parent then the element `null` is in the list.

Returns:
  Parent resource list with resources if this runtime resource is child resource or `null` elements if this runtime resource is the parent resource.

#### getResources

    public List<Resource> getResources()

Get resources creating this runtime resource.

Returns:
  List of resources with same path regular expression which this resource is based on.

#### accept

    public void accept(ResourceModelVisitor visitor)

Description copied from interface: `ResourceModelComponent`
A component should call the visitor back with an appropriate visitor interface method to give it a chance to process.

Specified by:
  `accept` in interface `ResourceModelComponent`
Parameters:
  `visitor` - resource model visitor.

#### getComponents

    public List<? extends ResourceModelComponent> getComponents()

Description copied from interface: `ResourceModelComponent`
Should return all existing resource model sub-components.

Specified by:
  `getComponents` in interface `ResourceModelComponent`
Returns:
  list of all sub-components