vgritsenko    2004/03/20 05:43:23

  Modified:    java/src/org/apache/xindice/core Collection.java
               java/src/org/apache/xindice/core/meta MetaData.java
               java/tests/src/org/apache/xindice/integration/client/resources
                        BinaryResourceTest.java
  Log:
  Support meta data for the binary resources. Go through exception messages one 
more time.
  
  Revision  Changes    Path
  1.52      +28 -34    
xml-xindice/java/src/org/apache/xindice/core/Collection.java
  
  Index: Collection.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xindice/java/src/org/apache/xindice/core/Collection.java,v
  retrieving revision 1.51
  retrieving revision 1.52
  diff -u -r1.51 -r1.52
  --- Collection.java   15 Mar 2004 13:35:34 -0000      1.51
  +++ Collection.java   20 Mar 2004 13:43:23 -0000      1.52
  @@ -230,7 +230,7 @@
       private void checkFiler(int faultCode) throws DBException {
           if (filer == null) {
               throw new DBException(faultCode,
  -                                  "This Collection '" + name + "' cannot 
store Documents");
  +                                  "Collection '" + name + "' cannot store 
resources (no filer)");
           }
       }
   
  @@ -336,7 +336,7 @@
       public boolean drop() throws DBException {
           if (this == getDatabase()) {
               throw new DBException(FaultCodes.DBE_CANNOT_DROP,
  -                                  "You Cannot Drop The Database");
  +                                  "You cannot drop the database");
           }
   
           DBObserver.getInstance().dropCollection(this);
  @@ -389,7 +389,8 @@
           checkFiler(FaultCodes.COL_NO_INDEXMANAGER);
   
           if (index == null) {
  -            throw new DBException(FaultCodes.IDX_INDEX_NOT_FOUND, "Index 
Value Null");
  +            throw new DBException(FaultCodes.IDX_INDEX_NOT_FOUND,
  +                                  "Index value is null");
           }
   
           boolean success = indexManager.drop(index.getName());
  @@ -432,8 +433,8 @@
   
           if (inlineMetaService == null) {
               throw new DBException(FaultCodes.COL_DOCUMENT_NOT_FOUND,
  -                                  "There are no binary resources in 
collection '"
  -                                  + getCanonicalName() + "': inline-metadata 
is not enabled.");
  +                                  "Collection '" + getCanonicalName() +
  +                                  "' has no binary resources (inline 
metadata is not enabled)");
           }
   
           Object entry = getEntry(key);
  @@ -443,8 +444,8 @@
   
           if (!(entry instanceof byte[])) {
               throw new DBException(FaultCodes.COL_INVALID_RESULT,
  -                                  "The resource associated with key '" + key 
+
  -                                  "' in collection '" + getCanonicalName() + 
"'is not binary.");
  +                                  "Resource '" + key + "' in collection '" +
  +                                  getCanonicalName() + "' is not a binary 
resource");
           }
   
           return (byte[]) entry;
  @@ -564,8 +565,8 @@
   
           if (!(entry instanceof Document)) {
               throw new DBException(FaultCodes.COL_INVALID_RESULT,
  -                                  "The resource associated with key '" + key 
+
  -                                  "' in collection '" + getCanonicalName() + 
"' is not XML document");
  +                                  "Resource '" + key + "' in collection '" +
  +                                  getCanonicalName() + "' is not a 
document");
           }
   
           return (Document) entry;
  @@ -598,10 +599,9 @@
               return null;
           }
   
  -        if (null == getDocument(id)) {
  +        if (null == getEntry(id)) {
               throw new DBException(FaultCodes.COL_DOCUMENT_NOT_FOUND,
  -                                  "Document '" + id + "' does not exist " +
  -                                  "in collection '" + getCanonicalName() + 
"'");
  +                                  "Resource '" + id + "' does not exist in 
'" + getCanonicalName() + "'");
           }
   
           MetaSystemCollection metacol = getMetaSystemCollection();
  @@ -899,8 +899,8 @@
       public Key insertBinary(Object docKey, byte[] bytes) throws DBException {
           if (inlineMetaService == null) {
               throw new DBException(FaultCodes.COL_CANNOT_STORE,
  -                                  "Cannot insert a binary resource in 
collection " + name +
  -                                  ": inline-metadata is not enabled.");
  +                                  "Cannot insert a binary resource in '" + 
getCanonicalName() +
  +                                  "' (inline-metadata is not enabled)");
           }
   
           Key key = createNewKey(docKey);
  @@ -1050,29 +1050,24 @@
               }
           } catch (Exception e) {
               throw new DBException(FaultCodes.COL_DOCUMENT_MALFORMED,
  -                                  "Unable to parse document " + key, e);
  +                                  "Unable to parse document '" + key + "' in 
'" + getCanonicalName() + "'", e);
           }
           return doc;
       }
   
       /*
  -     * Lowest-level method for saving a binary entry into the database.
  +     * Lowest-level method for saving a binary entry into the database. At 
this moment,
  +     * presence of inline metadata is known.
        * It now does update non-inline metadata if the user has configured it.
        */
       private void putBinary(Key key, byte[] bytes, boolean create) throws 
