## org.exist.cluster
Class ClusterCollection

    java.lang.Object
      java.util.Observable
          org.exist.collections.Collection
              org.exist.cluster.ClusterCollection

All Implemented Interfaces:
  Cacheable, java.lang.Comparable, org.xml.sax.EntityResolver

public final class ClusterCollection
extends Collection

Created by Francesco Mondora. TODO ... verify TRANSACTION IN CLUSTER

Author:
  Francesco Mondora aka Makkina, Michele Danieli aka cinde, Nicola Breda aka maiale Date: Aug 31, 2004 Time: 8:45:47 AM Revision $Revision: 3457 $

Field Summary

Fields inherited from class org.exist.collections.Collection
`UNKNOWN_COLLECTION_ID`

Fields inherited from interface org.exist.storage.cache.Cacheable
`MAX_REF`

Constructor Summary
`ClusterCollection(Collection collection)`

Method Summary
`BinaryDocument` `addBinaryResource(Txn transaction, DBBroker broker, XmldbURI name, byte[] data, java.lang.String mimeType)`
`void` `addCollection(DBBroker broker, Collection child, boolean isNew)` Add a new sub-collection to the collection.
`void` `addDocument(Txn transaction, DBBroker broker, DocumentImpl doc)` Add a document to the collection.
`void` `addObserver(java.util.Observer o)`
`DocumentSet` `allDocs(DBBroker broker, DocumentSet docs, boolean recursive, boolean checkPermissions)` Retrieve all documents contained in this collections.
`boolean` `allowUnload()` Check if this collection may be safely removed from the cache.
`java.util.Iterator` `collectionIterator()` Return an iterator over all subcollections.
`int` `compareTo(java.lang.Object obj)`
`int` `decReferenceCount()` Decrease the reference count of this object by one and return it.
`void` `deleteObservers()`
`boolean` `equals(java.lang.Object obj)`
`long` `getAddress()`
`int` `getChildCollectionCount()` Return the number of child-collections managed by this collection.
`long` `getCreationTime()`
`java.util.List` `getDescendants(DBBroker broker, User user)` Load all collections below this collections and return them in a List.
`DocumentImpl` `getDocument(DBBroker broker, XmldbURI name)` Get a child resource as identified by path.
`int` `getDocumentCount()` Returns the number of documents in this collection.
`DocumentSet` `getDocuments(DBBroker broker, DocumentSet docs, boolean checkPermissions)` Add all documents to the specified document set.
`DocumentImpl` `getDocumentWithLock(DBBroker broker, XmldbURI name)` Retrieve a child resource after putting a read lock on it.
`DocumentImpl` `getDocumentWithLock(DBBroker broker, XmldbURI name, int lockMode)` Retrieve a child resource after putting a read lock on it.
`short` `getId()` Get the internal id.
`long` `getKey()` Get a unique key for the object.
`Lock` `getLock()`
`XmldbURI` `getParentURI()` Returns the parent-collection.
`Permission` `getPermissions()` Gets the permissions attribute of the Collection object
`int` `getReferenceCount()` Get the current reference count.
`int` `getTimestamp()` Get the current timestamp marker.
`XmldbURI` `getURI()` Get the name of this collection.
`boolean` `hasChildCollection(XmldbURI name)`
`boolean` `hasDocument(XmldbURI name)` Check if the collection has a child document.
`boolean` `hasSubcollection(XmldbURI name)` Check if the collection has a sub-collection.
`int` `incReferenceCount()` Increase the reference count of this object by one and return it.
`boolean` `isDirty()`
`java.util.Iterator` `iterator(DBBroker broker)` Returns an iterator on the child-documents in this collection.
`void` `read(DBBroker broker, VariableByteInput istream)` Read collection contents from the stream.
`void` `release()` Closes the collection, i.e.
`void` `releaseDocument(DocumentImpl doc)` Release any locks held on the document.
`void` `removeBinaryResource(Txn transaction, DBBroker broker, DocumentImpl doc)`
`void` `removeBinaryResource(Txn transaction, DBBroker broker, XmldbURI docname)`
`void` `removeCollection(XmldbURI name)` Remove the specified sub-collection.
`void` `removeXMLResource(Txn transaction, DBBroker broker, XmldbURI docURI)` Remove the specified document from the collection.
`org.xml.sax.InputSource` `resolveEntity(java.lang.String publicId, java.lang.String systemId)` Try to resolve external entities.
`void` `setAddress(long addr)` Set the internal storage address of the collection data.
`void` `setCreationTime(long ms)`
`void` `setId(short id)`
`void` `setPermissions(int mode)`
`void` `setPermissions(Permission permissions)` Set permissions for the collection.
`void` `setPermissions(java.lang.String mode)`
`void` `setReader(org.xml.sax.XMLReader reader)` set user-defined Reader
`void` `setReferenceCount(int count)` Set the reference count of this object.
`void` `setTimestamp(int timestamp)` Set the timestamp marker.
`void` `setTriggersEnabled(boolean enabled)`
`void` `store(Txn transaction, DBBroker broker, IndexInfo info, org.xml.sax.InputSource source, boolean privileged)` This method is used by the XML RPC client.
`void` `store(Txn txn, DBBroker broker, IndexInfo info, org.w3c.dom.Node node, boolean privileged)`
`void` `store(Txn txn, DBBroker broker, IndexInfo info, java.lang.String data, boolean privileged)`
`boolean` `sync(boolean syncJournal)` Called before the object is released by the cache.
`java.lang.String` `toString()`
`void` `update(Collection child)` Update the specified child-collection.
`IndexInfo` `validateXMLResource(Txn txn, DBBroker broker, XmldbURI name, org.xml.sax.InputSource source)`
`IndexInfo` `validateXMLResource(Txn txn, DBBroker broker, XmldbURI name, org.w3c.dom.Node node)`
`IndexInfo` `validateXMLResource(Txn txn, DBBroker broker, XmldbURI name, java.lang.String data)`
`void` `write(DBBroker broker, VariableByteOutputStream ostream)` Write collection contents to stream.

