Author: vgritsenko
Date: Tue Nov 13 12:16:05 2007
New Revision: 594628
URL: http://svn.apache.org/viewvc?rev=594628&view=rev
Log:
some refactoring
Modified:
xml/xindice/trunk/java/src/org/apache/xindice/core/Collection.java
xml/xindice/trunk/java/tests/src/org/apache/xindice/core/CollectionTest.java
Modified: xml/xindice/trunk/java/src/org/apache/xindice/core/Collection.java
URL:
http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/core/Collection.java?rev=594628&r1=594627&r2=594628&view=diff
==============================================================================
--- xml/xindice/trunk/java/src/org/apache/xindice/core/Collection.java
(original)
+++ xml/xindice/trunk/java/src/org/apache/xindice/core/Collection.java Tue Nov
13 12:16:05 2007
@@ -21,6 +21,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.xindice.core.cache.DocumentCache;
import org.apache.xindice.core.data.DocumentSet;
import org.apache.xindice.core.data.EmptyDocumentSet;
import org.apache.xindice.core.data.EmptyNodeSet;
@@ -38,7 +39,6 @@
import org.apache.xindice.core.meta.inline.InlineMetaService;
import org.apache.xindice.core.meta.inline.ResourceTypeReader;
import org.apache.xindice.core.query.QueryEngine;
-import org.apache.xindice.core.cache.DocumentCache;
import org.apache.xindice.util.Configurable;
import org.apache.xindice.util.Configuration;
import org.apache.xindice.util.Named;
@@ -783,6 +783,24 @@
// -- Core Collection API Public Methods: Data Management ---------------
+ private Record writeRecord(Key key, boolean isDocument, byte[] bytes)
throws DBException {
+ // Construct the Value object that is stored in the BTree.
+ Value value;
+ if (inlineMetaService == null) {
+ value = new Value(bytes);
+ } else {
+ InlineMetaMap map = inlineMetaService.getEmptyMap();
+ if (isDocument) {
+ map.put("type", ResourceTypeReader.XML);
+ } else {
+ map.put("type", ResourceTypeReader.BINARY);
+ }
+ value = inlineMetaService.createValue(map, bytes, 0, bytes.length);
+ }
+
+ return filer.writeRecord(key, value);
+ }
+
/**
* createNewOID allocates a new Object ID to be used as a Key in the
* Collection.
@@ -835,14 +853,9 @@
Key key = getIdentityKey(createNewKey(id));
synchronized (key) {
-
/*
* If the key has a corresponding value in the cache, return it
* and save a disk access.
- *
- * At some point the current document-centric cache implementation
- * needs to be converted to an entry cache which can hold both
- * Document and byte[].
*/
if (cache != null) {
Entry entry = cache.getEntry(this, key);
@@ -871,12 +884,12 @@
}
} else {
InlineMetaService.DatabaseEntry databaseEntry =
inlineMetaService.readDatabaseEntry(record.getValue());
- InlineMetaMap metaMap = databaseEntry.map;
+ Object type = databaseEntry.map.get("type");
value = databaseEntry.value;
- isDocument =
metaMap.get("type").equals(ResourceTypeReader.XML);
+ isDocument = type.equals(ResourceTypeReader.XML);
if (log.isTraceEnabled()) {
- log.trace(localDebugHeader + "Type=" + metaMap.get("type")
+ ", Length=" + value.getLength());
+ log.trace(localDebugHeader + "Type=" + type + ", Length="
+ value.getLength());
}
}
@@ -889,27 +902,24 @@
log.trace(localDebugHeader +
"Compressed XML document=<" +
TextWriter.toString(document) + ">");
}
-
- if (cache != null) {
- cache.putEntry(this, key, DocumentCache.COMPRESSED,
value, entryMeta);
- }
} else {
- String documentChars = value.toString();
- if (log.isTraceEnabled()) {
- log.trace(localDebugHeader + "Pre parseDocument():
value=<" + documentChars + ">");
- }
-
// FIXME There should be no reason here to re-compress the
document & flush symbols table?
- document = parseDocument(key, documentChars);
-
- if (cache != null) {
- cache.putEntry(this, key, DocumentCache.UNCOMPRESSED,
value, entryMeta);
+ document = parseDocument(key, value.toString());
+ if (log.isTraceEnabled()) {
+ log.trace(localDebugHeader +
+ "Uncompressed XML document=<" +
TextWriter.toString(document) + ">");
}
}
// Symbol table could have been updated above, flush it to the
disk.
flushSymbolTable();
+ if (cache != null) {
+ cache.putEntry(this, key,
+ compressed ? DocumentCache.COMPRESSED :
DocumentCache.UNCOMPRESSED,
+ value, entryMeta);
+ }
+
DBObserver.getInstance().loadDocument(this, record, document);
return new Entry(key, document, entryMeta);
} else {
@@ -1316,24 +1326,14 @@
}
indexManager.addDocument(key, document);
- // Construct the Value object that is stored in the BTree.
- Value value;
- if (inlineMetaService == null) {
- value = new Value(documentBytes);
- } else {
- InlineMetaMap map = inlineMetaService.getEmptyMap();
- map.put("type", ResourceTypeReader.XML);
- value = inlineMetaService.createValue(map, documentBytes, 0,
documentBytes.length);
- }
- Record record = filer.writeRecord(key, value);
+ // Construct the Value object and store in the filer.
+ Record record = writeRecord(key, true, documentBytes);
// Cache Stuff
if (cache != null) {
- if (compressed) {
- cache.putEntry(this, key, DocumentCache.COMPRESSED, new
Value(documentBytes), Entry.createMetaMap(record));
- } else {
- cache.putEntry(this, key, DocumentCache.UNCOMPRESSED, new
Value(documentBytes), Entry.createMetaMap(record));
- }
+ cache.putEntry(this, key,
+ compressed ? DocumentCache.COMPRESSED :
DocumentCache.UNCOMPRESSED,
+ new Value(documentBytes),
Entry.createMetaMap(record));
}
// Update the meta for this document
@@ -1396,10 +1396,8 @@
indexManager.removeDocument(key, (Document) entry.getValue());
}
- InlineMetaMap map = inlineMetaService.getEmptyMap();
- map.put("type", ResourceTypeReader.BINARY);
- Value value = inlineMetaService.createValue(map, bytes, 0,
bytes.length);
- Record record = filer.writeRecord(key, value);
+ // Construct the Value object and store in the filer.
+ Record record = writeRecord(key, false, bytes);
if (cache != null) {
cache.putEntry(this, key, DocumentCache.BINARY, new
Value(bytes), Entry.createMetaMap(record));
Modified:
xml/xindice/trunk/java/tests/src/org/apache/xindice/core/CollectionTest.java
URL:
http://svn.apache.org/viewvc/xml/xindice/trunk/java/tests/src/org/apache/xindice/core/CollectionTest.java?rev=594628&r1=594627&r2=594628&view=diff
==============================================================================
---
xml/xindice/trunk/java/tests/src/org/apache/xindice/core/CollectionTest.java
(original)
+++
xml/xindice/trunk/java/tests/src/org/apache/xindice/core/CollectionTest.java
Tue Nov 13 12:16:05 2007
@@ -138,7 +138,7 @@
}
public void testCompressedDocument() throws Exception {
- // Compress the document with own symbol table
+ // Compress the document with its own symbol table
Document document = DOMParser.toDocument(XML);
SymbolTable symbols = new SymbolTable();
byte[] data = DOMCompressor.compress(document, symbols);