vgritsenko    2003/12/22 06:08:07

  Modified:    java/src/org/apache/xindice/client/xmldb
                        XindiceCollection.java
  Log:
  createResource: Support BinaryResource
  
  Revision  Changes    Path
  1.14      +32 -25    
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.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- XindiceCollection.java    15 Aug 2003 04:34:54 -0000      1.13
  +++ XindiceCollection.java    22 Dec 2003 14:08:07 -0000      1.14
  @@ -60,6 +60,7 @@
   package org.apache.xindice.client.xmldb;
   
   import org.apache.xindice.client.xmldb.resources.XMLResourceImpl;
  +import org.apache.xindice.client.xmldb.resources.BinaryResourceImpl;
   import 
org.apache.xindice.client.xmldb.services.CollectionManagementServiceImpl;
   import org.apache.xindice.client.xmldb.services.MetaService;
   import org.apache.xindice.client.xmldb.services.XPathQueryServiceImpl;
  @@ -90,14 +91,21 @@
    * @version CVS $Revision$, $Date$
    */
   public abstract class XindiceCollection extends CommonConfigurable 
implements Collection {
  -    /* Instantiated named services map */
  -    protected Hashtable services = null;
   
  -    /* Xindice query result meta-info namespace */
  +    /**
  +     * 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;
  +    /**
  +     * Instantiated named services map
  +     */
  +    protected final Hashtable services = new Hashtable();
  +
  +    /**
  +     * Path to the collection on target server
  +     */
  +    protected final String collPath;
   
       /**
        * Creates new <code>CollectionImpl</code> instance representing 
connection
  @@ -108,28 +116,25 @@
        *            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();
  +        final XPathQueryServiceImpl xpath = new XPathQueryServiceImpl();
           xpath.setCollection(this);
  -        //        xpath.setSymbolDeserializer(syms);
  +        // xpath.setSymbolDeserializer(syms);
           registerService(xpath);
   
  -        XUpdateQueryServiceImpl xupdate = new XUpdateQueryServiceImpl();
  +        final XUpdateQueryServiceImpl xupdate = new 
XUpdateQueryServiceImpl();
           xupdate.setCollection(this);
           registerService(xupdate);
   
           // TODO  if (this.col.isMetaEnabled()) {
  -        MetaService meta = new MetaService();
  +        final MetaService meta = new MetaService();
           meta.setCollection(this);
           registerService(meta);
   
           try {
  -            CollectionManagementServiceImpl manager = new 
CollectionManagementServiceImpl();
  +            final CollectionManagementServiceImpl manager = new 
CollectionManagementServiceImpl();
               manager.setCollection(this);
               registerService(manager);
   
  @@ -198,7 +203,6 @@
        * @exception XMLDBException
        */
       public void registerService(org.xmldb.api.base.Service service) throws 
XMLDBException {
  -        //checkOpen();
   
           service.setCollection(this);
           services.put(service.getName() + service.getVersion(), service);
  @@ -218,7 +222,6 @@
        * @exception XMLDBException thrown if collection is closed
        */
       protected void checkOpen() throws XMLDBException {
  -
           if (!isOpen()) {
               throw new XMLDBException(ErrorCodes.COLLECTION_CLOSED);
           }
  @@ -239,7 +242,6 @@
        * @return the collection path
        */
       public String getCanonicalName() {
  -
           return collPath;
       }
   
  @@ -257,14 +259,15 @@
        * 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
  +     * @param name Name for the new resource. If it is empty or 
<code>null</code>, a name
        *        will be assigned when storing the resource in the database.
  -     * @param type must be <code>XMLResource</code>.
  +     * @param type Type must be either <code>XMLResource</code> or 
<code>BinaryResource</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 (!"XMLResource".equals(type) && !"BinaryResource".equals(type)) {
  +            throw new XMLDBException(ErrorCodes.UNKNOWN_RESOURCE_TYPE,
  +                                     "Only XMLResource and BinaryResource 
supported");
           }
   
           if (name == null || name.length() == 0) {
  @@ -272,10 +275,15 @@
               // "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 '/'");
  +            throw new XMLDBException(ErrorCodes.INVALID_RESOURCE,
  +                                     "Name cannot contain '/'");
           }
   
  -        return new XMLResourceImpl(name, this);
  +        if ("XMLResource".equals(type)) {
  +            return new XMLResourceImpl(name, this);
  +        } else {
  +            return new BinaryResourceImpl(name, null, this);
  +        }
       }
   
       /**
  @@ -288,7 +296,6 @@
        * @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);
       }
   
  
  
  

Reply via email to