Methods inherited from class org.exist.collections.Collection
`addBinaryResource, addBinaryResource, addBinaryResource, getConfiguration, getIdxConf, getLockOld, invalidateConfiguration, isTempCollection, setConfigEnabled, setPath, unlinkDocument`

Methods inherited from class java.util.Observable
`countObservers, deleteObserver, hasChanged, notifyObservers, notifyObservers`

Methods inherited from class java.lang.Object
`getClass, hashCode, notify, notifyAll, wait, wait, wait`

Constructor Detail

### ClusterCollection

    public ClusterCollection(Collection collection)

Method Detail

### store

    public void store(Txn txn,
                      DBBroker broker,
                      IndexInfo info,
                      java.lang.String data,
                      boolean privileged)
               throws EXistException,
                      PermissionDeniedException,
                      TriggerException,
                      org.xml.sax.SAXException,
                      LockException

  Overrides:
    `store` in class `Collection`
  Throws:
    `EXistException`
    `PermissionDeniedException`
    `TriggerException`
    `org.xml.sax.SAXException`
    `LockException`

### removeXMLResource

    public void removeXMLResource(Txn transaction,
                                  DBBroker broker,
                                  XmldbURI docURI)
                           throws PermissionDeniedException,
                                  TriggerException,
                                  LockException

  Description copied from class: `Collection`
  Remove the specified document from the collection.

  Overrides:
    `removeXMLResource` in class `Collection`
  Parameters:
    `transaction` -
    `broker` -
    `docURI` -
  Throws:
    `PermissionDeniedException`
    `TriggerException`
    `LockException`

### store

    public void store(Txn transaction,
                      DBBroker broker,
                      IndexInfo info,
                      org.xml.sax.InputSource source,
                      boolean privileged)
               throws EXistException,
                      PermissionDeniedException,
                      TriggerException,
                      org.xml.sax.SAXException,
                      LockException

  This method is used by the XML RPC client.

  Overrides:
    `store` in class `Collection`
  Parameters:
    `broker` -
    `info` -
    `source` -
    `privileged` -
  Throws:
    `EXistException`
    `PermissionDeniedException`
    `TriggerException`
    `org.xml.sax.SAXException`
    `LockException`

