vgritsenko 2003/08/13 11:52:53
Modified: java/src/org/apache/xindice/core Collection.java
. status.xml
Log:
Fix collection creation time bug
Revision Changes Path
1.35 +37 -30
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.34
retrieving revision 1.35
diff -u -r1.34 -r1.35
--- Collection.java 12 Aug 2003 02:57:30 -0000 1.34
+++ Collection.java 13 Aug 2003 18:52:53 -0000 1.35
@@ -553,8 +553,8 @@
}
MetaSystemCollection metacol = getMetaSystemCollection();
meta = metacol.getCollectionMeta(this);
- long now = System.currentTimeMillis();
if (null == meta) {
+ long now = System.currentTimeMillis();
meta = new MetaData(MetaData.COLLECTION, getCanonicalName(),
now, now);
metacol.setCollectionMeta(this, meta);
}
@@ -663,14 +663,12 @@
*/
// this is wrong.. but it should work for now...
- long created = System.currentTimeMillis();
- long modified = System.currentTimeMillis();
-
+ long now = System.currentTimeMillis();
if (null == meta) {
- meta = new MetaData(MetaData.DOCUMENT, path, created, modified);
+ meta = new MetaData(MetaData.DOCUMENT, path, now, now);
metacol.setDocumentMeta(this, id, meta);
} else if (!meta.hasContext()) {
- meta.setContext(created, modified);
+ meta.setContext(now, now);
}
return meta;
@@ -1120,7 +1118,7 @@
if (inlineMetaService == null) {
throw new DBException(FaultCodes.COL_CANNOT_STORE,
- "Cannot store a binary resource in
collection " + name + ": inline-metadata is not enabled");
+ "Cannot store a binary resource in
collection " + getCanonicalName() + ": inline-metadata is not enabled");
}
if (!create) {
@@ -1129,9 +1127,9 @@
/*
* TODO: Do we need a COL_KEY_ALREADY_PRESENT fault so that
the caller can interpret this exception?
*/
- throw new DBException(
- FaultCodes.COL_CANNOT_STORE,
- "Error storing binary object with key '" + key + "':
the 'create' flag is false and" + " the key is not in the database");
+ throw new DBException(FaultCodes.COL_CANNOT_STORE,
+ "Error storing binary object with key
'" + key + "': the 'create' flag is false and" +
+ " the key is not in the database");
}
}
@@ -1181,7 +1179,6 @@
if (compressed) {
try {
-
packedDocument = DOMCompressor.Compress(document, symbols);
log.debug(localDebugHeader + "length=" +
packedDocument.length);
@@ -1358,13 +1355,17 @@
}
return;
}
+
if (null != meta) {
if (meta.getType() != MetaData.COLLECTION) {
- throw new DBException(FaultCodes.GEN_UNKNOWN, "Mismatch type
of meta data for collection " + getCanonicalName());
+ throw new DBException(FaultCodes.GEN_UNKNOWN,
+ "Mismatch type of meta data for
collection " + getCanonicalName());
}
MetaSystemCollection metacol = getMetaSystemCollection();
- metacol.setCollectionMeta(this, meta);
+ MetaData current = metacol.getCollectionMeta(this);
+ current.copyDataFrom(meta);
+ metacol.setCollectionMeta(this, current);
}
}
@@ -1519,18 +1520,23 @@
}
return;
}
+
Document doc = getDocument(id);
if (null == doc) {
- throw new DBException(FaultCodes.COL_DOCUMENT_NOT_FOUND,
"Document " + id + " does not exist");
- }
+ throw new DBException(FaultCodes.COL_DOCUMENT_NOT_FOUND,
+ "Document " + id + " does not exist in
collection " + getCanonicalName());
+ }
if (null != meta) {
if (meta.getType() == MetaData.UNKNOWN || meta.getType() ==
MetaData.COLLECTION) {
- throw new DBException(FaultCodes.GEN_UNKNOWN, "Mismatch type
of meta data for document " + getCanonicalDocumentName(id));
+ throw new DBException(FaultCodes.GEN_UNKNOWN,
+ "Mismatch type of meta data for
document " + getCanonicalDocumentName(id));
}
MetaSystemCollection metacol = getMetaSystemCollection();
- metacol.setDocumentMeta(this, id, meta);
+ MetaData current = metacol.getDocumentMeta(this, id);
+ current.copyDataFrom(meta);
+ metacol.setDocumentMeta(this, id, current);
}
}
@@ -1567,17 +1573,20 @@
// something strange has happened.. can't get the
// meta data for this collection
if (log.isWarnEnabled()) {
- log.warn("Error fetching collection meta. " + e);
+ log.warn("Error fetching meta for collection '" +
getCanonicalName() + "'", e);
}
return;
}
- log.info("Updating modified time for this collection's meta");
+ log.info("Updating modified time for collection '" +
getCanonicalName() + "'");
long now = System.currentTimeMillis();
if (null == meta) {
meta = new MetaData(MetaData.COLLECTION, getCanonicalName(),
now, now);
+ } else if (!meta.hasContext()) {
+ // Newly created meta. Update its created and modified time.
+ meta.setContext(now, now);
} else {
- // this collection already has a meta. so update its
modified time.
+ // This collection already has a meta. So update its
modified time.
meta.setContext(0, now);
}
@@ -1585,7 +1594,7 @@
metacol.setCollectionMeta(this, meta);
} catch (DBException e) {
if (log.isWarnEnabled()) {
- log.warn("Error setting the collection meta", e);
+ log.warn("Error setting meta for collection '" +
getCanonicalName() + "'", e);
}
return;
}
@@ -1604,7 +1613,7 @@
Document doc = getDocument(id);
if (null == doc) {
throw new DBException(FaultCodes.COL_DOCUMENT_NOT_FOUND,
- "Document " + id + " does not exist");
+ "Document " + id + " does not exist in " +
getCanonicalName());
}
MetaSystemCollection metacol = getMetaSystemCollection();
@@ -1621,15 +1630,13 @@
*/
// this is wrong.. but it should work for now...
- long created = System.currentTimeMillis();
- long modified = System.currentTimeMillis();
-
+ long now = System.currentTimeMillis();
if (null == meta) {
- meta = new MetaData(MetaData.DOCUMENT, path, created, modified);
+ meta = new MetaData(MetaData.DOCUMENT, path, now, now);
} else if (!meta.hasContext()) {
- meta.setContext(created, modified);
+ meta.setContext(now, now);
} else {
- meta.setContext(0, modified);
+ meta.setContext(0, now);
}
metacol.setDocumentMeta(this, id, meta);
}
1.6 +3 -0 xml-xindice/status.xml
Index: status.xml
===================================================================
RCS file: /home/cvs/xml-xindice/status.xml,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- status.xml 13 Aug 2003 18:49:34 -0000 1.5
+++ status.xml 13 Aug 2003 18:52:53 -0000 1.6
@@ -60,6 +60,9 @@
<changes>
<!-- Add new releases here -->
<release version="1.1-dev" date="August 6 2003">
+ <action dev="VG" type="fix">
+ Collection meta data now has correct collection
creation time.
+ </action>
<action dev="VG" type="update">
Added XINDICE_DB_HOME environment variable and
corresponding
xindice.db.home system property. This property takes
precedence