org.infinispan.schematic.internal

## Class SchematicEntryProxy

- java.lang.Object
- - org.infinispan.batch.AutoBatchSupport
  - - org.infinispan.schematic.internal.SchematicEntryProxy

- All Implemented Interfaces:
    Cloneable, SchematicEntry

      public class SchematicEntryProxy
      extends AutoBatchSupport
      implements SchematicEntry

  A layer of indirection around an `SchematicEntryLiteral` to provide consistency and isolation for concurrent readers while writes may also be going on. The techniques used in this implementation are very similar to the lock-free reader MVCC model used in the `MVCCEntry` implementations for the core data container, which closely follow software transactional memory approaches to dealing with concurrency.
  Implementations of this class are rarely created on their own; `SchematicEntryLiteral.getProxy(CacheContext, String)` should be used to retrieve an instance of this proxy.
  Typically proxies are only created by the `SchematicEntryLookup` helper, and would not be created by end-user code directly.
  Since:
    5.1
  See Also:
    `AtomicHashMapProxy`

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface org.infinispan.schematic.SchematicEntry

      `SchematicEntry.FieldName`

  - ### Field Summary

    - ### Fields inherited from class org.infinispan.batch.AutoBatchSupport

      `batchContainer`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `Document` | `asDocument()` Get the representation of this entry as a document, which will include the `metadata` and `content` as nested documents.
    `EditableDocument` | `editDocumentContent()` Get an `editable document`, when the content is a `document`.
    `EditableDocument` | `editMetadata()` Get an `editable metadata document`.
    `protected EditableDocument` | `editorFor(Document doc, Path pathToDocument, DocumentObserver observer)`
    `Object` | `getContent()` Return this value's content.
    `Binary` | `getContentAsBinary()` Get this value's content, if it is a Binary object.
    `Document` | `getContentAsDocument()` Get this value's content, if it is a Document object.
    `String` | `getContentType()` Get the media type describing the content.
    `Document` | `getMetadata()` Get the metadata associated with this value.
    `boolean` | `hasBinaryContent()` Return `true` if the `SchematicEntry.getContent()` method would return a Binary (or `SchematicEntry.getContentAsBinary()` would return a non-null value).
    `boolean` | `hasDocumentContent()` Return `true` if the `SchematicEntry.getContent()` method would return a Document (or `SchematicEntry.getContentAsDocument()` would return a non-null value).
    `protected CacheEntry` | `lookupEntryFromCurrentTransaction()` Looks up the CacheEntry stored in transactional context corresponding to this SchematicEntryLiteral.
    `void` | `setContent(Binary content, Document metadata, String defaultContentType)` Set the content for this value to be the supplied `Binary` data described by the supplied content type.
    `void` | `setContent(Document content, Document metadata, String defaultContentType)` Set the content for this value to be the supplied Document and set the content type to be " `application/json`".
    `String` | `toString()`
    `protected SchematicEntryLiteral` | `toValue(Object object)` Utility method that casts the supplied cache entry value to a `literal value` for reading purposes.

    - ### Methods inherited from class org.infinispan.batch.AutoBatchSupport

      `assertBatchingSupported, endAtomic, failAtomic, startAtomic`

    - ### Methods inherited from class java.lang.Object

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

