Class DocViewProperty2

java.lang.Object
org.apache.jackrabbit.vault.util.DocViewProperty2

public class DocViewProperty2 extends Object
Immutable helper class that represents a JCR property in the FileVault (enhanced) document view format. It contains formatting and parsing methods for serializing/deserializing enhanced docview properties.
The string representation adheres to the following grammar:
 prop:= [ "{" type "}" ] ( value | "[" [ value { "," value } ] "]" )
 type := PropertyType.nameFromValue(int) | BINARY_REF
 value := is a string representation of the value where the following characters are escaped: ',\[{' with a leading '\'
 
 
Since:
3.6.0
See Also:
  • Field Details

  • Constructor Details

    • DocViewProperty2

      public DocViewProperty2(@NotNull @NotNull Name name, @NotNull @NotNull String value, int type)
      Creates a new single-value property.
      Parameters:
      name - name of the property
      value - value
      type - type of the property
    • DocViewProperty2

      public DocViewProperty2(@NotNull @NotNull Name name, @NotNull @NotNull String value)
      Creates a new single-value property with an undefined type.
      Parameters:
      name - name of the property
      value - value
    • DocViewProperty2

      public DocViewProperty2(@NotNull @NotNull Name name, @NotNull @NotNull List<String> values, int type)
      Creates a new multi-value property.
      Parameters:
      name - name of the property
      values - values
      type - type of the property
    • DocViewProperty2

      public DocViewProperty2(@NotNull @NotNull Name name, @NotNull @NotNull List<String> values)
      Creates a new multi-value property with an undefined type.
      Parameters:
      name - name of the property
      values - values
  • Method Details

    • fromValues

      @NotNull public static @NotNull DocViewProperty2 fromValues(@NotNull @NotNull Name name, @NotNull @NotNull Value[] values, int type, boolean isMulti, boolean sort, boolean useBinaryReferences) throws RepositoryException
      Creates a new property based on an array of Values
      Parameters:
      name - the name of the property
      values - the values (always an array, may be empty), must not contain null items
      type - the type of the property
      isMulti - true in case this is a multivalue property
      sort - true in case the value array should be sorted first
      useBinaryReferences - to use the binary reference as value (if available)
      Returns:
      the new property
      Throws:
      RepositoryException
    • fromProperty

      @NotNull public static @NotNull DocViewProperty2 fromProperty(@NotNull @NotNull Property prop, boolean sort, boolean useBinaryReferences) throws RepositoryException
      Creates a new property based on a JCR Property object.
      Parameters:
      prop - the JCR property
      sort - if true multi-value properties should be sorted
      useBinaryReferences - true to use binary references
      Returns:
      the new property
      Throws:
      IllegalArgumentException - if single value property and not exactly 1 value is given.
      RepositoryException - if another error occurs
    • parse

      @NotNull public static @NotNull DocViewProperty2 parse(String name, String value, NameResolver nameResolver) throws IllegalNameException, NamespaceException
      Parses a enhanced docview property string and returns the property.
      Parameters:
      name - name of the property (either in qualified or extended form)
      value - (attribute) value
      Returns:
      a property
      Throws:
      IllegalArgumentException - in case the given value does not follow the doc view property grammar
      NamespaceException
      IllegalNameException
    • parse

      @NotNull public static @NotNull DocViewProperty2 parse(Name name, String value) throws IllegalNameException, NamespaceException
      Parses a enhanced docview property string and returns the property.
      Parameters:
      name - name of the property
      value - (attribute) value
      Returns:
      a property
      Throws:
      IllegalArgumentException - in case the given value does not follow the doc view property grammar
      NamespaceException
      IllegalNameException
    • format

      @NotNull public static @NotNull String format(@NotNull @NotNull Property prop) throws RepositoryException
      Formats (serializes) the given JCR property value according to the enhanced docview syntax.
      Parameters:
      prop - the JCR property
      Returns:
      the formatted string of the property value
      Throws:
      RepositoryException - if a repository error occurs
    • format

      @NotNull public static @NotNull String format(@NotNull @NotNull Property prop, boolean sort, boolean useBinaryReferences) throws RepositoryException
      Formats (serializes) the given JCR property value to the enhanced docview syntax.
      Parameters:
      prop - the JCR property
      sort - if true multi-value properties are sorted
      useBinaryReferences - true to use binary references
      Returns:
      the formatted string of the property value
      Throws:
      RepositoryException - if a repository error occurs
    • formatValue

      @NotNull public @NotNull String formatValue()
      Generates string representation of this DocView property value.
      Returns:
      the string representation of the value
    • apply

      public boolean apply(@NotNull @NotNull Node node) throws RepositoryException
      Sets this property on the given node.
      Parameters:
      node - the node
      Returns:
      true if the value was modified.
      Throws:
      RepositoryException - if a repository error occurs
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object
    • toString

      public String toString()
      This does not return the string representation of the enhanced docview property value but rather a descriptive string including the property name for debugging purposes. Use formatValue(), format(Property) or format(Property, boolean, boolean) to get the enhanced docview string representation of the value.
      Overrides:
      toString in class Object
    • getName

      @NotNull public @NotNull Name getName()
    • isMultiValue

      public boolean isMultiValue()
    • isReferenceProperty

      public boolean isReferenceProperty()
    • getType

      public int getType()
      Returns:
      one of the values defined in PropertyType
    • getStringValue

      @NotNull public @NotNull Optional<String> getStringValue()
    • getStringValues

      @NotNull public @NotNull List<String> getStringValues()
    • getValue

      @NotNull public @NotNull Optional<Value> getValue(@NotNull @NotNull ValueFactory valueFactory) throws ValueFormatException
      Parameters:
      valueFactory - the value factory to use for converting the underlying string to the JCR value
      Returns:
      the value or empty if no value set. For multi value only the first item is returned
      Throws:
      ValueFormatException
      Since:
      3.7.0
    • getValues

      @NotNull public @NotNull List<Value> getValues(@NotNull @NotNull ValueFactory valueFactory) throws ValueFormatException
      Parameters:
      valueFactory - the value factory to use for converting the underlying string to the JCR value
      Returns:
      the list of values, may be empty. In case of single value entry just a single value list.
      Throws:
      ValueFormatException
      Since:
      3.7.0