vgritsenko 2003/08/08 15:38:18
Modified: java/src/org/apache/xindice/client/xmldb/embed DatabaseImpl.java java/src/org/apache/xindice/core Collection.java CollectionManager.java Log: Tune up logging (i.e. print canonical collection name in debug header). Guard log calls. Minor style changes. Revision Changes Path 1.17 +12 -4 xml-xindice/java/src/org/apache/xindice/client/xmldb/embed/DatabaseImpl.java Index: DatabaseImpl.java =================================================================== RCS file: /home/cvs/xml-xindice/java/src/org/apache/xindice/client/xmldb/embed/DatabaseImpl.java,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- DatabaseImpl.java 7 Aug 2003 20:13:20 -0000 1.16 +++ DatabaseImpl.java 8 Aug 2003 22:38:18 -0000 1.17 @@ -123,16 +123,23 @@ String configDir = null; String configFile = System.getProperty(Xindice.PROP_XINDICE_CONFIGURATION); if (configFile != null && !configFile.equals("")) { - log.info("Specified configuration file: '" + configFile + "'"); + if (log.isInfoEnabled()) { + log.info("Specified configuration file: '" + configFile + "'"); + } FileInputStream configXMLFile = new FileInputStream(configFile); + config = new Configuration(DOMParser.toDocument(configXMLFile), false); configDir = new File(configFile).getAbsoluteFile().getParent(); } else { - log.info("No configuration file specified, going with the default configuration"); + if (log.isInfoEnabled()) { + log.info("No configuration file specified, going with the default configuration"); + } + config = new Configuration(DOMParser.toDocument(Xindice.DEFAULT_CONFIGURATION), false); } config = config.getChild("root-collection", false); + String dbRoot = config.getAttribute(Database.DBROOT, Database.DBROOT_DEFAULT); if (!new File(dbRoot).isAbsolute()) { // Let's see if the property was specified. @@ -149,6 +156,7 @@ config.setAttribute(Database.DBROOT, new File(".").getAbsolutePath() + File.separator + dbRoot); } } + return config; } 1.29 +126 -72 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.28 retrieving revision 1.29 diff -u -r1.28 -r1.29 --- Collection.java 8 Aug 2003 13:17:29 -0000 1.28 +++ Collection.java 8 Aug 2003 22:38:18 -0000 1.29 @@ -221,10 +221,11 @@ public Document getNextDocument() throws DBException { Container c = getNextContainer(); - if (c != null) + if (c != null) { return c.getDocument(); - else + } else { return null; + } } public boolean hasMoreDocuments() throws DBException { @@ -250,6 +251,7 @@ private Collection parent = null; private SymbolTable symbols = null; + protected Collection() { } @@ -263,8 +265,10 @@ } private void checkFiler(int faultCode) throws DBException { - if (filer == null) - throw new DBException(faultCode, "This Collection '" + name + "' cannot store Documents"); + if (filer == null) { + throw new DBException(faultCode, + "This Collection '" + name + "' cannot store Documents"); + } } /** @@ -316,12 +320,15 @@ * @return The newly generated Key */ protected final Key createNewKey(Object key) { - if (key == null) + if (key == null) { return createNewOID(); - if (key instanceof Key) + } + + if (key instanceof Key) { return (Key) key; - else + } else { return new Key(key.toString()); + } } /** @@ -334,8 +341,9 @@ long ct = System.currentTimeMillis(); synchronized (oidMutex) { - if (ct <= document_id) + if (ct <= document_id) { ct = document_id + 1; + } document_id = ct; } @@ -350,14 +358,11 @@ private String debugHeader() { return "[" + Thread.currentThread().getName() - + "] Collection:" - + " name=" + + "] '" + + (parent != null ? parent.getCanonicalName() : "") + + "/" + name - + " compressed=" - + compressed - + " inline-metadata=" - + (inlineMetaService != null) - + " "; + + "' "; } /** @@ -375,12 +380,14 @@ * @see org.apache.xindice.core.DBObject#drop() */ public boolean drop() throws DBException { - if (this == getDatabase()) - throw new DBException(FaultCodes.DBE_CANNOT_DROP, "You Cannot Drop The Database"); + if (this == getDatabase()) { + throw new DBException(FaultCodes.DBE_CANNOT_DROP, + "You Cannot Drop The Database"); + } DBObserver.getInstance().dropCollection(this); - // drop the meta if necessary + // Drop the meta if necessary if (isMetaEnabled()) { MetaSystemCollection metacol = getMetaSystemCollection(); metacol.dropCollectionMeta(this); @@ -388,14 +395,16 @@ // Drop Child Collections String[] cols = listCollections(); - for (int i = 0; i < cols.length; i++) + for (int i = 0; i < cols.length; i++) { dropCollection(getCollection(cols[i])); + } if (filer != null) { // Drop Indexers String[] idx = indexManager.list(); - for (int i = 0; i < idx.length; i++) + for (int i = 0; i < idx.length; i++) { dropIndexer(getIndexer(idx[i])); + } // Now Drop The Filer filer.drop(); @@ -403,7 +412,6 @@ getCollectionRoot().delete(); getDatabase().flushConfig(); - return true; } @@ -426,8 +434,9 @@ public final boolean dropIndexer(Indexer index) throws DBException { checkFiler(FaultCodes.COL_NO_INDEXMANAGER); - if (index == null) + if (index == null) { throw new DBException(FaultCodes.IDX_INDEX_NOT_FOUND, "Index Value Null"); + } boolean success = indexManager.drop(index.getName()); getDatabase().flushConfig(); @@ -445,8 +454,9 @@ * @throws DBException */ public final void flushSymbolTable() throws DBException { - if (symbols.isDirty() && !internalSymbols) + if (symbols.isDirty() && !internalSymbols) { getSystemCollection().saveSymbols(this, symbols); + } } /** @@ -466,7 +476,8 @@ log.debug(debugHeader() + "getBinary: docKey=<" + docKey.toString() + ">"); if (inlineMetaService != null) { - throw new DBException(FaultCodes.COL_DOCUMENT_NOT_FOUND, "There are no binary resources in collection" + name + ": inline-metadata is not enabled."); + throw new DBException(FaultCodes.COL_DOCUMENT_NOT_FOUND, + "There are no binary resources in collection" + name + ": inline-metadata is not enabled."); } Object entry = getEntry(docKey); @@ -475,7 +486,8 @@ } if (!(entry instanceof byte[])) { - throw new DBException(FaultCodes.COL_INVALID_RESULT, "The resource associated with key '" + docKey.toString() + "' in collection '" + name + "'is not binary"); + throw new DBException(FaultCodes.COL_INVALID_RESULT, + "The resource associated with key '" + docKey.toString() + "' in collection '" + name + "'is not binary"); } return (byte[]) entry; @@ -522,6 +534,7 @@ * * If metadata is not enabled in the configuration, the MetaData object * returned will be null. + * * @return MetaData this collection's metadata. */ public MetaData getCollectionMeta() throws DBException { @@ -580,7 +593,9 @@ */ public final Document getDocument(Object docKey) throws DBException { - log.debug(debugHeader() + "getDocument: docKey=<" + docKey.toString() + ">"); + if (log.isTraceEnabled()) { + log.trace(debugHeader() + "getDocument: docKey=<" + docKey.toString() + ">"); + } Object entry = getEntry(docKey); if (entry == null) { @@ -588,7 +603,8 @@ } if (!(entry instanceof Document)) { - throw new DBException(FaultCodes.COL_INVALID_RESULT, "The resource associated with key '" + docKey.toString() + "' in collection '" + name + "'is not XML"); + throw new DBException(FaultCodes.COL_INVALID_RESULT, + "The resource associated with key '" + docKey.toString() + "' in collection '" + name + "'is not XML"); } return (Document) entry; @@ -668,9 +684,11 @@ /** * Retrieve a database entry by key. + * * If no matching entry is found, null is returned; if * an XML entry is found, a Document is returned; if a * binary entryis found, byte[] is returned. + * * This low-level method will not update non-inline metadata. * * @param docKey identifying the desired database entry @@ -689,9 +707,8 @@ return null; } - String localDebugHeader = debugHeader() + "getEntry: docKey=<" + docKey.toString() + ">: "; - - log.debug(localDebugHeader); + final String localDebugHeader = debugHeader() + "getEntry: docKey=<" + docKey.toString() + ">: "; + log.trace(localDebugHeader); checkFiler(FaultCodes.COL_NO_FILER); @@ -707,7 +724,9 @@ */ if (documentCache != null) { Document document = documentCache.getDocument(this, key); - log.debug(localDebugHeader + "cache search returned: " + document); + if (log.isDebugEnabled()) { + log.debug(localDebugHeader + "Cache search returned: " + document); + } if (document != null) { return document; } @@ -718,40 +737,55 @@ return null; } - log.debug(localDebugHeader + "record value: length=" + record.getValue().getLength()); + if (log.isDebugEnabled()) { + log.debug(localDebugHeader + "Record value length=" + record.getValue().getLength()); + } Value value; InlineMetaMap metaMap = null; if (inlineMetaService == null) { - log.debug(localDebugHeader + "type not available"); + if (log.isDebugEnabled()) { + log.debug(localDebugHeader + "Type is not available"); + } + value = record.getValue(); } else { - log.debug(localDebugHeader + "decomposing header..."); + if (log.isTraceEnabled()) { + log.trace(localDebugHeader + "Decomposing header..."); + } + InlineMetaService.DatabaseEntry databaseEntry = inlineMetaService.readDatabaseEntry(record.getValue()); metaMap = databaseEntry.map; value = databaseEntry.value; - log.debug(localDebugHeader + "type=" + metaMap.get("type") + " length=" + value.getLength()); + if (log.isDebugEnabled()) { + log.debug(localDebugHeader + "Type=" + metaMap.get("type") + ", Length=" + value.getLength()); + } } if (inlineMetaService == null || metaMap.get("type").equals(ResourceTypeReader.XML)) { - - log.debug(localDebugHeader + "XML document"); + if (log.isTraceEnabled()) { + log.trace(localDebugHeader + "XML document"); + } Document document; if (compressed) { - document = new DocumentImpl(value.getData(), symbols, new NodeSource(this, key)); - flushSymbolTable(); - log.debug(localDebugHeader + "compressed XML document: document=<" + TextWriter.toString(document) + ">"); + if (log.isDebugEnabled()) { + log.debug(localDebugHeader + + "Compressed XML document=<" + TextWriter.toString(document) + ">"); + } if (documentCache != null) { documentCache.putDocument(this, key, value.getData()); } } else { - log.debug(localDebugHeader + "pre parseDocument(): value=<" + value.toString() + ">"); + if (log.isTraceEnabled()) { + log.trace(localDebugHeader + "Pre parseDocument(): value=<" + value.toString() + ">"); + } + document = parseDocument(key, value.toString()); } @@ -899,7 +933,8 @@ 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 + ": inline-metadata is not enabled."); + throw new DBException(FaultCodes.COL_CANNOT_STORE, + "Cannot insert a binary resource in collection " + name + ": inline-metadata is not enabled."); } Key key = createNewOID(); @@ -922,7 +957,8 @@ public void 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."); + 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); @@ -966,8 +1002,7 @@ * @param obj The Object to insert */ public final void insertObject(String key, XMLSerializable obj) throws DBException { - putObject(createNewKey(key), obj /*, true */ - ); + putObject(createNewKey(key), obj /*, true */); } /** @@ -980,8 +1015,7 @@ */ public final Key insertObject(XMLSerializable obj) throws DBException { Key key = createNewOID(); - putObject(key, obj /*, true */ - ); + putObject(key, obj /*, true */); return key; } @@ -1076,7 +1110,8 @@ 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 " + name + ": inline-metadata is not enabled"); + throw new DBException(FaultCodes.COL_CANNOT_STORE, + "Cannot store a binary resource in collection " + name + ": inline-metadata is not enabled"); } if (!create) { @@ -1321,8 +1356,9 @@ protected final void setCollectionRoot(File collectionRoot) { this.collectionRoot = collectionRoot; - if (!collectionRoot.exists()) + if (!collectionRoot.exists()) { collectionRoot.mkdirs(); + } } public void setConfig(Configuration config) throws XindiceException { @@ -1340,19 +1376,22 @@ * Wait to set up the local debug header until everything needed * by debugHeader() is complete! */ - String localDebugHeader = debugHeader() + "setConfig: "; - - if (inlineMetaService == null) { - log.debug(localDebugHeader + "inline metadata DISABLED"); - } else { - log.debug(localDebugHeader + "inline metadata ENABLED"); - } + final String localDebugHeader = debugHeader() + "setConfig: "; + // Set parent if (parent != null) { setCanonicalName(parent.getCanonicalName() + '/' + name); - log.debug(localDebugHeader + "canonical name=<" + getCanonicalName() + ">"); + log.debug(localDebugHeader + "Canonical name=<" + getCanonicalName() + ">"); setCollectionRoot(new File(parent.getCollectionRoot(), name)); - log.debug(localDebugHeader + "collection root=<" + getCollectionRoot().toString() + ">"); + log.debug(localDebugHeader + "Root=<" + getCollectionRoot().toString() + ">"); + } + + if (log.isDebugEnabled()) { + log.debug(localDebugHeader + + (compressed ? "Compressed" : "NOT Compressed") + + ", " + + (inlineMetaService == null ? "Inline metadata DISABLED" : "Inline metadata ENABLED") + ); } // Init super now, when collectionRoot is known. Otherwise child collections @@ -1366,45 +1405,60 @@ // If no Filer is defined, skip Symbols and Indexes Configuration filerConfig = config.getChild(FILER); if (filerConfig != null) { - log.debug(localDebugHeader + "have filer config..."); + if (log.isTraceEnabled()) { + log.trace(localDebugHeader + "Have filer config..."); + } // Symbol Table Setup Configuration symConfig = config.getChild(SYMBOLS); internalSymbols = (symConfig != null); if (internalSymbols) { - log.debug(localDebugHeader + "have internal symbols <" + TextWriter.toString(symConfig.getElement()) + ">"); + if (log.isTraceEnabled()) { + log.trace(localDebugHeader + + "Internal symbols=<" + TextWriter.toString(symConfig.getElement()) + ">"); + } + try { symbols = new SymbolTable(symConfig.getElement()); } catch (Exception e) { - if (log.isDebugEnabled()) { - log.debug("Error building symbol table from internal symbols", e); + if (log.isWarnEnabled()) { + log.warn("Error building symbol table from internal symbols", e); } } } else { - log.debug(localDebugHeader + "no internal symbols..."); + if (log.isTraceEnabled()) { + log.trace(localDebugHeader + "No internal symbols..."); + } + try { symbols = getSystemCollection().loadSymbols(this); - log.debug(localDebugHeader + "loaded symbols from system collection <" + TextWriter.toString(symbols.streamToXML(new DocumentImpl())) + ">"); - } catch (Exception e) { if (log.isDebugEnabled()) { - log.debug("Error building symbol table from system collection...", e); + 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); } } } String className = filerConfig.getAttribute(CLASS); - log.debug(localDebugHeader + "file class=<" + className + ">"); + if (log.isDebugEnabled()) { + log.debug(localDebugHeader + "Filer class=<" + className + ">"); + } try { filer = (Filer) Class.forName(className).newInstance(); // filer.setCollection(this); filer.setLocation(getCollectionRoot(), getName()); filer.setConfig(filerConfig); - if (!filer.exists()) + if (!filer.exists()) { filer.create(); + } filer.open(); } catch (Exception e) { if (log.isWarnEnabled()) { - log.warn("Filer '" + className + "' not available", e); + log.warn("Filer '" + className + "' is not available", e); } } @@ -1513,7 +1567,7 @@ metacol.setCollectionMeta(this, meta); } catch (DBException e) { if (log.isWarnEnabled()) { - log.warn("Error setting the collection meta. " + e); + log.warn("Error setting the collection meta", e); } return; } 1.16 +33 -20 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.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- CollectionManager.java 7 Aug 2003 20:13:21 -0000 1.15 +++ CollectionManager.java 8 Aug 2003 22:38:18 -0000 1.16 @@ -124,31 +124,39 @@ StringTokenizer st = new StringTokenizer(path, "/"); while (cm != null && st.hasMoreTokens()) { path = st.nextToken().trim(); - if (path.length() == 0) + if (path.length() == 0) { continue; - if (st.hasMoreTokens()) + } + + if (st.hasMoreTokens()) { cm = (CollectionManager) cm.collections.get(path); - else + } else { return cm.createCollection(path, cfg); + } } - throw new DBException(FaultCodes.COL_COLLECTION_NOT_FOUND, "Parent Collection '" + path + "' doesn't exist"); + + throw new DBException(FaultCodes.COL_COLLECTION_NOT_FOUND, + "Parent Collection '" + path + "' doesn't exist"); } Collection collection = null; - - if (CollectionManager.this instanceof Database) + if (CollectionManager.this instanceof Database) { collection = new Collection((Database) CollectionManager.this); - else + } else { collection = new Collection((Collection) CollectionManager.this); + } try { // Do a name check to see if all is well String n = cfg.getAttribute(NAME); - if (n == null || n.trim().equals("")) + if (n == null || n.trim().equals("")) { throw new DBException(FaultCodes.COL_CANNOT_CREATE, "No name specified"); + } - if (getCollection(n) != null) - throw new DBException(FaultCodes.COL_DUPLICATE_COLLECTION, "Duplicate Collection '" + n + "'"); + if (getCollection(n) != null) { + throw new DBException(FaultCodes.COL_DUPLICATE_COLLECTION, + "Duplicate Collection '" + n + "'"); + } Configuration colConfig = this.config.getChild(COLLECTIONS, true); colConfig.add(cfg); @@ -158,9 +166,11 @@ collections.put(n, collection); log.info("Created a new collection named '" + n + "'"); } catch (DBException e) { + // Do not wrap DBException throw e; } catch (Exception e) { - throw new DBException(FaultCodes.COL_CANNOT_CREATE, "Error Creating Collection '" + path + "'", e); + throw new DBException(FaultCodes.COL_CANNOT_CREATE, + "Error Creating Collection '" + path + "'", e); } return collection; } @@ -179,17 +189,20 @@ * @return Whether or not the Collection was dropped */ public boolean dropCollection(Collection collection) throws DBException { - if (collection == null) - throw new DBException(FaultCodes.COL_COLLECTION_NOT_FOUND, "Collection Value Null"); + if (collection == null) { + throw new DBException(FaultCodes.COL_COLLECTION_NOT_FOUND, + "Collection Value Null"); + } Collection cm = collection.getParentCollection(); + if (cm == null) { + throw new DBException(FaultCodes.DBE_CANNOT_DROP, + "You Cannot Drop The Database"); + } - if (cm == null) - throw new DBException(FaultCodes.DBE_CANNOT_DROP, "You Cannot Drop The Database"); - - if (cm != this) + if (cm != this) { return cm.dropCollection(collection); - else { + } else { final String name = collection.getName(); boolean dropped = collection.drop(); if (dropped) {