kevinross 2003/07/10 14:44:44
Modified: java/src/org/apache/xindice/client/xmldb XindiceCollection.java Log: formatting, organize imports Revision Changes Path 1.8 +274 -276 xml-xindice/java/src/org/apache/xindice/client/xmldb/XindiceCollection.java Index: XindiceCollection.java =================================================================== RCS file: /home/cvs/xml-xindice/java/src/org/apache/xindice/client/xmldb/XindiceCollection.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- XindiceCollection.java 10 Jul 2003 14:43:52 -0000 1.7 +++ XindiceCollection.java 10 Jul 2003 21:44:44 -0000 1.8 @@ -84,280 +84,278 @@ * @author <a href="mailto:[EMAIL PROTECTED]">Kimbro Staken</a> * @author <a href="mailto:[EMAIL PROTECTED]">James Bates</a> */ -public abstract class XindiceCollection extends CommonConfigurable implements Collection { - /* Instantiated named services map */ - protected Hashtable services = null; - - /* Xindice query result meta-info namespace */ - public static final String QUERY_NS = "http://xml.apache.org/xindice/Query"; - - /* path to collection on target server */ - protected String collPath; - - /** - * Creates new <code>CollectionImpl</code> instance representing connection - * to server collection. - * - * @exception XMLDBException thrown if a connection could not be established, - * because of URL syntax errors, or connection failure, or if no - * collection with path <code>collPath</code> could be located. - */ - public XindiceCollection(String collPath) throws XMLDBException { - - this.collPath = collPath.endsWith("/") ? collPath.substring(0, collPath.length() - 1) : collPath; - - services = new Hashtable(); - - // Register all services supported by this collection implementation. - XPathQueryServiceImpl xpath = new XPathQueryServiceImpl(); - xpath.setCollection(this); -// xpath.setSymbolDeserializer(syms); - registerService(xpath); - - XUpdateQueryServiceImpl xupdate = new XUpdateQueryServiceImpl(); - xupdate.setCollection(this); - registerService(xupdate); - - try { - CollectionManagementServiceImpl manager = new CollectionManagementServiceImpl(); - manager.setCollection(this); - registerService(manager); - - // CollectionManagementServiceImpl provides both standard access as a - // CollectionManagementService and Xindice specific access as a - // CollectionManager and DatabaseInstanceManager. - // We need to register it explicitly to make it available - services.put("CollectionManager" + manager.getVersion(), manager); - services.put("DatabaseInstanceManager" + manager.getVersion(), manager); - } - catch (Exception e) { - throw FaultCodes.createXMLDBException(e); - } - } - - /** - * Provides a list of all services known to the collection. If no services - * are known an empty list is returned. - * - * @return An array of registered <code>Service</code> implementations. - * @exception XMLDBException with expected error codes.<br /> - * <code>ErrorCodes.VENDOR_ERROR</code> for any vendor - * specific errors that occur.<br /> - * <code>ErrorCodes.COLLECTION_CLOSED</code> if the <code>close</code> - * method has been called on the <code>Collection</code><br /> - */ - public Service[] getServices() throws XMLDBException { - checkOpen(); - - Enumeration e = services.elements(); - Service[] result = new Service[services.size()]; - - int i = 0; - while (e.hasMoreElements()) { - result[i] = (Service) e.nextElement(); - i++; - } - - return result; - } - - /** - * Returns a <code>Service</code> instance for the requested service name and version. If - * no <code>Service</code> exists for those parameters a null value is returned. - * - * @param name Description of Parameter - * @param version Description of Parameter - * @return the Service instance or null if no Service could be found. - * @exception XMLDBException with expected error codes.<br /> - * <code>ErrorCodes.VENDOR_ERROR</code> for any vendor - * specific errors that occur.<br /> - * <code>ErrorCodes.COLLECTION_CLOSED</code> if the <code>close</code> - * method has been called on the <code>Collection</code><br /> - */ - public org.xmldb.api.base.Service getService(String name, String version) throws XMLDBException { - checkOpen(); - - Service result = (Service) services.get(name + version); - - return result; - } - - /** - * Registers a new Service with this Collection. - * - * @param service Description of Parameter - * @exception XMLDBException - */ - public void registerService(org.xmldb.api.base.Service service) throws XMLDBException { - //checkOpen(); - - service.setCollection(this); - services.put(service.getName() + service.getVersion(), service); - } - - /** - * Checks if the collection is still open. Only open collections are safe - * to work with. - * - * @return whether the collection is still open - */ - public abstract boolean isOpen(); - - /** - * Throws an exception if collection is no longer open - * - * @exception XMLDBException thrown if collection is closed - */ - protected void checkOpen() throws XMLDBException { - - if (!isOpen()) { - - throw new XMLDBException(ErrorCodes.COLLECTION_CLOSED); - } - } - - /** - * Returns the name associated with the <code>Collection</code> instance. - * - * @return the name of the object. - */ - public String getName() { - return collPath.substring(collPath.lastIndexOf('/') + 1); - } - - /** - * Returns complete path to collection - * - * @return the collection path - */ - public String getCanonicalName() { - - return collPath; - } - - /** - * Returns XML:DB URI that would retrieve this collection - * - * @return a complete XML:DB URI - */ - public abstract String getURI(); - - /** - * Constructs a new resource that will belong in this collection. - * - * Only XML resources are supported. To save the resource to the database, you - * must first set the resource's XML data, and then call - * <code>storeResource()</code>. - * - * @param name name for new resource. If empty or <code>null</code>, a name - * will be assigned when storing the resource in the database. - * @param type must be <code>XMLResource</code>. - * @exception XMLDBException thrown in case of an invalid resource type or name - */ - public Resource createResource( String name, String type ) throws XMLDBException { - if ( !"XMLResource".equals( type ) ) { - throw new XMLDBException( ErrorCodes.UNKNOWN_RESOURCE_TYPE, "only XMLResources supported" ); - } - - if ( name == null || name.length() == 0 ) { - // fulfill contract stating - // "If id is null or its value is empty then an id is generated by calling createId()." - name = createId(); - } else if ( name.indexOf('/') != -1 ) { - throw new XMLDBException( ErrorCodes.INVALID_RESOURCE, "Name cannot contain '/'" ); - } - - return new XMLResourceImpl(name, this); - } - - /** - * Queries the entire collection and resturns the result - * - * @param queryLang <code>XUpdate</code> or <code>XPath</code> - * @param query the text of the query statement - * @param nsMap namespace bindings to use when evaluating query - * @return set containing result of query - * @throws XMLDBException thrown in case of invalid query or other error - */ - public ResourceSet query(String queryLang, String query, Hashtable nsMap) - throws XMLDBException { - - return query(null, queryLang, query, nsMap); - } - - /** - * Queries a specific document or the entire collection and returns result - * - * @param name name of document to query, or <code>null</code> to query - * entire collection. - * @param queryLang <code>XUpdate</code> or <code>XPath</code>. - * @param query the text of the query statement - * @param nsMap namespace bindings to use when evaluating query - * @return set containing result of query - * @throws XMLDBException thrown in case of invalid query or other error - */ - public abstract ResourceSet query(String name, String queryLang, String query, Hashtable nsMap) - throws XMLDBException; - - /** - * Creates a new child collection in this collection - * - * @param name The name for new child collection - * @return object representing newly created collection - * @exception XMLDBException thrown if collection createion fails for some - * reason - */ - public abstract Collection createCollection(String name) - throws XMLDBException; - - /** - * Creates a new child collection in this collection - * - * @param name The name for new child collection - * @return object representing newly created collection - * @exception XMLDBException thrown if collection createion fails for some - * reason - */ - public abstract Collection createCollection(String name, Document configuration) throws XMLDBException; - - /** - * Removes child collection from this collection - * - * @param childName name of child collection - * @exception XMLDBException thrown if collection createion fails for some - * reason - */ - public abstract void removeCollection(String childName) throws XMLDBException; - - /** - * Returns a list of all indexers for this collection. - * - * @return the list of indexers - * @exception XMLDBException - */ - public abstract String[] listIndexers() throws XMLDBException; - - /** - * Creates a new Indexer for this collection. - * - * @param configuration The configuration to use for this indexer. - * @exception XMLDBException - */ - public abstract void createIndexer(Document configuration) throws XMLDBException; - - /** - * Drops the indexer from the collection - * - * @param name The name of the indexer to drop. - * @exception XMLDBException - */ - public abstract void dropIndexer(String name) throws XMLDBException; - - /** - * Shutsdown the Database instance - * - * @exception XMLDBException - */ - public abstract void shutdown() throws XMLDBException; +public abstract class XindiceCollection extends CommonConfigurable implements Collection { + /* Instantiated named services map */ + protected Hashtable services = null; + + /* Xindice query result meta-info namespace */ + public static final String QUERY_NS = "http://xml.apache.org/xindice/Query"; + + /* path to collection on target server */ + protected String collPath; + + /** + * Creates new <code>CollectionImpl</code> instance representing connection + * to server collection. + * + * @exception XMLDBException thrown if a connection could not be established, + * because of URL syntax errors, or connection failure, or if no + * collection with path <code>collPath</code> could be located. + */ + public XindiceCollection(String collPath) throws XMLDBException { + + this.collPath = collPath.endsWith("/") ? collPath.substring(0, collPath.length() - 1) : collPath; + + services = new Hashtable(); + + // Register all services supported by this collection implementation. + XPathQueryServiceImpl xpath = new XPathQueryServiceImpl(); + xpath.setCollection(this); + // xpath.setSymbolDeserializer(syms); + registerService(xpath); + + XUpdateQueryServiceImpl xupdate = new XUpdateQueryServiceImpl(); + xupdate.setCollection(this); + registerService(xupdate); + + try { + CollectionManagementServiceImpl manager = new CollectionManagementServiceImpl(); + manager.setCollection(this); + registerService(manager); + + // CollectionManagementServiceImpl provides both standard access as a + // CollectionManagementService and Xindice specific access as a + // CollectionManager and DatabaseInstanceManager. + // We need to register it explicitly to make it available + services.put("CollectionManager" + manager.getVersion(), manager); + services.put("DatabaseInstanceManager" + manager.getVersion(), manager); + } + catch (Exception e) { + throw FaultCodes.createXMLDBException(e); + } + } + + /** + * Provides a list of all services known to the collection. If no services + * are known an empty list is returned. + * + * @return An array of registered <code>Service</code> implementations. + * @exception XMLDBException with expected error codes.<br /> + * <code>ErrorCodes.VENDOR_ERROR</code> for any vendor + * specific errors that occur.<br /> + * <code>ErrorCodes.COLLECTION_CLOSED</code> if the <code>close</code> + * method has been called on the <code>Collection</code><br /> + */ + public Service[] getServices() throws XMLDBException { + checkOpen(); + + Enumeration e = services.elements(); + Service[] result = new Service[services.size()]; + + int i = 0; + while (e.hasMoreElements()) { + result[i] = (Service) e.nextElement(); + i++; + } + + return result; + } + + /** + * Returns a <code>Service</code> instance for the requested service name and version. If + * no <code>Service</code> exists for those parameters a null value is returned. + * + * @param name Description of Parameter + * @param version Description of Parameter + * @return the Service instance or null if no Service could be found. + * @exception XMLDBException with expected error codes.<br /> + * <code>ErrorCodes.VENDOR_ERROR</code> for any vendor + * specific errors that occur.<br /> + * <code>ErrorCodes.COLLECTION_CLOSED</code> if the <code>close</code> + * method has been called on the <code>Collection</code><br /> + */ + public org.xmldb.api.base.Service getService(String name, String version) throws XMLDBException { + checkOpen(); + + Service result = (Service) services.get(name + version); + + return result; + } + + /** + * Registers a new Service with this Collection. + * + * @param service Description of Parameter + * @exception XMLDBException + */ + public void registerService(org.xmldb.api.base.Service service) throws XMLDBException { + //checkOpen(); + + service.setCollection(this); + services.put(service.getName() + service.getVersion(), service); + } + + /** + * Checks if the collection is still open. Only open collections are safe + * to work with. + * + * @return whether the collection is still open + */ + public abstract boolean isOpen(); + + /** + * Throws an exception if collection is no longer open + * + * @exception XMLDBException thrown if collection is closed + */ + protected void checkOpen() throws XMLDBException { + + if (!isOpen()) { + + throw new XMLDBException(ErrorCodes.COLLECTION_CLOSED); + } + } + + /** + * Returns the name associated with the <code>Collection</code> instance. + * + * @return the name of the object. + */ + public String getName() { + return collPath.substring(collPath.lastIndexOf('/') + 1); + } + + /** + * Returns complete path to collection + * + * @return the collection path + */ + public String getCanonicalName() { + + return collPath; + } + + /** + * Returns XML:DB URI that would retrieve this collection + * + * @return a complete XML:DB URI + */ + public abstract String getURI(); + + /** + * Constructs a new resource that will belong in this collection. + * + * Only XML resources are supported. To save the resource to the database, you + * must first set the resource's XML data, and then call + * <code>storeResource()</code>. + * + * @param name name for new resource. If empty or <code>null</code>, a name + * will be assigned when storing the resource in the database. + * @param type must be <code>XMLResource</code>. + * @exception XMLDBException thrown in case of an invalid resource type or name + */ + public Resource createResource(String name, String type) throws XMLDBException { + if (!"XMLResource".equals(type)) { + throw new XMLDBException(ErrorCodes.UNKNOWN_RESOURCE_TYPE, "only XMLResources supported"); + } + + if (name == null || name.length() == 0) { + // fulfill contract stating + // "If id is null or its value is empty then an id is generated by calling createId()." + name = createId(); + } + else if (name.indexOf('/') != -1) { + throw new XMLDBException(ErrorCodes.INVALID_RESOURCE, "Name cannot contain '/'"); + } + + return new XMLResourceImpl(name, this); + } + + /** + * Queries the entire collection and resturns the result + * + * @param queryLang <code>XUpdate</code> or <code>XPath</code> + * @param query the text of the query statement + * @param nsMap namespace bindings to use when evaluating query + * @return set containing result of query + * @throws XMLDBException thrown in case of invalid query or other error + */ + public ResourceSet query(String queryLang, String query, Hashtable nsMap) throws XMLDBException { + + return query(null, queryLang, query, nsMap); + } + + /** + * Queries a specific document or the entire collection and returns result + * + * @param name name of document to query, or <code>null</code> to query + * entire collection. + * @param queryLang <code>XUpdate</code> or <code>XPath</code>. + * @param query the text of the query statement + * @param nsMap namespace bindings to use when evaluating query + * @return set containing result of query + * @throws XMLDBException thrown in case of invalid query or other error + */ + public abstract ResourceSet query(String name, String queryLang, String query, Hashtable nsMap) throws XMLDBException; + + /** + * Creates a new child collection in this collection + * + * @param name The name for new child collection + * @return object representing newly created collection + * @exception XMLDBException thrown if collection createion fails for some + * reason + */ + public abstract Collection createCollection(String name) throws XMLDBException; + + /** + * Creates a new child collection in this collection + * + * @param name The name for new child collection + * @return object representing newly created collection + * @exception XMLDBException thrown if collection createion fails for some + * reason + */ + public abstract Collection createCollection(String name, Document configuration) throws XMLDBException; + + /** + * Removes child collection from this collection + * + * @param childName name of child collection + * @exception XMLDBException thrown if collection createion fails for some + * reason + */ + public abstract void removeCollection(String childName) throws XMLDBException; + + /** + * Returns a list of all indexers for this collection. + * + * @return the list of indexers + * @exception XMLDBException + */ + public abstract String[] listIndexers() throws XMLDBException; + + /** + * Creates a new Indexer for this collection. + * + * @param configuration The configuration to use for this indexer. + * @exception XMLDBException + */ + public abstract void createIndexer(Document configuration) throws XMLDBException; + + /** + * Drops the indexer from the collection + * + * @param name The name of the indexer to drop. + * @exception XMLDBException + */ + public abstract void dropIndexer(String name) throws XMLDBException; + + /** + * Shutsdown the Database instance + * + * @exception XMLDBException + */ + public abstract void shutdown() throws XMLDBException; }