Author: natalia
Date: Sun Nov 9 14:00:06 2008
New Revision: 712571
URL: http://svn.apache.org/viewvc?rev=712571&view=rev
Log:
Replace throwing BTreeNotFoundException with returning a special value
Removed:
xml/xindice/trunk/java/src/org/apache/xindice/core/filer/BTreeNotFoundException.java
Modified:
xml/xindice/trunk/java/src/org/apache/xindice/core/filer/BTree.java
xml/xindice/trunk/java/src/org/apache/xindice/core/filer/BTreeFiler.java
xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/ValueIndexer.java
Modified: xml/xindice/trunk/java/src/org/apache/xindice/core/filer/BTree.java
URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/core/filer/BTree.java?rev=712571&r1=712570&r2=712571&view=diff
==============================================================================
--- xml/xindice/trunk/java/src/org/apache/xindice/core/filer/BTree.java (original)
+++ xml/xindice/trunk/java/src/org/apache/xindice/core/filer/BTree.java Sun Nov 9 14:00:06 2008
@@ -77,6 +77,8 @@
protected static final byte BRANCH = 2;
protected static final byte STREAM = 3;
+ protected static final long VALUE_DOES_NOT_EXIST = -1;
+
/**
* Identity map of the recently used tree nodes to ensure that same
* node is present in the memory once and only once.
@@ -311,7 +313,7 @@
*/
protected final BTreeRootInfo findBTreeRoot(Value v) throws IOException, BTreeException {
long position = findValue(v);
- return new BTreeRootInfo(v, position);
+ return position == VALUE_DOES_NOT_EXIST ? null : new BTreeRootInfo(v, position);
}
/**
@@ -595,7 +597,7 @@
case LEAF:
if (idx < 0) {
- throw new BTreeNotFoundException("Value '" + value + "' doesn't exist");
+ return VALUE_DOES_NOT_EXIST;
} else {
long oldPtr = ptrs[idx];
@@ -814,7 +816,7 @@
public synchronized long findValue(Value value) throws IOException, BTreeException {
if (value == null) {
- throw new BTreeNotFoundException("Can't search on null Value");
+ throw new BTreeException(FaultCodes.DBE_CANNOT_READ, "Can't search on null Value");
}
int idx = Arrays.binarySearch(values, value);
@@ -826,7 +828,7 @@
case LEAF:
if (idx < 0) {
- throw new BTreeNotFoundException("Value '" + value + "' doesn't exist");
+ return VALUE_DOES_NOT_EXIST;
} else {
return ptrs[idx];
}
Modified: xml/xindice/trunk/java/src/org/apache/xindice/core/filer/BTreeFiler.java
URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/core/filer/BTreeFiler.java?rev=712571&r1=712570&r2=712571&view=diff
==============================================================================
--- xml/xindice/trunk/java/src/org/apache/xindice/core/filer/BTreeFiler.java (original)
+++ xml/xindice/trunk/java/src/org/apache/xindice/core/filer/BTreeFiler.java Sun Nov 9 14:00:06 2008
@@ -101,6 +101,10 @@
checkOpened();
try {
long pos = findValue(key);
+ if (pos == VALUE_DOES_NOT_EXIST) {
+ return null;
+ }
+
Page startPage = getPage(pos);
Value v = metaOnly ? null : readValue(startPage);
BTreeFilerPageHeader sph = (BTreeFilerPageHeader) startPage.getPageHeader();
@@ -110,15 +114,10 @@
meta.put(Record.MODIFIED, new Long(sph.getModified()));
return new Record(key, v, meta);
- } catch (BTreeNotFoundException e) {
- if (log.isDebugEnabled()) {
- log.debug("Record '" + key + "' not found: " + e);
- }
} catch (IOException e) {
throw new FilerException(FaultCodes.DBE_CANNOT_READ,
"Can't read record '" + key + "': " + e.getMessage(), e);
}
- return null;
}
public Record writeRecord(Key key, Value value) throws DBException {
@@ -165,6 +164,10 @@
checkOpened();
try {
long pos = removeValue(key);
+ if (pos == VALUE_DOES_NOT_EXIST) {
+ return false;
+ }
+
Page p = getPage(pos);
unlinkPages(p);
@@ -172,16 +175,10 @@
flush();
return true;
- } catch (BTreeNotFoundException e) {
- if (log.isDebugEnabled()) {
- log.debug("Record '" + key + "' not found (" + e + ")");
- }
} catch (IOException e) {
throw new FilerException(FaultCodes.DBE_CANNOT_DROP,
"Can't delete record '" + key + "': " + e.getMessage(), e);
}
-
- return false;
}
public long getRecordCount() throws DBException {
Modified: xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/ValueIndexer.java
URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/ValueIndexer.java?rev=712571&r1=712570&r2=712571&view=diff
==============================================================================
--- xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/ValueIndexer.java (original)
+++ xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/ValueIndexer.java Sun Nov 9 14:00:06 2008
@@ -28,7 +28,6 @@
import org.apache.xindice.core.filer.BTree;
import org.apache.xindice.core.filer.BTreeCallback;
import org.apache.xindice.core.filer.BTreeCorruptException;
-import org.apache.xindice.core.filer.BTreeNotFoundException;
import org.apache.xindice.core.filer.Paged;
import org.apache.xindice.core.query.QueryEngine;
import org.apache.xindice.util.Configuration;
@@ -172,11 +171,8 @@
}
try {
- BTreeRootInfo root;
-
- try {
- root = findBTreeRoot(v);
- } catch (BTreeNotFoundException e) {
+ BTreeRootInfo root = findBTreeRoot(v);
+ if (root == null) {
root = createBTreeRoot(v);
}
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.