Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 13 additions & 13 deletions bindings/java/local.mk
Original file line number Diff line number Diff line change
Expand Up @@ -40,22 +40,22 @@ endif

define add_java_binding_targets

JAVA$(1)_GENERATED_SOURCES := bindings/java/src$(1)/main/com/apple/apple/foundationdbdb/NetworkOptions.java bindings/java/src$(1)/main/com/apple/apple/foundationdbdb/ClusterOptions.java bindings/java/src$(1)/main/com/apple/apple/foundationdbdb/DatabaseOptions.java bindings/java/src$(1)/main/com/apple/apple/foundationdbdb/TransactionOptions.java bindings/java/src$(1)/main/com/apple/apple/foundationdbdb/StreamingMode.java bindings/java/src$(1)/main/com/apple/apple/foundationdbdb/ConflictRangeType.java bindings/java/src$(1)/main/com/apple/apple/foundationdbdb/MutationType.java bindings/java/src$(1)/main/com/apple/apple/foundationdbdb/FDBException.java
JAVA$(1)_GENERATED_SOURCES := bindings/java/src$(1)/main/com/apple/cie/foundationdb/NetworkOptions.java bindings/java/src$(1)/main/com/apple/cie/foundationdb/ClusterOptions.java bindings/java/src$(1)/main/com/apple/cie/foundationdb/DatabaseOptions.java bindings/java/src$(1)/main/com/apple/cie/foundationdb/TransactionOptions.java bindings/java/src$(1)/main/com/apple/cie/foundationdb/StreamingMode.java bindings/java/src$(1)/main/com/apple/cie/foundationdb/ConflictRangeType.java bindings/java/src$(1)/main/com/apple/cie/foundationdb/MutationType.java bindings/java/src$(1)/main/com/apple/cie/foundationdb/FDBException.java

