This is an automated email from the ASF dual-hosted git repository.

cdutz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-plc4x.git

commit be3f36523a712b83807cd4c44891bef08677f1d9
Author: Sebastian Rühl <sru...@apache.org>
AuthorDate: Thu Sep 13 10:54:55 2018 +0200

    added convenience methods for easily building of requests
---
 .../plc4x/java/api/connection/PlcReader.java       | 13 +++++++++
 .../plc4x/java/api/connection/PlcSubscriber.java   | 31 +++++++++++++++++++---
 .../plc4x/java/api/connection/PlcWriter.java       | 13 +++++++++
 3 files changed, 54 insertions(+), 3 deletions(-)

diff --git 
a/plc4j/api/src/main/java/org/apache/plc4x/java/api/connection/PlcReader.java 
b/plc4j/api/src/main/java/org/apache/plc4x/java/api/connection/PlcReader.java
index 609ec6b..d326409 100644
--- 
a/plc4j/api/src/main/java/org/apache/plc4x/java/api/connection/PlcReader.java
+++ 
b/plc4j/api/src/main/java/org/apache/plc4x/java/api/connection/PlcReader.java
@@ -22,6 +22,7 @@ import org.apache.plc4x.java.api.messages.PlcReadRequest;
 import org.apache.plc4x.java.api.messages.PlcReadResponse;
 
 import java.util.concurrent.CompletableFuture;
+import java.util.function.Consumer;
 
 /**
  * Interface implemented by all PlcConnections that are able to read from 
remote resources.
@@ -36,6 +37,18 @@ public interface PlcReader {
      */
     CompletableFuture<PlcReadResponse<?>> read(PlcReadRequest readRequest);
 
+    /**
+     * Reads a requested value from a PLC.
+     *
+     * @param readRequestBuilderConsumer consumer which can be used to build 
requests.
+     * @return a {@link CompletableFuture} giving async access to the returned 
value.
+     */
+    default CompletableFuture<PlcReadResponse<?>> 
read(Consumer<PlcReadRequest.Builder> readRequestBuilderConsumer) {
+        PlcReadRequest.Builder requestBuilder = readRequestBuilder();
+        readRequestBuilderConsumer.accept(requestBuilder);
+        return read(requestBuilder.build());
+    }
+
     PlcReadRequest.Builder readRequestBuilder();
 
 }
diff --git 
a/plc4j/api/src/main/java/org/apache/plc4x/java/api/connection/PlcSubscriber.java
 
