open issues, features not yet implemented, improvements, etc. ------------------------------------------------------------- the following list is not yet categorized/prioritized, neither is it complete :( - search - versioning - locking - jta support - current persistence model (nodes and properties are stored in separate files) leads to *very* slow performance in a normal filesystem; see next issue for a solution - provide clean abstraction for persistence grouping (nodes & properties that should be stored/loaded together in the persistence layer); (e.g. properties are stored within .node.xml) - need a more efficient way to persistently remove state of items in transient attic (nodes in transient attic are orphaned, i.e. they are disconnected from the hierarchy and can thus not be easily identified on Node#save): => need a hierarchical cache index for items in the transient attic (see TransientItemStateManager), sparse tree index?; this index needs to be maintained/updated on every transient & persistent hierarchy operation (move, remove, copy) - HierarchyManager: cache Path objects (key: ItemId, value: Path[]); update cache on hierarchy changes (move, hardlink, remove, etc) - inline @todo comments: resolve/implement - implement semantics of REFERENCE property type (i.e. referential integrity) - implement 'orderableChildNodes' node type flag - multiple parents & NodeDef of child node: - the child node adopts the NodeDef at creation time - when the child node is removed from this 'first' parent, it should adopt the NodeDef from another parent - the id of the NodeDef should be persisted with the child node (see below) - need a way to uniquely and persistently identify definition of a Node or Property (NodeDef & PropertyDef): - new classes: NodeDefId & PropertyDefId (based on declaring node type's QName and an ordinal) - new methods: NodeDefId NodeDefImpl.getId PropertyDefId PropertyDefImpl.getId NodeDefImpl NodeTypeManagerImpl.getDefiniton(NodeDefId) PropertyDefImpl NodeTypeManagerImpl.getDefiniton(PropertyDefId) - persist id of definition with the item's state (NodeState & PropertyState) - use jdbc as an alternative to virtual filesystem persistence layer - use an alternative journaling filesystem as (transactional) persistence layer - check constraint validations (NodeImpl#validateTransientItems(), NodeTypeImpl.can*(), etc.) if they are in sync with the spec (e.g. protected, mandatory, etc) - resolve inter-dependencies of ItemManager, WorkspaceImpl, AccessManagerImpl, HierarchyManager, TicketImpl: - new interface ItemStateManager with getItemState(ItemId) method - new class TicketItemStateManager implements ItemStateManager, holds instances of Transient & PersistentItemStateManager - AccessManagerImpl & HierarchyManager use ItemStateManager - ItemManager uses TicketItemStateManager - gracefull repository shutdown: - close abstract file systems (e.g. flush dirty buffers, etc.) - close workspaces - shutdown repository - trap JVM shutdown in RepositoryFactory? (Runtime#addShutdownHook) - ItemState: hide STATUS_* flags, use set* and is* methods instead - javaDoc, javaDoc, javaDoc - logging: remove unnecessary output, check log categories/verbosity, use 'debug' whenever possible