Package org.ozoneDB.collections

Contains classes and interfaces for 'ozone aware' collections.

See:
          Description

Interface Summary
_AbstractOzoneMap_OzoneNode  
_BaseList_SubList This class follows the implementation requirements set forth in AbstractList.subList(int, int).
_BaseTreeMap_SubMap DO NOT USE THIS CLASS DIRECTLY.
_NodeTreeMap_OzoneNode  
BaseList You are encouraged NOT to use this interface, but rather just use OzoneList, which does not contain the 'internal' methods, or even SortedMap, which does not have any ozone dependency at all This interface functions as a sort of base interface for ozone aware lists, were those lists themselves can implement if the nodes in the list are ozone objects themselves or merely serializables.
BaseTreeMap You are encouraged NOT to use this interface, but rather just use OzoneTreeMap, which does not contain the 'internal' methods, or even SortedMap, which does not have any ozone dependency at all This interface functions as a sort of base interface for ozone aware treemaps, were those treemaps themselves can implement if the nodes in the tree are ozone objects themselves or merely serializables.
BaseTreeMap.Node Node interface should be here and not in the Impl class; the BaseTreeMap interface _is_ part of the implementation for an OzoneMap...
BaseTreeSet You are encouraged NOT to use this interface, but rather just use OzoneTreeSet, which does not contain the 'internal' methods, or even SortedSet, which does not have any ozone dependency at all This interface functions as a sort of base interface for ozone aware treesets, were those treesets themselves can implement if the nodes in the tree are ozone objects themselves or merely serializables.
FullLinkedList  
FullTreeMap Defines all methods that a FullTreeMapImpl needs to implement; these also include the methods that need to be called by iterators, submaps etc.
FullTreeSet Defines all methods that a FullTreeSet needs to implement; these also include the methods that need to be called by iterators, submaps etc.
NodeTreeMap Defines all methods that a NodeTreeMap needs to implement; these also include the methods that need to be called by iterators, submaps etc.
NodeTreeSet Defines all methods that a NodeTreeSet needs to implement; these also include the methods that need to be called by iterators, submaps etc.
OzoneArrayList See the overall description on OzoneCollection.
OzoneCollection An ozone aware collection.
OzoneComparator This interface is nothing more than a combination of the Serializable and the Comparator interface.
OzoneHashMap See the overall description on OzoneCollection.
OzoneHashSet See the overall description on OzoneCollection.
OzoneIdentityHashMap See the overall description on OzoneCollection.
OzoneIterator Used by implementations of FullXxx Ozone collections.
OzoneLinkedHashMap See the overall description on OzoneCollection.
OzoneLinkedHashSet See the overall description on OzoneCollection.
OzoneLinkedList See the overall description on OzoneCollection.
OzoneList See the overall description on OzoneCollection.
OzoneListIterator See the overall description on OzoneCollection.
OzoneMap See the overall description on OzoneCollection.
OzoneMap.Node  
OzoneProperties Provides an ozone aware counterpart for java.util.Properties.
OzoneSet See the overall description on OzoneCollection.
OzoneSortedMap See the overall description on OzoneCollection.
OzoneSortedSet See the overall description on OzoneCollection.
OzoneStack See the overall description on OzoneCollection.
OzoneTreeMap See the overall description on OzoneCollection.
OzoneTreeSet See the overall description on OzoneCollection.
OzoneWeakHashMap See the overall description on OzoneCollection.
 

