vgritsenko    2003/12/25 18:41:58

  Modified:    java/src/org/apache/xindice/client/xmldb
                        XindiceCollection.java
               java/src/org/apache/xindice/client/xmldb/embed
                        CollectionImpl.java
               java/src/org/apache/xindice/client/xmldb/services
                        CollectionManager.java
               java/src/org/apache/xindice/client/xmldb/xmlrpc
                        CollectionImpl.java
               java/src/org/apache/xindice/core CollectionManager.java
               java/tests/src/org/apache/xindice/integration/client
                        XmlDbClient.java
               java/tests/src/org/apache/xindice/integration/client/basic
                        CollectionTest.java
               java/tests/src/org/apache/xindice/integration/client/resources
                        BinaryResourceTest.java
               java/tests/src/org/apache/xindice/integration/client/services
                        IndexedSearchTest.java
  Log:
  First argument in xindice's API createCollection method is path,
  which was treated as name on several occasions.
  Attempt to fix collection integration test.
  
  Revision  Changes    Path
  1.16      +11 -7     
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.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- XindiceCollection.java    24 Dec 2003 02:22:12 -0000      1.15
  +++ XindiceCollection.java    26 Dec 2003 02:41:58 -0000      1.16
  @@ -323,23 +323,27 @@
       public abstract Collection createCollection(String name) throws 
XMLDBException;
   
       /**
  -     * Creates a new child collection in this collection
  +     * Creates a new child collection.
  +     * If path is a simple name (no '/' character), collection will be 
created
  +     * in this collection. If path contains more then one element, 
collection will be
  +     * created in the corresponding sub-collection of this collection (which 
must
  +     * already exist).
        *
  -     * @param name The name for new child collection
  +     * @param path The path for new child collection
        * @return object representing newly created collection
        * @exception XMLDBException thrown if collection creation fails for some
        *                           reason
        */
  -    public abstract Collection createCollection(String name, Document 
configuration) throws XMLDBException;
  +    public abstract Collection createCollection(String path, Document 
configuration) throws XMLDBException;
   
       /**
        * Removes child collection from this collection
        *
  -     * @param childName name of child collection
  +     * @param name name of child collection
        * @exception XMLDBException thrown if collection creation fails for some
        *                           reason
        */
  -    public abstract void removeCollection(String childName) throws 