b/plc4j/api/src/main/java/org/apache/plc4x/java/api/connection/PlcSubscriber.java
index 818bc07..9cca159 100644
--- 
a/plc4j/api/src/main/java/org/apache/plc4x/java/api/connection/PlcSubscriber.java
+++ 
b/plc4j/api/src/main/java/org/apache/plc4x/java/api/connection/PlcSubscriber.java
@@ -40,6 +40,18 @@ public interface PlcSubscriber {
     CompletableFuture<PlcSubscriptionResponse> 
subscribe(PlcSubscriptionRequest subscriptionRequest);
 
     /**
+     * Subscribes to fields on the PLC.
+     *
+     * @param plcSubscriptionRequestBuilderConsumer consumer which can be used 
to build requests.
+     * @return subscription response containing a subscription response item 
for each subscription request item.
+     */
+    default CompletableFuture<PlcSubscriptionResponse> 
subscribe(Consumer<PlcSubscriptionRequest.Builder> 
plcSubscriptionRequestBuilderConsumer) {
+        PlcSubscriptionRequest.Builder builder = subscriptionRequestBuilder();
+        plcSubscriptionRequestBuilderConsumer.accept(builder);
+        return subscribe(builder.build());
+    }
+
+    /**
      * Unsubscribes from fields on the PLC. For unsubscribing the 
unsubscription request uses the subscription
      * handle returned as part of the subscription response item.
      *
@@ -49,11 +61,24 @@ public interface PlcSubscriber {
     CompletableFuture<PlcUnsubscriptionResponse> 
unsubscribe(PlcUnsubscriptionRequest unsubscriptionRequest);
 
     /**
+     * Unsubscribes from fields on the PLC. For unsubscribing the 
unsubscription request uses the subscription
+     * handle returned as part of the subscription response item.
+     *
+     * @param plcSubscriptionRequestBuilderConsumer consumer which can be used 
to build requests.
+     * @return unsubscription response containing a unsubscription response 
item for each unsubscription request item.
+     */
+    default CompletableFuture<PlcUnsubscriptionResponse> 
unsubscribe(Consumer<PlcUnsubscriptionRequest.Builder> 
plcSubscriptionRequestBuilderConsumer) {
+        PlcUnsubscriptionRequest.Builder builder = 
unsubscriptionRequestBuilder();
+        plcSubscriptionRequestBuilderConsumer.accept(builder);
+        return unsubscribe(builder.build());
+    }
+
+    /**
      * Convenience method to subscribe a {@link Consumer} to all fields of the 
subscription.
      *
      * @param subscriptionRequest subscription request
-     * @param consumer consumer for all {@link PlcSubscriptionEvent}s
-     * @throws ExecutionException something went wrong.
+     * @param consumer            consumer for all {@link 
PlcSubscriptionEvent}s
+     * @throws ExecutionException   something went wrong.
      * @throws InterruptedException something went wrong.
      */
     default void register(PlcSubscriptionRequest subscriptionRequest, 
Consumer<PlcSubscriptionEvent> consumer) throws ExecutionException, 
InterruptedException {
@@ -61,7 +86,7 @@ public interface PlcSubscriber {
         register(consumer, 
plcSubscriptionResponse.getSubscriptionHandles().toArray(new 
PlcSubscriptionHandle[0]));
     }
 
-    PlcConsumerRegistration register(Consumer<PlcSubscriptionEvent> consumer, 
PlcSubscriptionHandle... handle);
+    PlcConsumerRegistration register(Consumer<PlcSubscriptionEvent> consumer, 
PlcSubscriptionHandle... handles);
 
     void unregister(PlcConsumerRegistration registration);
 
diff --git 
a/plc4j/api/src/main/java/org/apache/plc4x/java/api/connection/PlcWriter.java 
b/plc4j/api/src/main/java/org/apache/plc4x/java/api/connection/PlcWriter.java
index 956e249..e974939 100644
--- 
a/plc4j/api/src/main/java/org/apache/plc4x/java/api/connection/PlcWriter.java
+++ 
b/plc4j/api/src/main/java/org/apache/plc4x/java/api/connection/PlcWriter.java
@@ -22,6 +22,7 @@ import org.apache.plc4x.java.api.messages.PlcWriteRequest;
 import org.apache.plc4x.java.api.messages.PlcWriteResponse;
 
 import java.util.concurrent.CompletableFuture;
+import java.util.function.Consumer;
 
 /**
  * Interface implemented by all PlcConnections that are able to write to 
remote resources.
@@ -36,6 +37,18 @@ public interface PlcWriter {
      */
     CompletableFuture<PlcWriteResponse<?>> write(PlcWriteRequest writeRequest);
 
+    /**
+     * Writes a given value to a PLC.
+     *
+     * @param writeRequestBuilderConsumer consumer which can be used to build 
requests.
+     * @return a {@link CompletableFuture} giving async access to the response 
of the write operation.
+     */
+    default CompletableFuture<PlcWriteResponse<?>> 
write(Consumer<PlcWriteRequest.Builder> writeRequestBuilderConsumer) {
+        PlcWriteRequest.Builder requestBuilder = writeRequestBuilder();
+        writeRequestBuilderConsumer.accept(requestBuilder);
+        return write(requestBuilder.build());
+    }
+
     PlcWriteRequest.Builder writeRequestBuilder();
 
 }

Reply via email to