Class Summary
_AbstractOzoneMap_AbstractOzoneNode  
_AbstractOzoneMap_AbstractOzoneNode_Proxy This class was automatically generated by ozone's OPP.
_AbstractOzoneMap_AbstractOzoneNodeFactory This class is generated by OPP.
_AbstractOzoneMap_keySet_Proxy This class was automatically generated by ozone's OPP.
_AbstractOzoneMap_keySetFactory This class is generated by OPP.
_AbstractOzoneMap_values Do not use this class directly.
_AbstractOzoneMap_values_iterator Do not use this class directly.
_AbstractOzoneMap_values_Proxy This class was automatically generated by ozone's OPP.
_AbstractOzoneMap_valuesFactory This class is generated by OPP.
_BaseList_IteratorImpl  
_BaseList_ListIteratorImpl  
_BaseList_RandomAccessSubListImpl  
_BaseList_SubList_listIterator  
_BaseList_SubListImpl This class follows the implementation requirements set forth in AbstractList.subList(int, int).
_BaseTreeMap_entrySet DO NOT USE THIS CLASS DIRECTLY.
_BaseTreeMap_entrySet_Proxy This class was automatically generated by ozone's OPP.
_BaseTreeMap_entrySetFactory This class is generated by OPP.
_BaseTreeMap_keySet DO NOT USE THIS CLASS DIRECTLY.
_BaseTreeMap_keySet_Proxy This class was automatically generated by ozone's OPP.
_BaseTreeMap_keySetFactory This class is generated by OPP.
_BaseTreeMap_OzoneTreeIteratorImpl DO NOT USE THIS CLASS DIRECTLY.
_BaseTreeMap_OzoneTreeIteratorImpl_Proxy This class was automatically generated by ozone's OPP.
_BaseTreeMap_OzoneTreeIteratorImplFactory This class is generated by OPP.
_BaseTreeMap_SubMap_entrySet DO NOT USE THIS CLASS DIRECTLY.
_BaseTreeMap_SubMap_entrySet_Proxy This class was automatically generated by ozone's OPP.
_BaseTreeMap_SubMap_entrySetFactory This class is generated by OPP.
_BaseTreeMap_SubMap_keySet DO NOT USE THIS CLASS DIRECTLY.
_BaseTreeMap_SubMap_keySet_Proxy This class was automatically generated by ozone's OPP.
_BaseTreeMap_SubMap_keySetFactory This class is generated by OPP.
_BaseTreeMap_SubMap_values DO NOT USE THIS CLASS DIRECTLY.
_BaseTreeMap_SubMap_values_Proxy This class was automatically generated by ozone's OPP.
_BaseTreeMap_SubMap_valuesFactory This class is generated by OPP.
_BaseTreeMap_SubMapImpl Do not use this class directly.
_BaseTreeMap_SubMapImpl_Proxy This class was automatically generated by ozone's OPP.
_BaseTreeMap_SubMapImplFactory This class is generated by OPP.
_BaseTreeMap_TreeIterator DO NOT USE THIS CLASS DIRECTLY.
_BaseTreeMap_values DO NOT USE THIS CLASS DIRECTLY.
_BaseTreeMap_values_Proxy This class was automatically generated by ozone's OPP.
_BaseTreeMap_valuesFactory This class is generated by OPP.
_NodeTreeMap_OzoneNodeImpl  
_NodeTreeMap_OzoneNodeImpl_Proxy This class was automatically generated by ozone's OPP.
_NodeTreeMap_OzoneNodeImplFactory This class is generated by OPP.
AbstractOzoneCollection A basic implementation of most of the methods in the Collection interface to make it easier to create a collection.
AbstractOzoneList See the overall description on OzoneCollection.
AbstractOzoneMap An abstract implementation of Map to make it easier to create your own implementations.
AbstractOzoneSet An abstract implementation of Set to make it easier to create your own implementations.
BaseListImpl A basic implementation of most of the methods in the List interface to make it easier to create a List based on a random-access data structure.
BasePropertiesImpl See the overall description on OzoneCollection.
BaseSequentialListImpl Abstract superclass to make it easier to implement the List interface when backed by a sequential-access store, such as a linked list.
BaseTreeMapImpl You are encouraged NOT to use this interface, but rather just use OzoneTreeMap, which does not contain the 'internal' methods, or even SortedMap, which does not have any ozone dependency at all This class functions as a sort of base class for ozone aware treemaps, were those treemaps themselves can implement if the nodes in the tree are ozone objects themselves or merely serializables.
BaseTreeSetImpl This class provides a TreeMap-backed implementation of the SortedSet interface.
DoNotUse_SeeJavadoc This class is only used to 'mark' a constructor or method which needs to be public because of the interface/proxy structure used by Ozone, but should NOT be called or used in any other way.
FullLinkedListImpl Linked list implementation of the List interface.
FullPropertiesImpl Do not use this class directly; use the OzoneProperties interface instead.
FullPropertiesImpl_Proxy This class was automatically generated by ozone's OPP.
FullPropertiesImplFactory This class is generated by OPP.
FullTreeMapImpl This class provides a red-black tree implementation of the SortedMap interface.
FullTreeMapImpl_Proxy This class was automatically generated by ozone's OPP.
FullTreeMapImplFactory This class is generated by OPP.
FullTreeSetImpl Note that calling iterator() results in the creation of an ozone object and thus in a write-action for the db.
FullTreeSetImpl_Proxy This class was automatically generated by ozone's OPP.
FullTreeSetImplFactory This class is generated by OPP.
IteratorEnumerationAdaptor Adaptor pattern that acts as a thin wrapper around an (ozone) iterator.
NodePropertiesImpl Do not use this class directly; use the OzoneProperties interface instead.
NodePropertiesImpl_Proxy This class was automatically generated by ozone's OPP.
NodePropertiesImplFactory This class is generated by OPP.
NodeTreeMapImpl This class provides a red-black tree implementation of the SortedMap interface.
NodeTreeMapImpl_Proxy This class was automatically generated by ozone's OPP.
NodeTreeMapImplFactory This class is generated by OPP.
NodeTreeSetImpl Note that calling iterator() does NOT result in the creation of an ozone object; this is opposite to behaviour of FullTreeSetImpl.
NodeTreeSetImpl_Proxy This class was automatically generated by ozone's OPP.
NodeTreeSetImplFactory This class is generated by OPP.
 