JAVA$(1)_SOURCES := $$(JAVA$(1)_GENERATED_SOURCES) bindings/java/src$(1)/main/com/apple/apple/foundationdbdb/*.java bindings/java/src$(1)/main/com/apple/apple/foundationdbdb/async/*.java bindings/java/src$(1)/main/com/apple/apple/foundationdbdb/tuple/*.java bindings/java/src$(1)/main/com/apple/apple/foundationdbdb/directory/*.java bindings/java/src$(1)/main/com/apple/apple/foundationdbdb/subspace/*.java bindings/java/src$(1)/test/com/apple/apple/foundationdbdb/test/*.java
JAVA$(1)_SOURCES := $$(JAVA$(1)_GENERATED_SOURCES) bindings/java/src$(1)/main/com/apple/cie/foundationdb/*.java bindings/java/src$(1)/main/com/apple/cie/foundationdb/async/*.java bindings/java/src$(1)/main/com/apple/cie/foundationdb/tuple/*.java bindings/java/src$(1)/main/com/apple/cie/foundationdb/directory/*.java bindings/java/src$(1)/main/com/apple/cie/foundationdb/subspace/*.java bindings/java/src$(1)/test/com/apple/cie/foundationdb/test/*.java

fdb_java$(1): bindings/java/foundationdb-client$(1).jar bindings/java/foundationdb-tests$(1).jar

bindings/java/foundationdb-tests$(1).jar: bindings/java/.classstamp$(1)
@echo "Building $$@"
@jar cf $$@ -C bindings/java/classes$(1)/test com/apple/apple/foundationdbdb
@jar cf $$@ -C bindings/java/classes$(1)/test com/apple/cie/foundationdb

bindings/java/foundationdb-client$(1).jar: bindings/java/.classstamp$(1) lib/libfdb_java.$(DLEXT)
@echo "Building $$@"
@rm -rf bindings/java/classes$(1)/main/lib/$$(PLATFORM)/$$(java_ARCH)
@mkdir -p bindings/java/classes$(1)/main/lib/$$(PLATFORM)/$$(java_ARCH)
@cp lib/libfdb_java.$$(DLEXT) bindings/java/classes$(1)/main/lib/$$(PLATFORM)/$$(java_ARCH)/libfdb_java.$$(java_DLEXT)
@jar cf $$@ -C bindings/java/classes$(1)/main com/apple/apple/foundationdbdb -C bindings/java/classes$(1)/main lib
@jar cf $$@ -C bindings/java/classes$(1)/main com/apple/cie/foundationdb -C bindings/java/classes$(1)/main lib

fdb_java$(1)_jar_clean:
@rm -rf $$(JAVA$(1)_GENERATED_SOURCES)
Expand All @@ -65,20 +65,20 @@ define add_java_binding_targets
# Redefinition of a target already defined in generated.mk, but it's "okay" and the way things were done before.
fdb_java_clean: fdb_java$(1)_jar_clean

bindings/java/src$(1)/main/com/apple/apple/foundationdbdb/StreamingMode.java: bin/vexillographer.exe fdbclient/vexillographer/fdb.options
bindings/java/src$(1)/main/com/apple/cie/foundationdb/StreamingMode.java: bin/vexillographer.exe fdbclient/vexillographer/fdb.options
@echo "Building Java options"
@$$(MONO) bin/vexillographer.exe fdbclient/vexillographer/fdb.options java $$(@D)

bindings/java/src$(1)/main/com/apple/apple/foundationdbdb/MutationType.java: bindings/java/src$(1)/main/com/apple/apple/foundationdbdb/StreamingMode.java
bindings/java/src$(1)/main/com/apple/cie/foundationdb/MutationType.java: bindings/java/src$(1)/main/com/apple/cie/foundationdb/StreamingMode.java
@true

bindings/java/src$(1)/main/com/apple/apple/foundationdbdb/ConflictRangeType.java: bindings/java/src$(1)/main/com/apple/apple/foundationdbdb/StreamingMode.java
bindings/java/src$(1)/main/com/apple/cie/foundationdb/ConflictRangeType.java: bindings/java/src$(1)/main/com/apple/cie/foundationdb/StreamingMode.java
@true

bindings/java/src$(1)/main/com/apple/apple/foundationdbdb/FDBException.java: bindings/java/src$(1)/main/com/apple/apple/foundationdbdb/StreamingMode.java
bindings/java/src$(1)/main/com/apple/cie/foundationdb/FDBException.java: bindings/java/src$(1)/main/com/apple/cie/foundationdb/StreamingMode.java
@true

bindings/java/src$(1)/main/com/apple/apple/foundationdbdb/%Options.java: bindings/java/src$(1)/main/com/apple/apple/foundationdbdb/StreamingMode.java
bindings/java/src$(1)/main/com/apple/cie/foundationdb/%Options.java: bindings/java/src$(1)/main/com/apple/cie/foundationdb/StreamingMode.java
@true

bindings/java/src$(1)/main/overview.html: bindings/java/src$(1)/main/overview.html.in $$(ALL_MAKEFILES) versions.target
Expand All @@ -89,8 +89,8 @@ define add_java_binding_targets
@rm -rf bindings/java/classes$(1)
@mkdir -p bindings/java/classes$(1)/main
@mkdir -p bindings/java/classes$(1)/test
@$$(JAVAC) $$(JAVA$(1)FLAGS) -d bindings/java/classes$(1)/main bindings/java/src$(1)/main/com/apple/apple/foundationdbdb/*.java bindings/java/src$(1)/main/com/apple/apple/foundationdbdb/async/*.java bindings/java/src$(1)/main/com/apple/apple/foundationdbdb/tuple/*.java bindings/java/src$(1)/main/com/apple/apple/foundationdbdb/directory/*.java bindings/java/src$(1)/main/com/apple/apple/foundationdbdb/subspace/*.java
@$$(JAVAC) $$(JAVA$(1)FLAGS) -cp bindings/java/classes$(1)/main -d bindings/java/classes$(1)/test bindings/java/src$(1)/test/com/apple/apple/foundationdbdb/test/*.java
@$$(JAVAC) $$(JAVA$(1)FLAGS) -d bindings/java/classes$(1)/main bindings/java/src$(1)/main/com/apple/cie/foundationdb/*.java bindings/java/src$(1)/main/com/apple/cie/foundationdb/async/*.java bindings/java/src$(1)/main/com/apple/cie/foundationdb/tuple/*.java bindings/java/src$(1)/main/com/apple/cie/foundationdb/directory/*.java bindings/java/src$(1)/main/com/apple/cie/foundationdb/subspace/*.java
@$$(JAVAC) $$(JAVA$(1)FLAGS) -cp bindings/java/classes$(1)/main -d bindings/java/classes$(1)/test bindings/java/src$(1)/test/com/apple/cie/foundationdb/test/*.java
@echo timestamp > bindings/java/.classstamp$(1)

javadoc$(1): $$(JAVA$(1)_SOURCES) bindings/java/src$(1)/main/overview.html
Expand All @@ -101,7 +101,7 @@ define add_java_binding_targets
-windowtitle "FoundationDB Java Client API" \
-doctitle "FoundationDB Java Client API" \
-link "http://docs.oracle.com/javase/8/docs/api" \
com.apple.cie.foundationdb.org.apple.cie.foundationdb.async com.apple.cie.foundationdb.tuple com.apple.cie.foundationdb.directory com.apple.cie.foundationdb.subspace
com.apple.cie.foundationdb com.apple.cie.foundationdb.async com.apple.cie.foundationdb.tuple com.apple.cie.foundationdb.directory com.apple.cie.foundationdb.subspace

javadoc$(1)_clean:
@rm -rf $$(JAVADOC_DIR)/javadoc$(1)
Expand Down Expand Up @@ -152,7 +152,7 @@ define add_java_binding_targets
packages/fdb-java$(1)-$$(JARVER)-sources.jar: $$(JAVA$(1)_GENERATED_SOURCES) versions.target
@echo "Building $$@"
@rm -f $$@
@jar cf $(TOPDIR)/$$@ -C bindings/java/src$(1)/main com/apple/apple/foundationdbdb
@jar cf $(TOPDIR)/$$@ -C bindings/java/src$(1)/main com/apple/cie/foundationdb

packages/fdb-java$(1)-$$(JARVER)-javadoc.jar: javadoc$(1) versions.target
@echo "Building $$@"
Expand Down
12 changes: 12 additions & 0 deletions bindings/nodejs/lib/directory.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,18 @@
* limitations under the License.
*/