### addBinaryResource

    public BinaryDocument addBinaryResource(Txn transaction,
                                            DBBroker broker,
                                            XmldbURI name,
                                            byte[] data,
                                            java.lang.String mimeType)
                                     throws EXistException,
                                            PermissionDeniedException,
                                            LockException,
                                            TriggerException

  Overrides:
    `addBinaryResource` in class `Collection`
  Throws:
    `EXistException`
    `PermissionDeniedException`
    `LockException`
    `TriggerException`

### getLock

    public Lock getLock()

  Overrides:
    `getLock` in class `Collection`

### addCollection

    public void addCollection(DBBroker broker,
                              Collection child,
                              boolean isNew)

  Description copied from class: `Collection`
  Add a new sub-collection to the collection.

  Overrides:
    `addCollection` in class `Collection`

### removeCollection

    public void removeCollection(XmldbURI name)
                          throws LockException

  Description copied from class: `Collection`
  Remove the specified sub-collection.

  Overrides:
    `removeCollection` in class `Collection`
  Parameters:
    `name` - Description of the Parameter
  Throws:
    `LockException`

### hasChildCollection

    public boolean hasChildCollection(XmldbURI name)

  Overrides:
    `hasChildCollection` in class `Collection`

### release

    public void release()

  Description copied from class: `Collection`
  Closes the collection, i.e. releases the lock held by the current thread. This is a shortcut for getLock().release().

  Overrides:
    `release` in class `Collection`

### update

    public void update(Collection child)

  Description copied from class: `Collection`
  Update the specified child-collection.

  Overrides:
    `update` in class `Collection`
  Parameters:
    `child` -

### addDocument

    public void addDocument(Txn transaction,
                            DBBroker broker,
                            DocumentImpl doc)

  Description copied from class: `Collection`
  Add a document to the collection.

  Overrides:
    `addDocument` in class `Collection`
  Parameters:
    `doc` -

### collectionIterator

    public java.util.Iterator collectionIterator()

  Description copied from class: `Collection`
  Return an iterator over all subcollections. The list of subcollections is copied first, so modifications via the iterator have no affect.

  Overrides:
    `collectionIterator` in class `Collection`
  Returns:
    Description of the Return Value

### getDescendants

    public java.util.List getDescendants(DBBroker broker,
                                         User user)

  Description copied from class: `Collection`
  Load all collections below this collections and return them in a List.

  Overrides:
    `getDescendants` in class `Collection`
  Returns:
    List

### allDocs

    public DocumentSet allDocs(DBBroker broker,
                               DocumentSet docs,
                               boolean recursive,
                               boolean checkPermissions)

  Description copied from class: `Collection`
  Retrieve all documents contained in this collections. If recursive is true, documents from sub-collections are included.

  Overrides:
    `allDocs` in class `Collection`
  Parameters:
    `broker` -
    `docs` -
    `recursive` -
    `checkPermissions` -
  Returns:
    The set of documents.

### getDocuments

    public DocumentSet getDocuments(DBBroker broker,
                                    DocumentSet docs,
                                    boolean checkPermissions)

  Description copied from class: `Collection`
  Add all documents to the specified document set.

  Overrides:
    `getDocuments` in class `Collection`
  Parameters:
    `docs` -

### allowUnload

    public boolean allowUnload()

  Description copied from class: `Collection`
  Check if this collection may be safely removed from the cache. Returns false if there are ongoing write operations, i.e. one or more of the documents is locked for write.

  Specified by:
    `allowUnload` in interface `Cacheable`
  Overrides:
    `allowUnload` in class `Collection`
  Returns:
    A boolean value where true indicates it may be unloaded.

### compareTo

    public int compareTo(java.lang.Object obj)

  Specified by:
    `compareTo` in interface `java.lang.Comparable`
  Overrides:
    `compareTo` in class `Collection`

### equals

    public boolean equals(java.lang.Object obj)

  Overrides:
    `equals` in class `Collection`