Package org.ozoneDB.collections Description

Contains classes and interfaces for 'ozone aware' collections.

This package is not yet complete; implementations are being developed while other implementations may already have finished. Here's a list with classes and their status:

  • NodeLinkedListImpl - planning
  • NodePropertiesImpl - beta
  • NodeTreeMapImpl - beta
  • NodeTreeSetImpl - beta
  • FullLinkedListImpl - planning
  • FullPropertiesImpl - beta
  • FullTreeMapImpl - beta
  • FullTreeSetImpl - beta
  • All classes in beta are currently used in a commercial project, no bugs are currently known. Please report any bugs to the ozone developers mailing list. (If it all works for you it is appreciated if you let us know as well ;-).

    There are 3 ways of storing a collection into an ozone database.

    1. use a java.util.Collection member variable in a class, and use standard getters and setters to change that variable
    2. use org.ozoneDB.FullXxxImpl collections
    3. use org.ozoneDB.NodeXxxImpl collections
    The first solution has major drawbacks: it is not suited at all for simultaneous access and every time you need just one object from a collection, the whole collection is pushed over the client-server communication line.

    The second solution is a lot better: the collection stays on the server side, the client can for instance call getFirst() on an OzoneFullTreeSet and only the first object will be transferred over to the client. All FullXxxImpl collections are always stored as a whole, so (de)serialization time is O(size()). This means that these collections works best when the number of elements in them is not too large.

    The third solution provides for fully scaleable collections. Like FullXxxImpl classes, the NodeXxxImpl classes also always stay on the server side as ozone objects, but where FullXxxImpl collections are stored as one big ozone object, the NodeXxxImpl collections are stored in multiple ozone objects. This means that the number of objects in an node based collection is not limited by server jvm memory. Because there is more ozone overhead involved, these collections have slower access times than their FullXxxImpl counterparts for code execution, and they take up more room in the db.

    Note that because of the volatile nature of Iterators and the internal structure of FullXxxImpl classes, garbage collection on the ozone database must be enabled to prevent the database from getting clogged with defunct iterator instances. To avoid cluttering you can also explicitly delete iterators or make use of getClientXxx methods, and use these copies to iterate over. Iterators from NodeXxxImpl instances are not implemented as ozone objects, and thus do not clutter up the db.
    Calls that create submaps or subcollections, like entrySet() or headSet(Object) always cause the creation of an ozone object.

    code naming conventions

    Because there are some difficulties in implementing inner classes as ozone objects and the code on which classes are based are dependend on inner classes, a few naming conventions are introduced:



    Copyright © 2004 The Ozone Database Project - www.ozone-db.org. All Rights Reserved.