[Nodal-cvs] nodal/j-src/storage/framework AbstractRepoBackend.java,NONE,1.1 RepoBackend.java,NONE,1.
Status: Pre-Alpha
Brought to you by:
leei
From: Lee I. <le...@us...> - 2004-11-15 19:22:20
|
Update of /cvsroot/nodal/nodal/j-src/storage/framework In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4642/storage/framework Modified Files: BasicNodeFactory.java SimpleTxnManager.java SBNStreamServices.java SBNURLServices.java StreamBasedNode.java NodeFactoryFramework.java AbstractRepository.java GeneratedNode.java EdgeIndex.java Added Files: AbstractRepoBackend.java RepoBackend.java Removed Files: AbstractRepoServices.java RepoServices.java Log Message: Change name of RepoServices to RepoBackend throughout. o update references and field and method names --- AbstractRepoServices.java DELETED --- Index: GeneratedNode.java =================================================================== RCS file: /cvsroot/nodal/nodal/j-src/storage/framework/GeneratedNode.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** GeneratedNode.java 15 Sep 2004 20:57:14 -0000 1.4 --- GeneratedNode.java 15 Nov 2004 19:21:57 -0000 1.5 *************** *** 49,57 **** // Create returnable content memContent content = memContent.create(type); ! nodeContent = content.nodeContent(this, repo.services, null); // Create and update content from generator Capability cap = CapabilityImpl.createOwner(repo.user()); ! updateEditor = content.nodeContent(this, repo.services, cap).edit(); updateContent(updateEditor); } else if (outofdate()) { --- 49,57 ---- // Create returnable content memContent content = memContent.create(type); ! nodeContent = content.nodeContent(this, repo.backend, null); // Create and update content from generator Capability cap = CapabilityImpl.createOwner(repo.user()); ! updateEditor = content.nodeContent(this, repo.backend, cap).edit(); updateContent(updateEditor); } else if (outofdate()) { Index: StreamBasedNode.java =================================================================== RCS file: /cvsroot/nodal/nodal/j-src/storage/framework/StreamBasedNode.java,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** StreamBasedNode.java 15 Sep 2004 20:57:14 -0000 1.13 --- StreamBasedNode.java 15 Nov 2004 19:21:57 -0000 1.14 *************** *** 43,47 **** /** ! * StreamBasedDocument services, to be provided by implementing class. * * Created on Dec 3, 2003 --- 43,47 ---- /** ! * StreamBasedDocument backend, to be provided by implementing class. * * Created on Dec 3, 2003 *************** *** 61,69 **** /** ! * The RepoServices * ! * @return the RepoServices associated with this Document loading context */ ! RepoServices repoServices(); /** --- 61,69 ---- /** ! * The RepoBackend * ! * @return the RepoBackend associated with this Document loading context */ ! RepoBackend repoServices(); /** *************** *** 121,125 **** * Create a Document from a given set of StreamBasedNode.LoadServices. * ! * @param services * a set of StreamBasedNode.LoadServices that can define a Document * creation environment. --- 121,125 ---- * Create a Document from a given set of StreamBasedNode.LoadServices. * ! * @param backend * a set of StreamBasedNode.LoadServices that can define a Document * creation environment. Index: SBNStreamServices.java =================================================================== RCS file: /cvsroot/nodal/nodal/j-src/storage/framework/SBNStreamServices.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** SBNStreamServices.java 15 Sep 2004 20:57:14 -0000 1.7 --- SBNStreamServices.java 15 Nov 2004 19:21:57 -0000 1.8 *************** *** 24,31 **** protected final InputStream stream; protected final Path path; ! protected final RepoServices svc; protected boolean reloading; ! public SBNStreamServices(RepoServices svc, Path path, InputStream stream, String mimeType) throws IOException { super(svc, svc.txnManager()); --- 24,31 ---- protected final InputStream stream; protected final Path path; ! protected final RepoBackend svc; protected boolean reloading; ! public SBNStreamServices(RepoBackend svc, Path path, InputStream stream, String mimeType) throws IOException { super(svc, svc.txnManager()); *************** *** 50,54 **** * @see storage.framework.StreamBasedNode.LoadServices#repoServices() */ ! public RepoServices repoServices() { return svc; } --- 50,54 ---- * @see storage.framework.StreamBasedNode.LoadServices#repoServices() */ ! public RepoBackend repoServices() { return svc; } Index: AbstractRepository.java =================================================================== RCS file: /cvsroot/nodal/nodal/j-src/storage/framework/AbstractRepository.java,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** AbstractRepository.java 15 Sep 2004 20:57:14 -0000 1.14 --- AbstractRepository.java 15 Nov 2004 19:21:57 -0000 1.15 *************** *** 54,62 **** protected final Path path; ! protected AbstractRepoServices services; ! protected AbstractRepository(Path path, AbstractRepoServices services) { this.path = path; ! this.services = services; this.repoIDMap = new CacheMap(); --- 54,62 ---- protected final Path path; ! protected AbstractRepoBackend backend; ! protected AbstractRepository(Path path, AbstractRepoBackend services) { this.path = path; ! this.backend = services; this.repoIDMap = new CacheMap(); *************** *** 68,81 **** } ! protected final void setServices(AbstractRepoServices services) { // Ensure that it is only set once. ! if (this.services != null && this.services != services) { ! throw new RuntimeException(this + ".services initialized twice"); } ! this.services = services; } ! public final AbstractRepoServices services() { ! return services; } --- 68,81 ---- } ! protected final void setBackend(AbstractRepoBackend services) { // Ensure that it is only set once. ! if (this.backend != null && this.backend != services) { ! throw new RuntimeException(this + ".backend initialized twice"); } ! this.backend = services; } ! public final AbstractRepoBackend getBackend() { ! return backend; } *************** *** 144,148 **** if (node == null) { //Namespace ns = nid.namespace(); ! return services.recoverNodeNamed(id); } return node; --- 144,148 ---- if (node == null) { //Namespace ns = nid.namespace(); ! return backend.recoverNodeNamed(id); } return node; Index: NodeFactoryFramework.java =================================================================== RCS file: /cvsroot/nodal/nodal/j-src/storage/framework/NodeFactoryFramework.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** NodeFactoryFramework.java 15 Sep 2004 20:57:14 -0000 1.1 --- NodeFactoryFramework.java 15 Nov 2004 19:21:57 -0000 1.2 *************** *** 18,24 **** * An interface that represents the basic framework for creating Node instances. * {@link BasicNodeFactory} is built on top of this interface, and at its most basic ! * it is provided by {@link RepoServices} * @see BasicNodeFactory ! * @see RepoServices * @author leei */ --- 18,24 ---- * An interface that represents the basic framework for creating Node instances. * {@link BasicNodeFactory} is built on top of this interface, and at its most basic ! * it is provided by {@link RepoBackend} * @see BasicNodeFactory ! * @see RepoBackend * @author leei */ --- NEW FILE: RepoBackend.java --- /* * * Distributed under the Apache Software License, Version 1.1 * (see below, or the file LICENSE for terms and conditions) * * Copyright (c) 2003 University of British Columbia. All rights reserved. * */ package storage.framework; import org.nodal.Repository; /** * Basic facility for providing backend from a Repository to the * storage.memory package facilities. This includes creating new Nodes and * providing transaction management. * * @author Lee Iverson <le...@ec...> */ public interface RepoBackend extends NodeFactoryFramework { /** * Return the Repository associated with these backend. * @return the Repository providing these backend */ Repository repository(); /** * A TxnManager if this Repository type creates an audit trail via the * NodeHistory interface. * @return a TxnManager or null */ TxnManager txnManager(); /** * Notify the Repository that a Txn has been committed. * * Created on Oct 8, 2003 * @author leei */ void commitTxn (TxnManager.Resolver resolver); } --- RepoServices.java DELETED --- Index: SimpleTxnManager.java =================================================================== RCS file: /cvsroot/nodal/nodal/j-src/storage/framework/SimpleTxnManager.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** SimpleTxnManager.java 14 May 2004 17:31:24 -0000 1.2 --- SimpleTxnManager.java 15 Nov 2004 19:21:57 -0000 1.3 *************** *** 32,49 **** */ public final class SimpleTxnManager implements TxnManager { ! public static TxnManager create(RepoServices services, TxnBuilderFactory factory) { return new SimpleTxnManager(services, factory); } ! public static TxnManager create(RepoServices services) { return create (services, SimpleTxnBuilder.factory()); } ! private final RepoServices services; private final TxnBuilderFactory factory; private TxnBuilder current; ! private SimpleTxnManager(RepoServices services, TxnBuilderFactory factory) { this.services = services; this.factory = factory; --- 32,49 ---- */ public final class SimpleTxnManager implements TxnManager { ! public static TxnManager create(RepoBackend services, TxnBuilderFactory factory) { return new SimpleTxnManager(services, factory); } ! public static TxnManager create(RepoBackend services) { return create (services, SimpleTxnBuilder.factory()); } ! private final RepoBackend services; private final TxnBuilderFactory factory; private TxnBuilder current; ! private SimpleTxnManager(RepoBackend services, TxnBuilderFactory factory) { this.services = services; this.factory = factory; Index: BasicNodeFactory.java =================================================================== RCS file: /cvsroot/nodal/nodal/j-src/storage/framework/BasicNodeFactory.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** BasicNodeFactory.java 15 Sep 2004 20:57:14 -0000 1.5 --- BasicNodeFactory.java 15 Nov 2004 19:21:57 -0000 1.6 *************** *** 26,30 **** /** ! * All we need to construct one of these is a set of RepoServices. */ public BasicNodeFactory(NodeFactoryFramework fmwk, TxnManager txnMgr) { --- 26,30 ---- /** ! * All we need to construct one of these is a set of RepoBackend. */ public BasicNodeFactory(NodeFactoryFramework fmwk, TxnManager txnMgr) { --- NEW FILE: AbstractRepoBackend.java --- /* * * Distributed under the Apache Software License, Version 1.1 * (see below, or the file LICENSE for terms and conditions) * * Copyright (c) 2003 University of British Columbia. All rights reserved. * */ package storage.framework; import org.nodal.Repository; import org.nodal.model.AnchorNode; import org.nodal.model.Node; import org.nodal.model.NodeContent; import org.nodal.nav.Path; import org.nodal.type.NodeType; import org.nodal.util.Name; import org.nodal.util.Names; import org.nodal.util.Namespace; /** * This base class should be overriden to provide a facility for creating new * Nodes. * * @author Lee Iverson <le...@ec...> */ public abstract class AbstractRepoBackend implements RepoBackend { protected final AbstractRepository repo; protected final Store store; protected final Path path; protected final Namespace ns; private int nextIdx; protected AbstractRepoBackend(AbstractRepository repo, Path path, Store store) { this.repo = repo; this.store = store; this.path = path; this.ns = Names.getNamespace(path); nextIdx = 0; } protected AbstractRepoBackend(AbstractRepository repo, Path path) { this.repo = repo; this.store = null; this.path = path; this.ns = Names.getNamespace(path); nextIdx = 0; } protected AbstractRepoBackend(AbstractRepository repo) { this.repo = repo; this.store = null; this.path = repo.path(); this.ns = Names.getNamespace(path); nextIdx = 0; } /** * Create a new, unused node ID. */ public final synchronized Name createNodeID(Node node) { // NEXT Get rid of this and the two-argument associateID method Name nid = nextID(); repo.associateID(nid, node); return nid; } public synchronized Name nextID() { return ns.name("n" + (nextIdx++)); } /** * Recover a Node from a backing store. */ public final synchronized Node recoverNodeNamed(Name nid) { // Recover from store if (store != null) { Node node = store.recoverNode(nid); if (node != null) { repo.associateID(node); } return node; } return null; } /** * Return the Repository associated with these backend. */ public final Repository repository() { return repo; } /** * Create a brand new Node with the given NodeType. The <tt>context</tt> * Node determines the base metadata for the new Node, including permissions * and versioning. */ public abstract NodeContent.Editor createNode(NodeType type, Node context); /** * Clone a brand new Node copying the content from an existing Node. The * <tt>context</tt> Node determines the base metadata for the new Node, * including permissions and versioning. */ public abstract NodeContent.Editor cloneNode(Node node, Node context); public abstract AnchorNode createAnchor(Path context, Path rel); public abstract AnchorNode createAnchor(Path abs); /** * Return the TxnManager used by this Repository. */ public abstract TxnManager txnManager(); } Index: EdgeIndex.java =================================================================== RCS file: /cvsroot/nodal/nodal/j-src/storage/framework/EdgeIndex.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** EdgeIndex.java 15 Nov 2004 18:48:06 -0000 1.1 --- EdgeIndex.java 15 Nov 2004 19:21:57 -0000 1.2 *************** *** 20,23 **** --- 20,24 ---- /** * An index of (node,property,node) edges. + * * @author leei */ *************** *** 26,42 **** final Node node; final Object property; ! Label (Node node, Object property) { this.node = node; this.property = property; } ! public boolean equals (Object other) { Label otherLabel = (Label) other; ! return (node.equals(otherLabel.node) ! && property.equals (otherLabel.property)); } } ! /** * Create a new instance of the EdgeIndex class. * @return an EdgeIndex */ --- 27,46 ---- final Node node; final Object property; ! ! Label(Node node, Object property) { this.node = node; this.property = property; } ! ! public boolean equals(Object other) { Label otherLabel = (Label) other; ! return (node.equals(otherLabel.node) && property ! .equals(otherLabel.property)); } } ! /** * Create a new instance of the EdgeIndex class. + * * @return an EdgeIndex */ *************** *** 44,97 **** return new EdgeIndex(); } ! private Map backlinks; ! /** ! * */ private EdgeIndex() { ! backlinks = new HashMap (); } /** * Add a backlink to the Node dst on the edge (src,property). ! * @param src the source Node of the edge ! * @param property the property label for the edge ! * @param dst the destination Node of the edge */ ! public void add (NodeContent src, Object property, Node dst) { ! Label label = new Label (src.bareNode(), property); // Remove a (src,property,dst2) backlink Node prevDst = src.value(property).getNode(); ! this.remove (label, prevDst); ! ! // Access/create and augment the link set. ! Set links = (Set) backlinks.get (dst); ! if (links == null) { ! links = new HashSet(); ! backlinks.put(dst, links); } - links.add (label); } /** * Remove a backlink to prevDst from EdgeLabel label. ! * @param label the label with the link ! * @param dst the destination Node for this link */ private void remove(Label label, Node dst) { ! Set links = (Set) backlinks.get (dst); if (links != null) { links.remove(label); } } ! /** * The Set of EdgeLabel values that link to the dst Node. ! * @param dst the destination Node of these links * @return a Set of EdgeLabel instances or null if none. */ ! public Set backlinks (Node dst) { ! return Collections.unmodifiableSet ((Set) backlinks.get (dst)); } ! } --- 48,118 ---- return new EdgeIndex(); } ! private Map backlinks; ! /** ! * */ private EdgeIndex() { ! backlinks = new HashMap(); } /** * Add a backlink to the Node dst on the edge (src,property). ! * ! * @param src ! * the source Node of the edge ! * @param property ! * the property label for the edge ! * @param dst ! * the destination Node of the edge */ ! public void add(NodeContent src, Object property, Node dst) { ! Label label = new Label(src.bareNode(), property); // Remove a (src,property,dst2) backlink Node prevDst = src.value(property).getNode(); ! if (prevDst != null) { ! this.remove(label, prevDst); ! } ! ! // Ensure that we are only referring to non-null Nodes in backlink set ! if (dst != null) { ! // Backlinks are wrt. the bareNode. ! dst = dst.bareNode(); ! ! // Access/create and augment the link set. ! Set links = (Set) backlinks.get(dst); ! if (links == null) { ! links = new HashSet(); ! backlinks.put(dst, links); ! } ! links.add(label); } } /** * Remove a backlink to prevDst from EdgeLabel label. ! * ! * @param label ! * the label with the link ! * @param dst ! * the destination Node for this link */ private void remove(Label label, Node dst) { ! Set links = (Set) backlinks.get(dst); if (links != null) { links.remove(label); } } ! /** * The Set of EdgeLabel values that link to the dst Node. ! * ! * @param dst ! * the destination Node of these links * @return a Set of EdgeLabel instances or null if none. */ ! public Set backlinks(Node dst) { ! return Collections.unmodifiableSet((Set) backlinks.get(dst)); } ! } \ No newline at end of file Index: SBNURLServices.java =================================================================== RCS file: /cvsroot/nodal/nodal/j-src/storage/framework/SBNURLServices.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** SBNURLServices.java 15 Sep 2004 20:57:14 -0000 1.2 --- SBNURLServices.java 15 Nov 2004 19:21:57 -0000 1.3 *************** *** 20,24 **** public SBNURLServices(AbstractRepository repo, Path path, URL url) throws IOException { ! super (repo.services, path, url.openConnection().getInputStream(), null); this.url = url; --- 20,24 ---- public SBNURLServices(AbstractRepository repo, Path path, URL url) throws IOException { ! super (repo.backend, path, url.openConnection().getInputStream(), null); this.url = url; |