### getChildCollectionCount

    public int getChildCollectionCount()

  Description copied from class: `Collection`
  Return the number of child-collections managed by this collection.

  Overrides:
    `getChildCollectionCount` in class `Collection`
  Returns:
    The childCollectionCount value

### getDocument

    public DocumentImpl getDocument(DBBroker broker,
                                    XmldbURI name)

  Description copied from class: `Collection`
  Get a child resource as identified by path. This method doesn't put a lock on the document nor does it recognize locks held by other threads. There's no guarantee that the document still exists when accessing it.

  Overrides:
    `getDocument` in class `Collection`
  Parameters:
    `broker` -
    `name` - The name of the document (without collection path)
  Returns:
    the document

### getDocumentWithLock

    public DocumentImpl getDocumentWithLock(DBBroker broker,
                                            XmldbURI name)
                                     throws LockException

  Description copied from class: `Collection`
  Retrieve a child resource after putting a read lock on it. With this method, access to the received document object is safe.

  Overrides:
    `getDocumentWithLock` in class `Collection`
  Parameters:
    `broker` -
    `name` -
  Returns:
    The document that was locked.
  Throws:
    `LockException`

### getDocumentWithLock

    public DocumentImpl getDocumentWithLock(DBBroker broker,
                                            XmldbURI name,
                                            int lockMode)
                                     throws LockException

  Description copied from class: `Collection`
  Retrieve a child resource after putting a read lock on it. With this method, access to the received document object is safe.

  Overrides:
    `getDocumentWithLock` in class `Collection`
  Parameters:
    `broker` -
    `name` -
    `lockMode` -
  Returns:
    The document that was locked.
  Throws:
    `LockException`

### releaseDocument

    public void releaseDocument(DocumentImpl doc)

  Description copied from class: `Collection`
  Release any locks held on the document.

  Overrides:
    `releaseDocument` in class `Collection`
  Parameters:
    `doc` -

### getDocumentCount

    public int getDocumentCount()

  Description copied from class: `Collection`
  Returns the number of documents in this collection.

  Overrides:
    `getDocumentCount` in class `Collection`
  Returns:
    The documentCount value

### getId

    public short getId()

  Description copied from class: `Collection`
  Get the internal id.

  Overrides:
    `getId` in class `Collection`
  Returns:
    The id value

### getURI

    public XmldbURI getURI()

  Description copied from class: `Collection`
  Get the name of this collection.

  Overrides:
    `getURI` in class `Collection`
  Returns:
    The name value

### getParentURI

    public XmldbURI getParentURI()

  Description copied from class: `Collection`
  Returns the parent-collection.

  Overrides:
    `getParentURI` in class `Collection`
  Returns:
    The parent-collection or null if this is the root collection.

### getPermissions

    public Permission getPermissions()

  Description copied from class: `Collection`
  Gets the permissions attribute of the Collection object

  Overrides:
    `getPermissions` in class `Collection`
  Returns:
    The permissions value

### hasDocument

    public boolean hasDocument(XmldbURI name)

  Description copied from class: `Collection`
  Check if the collection has a child document.

  Overrides:
    `hasDocument` in class `Collection`
  Parameters:
    `name` - the name (without path) of the document
  Returns:
    A value of true when the collection has the document identified.

### hasSubcollection

    public boolean hasSubcollection(XmldbURI name)

  Description copied from class: `Collection`
  Check if the collection has a sub-collection.

  Overrides:
    `hasSubcollection` in class `Collection`
  Parameters:
    `name` - the name of the subcollection (without path).
  Returns:
    A value of true when the subcollection exists.

### iterator

    public java.util.Iterator iterator(DBBroker broker)

  Description copied from class: `Collection`
  Returns an iterator on the child-documents in this collection.

  Overrides:
    `iterator` in class `Collection`
  Returns:
    A iterator of all the documents in the collection.

### read

    public void read(DBBroker broker,
                     VariableByteInput istream)
              throws java.io.IOException

  Description copied from class: `Collection`
  Read collection contents from the stream.

  Overrides:
    `read` in class `Collection`
  Parameters:
    `istream` -
  Throws:
    `java.io.IOException`

