You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@bookkeeper.apache.org by gi...@git.apache.org on 2017/09/25 05:21:16 UTC

[GitHub] jvrao commented on a change in pull request #510: Issue-605 BP-15 New CreateLedger API

jvrao commented on a change in pull request #510: Issue-605 BP-15 New CreateLedger API
URL: https://github.com/apache/bookkeeper/pull/510#discussion_r140690611
 
 

 ##########
 File path: bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerCreateOp.java
 ##########
 @@ -200,4 +214,181 @@ private void createComplete(int rc, LedgerHandle lh) {
         cb.createComplete(rc, lh, ctx);
     }
 
+    // Builder interface methods
+
+    private static final byte[] EMPTY_PASSWORD = new byte[0];
+    private int builderEnsembleSize;
+    private int builderAckQuorumSize;
+    private int builderWriteQuorumSize;
+    private long builderLedgerId = -1L;
+    private byte[] builderPassword = EMPTY_PASSWORD;
+    private DigestType builderDigestType = DigestType.CRC32;
+    private Map<String, byte[]> builderCustomMetadata;
+
+    @Override
+    public CreateBuilder withEnsembleSize(int ensembleSize) {
+        this.builderEnsembleSize = ensembleSize;
+        return this;
+    }
+
+    @Override
+    public CreateBuilder withWriteQuorumSize(int writeQuorumSize) {
+        this.builderWriteQuorumSize = writeQuorumSize;
+        return this;
+    }
+
+    @Override
+    public CreateBuilder withAckQuorumSize(int ackQuorumSize) {
+        this.builderAckQuorumSize = ackQuorumSize;
+        return this;
+    }
+
+    @Override
+    public CreateBuilder withPassword(byte[] password) {
+        this.builderPassword = password;
+        return this;
+    }
+
+    @Override
+    public CreateBuilder withCustomMetadata(Map<String, byte[]> customMetadata) {
+        this.builderCustomMetadata = customMetadata;
+        return this;
+    }
+
+    @Override
+    public CreateBuilder withDigestType(DigestType digestType) {
+        this.builderDigestType = digestType;
+        return this;
+    }
+
+    @Override
+    public CreateAdvBuilder makeAdv() {
+        if(advBuilder == null) {
+            advBuilder = new CreateAdvBuilderImpl();
+        }
+        return advBuilder;
+    }
+
+    private CreateAdvBuilder advBuilder;
+
+    @Override
+    public WriteHandle create() throws BKException, InterruptedException {
+        CompletableFuture<LedgerHandle> counter = new CompletableFuture<>();
+
+        create(new BookKeeper.SyncCreateCallback(), counter);
+
+        LedgerHandle lh = SynchCallbackUtils.waitForResult(counter);
+        if (lh == null) {
+            LOG.error("Unexpected condition : no ledger handle returned for a success ledger creation");
+            throw BKException.create(BKException.Code.UnexpectedConditionException);
+        }
+        return lh;
+    }
+
+    @Override
+    public CompletableFuture<WriteHandle> execute() {
+        CompletableFuture<WriteHandle> counter = new CompletableFuture<>();
+        create(new BookKeeper.SyncCreateCallback(), counter);
+        return counter;
+    }
+
+    private void applyDefaults() {
 
 Review comment:
   I agree. 
 
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services