Interface ExtensibleObject<O extends ExtensibleObject<O,E>,E extends ObjectExtension<O,E>>

Type Parameters:
O - Type of extensible object
E - Extension marker interface
All Known Subinterfaces:
NormalizedNodeStreamWriter, ReusableStreamReceiver
All Known Implementing Classes:
FormattingNormalizedNodeStreamWriter, ForwardingNormalizedNodeStreamWriter, ImmutableMetadataNormalizedNodeStreamWriter, ImmutableMountPointNormalizedNodeStreamWriter, ImmutableNormalizedNodeStreamWriter, JSONNormalizedNodeStreamWriter, LoggingNormalizedNodeStreamWriter, QNameTransformingStreamWriter, ReusableImmutableNormalizedNodeStreamWriter, XMLStreamNormalizedNodeStreamWriter

public interface ExtensibleObject<O extends ExtensibleObject<O,E>,E extends ObjectExtension<O,E>>
Interface specifying access to extensions attached to a particular object. This functionality is loosely based on Extensible Object pattern.
  • Method Summary

    Modifier and Type
    Method
    Description
    default <T extends E>
    @Nullable T
    extension(Class<T> type)
    Return an extension interface, if currently available.
    default <T extends E>
    Optional<T>
     
    default @NonNull Collection<? extends E>
    Return currently-supported extensions.
  • Method Details

    • extension

      default <T extends E> @Nullable T extension(Class<T> type)
      Return an extension interface, if currently available.
      Type Parameters:
      T - Extension type
      Parameters:
      type - Extension type class
      Returns:
      An extension instance, or null
      Throws:
      NullPointerException - if type is null
      Implementation Requirements:
      Default implementation defers to linear search of supportedExtensions().
    • findExtension

      default <T extends E> Optional<T> findExtension(Class<T> type)
    • supportedExtensions

      default @NonNull Collection<? extends E> supportedExtensions()
      Return currently-supported extensions. Note that the returned collection may change if this object is mutable.
      Returns:
      Supported extensions
      Implementation Requirements:
      Default implementations returns an empty List.