### removeBinaryResource

    public void removeBinaryResource(Txn transaction,
                                     DBBroker broker,
                                     XmldbURI docname)
                              throws PermissionDeniedException,
                                     LockException,
                                     TriggerException

  Overrides:
    `removeBinaryResource` in class `Collection`
  Throws:
    `PermissionDeniedException`
    `LockException`
    `TriggerException`

### removeBinaryResource

    public void removeBinaryResource(Txn transaction,
                                     DBBroker broker,
                                     DocumentImpl doc)
                              throws PermissionDeniedException,
                                     LockException,
                                     TriggerException

  Overrides:
    `removeBinaryResource` in class `Collection`
  Throws:
    `PermissionDeniedException`
    `LockException`
    `TriggerException`

### validateXMLResource

    public IndexInfo validateXMLResource(Txn txn,
                                         DBBroker broker,
                                         XmldbURI name,
                                         org.xml.sax.InputSource source)
                                  throws EXistException,
                                         PermissionDeniedException,
                                         TriggerException,
                                         org.xml.sax.SAXException,
                                         LockException

  Overrides:
    `validateXMLResource` in class `Collection`
  Throws:
    `EXistException`
    `PermissionDeniedException`
    `TriggerException`
    `org.xml.sax.SAXException`
    `LockException`

### validateXMLResource

    public IndexInfo validateXMLResource(Txn txn,
                                         DBBroker broker,
                                         XmldbURI name,
                                         java.lang.String data)
                                  throws EXistException,
                                         PermissionDeniedException,
                                         TriggerException,
                                         org.xml.sax.SAXException,
                                         LockException

  Overrides:
    `validateXMLResource` in class `Collection`
  Throws:
    `EXistException`
    `PermissionDeniedException`
    `TriggerException`
    `org.xml.sax.SAXException`
    `LockException`

### validateXMLResource

    public IndexInfo validateXMLResource(Txn txn,
                                         DBBroker broker,
                                         XmldbURI name,
                                         org.w3c.dom.Node node)
                                  throws EXistException,
                                         PermissionDeniedException,
                                         TriggerException,
                                         org.xml.sax.SAXException,
                                         LockException

  Overrides:
    `validateXMLResource` in class `Collection`
  Throws:
    `EXistException`
    `PermissionDeniedException`
    `TriggerException`
    `org.xml.sax.SAXException`
    `LockException`

### store

    public void store(Txn txn,
                      DBBroker broker,
                      IndexInfo info,
                      org.w3c.dom.Node node,
                      boolean privileged)
               throws EXistException,
                      PermissionDeniedException,
                      TriggerException,
                      org.xml.sax.SAXException,
                      LockException

  Overrides:
    `store` in class `Collection`
  Throws:
    `EXistException`
    `PermissionDeniedException`
    `TriggerException`
    `org.xml.sax.SAXException`
    `LockException`

### setId

    public void setId(short id)

  Overrides:
    `setId` in class `Collection`

### setPermissions

    public void setPermissions(int mode)
                        throws LockException

  Overrides:
    `setPermissions` in class `Collection`
  Throws:
    `LockException`

### setPermissions

    public void setPermissions(java.lang.String mode)
                        throws SyntaxException,
                               LockException

  Overrides:
    `setPermissions` in class `Collection`
  Throws:
    `SyntaxException`
    `LockException`

### setPermissions

    public void setPermissions(Permission permissions)
                        throws LockException

  Description copied from class: `Collection`
  Set permissions for the collection.

  Overrides:
    `setPermissions` in class `Collection`
  Parameters:
    `permissions` -
  Throws:
    `LockException`

### write

    public void write(DBBroker broker,
                      VariableByteOutputStream ostream)
               throws java.io.IOException

  Description copied from class: `Collection`
  Write collection contents to stream.

  Overrides:
    `write` in class `Collection`
  Parameters:
    `ostream` -
  Throws:
    `java.io.IOException`

### setAddress

    public void setAddress(long addr)

  Description copied from class: `Collection`
  Set the internal storage address of the collection data.

  Overrides:
    `setAddress` in class `Collection`
  Parameters:
    `addr` -