DBException {
  -        if (inlineMetaService == null) {
  -            throw new DBException(FaultCodes.COL_CANNOT_STORE,
  -                                  "Cannot store a binary resource in 
collection " + getCanonicalName() +
  -                                  ": inline-metadata is not enabled");
  -        }
  -
           if (!create) {
               byte[] storedBytes = getBinary(key);
               if (storedBytes == null) {
                   // TODO: Do we need a COL_KEY_ALREADY_PRESENT fault so that 
the caller can interpret this exception?
                   throw new DBException(FaultCodes.COL_CANNOT_STORE,
  -                                      "Error storing binary object with key 
'" + key + "': the 'create' flag is false and" +
  -                                      " the key is not in the database");
  +                                      "Error storing binary resource '" + 
key + "' in '" + getCanonicalName() +
  +                                      "': the 'create' flag is false and the 
key is already in database");
               }
           }
   
  @@ -1083,7 +1078,6 @@
   
           // update the meta for this document
           updateDocumentMeta(key.toString());
  -        // Not observable. DBObserver.getInstance().putDocument(this, key, 
document, oldDoc == null);
       }
   
       /**
  @@ -1274,7 +1268,7 @@
   
           if (!filer.deleteRecord(objKey)) {
               throw new DBException(FaultCodes.COL_DOCUMENT_NOT_FOUND,
  -                                  "Document Does Not Exist");
  +                                  "Resource '" + objKey + "' does not exist 
in '" + getCanonicalName() + "'");
           }
   
           // update the meta for this collection if necessary
  @@ -1480,10 +1474,10 @@
               return;
           }
   
  -        Document doc = getDocument(id);
  -        if (null == doc) {
  +        Object obj = getEntry(id);
  +        if (null == obj) {
               throw new DBException(FaultCodes.COL_DOCUMENT_NOT_FOUND,
  -                                  "Document " + id + " does not exist in 
collection " + getCanonicalName());
  +                                  "Resource '" + id + "' does not exist in 
'" + getCanonicalName() + "'");
           }
   
           if (null != meta) {
  @@ -1577,10 +1571,10 @@
               return;
           }
   
  -        Object doc = getEntry(id);
  -        if (null == doc) {
  +        Object obj = getEntry(id);
  +        if (null == obj) {
               throw new DBException(FaultCodes.COL_DOCUMENT_NOT_FOUND,
  -                                  "Document " + id + " does not exist in " + 
getCanonicalName());
  +                                  "Resource '" + id + "' does not exist in 
'" + getCanonicalName() + "'");
           }
   
           MetaSystemCollection metacol = getMetaSystemCollection();
  
  
  
  1.15      +9 -9      
xml-xindice/java/src/org/apache/xindice/core/meta/MetaData.java
  
  Index: MetaData.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xindice/java/src/org/apache/xindice/core/meta/MetaData.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- MetaData.java     8 Feb 2004 02:50:37 -0000       1.14
  +++ MetaData.java     20 Mar 2004 13:43:23 -0000      1.15
  @@ -85,15 +85,15 @@
       private static final Enumeration EMPTY =
               (new Vector()).elements();
   
  -    private transient boolean dirty = false;
  -    private transient long created = 0;
  -    private transient long modified = 0;
  -    private transient String owner = null;
  +    private transient boolean dirty;
  +    private transient long created;
  +    private transient long modified;
  +    private transient String owner;
   
       private short type = UNKNOWN;
  -    private String link = null;
  -    private Hashtable attrs = null;
  -    private Document custom = null;
  +    private String link;
  +    private Hashtable attrs;
  +    private Document custom;
   
   
       public MetaData() {
  
  
  
  1.7       +32 -4     
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.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- BinaryResourceTest.java   8 Feb 2004 03:57:02 -0000       1.6
  +++ BinaryResourceTest.java   20 Mar 2004 13:43:23 -0000      1.7
  @@ -21,6 +21,8 @@
   import org.apache.xindice.integration.client.AbstractXmlDbClientTest;
   import org.apache.xindice.integration.client.XmlDbClientSetup;
   import org.apache.xindice.xml.dom.DOMParser;
  +import org.apache.xindice.client.xmldb.services.MetaService;
  +import org.apache.xindice.core.meta.MetaData;
   
   import org.xmldb.api.base.Collection;
   import org.xmldb.api.base.Resource;
  @@ -41,7 +43,7 @@
                                        name, DOMParser.toDocument(cfg));
       }
   
  -     public void testRoundTrip() throws Exception {
  +     public void testBinaryRoundTrip() throws Exception {
                Collection collection = 
client.getCollection(TEST_COLLECTION_PATH);
                if (collection == null) {
                        throw new Exception("getCollection(" + 
TEST_COLLECTION_PATH + ") returned null");
  @@ -72,7 +74,7 @@
                }
        }
   
  -    public void testList() throws Exception {
  +    public void testBinaryList() throws Exception {
           Collection collection = client.getCollection(TEST_COLLECTION_PATH);
           if (collection == null) {
               throw new Exception("getCollection(" + TEST_COLLECTION_PATH + ") 
returned null");
  @@ -96,7 +98,7 @@
           collection.removeResource(newResource);
       }
   
  -     public void testRemove() throws Exception {
  +     public void testBinaryRemove() throws Exception {
                Collection collection = 
client.getCollection(TEST_COLLECTION_PATH);
                if (collection == null) {
                        throw new Exception("getCollection(" + 
TEST_COLLECTION_PATH + ") returned null");
  @@ -118,5 +120,31 @@
           collection.removeResource(foundResource);
           foundResource = collection.getResource(id);
           assertNull("It should not be in there anymore", foundResource);
  +     }
  +
  +     public void testBinaryMeta() throws Exception {
  +             Collection collection = 
client.getCollection(TEST_COLLECTION_PATH);
  +             if (collection == null) {
  +                     throw new Exception("getCollection(" + 
TEST_COLLECTION_PATH + ") returned null");
  +             }
  +
  +             /*
  +              * Create a binary resource, set / get meta data
  +              */
  +
  +        Resource newResource = collection.createResource(null, 
"BinaryResource");
  +        newResource.setContent(new byte[] { 0x00, 0x10, 0x01, 0x11 });
  +             collection.storeResource(newResource);
  +             String id = newResource.getId();
  +
  +        MetaService service = 
(MetaService)collection.getService("MetaService", "1.0");
  +        MetaData meta = service.getMetaData(id);
  +             assertNotNull("Meta should be in there", meta);
  +
  +        meta.setAttribute("test", "attribute");
  +        service.setMetaData(id, meta);
  +        meta = service.getMetaData(id);
  +        assertNotNull("Meta should be in there", meta);
  +        assertEquals("Attribute should not be in there", "attribute", 
meta.getAttribute("test"));
        }
   }
  
  
  

Reply via email to