vgritsenko 2003/08/21 11:14:53
Modified: java/src/org/apache/xindice/client/xmldb/xmlrpc
CollectionImpl.java
java/src/org/apache/xindice/core Collection.java
Log:
More logging and exception messages tuning
Revision Changes Path
1.35 +3 -3
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.34
retrieving revision 1.35
diff -u -r1.34 -r1.35
--- CollectionImpl.java 16 Aug 2003 03:47:36 -0000 1.34
+++ CollectionImpl.java 21 Aug 2003 18:14:53 -0000 1.35
@@ -141,7 +141,7 @@
String xmlRpcURL = "http://" + hostPort + serviceLocation;
try {
if (log.isDebugEnabled()) {
- log.debug("Using URL: '" + "http://" + hostPort +
serviceLocation + "'");
+ log.debug("Using URL: '" + xmlRpcURL + "'");
}
client = new XmlRpcClient(xmlRpcURL);
1.38 +132 -84
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.37
retrieving revision 1.38
diff -u -r1.37 -r1.38
--- Collection.java 15 Aug 2003 04:34:54 -0000 1.37
+++ Collection.java 21 Aug 2003 18:14:53 -0000 1.38
@@ -469,7 +469,7 @@
* Retrieve a binary database entry by key.
* This low-level method will not update non-inline metadata.
*
- * @param docKey identifying the desired database entry
+ * @param key identifying the desired database entry
* @return byte[] containing the binary database entry
* @throws DBException if inline-metadata is not enabled
* (binary resource cannot be stored in a collection
@@ -477,27 +477,26 @@
* in case of backing store error, and in case of
* header corruption
*/
- public final byte[] getBinary(Object docKey) throws DBException {
-
+ public final byte[] getBinary(Object key) throws DBException {
if (log.isDebugEnabled()) {
- log.debug(debugHeader() + "getBinary: docKey=<" + docKey + ">");
+ log.debug(debugHeader() + "Get binary: " + key);
}
if (inlineMetaService != null) {
throw new DBException(FaultCodes.COL_DOCUMENT_NOT_FOUND,
- "There are no binary resources in
collection " + name +
- ": inline-metadata is not enabled.");
+ "There are no binary resources in
collection '"
+ + getCanonicalName() + "': inline-metadata
is not enabled.");
}
- Object entry = getEntry(docKey);
+ Object entry = getEntry(key);
if (entry == null) {
return null;
}
if (!(entry instanceof byte[])) {
throw new DBException(FaultCodes.COL_INVALID_RESULT,
- "The resource associated with key '" +
docKey +
- "' in collection '" + name + "'is not
binary");
+ "The resource associated with key '" + key
+
+ "' in collection '" + getCanonicalName() +
"'is not binary.");
}
return (byte[]) entry;
@@ -555,6 +554,7 @@
}
return meta;
}
+
MetaSystemCollection metacol = getMetaSystemCollection();
meta = metacol.getCollectionMeta(this);
if (null == meta) {
@@ -562,6 +562,7 @@
meta = new MetaData(MetaData.COLLECTION, getCanonicalName(),
now, now);
metacol.setCollectionMeta(this, meta);
}
+
return meta;
}
@@ -598,24 +599,23 @@
/**
* getDocument retrieves a Document by Key.
*
- * @param docKey The Document Key
+ * @param key The Document Key
* @return The Document
*/
- public final Document getDocument(Object docKey) throws DBException {
-
- if (log.isTraceEnabled()) {
- log.trace(debugHeader() + "getDocument: docKey=<" + docKey +
">");
+ public final Document getDocument(Object key) throws DBException {
+ if (log.isDebugEnabled()) {
+ log.debug(debugHeader() + "Get document: " + key);
}
- Object entry = getEntry(docKey);
+ Object entry = getEntry(key);
if (entry == null) {
return null;
}
if (!(entry instanceof Document)) {
throw new DBException(FaultCodes.COL_INVALID_RESULT,
- "The resource associated with key '" +
docKey +
- "' in collection '" + name + "' is not
XML");
+ "The resource associated with key '" + key
+
+ "' in collection '" + getCanonicalName() +
"' is not XML document");
}
return (Document) entry;
@@ -641,22 +641,21 @@
* @param id the document whose metadata you want
*/
public MetaData getDocumentMeta(String id) throws DBException {
- MetaData meta = null;
if (!isMetaEnabled()) {
if (log.isWarnEnabled()) {
log.warn("Meta information requested but not enabled in
config!");
}
- return meta;
+ return null;
}
- Document doc = getDocument(id);
- if (null == doc) {
- throw new DBException(FaultCodes.COL_DOCUMENT_NOT_FOUND,
"Document " + id + " does not exist");
+
+ if (null == getDocument(id)) {
+ throw new DBException(FaultCodes.COL_DOCUMENT_NOT_FOUND,
+ "Document '" + id + "' does not exist " +
+ "in collection '" + getCanonicalName() +
"'");
}
MetaSystemCollection metacol = getMetaSystemCollection();
- meta = metacol.getDocumentMeta(this, id);
-
- String path = getCanonicalDocumentName(id);
+ MetaData meta = metacol.getDocumentMeta(this, id);
/*
TimeRecord rec = null;
@@ -670,7 +669,7 @@
// this is wrong.. but it should work for now...
long now = System.currentTimeMillis();
if (null == meta) {
- meta = new MetaData(MetaData.DOCUMENT, path, now, now);
+ meta = new MetaData(MetaData.DOCUMENT,
getCanonicalDocumentName(id), now, now);
metacol.setDocumentMeta(this, id, meta);
} else if (!meta.hasContext()) {
meta.setContext(now, now);
@@ -734,10 +733,10 @@
*/
if (documentCache != null) {
Document document = documentCache.getDocument(this, key);
- if (log.isDebugEnabled()) {
- log.debug(localDebugHeader + "Cache search returned: " +
document);
- }
if (document != null) {
+ if (log.isTraceEnabled()) {
+ log.trace(localDebugHeader + "Returning cached: " +
document);
+ }
return document;
}
}
@@ -747,44 +746,32 @@
return null;
}
- if (log.isDebugEnabled()) {
- log.debug(localDebugHeader + "Record value length=" +
record.getValue().getLength());
- }
-
Value value;
InlineMetaMap metaMap = null;
if (inlineMetaService == null) {
- if (log.isDebugEnabled()) {
- log.debug(localDebugHeader + "Type is not available");
- }
-
value = record.getValue();
- } else {
+
if (log.isTraceEnabled()) {
- log.trace(localDebugHeader + "Decomposing header...");
+ log.trace(localDebugHeader + "Type is not available,
Length=" + value.getLength());
}
-
+ } else {
InlineMetaService.DatabaseEntry databaseEntry =
inlineMetaService.readDatabaseEntry(record.getValue());
metaMap = databaseEntry.map;
value = databaseEntry.value;
- if (log.isDebugEnabled()) {
- log.debug(localDebugHeader + "Type=" + metaMap.get("type") +
", Length=" + value.getLength());
+ if (log.isTraceEnabled()) {
+ log.trace(localDebugHeader + "Type=" + metaMap.get("type") +
", Length=" + value.getLength());
}
}
if (inlineMetaService == null ||
metaMap.get("type").equals(ResourceTypeReader.XML)) {
- if (log.isTraceEnabled()) {
- log.trace(localDebugHeader + "XML document");
- }
-
Document document;
if (compressed) {
document = new DocumentImpl(value.getData(), symbols, new
NodeSource(this, key));
flushSymbolTable();
- if (log.isDebugEnabled()) {
- log.debug(localDebugHeader
+ if (log.isTraceEnabled()) {
+ log.trace(localDebugHeader
+ "Compressed XML document=<" +
TextWriter.toString(document) + ">");
}
@@ -802,6 +789,10 @@
DBObserver.getInstance().loadDocument(this, record, document);
return document;
} else {
+ if (log.isTraceEnabled()) {
+ log.trace(localDebugHeader + "Binary document");
+ }
+
return value.getData();
}
}
@@ -843,8 +834,7 @@
*
* @return MetaSystemCollection
*/
- private MetaSystemCollection getMetaSystemCollection() //throws
DBException
- {
+ private MetaSystemCollection getMetaSystemCollection() {
return getDatabase().getMetaSystemCollection();
}
@@ -861,10 +851,12 @@
* @return an Castable XMLSerializable Instance
*/
public final XMLSerializable getObject(Object key) throws DBException {
+ if (log.isDebugEnabled()) {
+ log.debug(debugHeader() + "Get object: " + key);
+ }
String className = null;
Document doc = getDocument(key);
-
if (doc != null) {
NodeList childNodes = doc.getChildNodes();
int size = childNodes.getLength();
@@ -943,7 +935,6 @@
* error occurs while saving.
*/
public Key insertBinary(byte[] bytes) throws DBException {
-
if (inlineMetaService == null) {
throw new DBException(FaultCodes.COL_CANNOT_STORE,
"Cannot insert a binary resource in
collection " + name +
@@ -951,31 +942,35 @@
}
Key key = createNewOID();
+ if (log.isInfoEnabled()) {
+ log.info(debugHeader() + "Insert binary. Key created: " + key);
+ }
putBinary(key, bytes, true);
- // update the meta information if necessary
+ // Update the meta information if necessary
updateCollectionMeta();
-
return key;
}
/**
* insertBinary inserts a new binary object into a Xindice Collection.
*
- * @param docKey The document Key
+ * @param key The document Key
* @param bytes The document to insert
* @throws DBException if inline-metadata is not enabled, the key is
* already in the database, or an error occurs while saving.
*/
- public void insertBinary(Object docKey, byte[] bytes) throws DBException
{
-
+ public void insertBinary(Object key, 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.");
}
- putBinary(createNewKey(docKey), bytes, true);
+ if (log.isInfoEnabled()) {
+ log.info(debugHeader() + "Insert binary: " + key);
+ }
+ putBinary(createNewKey(key), bytes, true);
// update the meta information if necessary
updateCollectionMeta();
@@ -989,7 +984,11 @@
*/
public final Key insertDocument(Document document) throws DBException {
Key key = createNewOID();
+ if (log.isInfoEnabled()) {
+ log.info(debugHeader() + "Insert document. Key created: " + key);
+ }
putDocument(key, document /*, true */);
+
// update the meta information if necessary
updateCollectionMeta();
return key;
@@ -1002,7 +1001,11 @@
* @param document The document to insert
*/
public final void insertDocument(Object docKey, Document document)
throws DBException {
+ if (log.isInfoEnabled()) {
+ log.info(debugHeader() + "Insert document: " + docKey);
+ }
putDocument(createNewKey(docKey), document /*, true */);
+
// update the meta information if necessary
updateCollectionMeta();
}
@@ -1016,7 +1019,13 @@
* @param obj The Object to insert
*/
public final void insertObject(String key, XMLSerializable obj) throws
DBException {
+ if (log.isInfoEnabled()) {
+ log.info(debugHeader() + "Insert object: " + key);
+ }
putObject(createNewKey(key), obj /*, true */);
+
+ // update the meta information if necessary
+ updateCollectionMeta();
}
/**
@@ -1029,7 +1038,13 @@
*/
public final Key insertObject(XMLSerializable obj) throws DBException {
Key key = createNewOID();
+ if (log.isInfoEnabled()) {
+ log.info(debugHeader() + "Insert object. Key created: " + key);
+ }
putObject(key, obj /*, true */);
+
+ // update the meta information if necessary
+ updateCollectionMeta();
return key;
}
@@ -1112,7 +1127,8 @@
documentCache.putDocument(this, key, b);
}
} catch (Exception e) {
- throw new DBException(FaultCodes.COL_DOCUMENT_MALFORMED, "Unable
to parse Document", e);
+ throw new DBException(FaultCodes.COL_DOCUMENT_MALFORMED,
+ "Unable to parse document " + key, e);
}
return doc;
}
@@ -1122,7 +1138,6 @@
* Does not update non-inline metadata.
*/
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() +
@@ -1152,10 +1167,9 @@
* It now does update non-inline metadata if the user has configured it.
*/
private void putDocument(Key key, Document document) throws DBException {
-
final String localDebugHeader = debugHeader() + "putDocument:
docKey=<" + key + ">: ";
- if (log.isDebugEnabled()) {
- log.debug(localDebugHeader + "document=<" +
TextWriter.toString(document) + ">");
+ if (log.isTraceEnabled()) {
+ log.trace(localDebugHeader + "document=<" +
TextWriter.toString(document) + ">");
}
checkFiler(FaultCodes.COL_NO_FILER);
@@ -1188,21 +1202,32 @@
if (compressed) {
try {
packedDocument = DOMCompressor.Compress(document, symbols);
- log.debug(localDebugHeader + "length=" +
packedDocument.length);
+ if (log.isTraceEnabled()) {
+ log.trace(localDebugHeader + "length=" +
packedDocument.length);
+ }
// Why must it be re-created?
document = new DocumentImpl(packedDocument, symbols, new
NodeSource(this, key));
- log.debug(localDebugHeader + "packedDocument: length=" +
packedDocument.length + " document=<" + TextWriter.toString(document) + ">");
+ if (log.isTraceEnabled()) {
+ log.trace(localDebugHeader + "packedDocument: length=" +
packedDocument.length +
+ " document=<" + TextWriter.toString(document)
+ ">");
+ }
} catch (Exception e) {
- throw new DBException(FaultCodes.COL_CANNOT_STORE,
localDebugHeader + "Error compressing Document '" + key + "'", e);
+ throw new DBException(FaultCodes.COL_CANNOT_STORE,
+ localDebugHeader + "Error compressing
Document '" + key + "'", e);
}
} else {
try {
utf8Document =
TextWriter.toString(document).getBytes("utf-8");
- log.debug(localDebugHeader + "utf8Document: length=" +
utf8Document.length + " document=<" + new String(utf8Document, "utf-8") + ">");
+ if (log.isTraceEnabled()) {
+ log.trace(localDebugHeader + "utf8Document: length=" +
utf8Document.length +
+ " document=<" + new String(utf8Document,
"utf-8") + ">");
+ }
} catch (UnsupportedEncodingException e) {
- throw new DBException(FaultCodes.GEN_FATAL_ERROR, "utf-8
encoding not supported", e);
+ // Should never happen
+ throw new DBException(FaultCodes.GEN_FATAL_ERROR,
+ "utf-8 encoding not supported", e);
}
}
@@ -1254,16 +1279,14 @@
}
private void putObject(Key key, XMLSerializable obj) throws DBException {
-
- final String localDebugHeader = debugHeader() + "putObject: key=<" +
key + ">: ";
+ if (log.isTraceEnabled()) {
+ log.trace(debugHeader() + "putObject: key=<" + key + "> class=<"
+ obj.getClass().getName() + ">");
+ }
Document doc = new DocumentImpl();
ProcessingInstruction pi =
doc.createProcessingInstruction(CLASSNAME, obj.getClass().getName());
doc.appendChild(pi);
Element elem = obj.streamToXML(doc);
- if (log.isDebugEnabled()) {
- log.debug(localDebugHeader + "elem=<" +
TextWriter.toString(elem) + ">");
- }
doc.appendChild(elem);
putDocument(key, doc /*, create */);
}
@@ -1278,6 +1301,9 @@
* @return The resulting NodeSet
*/
public final NodeSet queryCollection(String style, String query,
NamespaceMap nsMap) throws DBException {
+ if (log.isInfoEnabled()) {
+ log.info(debugHeader() + "Query collection, query " + query);
+ }
// a collection in which you are unable to file documents will have
no filer
// (for example the root collection). Rather than throwing an
exception return
// a constant result (nothing)
@@ -1295,6 +1321,10 @@
* @return The resulting NodeSet
*/
public final NodeSet queryDocument(String style, String query,
NamespaceMap nsMap, Object key) throws DBException {
+ if (log.isInfoEnabled()) {
+ log.info(debugHeader() + "Query document " + key + ", query: " +
query);
+ }
+
checkFiler(FaultCodes.QRY_STYLE_NOT_FOUND);
Key[] k = null;
if (key instanceof Key[]) {
@@ -1312,6 +1342,10 @@
* @param key The Object's Key
*/
public final void remove(Object key) throws DBException {
+ if (log.isInfoEnabled()) {
+ log.info(debugHeader() + "Remove " + key);
+ }
+
checkFiler(FaultCodes.COL_NO_FILER);
Key objKey = createNewKey(key);
@@ -1408,9 +1442,10 @@
// Set parent
if (parent != null) {
setCanonicalName(parent.getCanonicalName() + '/' + name);
- log.debug(localDebugHeader + "Canonical name=<" +
getCanonicalName() + ">");
setCollectionRoot(new File(parent.getCollectionRoot(), name));
- log.debug(localDebugHeader + "Root=<" + getCollectionRoot() +
">");
+ if (log.isDebugEnabled()) {
+ log.debug(localDebugHeader + "Root=<" + getCollectionRoot()
+ ">");
+ }
}
if (log.isDebugEnabled()) {
@@ -1445,7 +1480,7 @@
symbols = new SymbolTable(symConfig.getElement());
} catch (Exception e) {
if (log.isWarnEnabled()) {
- log.warn("Error building symbol table from internal
symbols", e);
+ log.warn(localDebugHeader + "Error building symbol
table from internal symbols", e);
}
}
} else {
@@ -1456,12 +1491,12 @@
try {
symbols = getSystemCollection().loadSymbols(this);
if (log.isDebugEnabled()) {
- log.debug(localDebugHeader
- + "Loaded symbols=<" +
TextWriter.toString(symbols.streamToXML(new DocumentImpl())) + ">");
+ log.debug(localDebugHeader + "Loaded symbols=<" +
+
TextWriter.toString(symbols.streamToXML(new DocumentImpl())) + ">");
}
} catch (Exception e) {
if (log.isWarnEnabled()) {
- log.warn("Error building symbol table from system
collection", e);
+ log.warn(localDebugHeader + "Error building symbol
table from system collection", e);
}
}
}
@@ -1512,8 +1547,10 @@
* @param document The Document
*/
public final void setDocument(Object docKey, Document document) throws
DBException {
- putDocument(createNewKey(docKey), document /*, false */
- );
+ if (log.isInfoEnabled()) {
+ log.info(debugHeader() + "Set document " + docKey);
+ }
+ putDocument(createNewKey(docKey), document /*, false */);
}
/**
@@ -1542,6 +1579,9 @@
"Mismatch type of meta data for
document " + getCanonicalDocumentName(id));
}
+ if (log.isInfoEnabled()) {
+ log.info(debugHeader() + "Set document meta " + id);
+ }
MetaSystemCollection metacol = getMetaSystemCollection();
MetaData current = metacol.getDocumentMeta(this, id);
current.copyDataFrom(meta);
@@ -1565,6 +1605,9 @@
* @param obj The Object to set
*/
public final void setObject(Object key, XMLSerializable obj) throws
DBException {
+ if (log.isInfoEnabled()) {
+ log.info(debugHeader() + "Set object " + key);
+ }
putObject(createNewKey(key), obj /*, false */ );
}
@@ -1587,7 +1630,9 @@
return;
}
- log.info("Updating modified time for collection '" +
getCanonicalName() + "'");
+ if (log.isTraceEnabled()) {
+ log.trace(debugHeader() + "Updating modified time for
collection");
+ }
long now = System.currentTimeMillis();
if (null == meta) {
meta = new MetaData(MetaData.COLLECTION, getCanonicalName(),
now, now);
@@ -1639,6 +1684,9 @@
*/
// this is wrong.. but it should work for now...
+ if (log.isTraceEnabled()) {
+ log.trace(debugHeader() + "Updating modified time for document
'" + id + "'");
+ }
long now = System.currentTimeMillis();
if (null == meta) {
meta = new MetaData(MetaData.DOCUMENT, path, now, now);