- - ### Method Detail

    - #### toValue

          protected SchematicEntryLiteral toValue(Object object)

      Utility method that casts the supplied cache entry value to a `literal value` for reading purposes.
      Parameters:
        `object` - the cache entry value, which may be a `MarshalledValue`
      Returns:
        the literal value; null only when `object` is null

    - #### lookupEntryFromCurrentTransaction

          protected CacheEntry lookupEntryFromCurrentTransaction()

      Looks up the CacheEntry stored in transactional context corresponding to this SchematicEntryLiteral.
      Returns:
        the cache entry; or null if the SchematicEntryLiteral has yet to be touched by the current transaction

    - #### getMetadata

          public Document getMetadata()

      Description copied from interface: `SchematicEntry`
      Get the metadata associated with this value.
      Specified by:
        `getMetadata` in interface `SchematicEntry`
      Returns:
        the metadata document; never null

    - #### getContentType

          public String getContentType()

      Description copied from interface: `SchematicEntry`
      Get the media type describing the content.
      Specified by:
        `getContentType` in interface `SchematicEntry`
      Returns:
        the media type; never null

    - #### getContent

          public Object getContent()

      Description copied from interface: `SchematicEntry`
      Return this value's content. The result will either be a `Document` or `Binary`. Note that this method will return a non-null value only if the `SchematicEntry.hasDocumentContent()` method returns `true`.
      Specified by:
        `getContent` in interface `SchematicEntry`
      Returns:
        the content, represented as a `Document` object, or null if there is no content

    - #### getContentAsDocument

          public Document getContentAsDocument()

      Description copied from interface: `SchematicEntry`
      Get this value's content, if it is a Document object. This method will always return a non-null Document if `SchematicEntry.hasDocumentContent()` returns `true`, and is therefore equivalent to the following:

           return hasDocumentContent() ? (Document)getContent() : null;

      Specified by:
        `getContentAsDocument` in interface `SchematicEntry`
      Returns:
        the `Document` content, or null if there is no content or the content is a `Binary` value

    - #### getContentAsBinary

          public Binary getContentAsBinary()

      Description copied from interface: `SchematicEntry`
      Get this value's content, if it is a Binary object. This method will always return a non-null Binary if `SchematicEntry.hasDocumentContent()` returns `false`, and is therefore equivalent to the following:

           return hasDocumentContent() ? (Binary)getContent() : null;

      Specified by:
        `getContentAsBinary` in interface `SchematicEntry`
      Returns:
        the `Binary` content, or null if there is no content or if the content is a `Document`

    - #### hasDocumentContent

          public boolean hasDocumentContent()

      Description copied from interface: `SchematicEntry`
      Return `true` if the `SchematicEntry.getContent()` method would return a Document (or `SchematicEntry.getContentAsDocument()` would return a non-null value).

      This is equivalent to the following:

           return getContent() instanceof Document;

      Specified by:
        `hasDocumentContent` in interface `SchematicEntry`
      Returns:
        `true` if the content is a Document, or `false` otherwise

    - #### hasBinaryContent

          public boolean hasBinaryContent()

      Description copied from interface: `SchematicEntry`
      Return `true` if the `SchematicEntry.getContent()` method would return a Binary (or `SchematicEntry.getContentAsBinary()` would return a non-null value).

      This is equivalent to the following:

           return getContent() instanceof Binary;

      Specified by:
        `hasBinaryContent` in interface `SchematicEntry`
      Returns:
        `true` if the content is a Binary value, or `false` otherwise

    - #### asDocument

          public Document asDocument()

      Description copied from interface: `SchematicEntry`
      Get the representation of this entry as a document, which will include the `metadata` and `content` as nested documents.
      Specified by:
        `asDocument` in interface `SchematicEntry`
      Returns:
        the entry's representation as a document

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`

    - #### setContent

          public void setContent(Binary content,
                        Document metadata,
                        String defaultContentType)

      Description copied from interface: `SchematicEntry`
      Set the content for this value to be the supplied `Binary` data described by the supplied content type.
      Specified by:
        `setContent` in interface `SchematicEntry`
      Parameters:
        `content` - the Binary representation of the content; may not be null
        `metadata` - the Document representing the metadata; may be null
        `defaultContentType` - the value for the MIME type describing the content that should be used if the metadata does not already contain a "contentType" field, and typically `Schematic.ContentTypes.JSON`, `Schematic.ContentTypes.JSON_SCHEMA` , or `Schematic.ContentTypes.BSON`; may not be null

    - #### setContent

          public void setContent(Document content,
                        Document metadata,
                        String defaultContentType)

      Description copied from interface: `SchematicEntry`
      Set the content for this value to be the supplied Document and set the content type to be " `application/json`".
      Specified by:
        `setContent` in interface `SchematicEntry`
      Parameters:
        `content` - the Document representing the JSON content; may not be null
        `metadata` - the Document representing the metadata; may be null
        `defaultContentType` - the value for the MIME type describing the content that should be used if the metadata does not already contain a "contentType" field, and typically `Schematic.ContentTypes.JSON`, `Schematic.ContentTypes.JSON_SCHEMA` , or `Schematic.ContentTypes.BSON`; may not be null

    - #### editDocumentContent

          public EditableDocument editDocumentContent()

      Description copied from interface: `SchematicEntry`
      Get an `editable document`, when the content is a `document`. The client is expected to make these edits within the context of a transaction, and the edits will be saved when the transaction is committed.
      Specified by:
        `editDocumentContent` in interface `SchematicEntry`
      Returns:
        the editable representation of the content document
      See Also:
        `SchematicEntry.editMetadata()`

    - #### editMetadata

          public EditableDocument editMetadata()

      Description copied from interface: `SchematicEntry`
      Get an `editable metadata document`. The client is expected to make these edits within the context of a transaction, and the edits will be saved when the transaction is committed.
      Specified by:
        `editMetadata` in interface `SchematicEntry`
      Returns:
        the editable representation of the document
      See Also:
        `SchematicEntry.editDocumentContent()`

    - #### editorFor

          protected EditableDocument editorFor(Document doc,
                                   Path pathToDocument,
                                   DocumentObserver observer)

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