Skip to content

Commit 29d312d

Browse files
authored
make main builders as interfaces (#31)
1 parent 9fdc4cf commit 29d312d

13 files changed

+202
-153
lines changed

.github/workflows/main.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
args: '--set-exit-if-changed'
2323

2424
- name: Prepare test env
25-
run: script/prepare-test-env-latest.sh
25+
run: script/prepare-test-env.sh
2626

2727
- name: Set up JDK 11
2828
uses: actions/setup-java@v2

client/src/main/java/io/hstream/ClientBuilder.java

Lines changed: 0 additions & 18 deletions
This file was deleted.
Lines changed: 6 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,14 @@
11
package io.hstream;
22

3-
import io.hstream.impl.ConsumerImpl;
4-
import io.hstream.internal.HStreamApiGrpc;
3+
public interface ConsumerBuilder {
54

6-
/** used to construct a consumer */
7-
public class ConsumerBuilder {
5+
ConsumerBuilder name(String name);
86

9-
private HStreamApiGrpc.HStreamApiStub grpcStub;
10-
private HStreamApiGrpc.HStreamApiBlockingStub grpcBlockingStub;
11-
private String name;
12-
private String subscription;
13-
private RawRecordReceiver rawRecordReceiver;
14-
private HRecordReceiver hRecordReceiver;
7+
ConsumerBuilder subscription(String subscription);
158

16-
public ConsumerBuilder(
17-
HStreamApiGrpc.HStreamApiStub grpcStub,
18-
HStreamApiGrpc.HStreamApiBlockingStub grpcBlockingStub) {
19-
this.grpcStub = grpcStub;
20-
this.grpcBlockingStub = grpcBlockingStub;
21-
}
9+
ConsumerBuilder rawRecordReceiver(RawRecordReceiver rawRecordReceiver);
2210

23-
public ConsumerBuilder name(String name) {
24-
this.name = name;
25-
return this;
26-
}
11+
ConsumerBuilder hRecordReceiver(HRecordReceiver hRecordReceiver);
2712

28-
public ConsumerBuilder subscription(String subscription) {
29-
this.subscription = subscription;
30-
return this;
31-
}
32-
33-
public ConsumerBuilder rawRecordReceiver(RawRecordReceiver rawRecordReceiver) {
34-
this.rawRecordReceiver = rawRecordReceiver;
35-
return this;
36-
}
37-
38-
public ConsumerBuilder hRecordReceiver(HRecordReceiver hRecordReceiver) {
39-
this.hRecordReceiver = hRecordReceiver;
40-
return this;
41-
}
42-
43-
public Consumer build() {
44-
return new ConsumerImpl(
45-
grpcStub, grpcBlockingStub, name, subscription, rawRecordReceiver, hRecordReceiver);
46-
}
13+
Consumer build();
4714
}

client/src/main/java/io/hstream/HStreamClient.java

Lines changed: 9 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,26 @@
11
package io.hstream;
22

3+
import io.hstream.impl.HStreamClientBuilderImpl;
34
import java.util.List;
45

5-
/** HstreamClient implement the hstream client, user can use it to interact with server */
6+
/** HStreamDB Client. */
67
public interface HStreamClient extends AutoCloseable {
78

8-
/**
9-
* a static method use to create a new client.
10-
*
11-
* @return {@link ClientBuilder}.
12-
*/
13-
static ClientBuilder builder() {
14-
return new ClientBuilder();
9+
/** @return {@link HStreamClientBuilder}. */
10+
static HStreamClientBuilder builder() {
11+
return new HStreamClientBuilderImpl();
1512
}
1613

17-
/**
18-
* create a producer.
19-
*
20-
* @return the {@link ProducerBuilder}.
21-
*/
14+
/** @return the {@link ProducerBuilder}. */
2215
ProducerBuilder newProducer();
2316

24-
/**
25-
* create a consumer.
26-
*
27-
* @return the {@link ConsumerBuilder}.
28-
*/
17+
/** @return the {@link ConsumerBuilder}. */
2918
ConsumerBuilder newConsumer();
3019

31-
/**
32-
* create a {@link QueryerBuilder}.
33-
*
34-
* @return the {@link Queryer}.
35-
*/
20+
/** @return the {@link QueryerBuilder}. */
3621
QueryerBuilder newQueryer();
3722

38-
/**
39-
* Create a stream.
40-
*
41-
* @param stream the name of stream.
42-
*/
23+
/** @param stream the name of stream. */
4324
void createStream(String stream);
4425

4526
/**
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package io.hstream;
2+
3+
public interface HStreamClientBuilder {
4+
5+
HStreamClientBuilder serviceUrl(String serviceUrl);
6+
7+
HStreamClient build();
8+
}
Lines changed: 5 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,12 @@
11
package io.hstream;
22

3-
import io.hstream.impl.ProducerImpl;
4-
import io.hstream.internal.HStreamApiGrpc;
3+
public interface ProducerBuilder {
54

6-
/** used to construct a producer */
7-
public class ProducerBuilder {
5+
ProducerBuilder stream(String streamName);
86

9-
private HStreamApiGrpc.HStreamApiStub grpcStub;
7+
ProducerBuilder enableBatch();
108

11-
private String streamName;
9+
ProducerBuilder recordCountLimit(int recordCountLimit);
1210

13-
private boolean enableBatch = false;
14-
15-
private int recordCountLimit = 1;
16-
17-
public ProducerBuilder(HStreamApiGrpc.HStreamApiStub stub) {
18-
this.grpcStub = stub;
19-
}
20-
21-
public ProducerBuilder stream(String streamName) {
22-
this.streamName = streamName;
23-
return this;
24-
}
25-
26-
public ProducerBuilder enableBatch() {
27-
this.enableBatch = true;
28-
return this;
29-
}
30-
31-
public ProducerBuilder recordCountLimit(int recordCountLimit) {
32-
this.recordCountLimit = recordCountLimit;
33-
return this;
34-
}
35-
36-
public Producer build() {
37-
return new ProducerImpl(grpcStub, streamName, enableBatch, recordCountLimit);
38-
}
11+
Producer build();
3912
}
Lines changed: 4 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,27 @@
11
package io.hstream;
22

3-
import io.hstream.impl.QueryerImpl;
4-
import io.hstream.internal.HStreamApiGrpc;
5-
6-
/** Builder used to configure and construct a {@link Queryer} instance. */
7-
public class QueryerBuilder {
8-
9-
private HStreamClient client;
10-
private HStreamApiGrpc.HStreamApiStub grpcStub;
11-
private String sql;
12-
private Observer<HRecord> resultObserver;
13-
14-
public QueryerBuilder(HStreamClient client, HStreamApiGrpc.HStreamApiStub grpcStub) {
15-
this.client = client;
16-
this.grpcStub = grpcStub;
17-
}
3+
public interface QueryerBuilder {
184

195
/**
206
* Set SQL statement the queryer will execute.
217
*
228
* @param sql SQL statement, only allow statements like "select ... emit changes"
239
* @return the {@link QueryerBuilder} instance
2410
*/
25-
public QueryerBuilder sql(String sql) {
26-
this.sql = sql;
27-
return this;
28-
}
11+
QueryerBuilder sql(String sql);
2912

3013
/**
3114
* Set {@link Observer} for sql results.
3215
*
3316
* @param resultObserver the {@link Observer} instance
3417
* @return the {@link QueryerBuilder} instance
3518
*/
36-
public QueryerBuilder resultObserver(Observer<HRecord> resultObserver) {
37-
this.resultObserver = resultObserver;
38-
return this;
39-
}
19+
QueryerBuilder resultObserver(Observer<HRecord> resultObserver);
4020

4121
/**
4222
* Construct the final {@link Queryer} instance.
4323
*
4424
* @return the {@link Queryer} instance
4525
*/
46-
public Queryer build() {
47-
return new QueryerImpl(client, grpcStub, sql, resultObserver);
48-
}
26+
Queryer build();
4927
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package io.hstream.impl;
2+
3+
import io.hstream.Consumer;
4+
import io.hstream.ConsumerBuilder;
5+
import io.hstream.HRecordReceiver;
6+
import io.hstream.RawRecordReceiver;
7+
import io.hstream.internal.HStreamApiGrpc;
8+
9+
public class ConsumerBuilderImpl implements ConsumerBuilder {
10+
11+
private HStreamApiGrpc.HStreamApiStub grpcStub;
12+
private HStreamApiGrpc.HStreamApiBlockingStub grpcBlockingStub;
13+
private String name;
14+
private String subscription;
15+
private RawRecordReceiver rawRecordReceiver;
16+
private HRecordReceiver hRecordReceiver;
17+
18+
public ConsumerBuilderImpl(
19+
HStreamApiGrpc.HStreamApiStub grpcStub,
20+
HStreamApiGrpc.HStreamApiBlockingStub grpcBlockingStub) {
21+
this.grpcStub = grpcStub;
22+
this.grpcBlockingStub = grpcBlockingStub;
23+
}
24+
25+
@Override
26+
public ConsumerBuilder name(String name) {
27+
this.name = name;
28+
return this;
29+
}
30+
31+
@Override
32+
public ConsumerBuilder subscription(String subscription) {
33+
this.subscription = subscription;
34+
return this;
35+
}
36+
37+
@Override
38+
public ConsumerBuilder rawRecordReceiver(RawRecordReceiver rawRecordReceiver) {
39+
this.rawRecordReceiver = rawRecordReceiver;
40+
return this;
41+
}
42+
43+
@Override
44+
public ConsumerBuilder hRecordReceiver(HRecordReceiver hRecordReceiver) {
45+
this.hRecordReceiver = hRecordReceiver;
46+
return this;
47+
}
48+
49+
@Override
50+
public Consumer build() {
51+
return new ConsumerImpl(
52+
grpcStub, grpcBlockingStub, name, subscription, rawRecordReceiver, hRecordReceiver);
53+
}
54+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package io.hstream.impl;
2+
3+
import io.hstream.HStreamClient;
4+
import io.hstream.HStreamClientBuilder;
5+
6+
public class HStreamClientBuilderImpl implements HStreamClientBuilder {
7+
8+
private String serviceUrl;
9+
10+
@Override
11+
public HStreamClientBuilder serviceUrl(String serviceUrl) {
12+
this.serviceUrl = serviceUrl;
13+
return this;
14+
}
15+
16+
@Override
17+
public HStreamClient build() {
18+
return new HStreamClientImpl(serviceUrl);
19+
}
20+
}

client/src/main/java/io/hstream/impl/ClientImpl.java renamed to client/src/main/java/io/hstream/impl/HStreamClientImpl.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,15 @@
1515
import org.slf4j.Logger;
1616
import org.slf4j.LoggerFactory;
1717

18-
public class ClientImpl implements HStreamClient {
18+
public class HStreamClientImpl implements HStreamClient {
1919

20-
private static final Logger logger = LoggerFactory.getLogger(ClientImpl.class);
20+
private static final Logger logger = LoggerFactory.getLogger(HStreamClientImpl.class);
2121

2222
private final ManagedChannel managedChannel;
2323
private final HStreamApiGrpc.HStreamApiStub stub;
2424
private final HStreamApiGrpc.HStreamApiBlockingStub blockingStub;
2525

26-
public ClientImpl(String serviceUrl) {
26+
public HStreamClientImpl(String serviceUrl) {
2727
ManagedChannel channel = ManagedChannelBuilder.forTarget(serviceUrl).usePlaintext().build();
2828
this.managedChannel = channel;
2929
this.stub = HStreamApiGrpc.newStub(channel);
@@ -32,17 +32,17 @@ public ClientImpl(String serviceUrl) {
3232

3333
@Override
3434
public ProducerBuilder newProducer() {
35-
return new ProducerBuilder(stub);
35+
return new ProducerBuilderImpl(stub);
3636
}
3737

3838
@Override
3939
public ConsumerBuilder newConsumer() {
40-
return new ConsumerBuilder(stub, blockingStub);
40+
return new ConsumerBuilderImpl(stub, blockingStub);
4141
}
4242

4343
@Override
4444
public QueryerBuilder newQueryer() {
45-
return new QueryerBuilder(this, stub);
45+
return new QueryerBuilderImpl(this, stub);
4646
}
4747

4848
@Override

0 commit comments

Comments
 (0)