"use strict";

var util = require('util');

var buffer = require('./bufferConversion');
var future = require('./future');
var transactional = require('./retryDecorator');
var tuple = require('./tuple');
var Subspace = require('./subspace');
var fdbUtil = require('./fdbUtil');

/*************
* Utilities *
*************/
Expand Down
84 changes: 84 additions & 0 deletions bindings/nodejs/lib/fdbUtil.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,87 @@
* limitations under the License.
*/


"use strict";

var buffer = require('./bufferConversion');
var future = require('./future');

var strinc = function(str) {
var buf = buffer(str);

var lastNonFFByte;
for(lastNonFFByte = buf.length-1; lastNonFFByte >= 0; --lastNonFFByte)
if(buf[lastNonFFByte] != 0xFF)
break;

if(lastNonFFByte < 0)
throw new Error('invalid argument \'' + str + '\': prefix must have at least one byte not equal to 0xFF');

var copy = new Buffer(lastNonFFByte + 1);
str.copy(copy, 0, 0, copy.length);
++copy[lastNonFFByte];

return copy;
};

var whileLoop = function(func, cb) {
return future.create(function(futureCb) {
var calledCallback = true;
function outer(err, res) {
if(err || typeof(res) !== 'undefined') {
futureCb(err, res);
}
else if(!calledCallback) {
calledCallback = true;
}
else {
while(calledCallback) {
calledCallback = false;
func(outer);
}

calledCallback = true;
}
}

outer();
}, cb);
};

var keyToBuffer = function(key) {
if(typeof(key.asFoundationDBKey) == 'function')
return buffer(key.asFoundationDBKey());

return buffer(key);
};

var valueToBuffer = function(val) {
if(typeof(val.asFoundationDBValue) == 'function')
return buffer(val.asFoundationDBValue());

return buffer(val);
};

var buffersEqual = function(buf1, buf2) {
if(!buf1 || !buf2)
return buf1 === buf2;

if(buf1.length !== buf2.length)
return false;

for(var i = 0; i < buf1.length; ++i)
if(buf1[i] !== buf2[i])
return false;

return true;
};

module.exports = {
strinc: strinc,
whileLoop: whileLoop,
keyToBuffer: keyToBuffer,
valueToBuffer: valueToBuffer,
buffersEqual: buffersEqual
};

65 changes: 65 additions & 0 deletions bindings/nodejs/lib/subspace.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,68 @@
* limitations under the License.
*/


"use strict";

var buffer = require('./bufferConversion');
var fdbUtil = require('./fdbUtil');
var tuple = require('./tuple');

var Subspace = function(prefixArray, rawPrefix) {
if(typeof rawPrefix === 'undefined')
rawPrefix = new Buffer(0);
if(typeof prefixArray === 'undefined')
prefixArray = [];

rawPrefix = fdbUtil.keyToBuffer(rawPrefix);
var packed = tuple.pack(prefixArray);

this.rawPrefix = Buffer.concat([rawPrefix, packed], rawPrefix.length + packed.length);
};

