summaryrefslogtreecommitdiff
path: root/lang
diff options
context:
space:
mode:
authorDon Anderson <dda@ddanderson.com>2015-06-12 13:52:01 -0400
committerDon Anderson <dda@ddanderson.com>2015-06-12 13:52:01 -0400
commite038dc447eab3234168a3f76911b6a25b4bf4992 (patch)
treedd9632d5eed17617865078e98a14348a763acc61 /lang
parentd57dc26729bbc59c5bc3928aa90bb2ac3cd15d6d (diff)
downloadmongo-e038dc447eab3234168a3f76911b6a25b4bf4992.tar.gz
WT-1963. Refactored Java's next/prev/search/search_near, and modified
so they do not get the key/value when there is no format.
Diffstat (limited to 'lang')
-rw-r--r--lang/java/Makefile.am1
-rw-r--r--lang/java/wiredtiger.i55
2 files changed, 40 insertions, 16 deletions
diff --git a/lang/java/Makefile.am b/lang/java/Makefile.am
index e6e6f748837..cf18f2ff3dd 100644
--- a/lang/java/Makefile.am
+++ b/lang/java/Makefile.am
@@ -44,6 +44,7 @@ JAVA_SRC = \
JAVA_JUNIT = \
$(JAVATEST)/AutoCloseTest.java \
$(JAVATEST)/AsyncTest.java \
+ $(JAVATEST)/BackupCursorTest.java \
$(JAVATEST)/CursorTest.java \
$(JAVATEST)/CursorTest02.java \
$(JAVATEST)/ExceptionTest.java \
diff --git a/lang/java/wiredtiger.i b/lang/java/wiredtiger.i
index 2d66a4e9e13..fbdfbb32212 100644
--- a/lang/java/wiredtiger.i
+++ b/lang/java/wiredtiger.i
@@ -1650,10 +1650,8 @@ WT_ASYNC_CALLBACK javaApiAsyncHandler = {javaAsyncHandler};
int ret = next_wrap();
keyPacker.reset();
valuePacker.reset();
- keyUnpacker = (ret == 0) ?
- new PackInputStream(keyFormat, get_key_wrap()) : null;
- valueUnpacker = (ret == 0) ?
- new PackInputStream(valueFormat, get_value_wrap()) : null;
+ keyUnpacker = initKeyUnpacker(ret == 0);
+ valueUnpacker = initValueUnpacker(ret == 0);
return ret;
}
@@ -1667,10 +1665,8 @@ WT_ASYNC_CALLBACK javaApiAsyncHandler = {javaAsyncHandler};
int ret = prev_wrap();
keyPacker.reset();
valuePacker.reset();
- keyUnpacker = (ret == 0) ?
- new PackInputStream(keyFormat, get_key_wrap()) : null;
- valueUnpacker = (ret == 0) ?
- new PackInputStream(valueFormat, get_value_wrap()) : null;
+ keyUnpacker = initKeyUnpacker(ret == 0);
+ valueUnpacker = initValueUnpacker(ret == 0);
return ret;
}
@@ -1684,10 +1680,8 @@ WT_ASYNC_CALLBACK javaApiAsyncHandler = {javaAsyncHandler};
int ret = search_wrap(keyPacker.getValue());
keyPacker.reset();
valuePacker.reset();
- keyUnpacker = (ret == 0) ?
- new PackInputStream(keyFormat, get_key_wrap()) : null;
- valueUnpacker = (ret == 0) ?
- new PackInputStream(valueFormat, get_value_wrap()) : null;
+ keyUnpacker = initKeyUnpacker(ret == 0);
+ valueUnpacker = initValueUnpacker(ret == 0);
return ret;
}
@@ -1701,12 +1695,41 @@ WT_ASYNC_CALLBACK javaApiAsyncHandler = {javaAsyncHandler};
SearchStatus ret = search_near_wrap(keyPacker.getValue());
keyPacker.reset();
valuePacker.reset();
- keyUnpacker = (ret != SearchStatus.NOTFOUND) ?
- new PackInputStream(keyFormat, get_key_wrap()) : null;
- valueUnpacker = (ret != SearchStatus.NOTFOUND) ?
- new PackInputStream(valueFormat, get_value_wrap()) : null;
+ keyUnpacker = initKeyUnpacker(ret != SearchStatus.NOTFOUND);
+ valueUnpacker = initValueUnpacker(ret != SearchStatus.NOTFOUND);
return ret;
}
+
+ /**
+ * Initialize a key unpacker after an operation that changes
+ * the cursor position.
+ *
+ * \param success Whether the associated operation succeeded.
+ * \return The key unpacker.
+ */
+ private PackInputStream initKeyUnpacker(boolean success)
+ throws WiredTigerException {
+ if (!success || keyFormat.equals(""))
+ return null;
+ else
+ return new PackInputStream(keyFormat, get_key_wrap());
+ }
+
+ /**
+ * Initialize a value unpacker after an operation that changes
+ * the cursor position.
+ *
+ * \param success Whether the associated operation succeeded.
+ * \return The value unpacker.
+ */
+ private PackInputStream initValueUnpacker(boolean success)
+ throws WiredTigerException {
+ if (!success || valueFormat.equals(""))
+ return null;
+ else
+ return new PackInputStream(valueFormat,
+ get_value_wrap());
+ }
%}
/* Put a WiredTigerException on all wrapped methods. We'd like this