vgritsenko 2004/02/18 19:06:44
Modified: java/src/org/apache/xindice/server/rpc/messages RemoveCollection.java Log: Exception handling: throw XMLDB exception when necessary. Revision Changes Path 1.10 +25 -21 xml-xindice/java/src/org/apache/xindice/server/rpc/messages/RemoveCollection.java Index: RemoveCollection.java =================================================================== RCS file: /home/cvs/xml-xindice/java/src/org/apache/xindice/server/rpc/messages/RemoveCollection.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- RemoveCollection.java 8 Feb 2004 02:54:17 -0000 1.9 +++ RemoveCollection.java 19 Feb 2004 03:06:44 -0000 1.10 @@ -19,8 +19,12 @@ package org.apache.xindice.server.rpc.messages; import org.apache.xindice.core.Collection; +import org.apache.xindice.core.FaultCodes; import org.apache.xindice.server.rpc.RPCDefaultMessage; +import org.xmldb.api.base.XMLDBException; +import org.xmldb.api.base.ErrorCodes; + import java.util.Hashtable; /** @@ -31,31 +35,31 @@ public Hashtable execute(Hashtable message) throws Exception { - if (!message.containsKey(COLLECTION)) { - throw new Exception(MISSING_COLLECTION_PARAM); + final String parentName = (String) message.get(COLLECTION); + if (parentName == null) { + throw new XMLDBException(ErrorCodes.NO_SUCH_COLLECTION, + FaultCodes.COL_COLLECTION_NOT_FOUND, + MISSING_COLLECTION_PARAM); } - final String childName= (String) message.get(NAME); - if (null == childName || childName.length() == 0) { - throw new Exception(MISSING_NAME_PARAM); + final String childName = (String) message.get(NAME); + if (childName == null || childName.length() == 0) { + throw new XMLDBException(ErrorCodes.NO_SUCH_COLLECTION, + FaultCodes.COL_COLLECTION_NOT_FOUND, + MISSING_NAME_PARAM); } - Hashtable result = new Hashtable(); - try { - - Collection col = getCollection((String) message.get(COLLECTION) + "/" + childName); - if (col == null) { - // No such collection - result.put(RESULT, "no"); - } else { - col.dropCollection(col); - result.put(RESULT, "yes"); - } - } catch (Exception e) { - // FIXME Exception handling - result.put(RESULT, "no"); + final Collection col = getCollection((String) message.get(COLLECTION)); + if (col == null) { + // No such collection + throw new XMLDBException(ErrorCodes.NO_SUCH_COLLECTION, + FaultCodes.COL_COLLECTION_NOT_FOUND, + "Cannot remove child collection '" + childName + "': Parent collection '" + parentName + "' not found."); } + final Hashtable result = new Hashtable(); + col.dropCollection(col.getCollection(childName)); + result.put(RESULT, "yes"); return result; } }