Subspace.prototype.key = function() {
return this.rawPrefix;
};

Subspace.prototype.pack = function(arr) {
var packed = tuple.pack(arr);
return Buffer.concat([this.rawPrefix, packed], this.rawPrefix.length + packed.length) ;
};

Subspace.prototype.unpack = function(key) {
key = fdbUtil.keyToBuffer(key);
if(!this.contains(key))
throw new Error('Cannot unpack key that is not in subspace.');

return tuple.unpack(key.slice(this.rawPrefix.length));
};

Subspace.prototype.range = function(arr) {
if(typeof arr === 'undefined')
arr = [];

var range = tuple.range(arr);
return {
begin: Buffer.concat([this.rawPrefix, range.begin], this.rawPrefix.length + range.begin.length),
end: Buffer.concat([this.rawPrefix, range.end], this.rawPrefix.length + range.end.length)
};
};

Subspace.prototype.contains = function(key) {
key = fdbUtil.keyToBuffer(key);
return key.length >= this.rawPrefix.length && fdbUtil.buffersEqual(key.slice(0, this.rawPrefix.length), this.rawPrefix);
};

Subspace.prototype.get = function(item) {
return this.subspace([item]);
};

Subspace.prototype.subspace = function(arr) {
return new Subspace(arr, this.rawPrefix);
};

Subspace.prototype.asFoundationDBKey = function() {
return this.key();
};

module.exports = Subspace;
4 changes: 2 additions & 2 deletions bindings/nodejs/tests/promise_aplus_test.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#!/usr/bin/env node

/*
* promise_aplus_test.js
*
Expand All @@ -18,8 +20,6 @@
* limitations under the License.
*/

#!/usr/bin/env node

"use strict";

var promisesAplusTests = require('promises-aplus-tests');
Expand Down
4 changes: 2 additions & 2 deletions bindings/nodejs/tests/tester.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#!/usr/bin/env node

/*
* tester.js
*
Expand All @@ -18,8 +20,6 @@
* limitations under the License.
*/

#!/usr/bin/env node

"use strict";

//cmd line: node tester.js <test_prefix> <optional_cluster_file>
Expand Down
4 changes: 2 additions & 2 deletions bindings/ruby/lib/fdbdirectory.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#encoding: BINARY

#
# fdbdirectory.rb
#
Expand All @@ -18,8 +20,6 @@
# limitations under the License.
#

#encoding: BINARY

# FoundationDB Ruby API

# Documentation for this API can be found at
Expand Down
4 changes: 2 additions & 2 deletions bindings/ruby/lib/fdbimpl.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#encoding: BINARY

#
# fdbimpl.rb
#
Expand All @@ -18,8 +20,6 @@
# limitations under the License.
#

#encoding: BINARY

# FoundationDB Ruby API

# Documentation for this API can be found at
Expand Down
4 changes: 2 additions & 2 deletions bindings/ruby/lib/fdblocality.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#encoding: BINARY

#
# fdblocality.rb
#
Expand All @@ -18,8 +20,6 @@
# limitations under the License.
#

#encoding: BINARY

# FoundationDB Ruby API

# Documentation for this API can be found at
Expand Down
4 changes: 2 additions & 2 deletions bindings/ruby/lib/fdbsubspace.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#encoding: BINARY

#
# fdbsubspace.rb
#
Expand All @@ -18,8 +20,6 @@
# limitations under the License.
#

#encoding: BINARY

# FoundationDB Ruby API

# Documentation for this API can be found at
Expand Down
4 changes: 2 additions & 2 deletions bindings/ruby/lib/fdbtuple.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#encoding: BINARY

#
# fdbtuple.rb
#
Expand All @@ -18,8 +20,6 @@
# limitations under the License.
#

#encoding: BINARY

# FoundationDB Ruby API

# Documentation for this API can be found at
Expand Down
3 changes: 2 additions & 1 deletion bindings/ruby/tests/directory_extension.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#encoding:BINARY

#
# directory_extension.rb
#
Expand All @@ -18,7 +20,6 @@
# limitations under the License.
#

#encoding:BINARY
require 'fdb'

module DirectoryExtension
Expand Down
4 changes: 2 additions & 2 deletions bindings/ruby/tests/tester.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/usr/bin/env ruby
#encoding:BINARY

#
# tester.rb
#
Expand All @@ -19,8 +21,6 @@
# limitations under the License.
#

#encoding:BINARY

require 'thread'

$:.unshift( File.join( File.dirname(__FILE__), "../lib" ) )
Expand Down