org.modeshape.jcr.api

## Interface Property

- All Superinterfaces:
    Item, Property

      public interface Property
      extends Property

  Extension of `Property` with some custom methods for retrieving values.

- - ### Field Summary

    - ### Fields inherited from interface javax.jcr.Property

      `JCR_ACTIVITY, JCR_AUTOCREATED, JCR_BASE_VERSION, JCR_CHILD_VERSION_HISTORY, JCR_CONFIGURATION, JCR_CONTENT, JCR_COPIED_FROM, JCR_CREATED, JCR_CREATED_BY, JCR_CURRENT_LIFECYCLE_STATE, JCR_DATA, JCR_DEFAULT_PRIMARY_TYPE, JCR_DEFAULT_VALUES, JCR_DESCRIPTION, JCR_ENCODING, JCR_FROZEN_MIXIN_TYPES, JCR_FROZEN_PRIMARY_TYPE, JCR_FROZEN_UUID, JCR_HAS_ORDERABLE_CHILD_NODES, JCR_HOST, JCR_ID, JCR_IS_ABSTRACT, JCR_IS_CHECKED_OUT, JCR_IS_MIXIN, JCR_LANGUAGE, JCR_LAST_MODIFIED, JCR_LAST_MODIFIED_BY, JCR_LIFECYCLE_POLICY, JCR_LOCK_IS_DEEP, JCR_LOCK_OWNER, JCR_MANDATORY, JCR_MERGE_FAILED, JCR_MIMETYPE, JCR_MIXIN_TYPES, JCR_MULTIPLE, JCR_NAME, JCR_NODE_TYPE_NAME, JCR_ON_PARENT_VERSION, JCR_PATH, JCR_PORT, JCR_PREDECESSORS, JCR_PRIMARY_ITEM_NAME, JCR_PRIMARY_TYPE, JCR_PROTECTED, JCR_PROTOCOL, JCR_REPOSITORY, JCR_REQUIRED_PRIMARY_TYPES, JCR_REQUIRED_TYPE, JCR_ROOT, JCR_SAME_NAME_SIBLINGS, JCR_STATEMENT, JCR_SUCCESSORS, JCR_SUPERTYPES, JCR_TITLE, JCR_UUID, JCR_VALUE_CONSTRAINTS, JCR_VERSION_HISTORY, JCR_VERSIONABLE_UUID, JCR_WORKSPACE`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `<T> T` | `getAs(Class<T> type)` Converts the value(s) of the property (if possible) to the specified type.
    `<T> T` | `getAs(Class<T> type, int index)` Converts the value of the property located at the given index to the specified type.

    - ### Methods inherited from interface javax.jcr.Property

      `getBinary, getBoolean, getDate, getDecimal, getDefinition, getDouble, getLength, getLengths, getLong, getNode, getProperty, getStream, getString, getType, getValue, getValues, isMultiple, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue`

    - ### Methods inherited from interface javax.jcr.Item

      `accept, getAncestor, getDepth, getName, getParent, getPath, getSession, isModified, isNew, isNode, isSame, refresh, remove, save`

- - ### Method Detail

    - #### getAs

          <T> T getAs(Class<T> type)
                  throws ValueFormatException,
                         RepositoryException

      Converts the value(s) of the property (if possible) to the specified type. The list of supported types for single-valued properties is:
      - `String`
      - `Long`
      - `Double`
      - `Boolean`
      - `BigDecimal`
      - `Calendar`
      - `Date`
      - `DateTime`
      - `Binary`
      - `Binary`
      - `InputStream`
      - `Node`
      - `NodeIterator`
      The list of supported types for multi-valued properties is:
      - `String``[]`
      - `Long``[]`
      - `Double``[]`
      - `Boolean``[]`
      - `BigDecimal``[]`
      - `Calendar``[]`
      - `Date``[]`
      - `DateTime``[]`
      - `Binary``[]`
      - `Binary``[]`
      - `InputStream``[]`
      - `Node``[]`
      - `NodeIterator`

      For single-valued properties, this method attempts to convert the actual value into the specified type. For multi-valued properties, this method attempts to convert the actual values into an array of the specified type; the only exception to this rule is that in the case of multi-valued reference properties a simple `NodeIterator` type is expected: `getAs(NodeIterator.class)`.

      For example, the following shows how to obtain the value of a single-valued property as a `String` value:

               Property prop = ...
               String value = prop.getAs(String.class);

      If the property is multi-valued, then the values can be obtained by passing in the desired array type:

               String[] values = prop.getAs(String[].class);

      This example will always work, since all property values can be converted to a `String`.

      The following attempts to convert all values to `Date` instances:

               Date[] values = prop.getAs(Date[].class);

      Finally, a single- or multi-valued property whose value(s) are references can easily be obtained as a `NodeIterator`, which can represent one or multiple `Node` instances:

               NodeIterator iter = prop.getAs(NodeIterator.class);

      Type Parameters:
        `T` - the type-argument for `type`
      Parameters:
        `type` - a `Class` representing the type to which to convert the values of the property; may not be `null` and is expected to be one of the above types.
      Returns:
        the value of this property converted to the given type.
      Throws:
        `ValueFormatException` - if the conversion cannot be performed. This can occur for a number of reasons: type incompatibility or passing in an array type for a single value property or passing in a non-array type for a multi-valued property.
        `RepositoryException` - if anything else unexpected fails when attempting to perform the conversion.

    - #### getAs

          <T> T getAs(Class<T> type,
                    int index)
                  throws ValueFormatException,
                         IndexOutOfBoundsException,
                         RepositoryException

      Converts the value of the property located at the given index to the specified type. This can be used for single-valued properties if the `index` property is '0', or multi-valued properties. Array types should not be supplied as the first parameter.

      For example, this is a property usage of this method to obtain the value of a single-valued property or the first value of a multi-valued property as a `long`:

               Long value = prop.getAs(Long.class, 0)

      Likewise, the following usage will only work for multi-valued properties, since only a multi-valued property can have 2 or more values:

               Long value = prop.getAs(Long.class, 1)

      Type Parameters:
        `T` - the type-argument for `type`
      Parameters:
        `type` - a `Class` representing the type to which to convert the value of the property; may not be `null` and is expected to be one of the types from `getAs(Class)`.
        `index` - the position of the property in the array of values.
      Returns:
        the value at the position `index` converted to the given type.
      Throws:
        `ValueFormatException` - if the conversion cannot be performed or if this method is called for single-valued properties.
        `IndexOutOfBoundsException` - if `index` is outside the array of values for the property.
        `RepositoryException` - if anything unexpected fails.

Copyright © 2008-2014 JBoss, a division of Red Hat. All Rights Reserved.