### getAddress

    public long getAddress()

  Overrides:
    `getAddress` in class `Collection`

### setCreationTime

    public void setCreationTime(long ms)

  Overrides:
    `setCreationTime` in class `Collection`

### getCreationTime

    public long getCreationTime()

  Overrides:
    `getCreationTime` in class `Collection`

### setTriggersEnabled

    public void setTriggersEnabled(boolean enabled)

  Overrides:
    `setTriggersEnabled` in class `Collection`

### setReader

    public void setReader(org.xml.sax.XMLReader reader)

  Description copied from class: `Collection`
  set user-defined Reader

  Overrides:
    `setReader` in class `Collection`

### resolveEntity

    public org.xml.sax.InputSource resolveEntity(java.lang.String publicId,
                                                 java.lang.String systemId)
                                          throws org.xml.sax.SAXException,
                                                 java.io.IOException

  Description copied from class: `Collection`
  Try to resolve external entities. This method forwards the request to the resolver. If that fails, the method replaces absolute file names with relative ones and retries to resolve. This makes it possible to use relative file names in the catalog.

  Specified by:
    `resolveEntity` in interface `org.xml.sax.EntityResolver`
  Overrides:
    `resolveEntity` in class `Collection`
  Throws:
    `org.xml.sax.SAXException`
    `java.io.IOException`
  See Also:
    `EntityResolver.resolveEntity(java.lang.String, java.lang.String)`

### addObserver

    public void addObserver(java.util.Observer o)

  Overrides:
    `addObserver` in class `Collection`

### deleteObservers

    public void deleteObservers()

  Overrides:
    `deleteObservers` in class `Collection`

### getKey

    public long getKey()

  Description copied from interface: `Cacheable`
  Get a unique key for the object. Usually this is the page number.

  Specified by:
    `getKey` in interface `Cacheable`
  Overrides:
    `getKey` in class `Collection`

### getReferenceCount

    public int getReferenceCount()

  Description copied from interface: `Cacheable`
  Get the current reference count.

  Specified by:
    `getReferenceCount` in interface `Cacheable`
  Overrides:
    `getReferenceCount` in class `Collection`

### incReferenceCount

    public int incReferenceCount()

  Description copied from interface: `Cacheable`
  Increase the reference count of this object by one and return it.

  Specified by:
    `incReferenceCount` in interface `Cacheable`
  Overrides:
    `incReferenceCount` in class `Collection`

### decReferenceCount

    public int decReferenceCount()

  Description copied from interface: `Cacheable`
  Decrease the reference count of this object by one and return it.

  Specified by:
    `decReferenceCount` in interface `Cacheable`
  Overrides:
    `decReferenceCount` in class `Collection`

### setReferenceCount

    public void setReferenceCount(int count)

  Description copied from interface: `Cacheable`
  Set the reference count of this object.

  Specified by:
    `setReferenceCount` in interface `Cacheable`
  Overrides:
    `setReferenceCount` in class `Collection`

### setTimestamp

    public void setTimestamp(int timestamp)

  Description copied from interface: `Cacheable`
  Set the timestamp marker.

  Specified by:
    `setTimestamp` in interface `Cacheable`
  Overrides:
    `setTimestamp` in class `Collection`

### getTimestamp

    public int getTimestamp()

  Description copied from interface: `Cacheable`
  Get the current timestamp marker.

  Specified by:
    `getTimestamp` in interface `Cacheable`
  Overrides:
    `getTimestamp` in class `Collection`

### sync

    public boolean sync(boolean syncJournal)

  Description copied from interface: `Cacheable`
  Called before the object is released by the cache. The object should prepare to be garbage collected. All unwritten data should be flushed to disk.

  Specified by:
    `sync` in interface `Cacheable`
  Overrides:
    `sync` in class `Collection`

### isDirty

    public boolean isDirty()

  Specified by:
    `isDirty` in interface `Cacheable`
  Overrides:
    `isDirty` in class `Collection`

### toString

    public java.lang.String toString()

  Overrides:
    `toString` in class `Collection`

Copyright (C) Wolfgang Meier. All rights reserved.