Class PrimitiveXNodeImpl<T>

All Implemented Interfaces:
Copyable<XNode>, Freezable, Visitable<XNode>, MetadataAware, PrimitiveXNode<T>, XNode, DebugDumpable, Serializable, Cloneable

public class PrimitiveXNodeImpl<T> extends XNodeImpl implements Serializable, PrimitiveXNode<T>
See Also:
  • Constructor Details

    • PrimitiveXNodeImpl

      public PrimitiveXNodeImpl()
    • PrimitiveXNodeImpl

      public PrimitiveXNodeImpl(T value)
    • PrimitiveXNodeImpl

      public PrimitiveXNodeImpl(PrismNamespaceContext ctx)
    • PrimitiveXNodeImpl

      public PrimitiveXNodeImpl(T value, PrismNamespaceContext ctx)
  • Method Details

    • getValue

      public T getValue()
      Specified by:
      getValue in interface PrimitiveXNode<T>
    • getParsedValue

      public <X> X getParsedValue(@NotNull @NotNull QName typeName, @Nullable @Nullable Class<X> expectedClass) throws SchemaException
      Specified by:
      getParsedValue in interface PrimitiveXNode<T>
      Throws:
      SchemaException
    • getParsedValue

      public <X> X getParsedValue(@NotNull @NotNull QName typeName, @Nullable @Nullable Class<X> expectedClass, XNodeProcessorEvaluationMode mode) throws SchemaException
      Throws:
      SchemaException
    • getValueParser

      public ValueParser<T> getValueParser()
      Specified by:
      getValueParser in interface PrimitiveXNode<T>
    • setValueParser

      public void setValueParser(ValueParser<T> valueParser)
    • setValue

      public void setValue(T value, QName typeQName)
    • setValue

      public void setValue(T value, QName typeQName, SerializationOptions options)
    • isParsed

      public boolean isParsed()
      Specified by:
      isParsed in interface PrimitiveXNode<T>
    • isAttribute

      public boolean isAttribute()
    • setAttribute

      public void setAttribute(boolean isAttribute)
    • isEmpty

      public boolean isEmpty()
      Specified by:
      isEmpty in interface XNode
      Specified by:
      isEmpty in class XNodeImpl
    • getParsedValueWithoutRecording

      public T getParsedValueWithoutRecording(QName typeName) throws SchemaException
      Returns parsed value without actually changing node state from UNPARSED to PARSED (if node is originally unparsed). Useful when we are not sure about the type name and do not want to record parsed value based on wrong type name.
      Throws:
      SchemaException
    • getFormattedValue

      public String getFormattedValue()
      Returns a value that is correctly string-formatted according to its type definition. Works properly only if definition is set.
    • getGuessedFormattedValue

      public String getGuessedFormattedValue() throws SchemaException
      Returns formatted parsed value without actually changing node state from UNPARSED to PARSED (if node is originally unparsed). Useful e.g. to serialize nodes that have a type declaration but were not parsed yet. Experimental. Should be thought through yet.
      Specified by:
      getGuessedFormattedValue in interface PrimitiveXNode<T>
      Returns:
      properly formatted value
      Throws:
      SchemaException
    • accept

      public void accept(Visitor<XNode> visitor)
      Specified by:
      accept in interface Visitable<T>
    • debugDump

      public String debugDump(int indent)
      Specified by:
      debugDump in interface DebugDumpable
    • getDesc

      public String getDesc()
      Specified by:
      getDesc in class XNodeImpl
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getStringValue

      public String getStringValue()
      Description copied from interface: PrimitiveXNode
      Returns the value represented as string - in the best format that we can. There is no guarantee that the returned value will be precise. This method is used as a "last instance" if everything else fails. Invocation of this method will not change the state of this xnode, e.g. it will NOT cause it to be parsed.
      Specified by:
      getStringValue in interface PrimitiveXNode<T>
    • getRelevantNamespaceDeclarations

      public Map<String,String> getRelevantNamespaceDeclarations()
      This method is used with conjunction with getStringValue, typically when serializing unparsed values. Because the string value can represent QName or ItemPath, we have to provide relevant namespace declarations. Because we cannot know for sure, we are allowed to return namespace declarations that are not actually used. We should minimize number of such declarations, however. Current implementation simply grabs all potential namespace declarations and searches the xnode's string value for any 'prefix:' substrings. I'm afraid it is all we can do for now. THIS METHOD SHOULD BE CALLED ONLY ON EITHER UNPARSED OR EMPTY NODES.
    • equals

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

      public int hashCode()
      The basic idea of equals() is: - if parsed, compare the value; - if unparsed, compare getStringValue() Therefore the hashcode is generated based on value (if parsed) or getStringValue() (if unparsed).
      Overrides:
      hashCode in class Object
    • performFreeze

      public void performFreeze()
      Overrides:
      performFreeze in class AbstractFreezable
    • copy

      public PrimitiveXNode<T> copy()
      Specified by:
      copy in interface Copyable<T>
      Specified by:
      copy in interface PrimitiveXNode<T>
      Specified by:
      copy in interface XNode
    • getMetadataNodes

      @NotNull public @NotNull List<MapXNode> getMetadataNodes()
      Specified by:
      getMetadataNodes in interface MetadataAware
    • setMetadataNodes

      public void setMetadataNodes(@NotNull @NotNull List<MapXNode> metadataNodes)
      Specified by:
      setMetadataNodes in interface MetadataAware
    • setInfra

      public void setInfra(boolean value)
    • isInfra

      public boolean isInfra()