ModeShape Distribution 3.2.0.Final

org.infinispan.schematic.internal
Class SchematicEntryProxy

java.lang.Object
  extended by org.infinispan.batch.AutoBatchSupport
      extended by org.infinispan.schematic.internal.SchematicEntryProxy
All Implemented Interfaces:
Cloneable, SchematicEntry

public class SchematicEntryProxy
extends org.infinispan.batch.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, FlagContainer) 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
 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  org.infinispan.container.entries.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 org.infinispan.container.entries.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)

ModeShape Distribution 3.2.0.Final

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