XMLDBException;
  +    public abstract void removeCollection(String name) throws XMLDBException;
   
       /**
        * Returns a list of all indexers for this collection.
  
  
  
  1.30      +25 -6     
xml-xindice/java/src/org/apache/xindice/client/xmldb/embed/CollectionImpl.java
  
  Index: CollectionImpl.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xindice/java/src/org/apache/xindice/client/xmldb/embed/CollectionImpl.java,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- CollectionImpl.java       24 Dec 2003 02:52:44 -0000      1.29
  +++ CollectionImpl.java       26 Dec 2003 02:41:58 -0000      1.30
  @@ -61,6 +61,7 @@
   
   import java.util.Enumeration;
   import java.util.Hashtable;
  +import java.util.StringTokenizer;
   
   import org.apache.xindice.client.xmldb.ResourceSetImpl;
   import org.apache.xindice.client.xmldb.XindiceCollection;
  @@ -507,14 +508,32 @@
           }
       }
   
  -    /* see superclass for documentation */
  -    public org.xmldb.api.base.Collection createCollection(String name, 
Document configuration) throws XMLDBException {
  +    // See superclass for documentation. Note that first argument is the 
path, not the name.
  +    public org.xmldb.api.base.Collection createCollection(String path, 
Document configuration) throws XMLDBException {
           checkOpen();
           try {
               Configuration config = new 
Configuration(configuration.getDocumentElement(), false);
  -            col.createCollection(name, config);
  +            col.createCollection(path, config);
  +
  +            // Traverse path to get newly created collection
  +            org.xmldb.api.base.Collection col = this;
  +            if (path.indexOf("/") != -1) {
  +                StringTokenizer st = new StringTokenizer(path, "/");
  +                while (col != null && st.hasMoreTokens()) {
  +                    path = st.nextToken().trim();
  +                    if (path.length() == 0) {
  +                        continue;
  +                    }
  +
  +                    if (st.hasMoreTokens()) {
  +                        col = col.getChildCollection(path);
  +                    } else {
  +                        break;
  +                    }
  +                }
  +            }
   
  -            return getChildCollection(name);
  +            return col.getChildCollection(path);
           } catch (Exception e) {
               throw 
FaultCodes.createXMLDBException(ErrorCodes.INVALID_COLLECTION,
                                                     FaultCodes.GEN_UNKNOWN,
  
  
  
  1.10      +3 -2      
xml-xindice/java/src/org/apache/xindice/client/xmldb/services/CollectionManager.java
  
  Index: CollectionManager.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xindice/java/src/org/apache/xindice/client/xmldb/services/CollectionManager.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- CollectionManager.java    7 Aug 2003 20:13:20 -0000       1.9
  +++ CollectionManager.java    26 Dec 2003 02:41:58 -0000      1.10
  @@ -72,6 +72,7 @@
    * @version CVS $Revision$, $Date$
    */
   public interface CollectionManager {
  +
       /**
        * Returns the name of the collection that this manager is associated 
with.
        *
  
  
  
  1.42      +24 -6     
xml-xindice/java/src/org/apache/xindice/client/xmldb/xmlrpc/CollectionImpl.java
  
  Index: CollectionImpl.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xindice/java/src/org/apache/xindice/client/xmldb/xmlrpc/CollectionImpl.java,v
  retrieving revision 1.41
  retrieving revision 1.42
  diff -u -r1.41 -r1.42
  --- CollectionImpl.java       25 Dec 2003 19:16:06 -0000      1.41
  +++ CollectionImpl.java       26 Dec 2003 02:41:58 -0000      1.42
  @@ -608,20 +608,38 @@
           return createCollection(name, null);
       }
   
  -    /* see superclass for documentation */
  -    public Collection createCollection(String name, Document configuration) 
throws XMLDBException {
  +    // See superclass for documentation. Note that first argument is the 
path, not the name.
  +    public Collection createCollection(String path, Document configuration) 
throws XMLDBException {
           checkOpen();
           try {
               Hashtable params = new Hashtable();
               params.put(RPCDefaultMessage.COLLECTION, collPath);
  -            params.put(RPCDefaultMessage.NAME, name);
  +            params.put(RPCDefaultMessage.NAME, path);
               if (configuration != null) {
                   params.put(RPCDefaultMessage.CONFIGURATION, 
TextWriter.toString(configuration));
               }
   
               runRemoteCommand("CreateCollection", params);
   
  -            return getChildCollection(name);
  +            // Traverse path to get newly created collection
  +            org.xmldb.api.base.Collection col = this;
  +            if (path.indexOf("/") != -1) {
  +                StringTokenizer st = new StringTokenizer(path, "/");
  +                while (col != null && st.hasMoreTokens()) {
  +                    path = st.nextToken().trim();
  +                    if (path.length() == 0) {
  +                        continue;
  +                    }
  +
  +                    if (st.hasMoreTokens()) {
  +                        col = col.getChildCollection(path);
  +                    } else {
  +                        break;
  +                    }
  +                }
  +            }
  +
  +            return col.getChildCollection(path);
           } catch (XMLDBException x) {
   
               throw x;  // propagate any xmldb exception.
  
  
  
  1.24      +6 -2      
xml-xindice/java/src/org/apache/xindice/core/CollectionManager.java
  
  Index: CollectionManager.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xindice/java/src/org/apache/xindice/core/CollectionManager.java,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- CollectionManager.java    25 Dec 2003 20:04:40 -0000      1.23
  +++ CollectionManager.java    26 Dec 2003 02:41:58 -0000      1.24
  @@ -243,6 +243,10 @@
        * @return The Collection (or null)
        */
       public Collection getCollection(String path) throws DBException {
  +        if (path == null) {
  +            return null;
  +        }
  +
           if (path.indexOf("/") != -1) {
               CollectionManager cm = this;
               StringTokenizer st = new StringTokenizer(path, "/");
  
  
  
  1.13      +15 -17    
xml-xindice/java/tests/src/org/apache/xindice/integration/client/XmlDbClient.java
  
  Index: XmlDbClient.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xindice/java/tests/src/org/apache/xindice/integration/client/XmlDbClient.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- XmlDbClient.java  23 Dec 2003 12:11:12 -0000      1.12
  +++ XmlDbClient.java  26 Dec 2003 02:41:58 -0000      1.13
  @@ -93,28 +93,26 @@
           return col.getName();
       }
   
  -    public Collection createCollection(String path, String name) throws 
Exception {
  -        Collection col = DatabaseManager.getCollection(driver + "/" + path);
  -        if (col == null) {
  -            throw new XindiceException("DatabaseManager.getCollection(" + 
driver + "/" + path + ") returned null");
  -        }
  -        CollectionManager service = (CollectionManager) 
col.getService("CollectionManager", "1.0");
  +    public Collection createCollection(String parent, String name) throws 
Exception {
  +        return createCollection(parent, name, name);
  +    }
   
  +    public Collection createCollection(String parent, String path, String 
name) throws Exception {
           // FIXME: inline metadata conflicts with indexers?
  -        String collectionConfig
  -                = "<collection compressed=\"true\" name=\"" + name + "\" 
inline-metadata=\"false\">"
  -                + "   <filer 
class=\"org.apache.xindice.core.filer.BTreeFiler\" gzip=\"true\"/>"
  -                + "</collection>";
  -        return service.createCollection(name, 
DOMParser.toDocument(collectionConfig));
  +        String config =
  +                "<collection compressed=\"true\" name=\"" + name + "\" 
inline-metadata=\"false\">" +
  +                "   <filer 
class=\"org.apache.xindice.core.filer.BTreeFiler\" gzip=\"true\"/>" +
  +                "</collection>";
  +        return createCollection(parent, path, DOMParser.toDocument(config));
       }
   
  -    public Collection createCollection(String path, String name, Document 
configuration) throws Exception {
  -        Collection col = DatabaseManager.getCollection(driver + "/" + path);
  +    public Collection createCollection(String parent, String path, Document 
configuration) throws Exception {
  +        Collection col = DatabaseManager.getCollection(driver + "/" + 
parent);
           if (col == null) {
  -            throw new XindiceException("DatabaseManager.getCollection(" + 
driver + "/" + path + ") returned null");
  +            throw new XindiceException("DatabaseManager.getCollection(" + 
driver + "/" + parent + ") returned null");
           }
           CollectionManager service = (CollectionManager) 
col.getService("CollectionManager", "1.0");
  -        return service.createCollection(name, configuration);
  +        return service.createCollection(path, configuration);
       }
   
       public Collection getCollection(String path) throws Exception {
  
  
  
  1.15      +18 -12    
xml-xindice/java/tests/src/org/apache/xindice/integration/client/basic/CollectionTest.java
  
  Index: CollectionTest.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xindice/java/tests/src/org/apache/xindice/integration/client/basic/CollectionTest.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- CollectionTest.java       24 Dec 2003 15:23:53 -0000      1.14
  +++ CollectionTest.java       26 Dec 2003 02:41:58 -0000      1.15
  @@ -108,7 +108,9 @@
           this.client.createCollection(TEST_COLLECTION_PATH, "nested");
           assertEquals(1, this.client.countCollections(TEST_COLLECTION_PATH));
   
  -        this.client.createCollection(TEST_COLLECTION_PATH + "/nested", 
"child2");
  +        // Test create collection with path
  +        this.client.createCollection(TEST_COLLECTION_PATH, "nested/child2", 
"child2");
  +
           this.client.createCollection(TEST_COLLECTION_PATH + "/nested", 
"child3");
           assertEquals(2, this.client.countCollections(TEST_COLLECTION_PATH + 
"/nested"));
   
  @@ -134,10 +136,10 @@
   
       public void testCreateCollectionEmptyName() throws Exception {
           try {
  -            this.client.createCollection(TEST_COLLECTION_PATH, "");
  +            this.client.createCollection(TEST_COLLECTION_PATH, "emptyname", 
"");
           } catch (XMLDBException e) {
  -            assertTrue(e.vendorErrorCode == FaultCodes.COL_CANNOT_CREATE);
  -            assertTrue(e.getMessage().lastIndexOf("No name specified") > 0);
  +            assertTrue("Error Code (Expected " + 
FaultCodes.COL_CANNOT_CREATE + ", got " + e.vendorErrorCode,
  +                       e.vendorErrorCode == FaultCodes.COL_CANNOT_CREATE);
               return;
           }
           fail();
  @@ -145,9 +147,10 @@
   
       public void testCreateCollectionNullName() throws Exception {
           try {
  -            this.client.createCollection(TEST_COLLECTION_PATH, null);
  +            this.client.createCollection(TEST_COLLECTION_PATH, "nullname", 
(String) null);
           } catch (XMLDBException e) {
  -            // TODO assertTrue(e.vendorErrorCode == 
FaultCodes.COL_CANNOT_CREATE);
  +            assertTrue("Error Code (Expected " + 
FaultCodes.COL_CANNOT_CREATE + ", got " + e.vendorErrorCode,
  +                       e.vendorErrorCode == FaultCodes.COL_CANNOT_CREATE);
               return;
           }
           fail();
  @@ -155,9 +158,10 @@
   
       public void testCreateCollectionInvalidName() throws Exception {
           try {
  -            this.client.createCollection(TEST_COLLECTION_PATH, 
"my/collection");
  +            this.client.createCollection(TEST_COLLECTION_PATH, 
"invalidname", "my/collection");
           } catch (XMLDBException e) {
  -            // TODO assertTrue(e.vendorErrorCode == 
FaultCodes.COL_CANNOT_CREATE);
  +            assertTrue("Error Code (Expected " + 
FaultCodes.COL_CANNOT_CREATE + ", got " + e.vendorErrorCode,
  +                       e.vendorErrorCode == FaultCodes.COL_CANNOT_CREATE);
               return;
           }
           fail();
  @@ -170,7 +174,8 @@
           try {
               this.client.dropCollection(TEST_COLLECTION_PATH, "droptwice");
           } catch (XMLDBException e) {
  -            assertTrue(e.vendorErrorCode == 
FaultCodes.COL_COLLECTION_NOT_FOUND);
  +            assertTrue("Error Code (Expected " + 
FaultCodes.COL_COLLECTION_NOT_FOUND + ", got " + e.vendorErrorCode,
  +                       e.vendorErrorCode == 
FaultCodes.COL_COLLECTION_NOT_FOUND);
               return;
           }
           fail();
  @@ -180,7 +185,8 @@
           try {
               this.client.dropCollection(TEST_COLLECTION_PATH, null);
           } catch (XMLDBException e) {
  -            // TODO assertTrue(e.vendorErrorCode == 
FaultCodes.COL_CANNOT_DROP);
  +            assertTrue("Error Code (Expected " + 
FaultCodes.COL_COLLECTION_NOT_FOUND + ", got " + e.vendorErrorCode,
  +                       e.vendorErrorCode == 
FaultCodes.COL_COLLECTION_NOT_FOUND);
               return;
           }
           fail();
  
  
  
  1.3       +3 -2      
xml-xindice/java/tests/src/org/apache/xindice/integration/client/resources/BinaryResourceTest.java
  
  Index: BinaryResourceTest.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xindice/java/tests/src/org/apache/xindice/integration/client/resources/BinaryResourceTest.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- BinaryResourceTest.java   24 Dec 2003 02:50:14 -0000      1.2
  +++ BinaryResourceTest.java   26 Dec 2003 02:41:58 -0000      1.3
  @@ -78,7 +78,8 @@
                   = "<collection compressed=\"true\" name=\"" + name + "\" 
inline-metadata=\"true\">"
                   + "   <filer 
class=\"org.apache.xindice.core.filer.BTreeFiler\" gzip=\"true\"/>"
                   + "</collection>";
  -        this.client.createCollection(XmlDbClientSetup.INSTANCE_NAME + "/" + 
XmlDbClientSetup.TEST_COLLECTION_NAME, name, DOMParser.toDocument(cfg));
  +        this.client.createCollection(XmlDbClientSetup.INSTANCE_NAME + "/" + 
XmlDbClientSetup.TEST_COLLECTION_NAME,
  +                                     name, DOMParser.toDocument(cfg));
       }
   
        public void testRoundTrip() throws Exception {
  
  
  
  1.4       +4 -4      
xml-xindice/java/tests/src/org/apache/xindice/integration/client/services/IndexedSearchTest.java
  
  Index: IndexedSearchTest.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xindice/java/tests/src/org/apache/xindice/integration/client/services/IndexedSearchTest.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- IndexedSearchTest.java    14 Dec 2003 19:52:10 -0000      1.3
  +++ IndexedSearchTest.java    26 Dec 2003 02:41:58 -0000      1.4
  @@ -530,7 +530,7 @@
                   "SEWA",                   // index name
                   "Name",                   // index type
                   "[EMAIL PROTECTED]",               // index pattern
  -                10,                       // indexed query speedup expected 
(conservative)
  +                6,                        // indexed query speedup expected 
(conservative)
                   new String[] {            // test docs specifically for this 
test
                       "<?xml version='1.0'?>" +
                       "<person number3='yes'>" +
  @@ -749,7 +749,7 @@
                   "SENA",                   // index name
                   "Value",                  // index type
                   "[EMAIL PROTECTED]",                 // index pattern
  -                7,                        // indexed query speedup expected 
(conservative)
  +                6,                        // indexed query speedup expected 
(conservative)
                   new String[] {            // test docs specifically for this 
test
                       "<?xml version='1.0'?>" +
                       "<person number3='yes'>" +
  
  
  

Reply via email to