# Class DefaultFilterFactory.Features<G,T>

Object
AbstractFactory
DefaultFilterFactory<AbstractFeature, G, T>
Features<G,T>

Type Parameters:
  `G` - base class of geometry objects. The implementation-neutral type is GeoAPI `Geometry`, but this factory allows the use of other implementations such as JTS `Geometry` or ESRI `Geometry`.
  `T` - base class of temporal objects.

All Implemented Interfaces:
  `Factory`

Enclosing class:
  `DefaultFilterFactory<R,G,T>`

public static class DefaultFilterFactory.Features<G,T> extends DefaultFilterFactory<AbstractFeature, G, T>
A filter factory operating on `AbstractFeature` instances.

Since:
  1.1

- ## Nested Class Summary

  ### Nested classes/interfaces inherited from class DefaultFilterFactory

  `DefaultFilterFactory​.Features<G,T>`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Features(Class<G> spatial, Class<T> temporal, WraparoundMethod wraparound)`
  Creates a new factory operating on `AbstractFeature` instances.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `<V> Expression<AbstractFeature, V>`
  `property(String xpath, Class<V> type)`
  Creates an expression whose value is computed by retrieving the value indicated by a path in a resource.
  `Filter<AbstractFeature>`
  `resourceId(String identifier)`
  Creates a new predicate to identify an identifiable resource within a filter expression.

  ### Methods inherited from class DefaultFilterFactory

  `add, after, and, and, anyInteracts, bbox, before, begins, begunBy, between, beyond, contains, crosses, disjoint, divide, during, endedBy, ends, equal, equals, forFeatures, forResources, function, function, function, greater, greaterOrEqual, intersects, isNil, isNull, less, lessOrEqual, like, like, literal, meets, metBy, multiply, not, notEqual, or, or, overlappedBy, overlaps, property, subtract, tcontains, tequals, touches, toverlaps, within, within`

  ### Methods inherited from class AbstractFactory

  `getVendor, toString`

  ### Methods inherited from class Object

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

- ## Constructor Details

  - ### Features

    public Features(Class<G> spatial, Class<T> temporal, WraparoundMethod wraparound)
    Creates a new factory operating on `AbstractFeature` instances. See the DefaultFilterFactory(Class, Class, WraparoundMethod) super-class constructor} for a list of valid class arguments.
    Parameters:
      `spatial` - type of spatial objects, or `Object​.class` for default.
      `temporal` - type of temporal objects, or `Object​.class` for any supported type.
      `wraparound` - the strategy to use for representing a region crossing the anti-meridian.
    See Also:
      - `DefaultFilterFactory​.forFeatures()`

- ## Method Details

  - ### resourceId

    public Filter<AbstractFeature> resourceId(String identifier)
    Creates a new predicate to identify an identifiable resource within a filter expression.
    Specified by:
      `resourceId` in class `DefaultFilterFactory<AbstractFeature, G, T>`
    Parameters:
      `identifier` - identifier of the resource that shall be selected by the predicate.
    Returns:
      the predicate.

  - ### property

    public <V> Expression<AbstractFeature, V> property(String xpath, Class<V> type)
    Creates an expression whose value is computed by retrieving the value indicated by a path in a resource. If all characters in the path are Unicode identifier parts, then the XPath expression is simply a property name.

    The desired type of property values can be specified. For example if the property values should be numbers, then `type` can be `Number.class`. If property values can be of any type with no conversion desired, then `type` should be `Object​.class`.

    #### Supported XPath syntax

    If the given `xpath` contains the "/" character, then all path components before the last one are interpreted as associations to follow. For example if the XPath is `"client/name"`, then the `ValueReference` applied on feature F will first search for an association named `"client"` to feature C, then search for a property named `"name"` in feature C.

    The given `xpath` may contain scoped names. For example `"foo:client"` is the name `"client"` in scope `"foo"`. If the scope is an URL, then it needs to be enclosed inside `"Q{…}"`. Example: `"Q{http://www​.foo​.com/bar}client"`.

    Specified by:
      `property` in class `DefaultFilterFactory<AbstractFeature, G, T>`
    Type Parameters:
      `V` - the type of the values to be fetched (compile-time value of `type`).
    Parameters:
      `xpath` - the path to the property whose value will be returned by the `apply(R)` method.
      `type` - the type of the values to be fetched (run-time value of `<V>`).
    Returns:
      an expression evaluating the referenced property value.