vgritsenko 2003/12/11 07:35:21
Modified: . status.xml
java/src/org/apache/xindice/core Collection.java
SystemCollection.java
Log:
Fix bug 14846: SysSymbols not properly deleted
Revision Changes Path
1.13 +3 -0 xml-xindice/status.xml
Index: status.xml
===================================================================
RCS file: /home/cvs/xml-xindice/status.xml,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- status.xml 5 Sep 2003 02:28:25 -0000 1.12
+++ status.xml 11 Dec 2003 15:35:20 -0000 1.13
@@ -60,6 +60,9 @@
<changes>
<!-- Add new releases here -->
<release version="1.1-dev" date="September 4 2003">
+ <action dev="VG" type="fix" fixes-bug="14846">
+ Drop SysSymbols when deleting collection.
+ </action>
<action dev="VG" type="add">
Updated build scripts: all build properties extracted into
build.properties
file. You can override them in local.build.properties file.
1.39 +10 -7
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.38
retrieving revision 1.39
diff -u -r1.38 -r1.39
--- Collection.java 21 Aug 2003 18:14:53 -0000 1.38
+++ Collection.java 11 Dec 2003 15:35:20 -0000 1.39
@@ -417,6 +417,12 @@
}
getCollectionRoot().delete();
+
+ // Drop symbols
+ if (!internalSymbols) {
+ getSystemCollection().dropSymbols(this);
+ }
+
getDatabase().flushConfig();
return true;
}
@@ -1074,15 +1080,12 @@
if (null == filer) {
return EMPTY_STRING_ARRAY;
} else {
- RecordSet set = filer.getRecordSet();
-
- // todo: what happens if the size if > than the size of an int.
- // I'm pretty sure some sort of runtime exception will occur
- // in the ArrayList.add method.
+ // TODO: ArrayList length is limited to the int, while filer
record count is long
// give a hint to the size of the record set, saves on arraylist
array copies.
ArrayList temp = new ArrayList((int) filer.getRecordCount());
+ RecordSet set = filer.getRecordSet();
while (set.hasMoreRecords()) {
Key key = set.getNextKey();
temp.add(key.toString());
1.20 +22 -2
xml-xindice/java/src/org/apache/xindice/core/SystemCollection.java
Index: SystemCollection.java
===================================================================
RCS file:
/home/cvs/xml-xindice/java/src/org/apache/xindice/core/SystemCollection.java,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- SystemCollection.java 8 Aug 2003 22:47:14 -0000 1.19
+++ SystemCollection.java 11 Dec 2003 15:35:21 -0000 1.20
@@ -170,6 +170,26 @@
}
}
+ /**
+ * dropSymbols drop the SymbolTable for the specified Collection.
+ *
+ * @param collection The Collection that owns the SymbolTable
+ */
+ public void dropSymbols(Collection collection) throws DBException {
+ String name = getSymbolTableName(collection);
+
+ Collection symCol = getCollection(SYMBOLS);
+ try {
+ symCol.remove(name);
+ } catch (DBException e) {
+ if (e.faultCode == FaultCodes.COL_DOCUMENT_NOT_FOUND) {
+ // ignore
+ return;
+ }
+ throw e;
+ }
+ }
+
public static String getDefinition() {
return SYSCOL_DEFINITION;
}