From a33d6684eb8913cd79403ed1b9d45912e9fc9318 Mon Sep 17 00:00:00 2001 From: "Hiram R. Chirino" Date: Thu, 21 Jan 2010 16:37:37 +0000 Subject: [PATCH] Adding a isEmpty() method to the btree indexes.. related to the fix created for AMQ-2512 git-svn-id: https://svn.apache.org/repos/asf/activemq/trunk@901763 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/activemq/store/kahadb/KahaDBStore.java | 8 +------- .../src/main/java/org/apache/kahadb/index/BTreeIndex.java | 4 ++++ .../src/main/java/org/apache/kahadb/index/BTreeNode.java | 4 ++++ 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/activemq-core/src/main/java/org/apache/activemq/store/kahadb/KahaDBStore.java b/activemq-core/src/main/java/org/apache/activemq/store/kahadb/KahaDBStore.java index e43853e872..1dddef7963 100644 --- a/activemq-core/src/main/java/org/apache/activemq/store/kahadb/KahaDBStore.java +++ b/activemq-core/src/main/java/org/apache/activemq/store/kahadb/KahaDBStore.java @@ -207,13 +207,7 @@ public class KahaDBStore extends MessageDatabase implements PersistenceAdapter { public Boolean execute(Transaction tx) throws IOException { // Iterate through all index entries to get a count of messages in the destination. StoredDestination sd = getStoredDestination(dest, tx); - boolean result = true; - for (Iterator> iterator = sd.locationIndex.iterator(tx); iterator.hasNext();) { - iterator.next(); - result = false; - break; - } - return result; + return sd.locationIndex.isEmpty(tx); } }); } diff --git a/kahadb/src/main/java/org/apache/kahadb/index/BTreeIndex.java b/kahadb/src/main/java/org/apache/kahadb/index/BTreeIndex.java index 4cba413a87..350a654ce2 100644 --- a/kahadb/src/main/java/org/apache/kahadb/index/BTreeIndex.java +++ b/kahadb/src/main/java/org/apache/kahadb/index/BTreeIndex.java @@ -220,6 +220,10 @@ public class BTreeIndex implements Index { pw.flush(); } + synchronized public boolean isEmpty(final Transaction tx) throws IOException { + return getRoot(tx).isEmpty(tx); + } + synchronized public Iterator> iterator(final Transaction tx) throws IOException { return getRoot(tx).iterator(tx); } diff --git a/kahadb/src/main/java/org/apache/kahadb/index/BTreeNode.java b/kahadb/src/main/java/org/apache/kahadb/index/BTreeNode.java index 372f430223..a32de749ce 100644 --- a/kahadb/src/main/java/org/apache/kahadb/index/BTreeNode.java +++ b/kahadb/src/main/java/org/apache/kahadb/index/BTreeNode.java @@ -507,6 +507,10 @@ public final class BTreeNode { } } + public boolean isEmpty(final Transaction tx) throws IOException { + return keys.length==0; + } + public void visit(Transaction tx, BTreeVisitor visitor) throws IOException { if (visitor == null) { throw new IllegalArgumentException("Visitor cannot be null");