You are viewing a plain text version of this content. The canonical link for it is here.
Posted to xindice-dev@xml.apache.org by ke...@apache.org on 2003/07/03 21:23:07 UTC
cvs commit: xml-xindice/java/src/org/apache/xindice/core DocumentCache.java
kevinross 2003/07/03 12:23:07
Modified: java/src/org/apache/xindice/core DocumentCache.java
Log:
PR: 21289
Reporter: jpp@jppietsch.d
Reviewed by: Kevin Ross
Patch applied
Revision Changes Path
1.4 +95 -106 xml-xindice/java/src/org/apache/xindice/core/DocumentCache.java
Index: DocumentCache.java
===================================================================
RCS file: /home/cvs/xml-xindice/java/src/org/apache/xindice/core/DocumentCache.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- DocumentCache.java 31 Oct 2002 06:59:56 -0000 1.3
+++ DocumentCache.java 3 Jul 2003 19:23:07 -0000 1.4
@@ -58,7 +58,7 @@
*
* $Id$
*/
-
+
import org.apache.xindice.core.data.Key;
import org.apache.xindice.xml.NodeSource;
import org.apache.xindice.xml.SymbolTable;
@@ -76,109 +76,98 @@
*/
public final class DocumentCache {
- private Map table = new WeakHashMap();
+ private Map table = new WeakHashMap();
- public Document getDocument(Collection col, Key key) {
- Object v = table.get(new CacheKey(col, key));
- Document doc = null;
- if ( v instanceof Document )
- doc = (Document)v;
- else if ( v instanceof byte[] ) {
- try {
- SymbolTable s = col.getSymbols();
- NodeSource ns = new NodeSource(col, key);
- doc = new DocumentImpl((byte[])v, s, ns);
- }
- catch ( Exception e ) {
- }
- }
- return doc;
- }
-
- public void putDocument(Collection col, Key key, byte[] bytes) {
- CacheKey ckey = new CacheKey(col, key);
- table.put(ckey, bytes);
- }
-
- public void putDocument(Collection col, Key key, Document doc) {
- CacheKey ckey = new CacheKey(col, key);
- table.put(ckey, doc);
- }
-
- public void removeDocument(Collection col, Key key) {
- table.remove(new CacheKey(col, key));
- }
-
- public static int getCacheControl(Document doc) {
- String cache = DBDocument.CACHE;
- NodeList childNodes = doc.getChildNodes();
- int size = childNodes.getLength();
- for ( int i = 0; i < size; i++ ) {
- Node n = childNodes.item(i);
- if ( n.getNodeType() == Node.PROCESSING_INSTRUCTION_NODE
- && n.getNodeName().equals(DBDocument.CACHE_CONTROL) ) {
- cache = n.getNodeValue().trim();
- break;
- }
- }
-
- if ( cache != null ) {
- if ( cache.equals(DBDocument.CACHE) )
- return -1;
- else if ( cache.equals(DBDocument.NOCACHE) )
- return 0;
- else
- return Integer.parseInt(cache);
- }
- else
- return -1;
- }
-
-
- /**
- * CacheKey
- */
-
- private class CacheKey {
- private Collection col;
- private String strVal;
- private Key key;
-
- public CacheKey(Collection col, Key key) {
- this.col = col;
- this.key = key;
- }
-
- public Collection getCollection() {
- return col;
- }
-
- public Key getKey() {
- return key;
- }
-
- public String toString() {
- if ( strVal == null )
- strVal = col.getCanonicalDocumentName(key);
- return strVal;
- }
-
- public int hashCode() {
- if ( strVal == null )
- strVal = col.getCanonicalDocumentName(key);
- return strVal.hashCode();
- }
-
- public boolean equals(Object o) {
- if ( o == null ) {
- return false;
- }
-
- CacheKey comp = (CacheKey)o;
- if ( col != comp.col )
- return false;
- return key.equals(comp.key );
- }
- }
+ public Document getDocument(Collection col, Key key) {
+ Object v = table.get(new CacheKey(col, key));
+ Document doc = null;
+ if (v instanceof Document)
+ doc = (Document) v;
+ else if (v instanceof byte[]) {
+ try {
+ SymbolTable s = col.getSymbols();
+ NodeSource ns = new NodeSource(col, key);
+ doc = new DocumentImpl((byte[]) v, s, ns);
+ }
+ catch (Exception e) {}
+ }
+ return doc;
+ }
+
+ public void putDocument(Collection col, Key key, byte[] bytes) {
+ CacheKey ckey = new CacheKey(col, key);
+ table.put(ckey, bytes);
+ }
+
+ public void putDocument(Collection col, Key key, Document doc) {
+ CacheKey ckey = new CacheKey(col, key);
+ table.put(ckey, doc);
+ }
+
+ public void removeDocument(Collection col, Key key) {
+ table.remove(new CacheKey(col, key));
+ }
+
+ public static int getCacheControl(Document doc) {
+ String cache = DBDocument.CACHE;
+ NodeList childNodes = doc.getChildNodes();
+ int size = childNodes.getLength();
+ for (int i = 0; i < size; i++) {
+ Node n = childNodes.item(i);
+ if (n.getNodeType() == Node.PROCESSING_INSTRUCTION_NODE && n.getNodeName().equals(DBDocument.CACHE_CONTROL)) {
+ cache = n.getNodeValue().trim();
+ break;
+ }
+ }
+
+ if (cache != null) {
+ if (cache.equals(DBDocument.CACHE))
+ return -1;
+ else if (cache.equals(DBDocument.NOCACHE))
+ return 0;
+ else
+ return Integer.parseInt(cache);
+ }
+ else
+ return -1;
+ }
+
+ /**
+ * CacheKey
+ */
+
+ private class CacheKey {
+ private Collection col;
+ private String strVal;
+ private Key key;
+
+ public CacheKey(Collection col, Key key) {
+ this.col = col;
+ this.key = key;
+ }
+
+ public Collection getCollection() {
+ return col;
+ }
+
+ public Key getKey() {
+ return key;
+ }
+
+ public String toString() {
+ if (strVal == null)
+ strVal = col.getCanonicalDocumentName(key);
+ return strVal;
+ }
+
+ public int hashCode() {
+ if (strVal == null)
+ strVal = col.getCanonicalDocumentName(key);
+ return strVal.hashCode();
+ }
+
+ public boolean equals(Object o) {
+ return o instanceof CacheKey && col == ((CacheKey) o).col && key.equals(((CacheKey) o).key);
+ }
+ }
}
-