Author: vgritsenko Date: Wed Mar 28 19:41:02 2007 New Revision: 523536 URL: http://svn.apache.org/viewvc?view=rev&rev=523536 Log: applied patch from bug #40867
Modified: xml/xindice/trunk/java/src/org/apache/xindice/core/FaultCodes.java Modified: xml/xindice/trunk/java/src/org/apache/xindice/core/FaultCodes.java URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/core/FaultCodes.java?view=diff&rev=523536&r1=523535&r2=523536 ============================================================================== --- xml/xindice/trunk/java/src/org/apache/xindice/core/FaultCodes.java (original) +++ xml/xindice/trunk/java/src/org/apache/xindice/core/FaultCodes.java Wed Mar 28 19:41:02 2007 @@ -40,6 +40,8 @@ private static final Map faultMessages = new HashMap(); + private static final Map faultCodesToErrorCodesMap = new HashMap(); + public static final int GEN = 0; public static final int OBJ = 100; public static final int COL = 200; @@ -118,6 +120,11 @@ putCodeMessage(GEN_CRITICAL_ERROR, "Critical Error"); putCodeMessage(GEN_FATAL_ERROR, "Fatal Error"); + addFaultCodeToErrorCodeMap(GEN_UNKNOWN, ErrorCodes.UNKNOWN_ERROR); + addFaultCodeToErrorCodeMap(GEN_GENERAL_ERROR, ErrorCodes.UNKNOWN_ERROR); + addFaultCodeToErrorCodeMap(GEN_CRITICAL_ERROR, ErrorCodes.UNKNOWN_ERROR); + addFaultCodeToErrorCodeMap(GEN_FATAL_ERROR, ErrorCodes.UNKNOWN_ERROR); + // Collection-related errors 200 series putCodeMessage(COL_COLLECTION_NOT_FOUND, "Collection Not Found"); putCodeMessage(COL_DOCUMENT_NOT_FOUND, "Collection Document Not Found"); @@ -134,6 +141,21 @@ putCodeMessage(COL_CANNOT_DROP, "Collection Cannot Drop"); putCodeMessage(COL_INVALID_RESULT, "Collection Invalid Result"); + addFaultCodeToErrorCodeMap(COL_COLLECTION_NOT_FOUND, ErrorCodes.NO_SUCH_COLLECTION); + addFaultCodeToErrorCodeMap(COL_DOCUMENT_NOT_FOUND, ErrorCodes.NO_SUCH_RESOURCE); + addFaultCodeToErrorCodeMap(COL_DUPLICATE_COLLECTION, ErrorCodes.INVALID_COLLECTION); + addFaultCodeToErrorCodeMap(COL_NULL_RESULT, ErrorCodes.INVALID_COLLECTION); + addFaultCodeToErrorCodeMap(COL_NO_FILER, ErrorCodes.INVALID_COLLECTION); + addFaultCodeToErrorCodeMap(COL_NO_INDEXMANAGER, ErrorCodes.INVALID_COLLECTION); + addFaultCodeToErrorCodeMap(COL_DOCUMENT_MALFORMED, ErrorCodes.INVALID_RESOURCE); + addFaultCodeToErrorCodeMap(COL_CANNOT_STORE, ErrorCodes.VENDOR_ERROR); + addFaultCodeToErrorCodeMap(COL_CANNOT_RETRIEVE, ErrorCodes.VENDOR_ERROR); + addFaultCodeToErrorCodeMap(COL_COLLECTION_READ_ONLY, ErrorCodes.VENDOR_ERROR); + addFaultCodeToErrorCodeMap(COL_COLLECTION_CLOSED, ErrorCodes.COLLECTION_CLOSED); + addFaultCodeToErrorCodeMap(COL_CANNOT_CREATE, ErrorCodes.VENDOR_ERROR); + addFaultCodeToErrorCodeMap(COL_CANNOT_DROP, ErrorCodes.VENDOR_ERROR); + addFaultCodeToErrorCodeMap(COL_INVALID_RESULT, ErrorCodes.VENDOR_ERROR); + // Index-related errors 300 series putCodeMessage(IDX_VALUE_NOT_FOUND, "Index Value Not Found"); putCodeMessage(IDX_INDEX_NOT_FOUND, "Index Not Found"); @@ -144,18 +166,37 @@ putCodeMessage(IDX_CORRUPTED, "Index Corrupted"); putCodeMessage(IDX_CANNOT_CREATE, "Index Cannot Create"); + addFaultCodeToErrorCodeMap(IDX_VALUE_NOT_FOUND, ErrorCodes.INVALID_RESOURCE); + addFaultCodeToErrorCodeMap(IDX_INDEX_NOT_FOUND, ErrorCodes.NO_SUCH_RESOURCE); + addFaultCodeToErrorCodeMap(IDX_MATCHES_NOT_FOUND, ErrorCodes.VENDOR_ERROR); + addFaultCodeToErrorCodeMap(IDX_DUPLICATE_INDEX, ErrorCodes.INVALID_RESOURCE); + addFaultCodeToErrorCodeMap(IDX_NOT_SUPPORTED, ErrorCodes.NOT_IMPLEMENTED); + addFaultCodeToErrorCodeMap(IDX_STYLE_NOT_FOUND, ErrorCodes.NO_SUCH_RESOURCE); + addFaultCodeToErrorCodeMap(IDX_CORRUPTED, ErrorCodes.INVALID_RESOURCE); + addFaultCodeToErrorCodeMap(IDX_CANNOT_CREATE, ErrorCodes.VENDOR_ERROR); + // Transaction-related errors 400 series putCodeMessage(TRX_DOC_LOCKED, "Transaction Document Locked"); putCodeMessage(TRX_NO_CONTEXT, "Transaction No Context"); putCodeMessage(TRX_NOT_ACTIVE, "Transaction Not Active"); putCodeMessage(TRX_NOT_SUPPORTED, "Transaction Not Supported"); + addFaultCodeToErrorCodeMap(TRX_DOC_LOCKED, ErrorCodes.VENDOR_ERROR); + addFaultCodeToErrorCodeMap(TRX_NO_CONTEXT, ErrorCodes.INVALID_RESOURCE); + addFaultCodeToErrorCodeMap(TRX_NOT_ACTIVE, ErrorCodes.VENDOR_ERROR); + addFaultCodeToErrorCodeMap(TRX_NOT_SUPPORTED, ErrorCodes.VENDOR_ERROR); + // Database-related errors 500 series putCodeMessage(DBE_NO_PARENT, "Database No Parent"); putCodeMessage(DBE_CANNOT_DROP, "Database Cannot Drop"); putCodeMessage(DBE_CANNOT_CREATE, "Database Cannot Create"); putCodeMessage(DBE_CANNOT_READ, "Database Cannot Read"); + addFaultCodeToErrorCodeMap(DBE_NO_PARENT, ErrorCodes.INVALID_DATABASE); + addFaultCodeToErrorCodeMap(DBE_CANNOT_DROP, ErrorCodes.VENDOR_ERROR); + addFaultCodeToErrorCodeMap(DBE_CANNOT_CREATE, ErrorCodes.VENDOR_ERROR); + addFaultCodeToErrorCodeMap(DBE_CANNOT_READ, ErrorCodes.VENDOR_ERROR); + // Query-related errors 600 series putCodeMessage(QRY_NULL_RESULT, "Query Null Result"); putCodeMessage(QRY_COMPILATION_ERROR, "Query Compilation Error"); @@ -163,23 +204,58 @@ putCodeMessage(QRY_NOT_SUPPORTED, "Query Not Supported"); putCodeMessage(QRY_STYLE_NOT_FOUND, "Query Style Not Found"); + addFaultCodeToErrorCodeMap(QRY_NULL_RESULT, ErrorCodes.VENDOR_ERROR); + addFaultCodeToErrorCodeMap(QRY_COMPILATION_ERROR, ErrorCodes.VENDOR_ERROR); + addFaultCodeToErrorCodeMap(QRY_PROCESSING_ERROR, ErrorCodes.VENDOR_ERROR); + addFaultCodeToErrorCodeMap(QRY_NOT_SUPPORTED, ErrorCodes.VENDOR_ERROR); + addFaultCodeToErrorCodeMap(QRY_STYLE_NOT_FOUND, ErrorCodes.VENDOR_ERROR); + // Security-related errors 700 series putCodeMessage(SEC_INVALID_USER, "Security Invalid User"); putCodeMessage(SEC_INVALID_GROUP, "Security Invalid Group"); putCodeMessage(SEC_INVALID_ACCESS, "Security Invalid Access"); putCodeMessage(SEC_INVALID_CREDENTIALS, "Security Invalid Credentials"); + addFaultCodeToErrorCodeMap(SEC_INVALID_USER, ErrorCodes.PERMISSION_DENIED); + addFaultCodeToErrorCodeMap(SEC_INVALID_GROUP, ErrorCodes.PERMISSION_DENIED); + addFaultCodeToErrorCodeMap(SEC_INVALID_ACCESS, ErrorCodes.PERMISSION_DENIED); + addFaultCodeToErrorCodeMap(SEC_INVALID_CREDENTIALS, ErrorCodes.PERMISSION_DENIED); + // URI-related errors 800 series putCodeMessage(URI_EMPTY, "URI Empty"); putCodeMessage(URI_NULL, "URI Null"); putCodeMessage(URI_PARSE_ERROR, "URI Parse Error"); + addFaultCodeToErrorCodeMap(URI_EMPTY, ErrorCodes.INVALID_URI); + addFaultCodeToErrorCodeMap(URI_NULL, ErrorCodes.INVALID_URI); + addFaultCodeToErrorCodeMap(URI_PARSE_ERROR, ErrorCodes.INVALID_URI); + // Java-related errors 2000 series putCodeMessage(JAVA_RUNTIME_ERROR, "Java Runtime Error"); } private static void putCodeMessage(int code, String message) { faultMessages.put(new Integer(code), message); + } + + private static void addFaultCodeToErrorCodeMap(int code, int errCode) { + faultCodesToErrorCodesMap.put(new Integer(code), new Integer(errCode)); + } + + /** + * getErrorCode returns the associated XML:DB error code for the + * specified Xindice fault code + * + * @param faultCode The Xindice fault code + * @return the associated XML:DB error code + */ + public static int getErrorCode(int faultCode) { + Object err = faultCodesToErrorCodesMap.get(new Integer(faultCode)); + if (err == null) { + return ErrorCodes.UNKNOWN_ERROR; + } else { + return ((Integer) err).intValue(); + } } /**