You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2018/01/11 08:27:44 UTC

[incubator-plc4x] branch refactoring/java_generify updated (6a3da68 -> d6497dc)

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

sruehl pushed a change to branch refactoring/java_generify
in repository https://gitbox.apache.org/repos/asf/incubator-plc4x.git.


    from 6a3da68  comment surefire back in
     new b86dc42  fixed one more builder bug
     add ff882df  fix up switch and endless loops
     add 04245aa  refactor to reduce complexity and fix endless loops
     add 4383c38  log exception
     add 1e853eb  add @override
     add 79f031d  unneeded brackets
     add 7df5be8  SONAR Make the programs terminate (getting rid of the two blocker issues)
     add 464d125  SONAR Some further fixing of issues sonarqube reported
     add 74617fc  mask slot number
     add ecba61f  add calling parameter test
     add 7b849a1  get rid of a level of nesting
     add 5ad5d2d  no real need to calculate size/length every time through the loop
     add bd85953  add more encode and decode parameter tests
     add 44e01ea  Sort divided by a int is always an int no need to round up with Math.ceil
     add 25a752c  Enable coverage checks (Report warnings but don't break the build for now)
     add 85fb9cb  may need a extra byte if not on byte boundry
     add 06fd936  Coverage shows this should be Byte not Byte[]
     add 9e04f92  Add support for Stings
     add ab2c1d8  multiple string is a little broken add TODOs so don't forget
     add 5378c4a  support for multiple strings
     add 3e19b41  chars not bytes and add another check to stop running off end of buffer
     new 2267211  Merge branch 'master' into refactoring/java_generify
     new d6497dc  link response into request to retrieve a typed response.

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 applications/iotree/pom.xml                        |   5 +
 .../plc4x/java/applications/iotree/IoTree.java     |  18 +-
 applications/plclogger/pom.xml                     |   5 +
 .../java/applications/plclogger/PlcLogger.java     |  18 +-
 .../java/org/apache/plc4x/camel/PLC4XProducer.java |   2 +
 .../plc4x/java/api/messages/PlcWriteRequest.java   |   2 +-
 .../java/api/messages/items/ReadRequestItem.java   |  13 +
 .../java/api/messages/items/ReadResponseItem.java  |   3 +-
 .../java/api/messages/items/WriteRequestItem.java  |  12 +
 .../java/api/messages/items/WriteResponseItem.java |   1 +
 plc4j/pom.xml                                      |  31 ---
 .../plc4x/java/isotp/netty/IsoTPProtocol.java      | 152 +++++------
 .../plc4x/java/s7/netty/Plc4XS7Protocol.java       |  85 +++---
 .../org/apache/plc4x/java/s7/netty/S7Protocol.java | 112 ++++----
 .../plc4x/java/isotp/netty/IsoTPProtocolTest.java  | 294 ++++++++++++++++++++-
 .../apache/plc4x/java/s7/S7PlcReaderSample.java    |   2 +-
 .../plc4x/java/s7/netty/Plc4XS7ProtocolTest.java   |   8 +-
 pom.xml                                            |  36 ++-
 18 files changed, 581 insertions(+), 218 deletions(-)

-- 
To stop receiving notification emails like this one, please contact
['"commits@plc4x.apache.org" <co...@plc4x.apache.org>'].

[incubator-plc4x] 02/03: Merge branch 'master' into refactoring/java_generify

Posted by sr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 2267211e5123dd3033bad13c063750348f44109e
Merge: b86dc42 3e19b41
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Thu Jan 11 08:55:33 2018 +0100

    Merge branch 'master' into refactoring/java_generify
    
    # Conflicts:
    #	plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/Plc4XS7Protocol.java

 applications/iotree/pom.xml                        |   5 +
 .../plc4x/java/applications/iotree/IoTree.java     |  18 +-
 applications/plclogger/pom.xml                     |   5 +
 .../java/applications/plclogger/PlcLogger.java     |  18 +-
 .../java/org/apache/plc4x/camel/PLC4XProducer.java |   2 +
 plc4j/pom.xml                                      |  31 ---
 .../plc4x/java/isotp/netty/IsoTPProtocol.java      | 152 +++++------
 .../plc4x/java/s7/netty/Plc4XS7Protocol.java       |  85 +++---
 .../org/apache/plc4x/java/s7/netty/S7Protocol.java | 112 ++++----
 .../plc4x/java/isotp/netty/IsoTPProtocolTest.java  | 294 ++++++++++++++++++++-
 .../apache/plc4x/java/s7/S7PlcReaderSample.java    |   2 +-
 .../plc4x/java/s7/netty/Plc4XS7ProtocolTest.java   |   8 +-
 pom.xml                                            |  36 ++-
 13 files changed, 552 insertions(+), 216 deletions(-)

diff --cc plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/Plc4XS7Protocol.java
index 3ff2e63,b364990..cc1faf1
--- a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/Plc4XS7Protocol.java
+++ b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/Plc4XS7Protocol.java
@@@ -295,7 -288,8 +297,8 @@@ public class Plc4XS7Protocol extends Me
      }
  
      private byte[] encodeData(Object[] values) {
-         if (values.length == 0) {
 -        final int length = values.length;
++        final int length =values.length;
+         if (length == 0) {
              return new byte[]{};
          }
          byte[] result = null;
@@@ -350,44 -356,56 +365,54 @@@
      ////////////////////////////////////////////////////////////////////////////////
  
      private ResponseCode decodeResponseCode(DataTransportErrorCode dataTransportErrorCode) {
-         if (dataTransportErrorCode != null) {
-             switch (dataTransportErrorCode) {
-                 case OK:
-                     return ResponseCode.OK;
-                 case NOT_FOUND:
-                     return ResponseCode.NOT_FOUND;
-                 case INVALID_ADDRESS:
-                     return ResponseCode.INVALID_ADDRESS;
-             }
+         if (dataTransportErrorCode == null) {
+             return ResponseCode.INTERNAL_ERROR;
+         }
+         switch (dataTransportErrorCode) {
+             case OK:
+                 return ResponseCode.OK;
+             case NOT_FOUND:
+                 return ResponseCode.NOT_FOUND;
+             case INVALID_ADDRESS:
+                 return ResponseCode.INVALID_ADDRESS;
+             default:
+                 return ResponseCode.INTERNAL_ERROR;
          }
-         return ResponseCode.INTERNAL_ERROR;
      }
  
 -    private List<Object> decodeData(Class<?> datatype, byte[] s7Data) throws PlcProtocolException {
 +    @SuppressWarnings("unchecked")private <T>List<T> decodeData(Class<T> datatype, byte[] s7Data) throws PlcProtocolException {
 +
          List<Object> result = new LinkedList<>();
-         for (int i = 0; i < s7Data.length; ) {
 -        int i = 0;
 -        final int length = s7Data.length;
 -        
 -        while (i < length) {
++        int i = 0; final int length = s7Data.length;while (i < length) {
              if (datatype == Boolean.class) {
                  result.add((s7Data[i] & 0x01) == 0x01);
 -                i+=1;
 +                i += 1;
              } else if (datatype == Byte.class) {
                  result.add(s7Data[i]);
 -                i+=1;
 +                i += 1;
              } else if (datatype == Short.class) {
 -                result.add((short) (((s7Data[i] & 0xff) << 8) | (s7Data[i+1] & 0xff)));
 -                i+=2;
 +                result.add((short) (((s7Data[i] & 0xff) << 8) | (s7Data[i + 1] & 0xff)));
 +                i += 2;
              } else if (datatype == Integer.class) {
-                 result.add((((s7Data[i] & 0xff) << 24) | ((s7Data[i + 1] & 0xff) << 16) |
-                     ((s7Data[i + 2] & 0xff) << 8) | (s7Data[i + 3] & 0xff)));
+                 result.add(((s7Data[i] & 0xff) << 24) | ((s7Data[i + 1] & 0xff) << 16) |
+                     ((s7Data[i + 2] & 0xff) << 8) | (s7Data[i + 3] & 0xff));
 -                i+=4;
 +                i += 4;
              } else if (datatype == Float.class) {
                  // Description of the Real number format:
                  // https://www.sps-lehrgang.de/zahlenformate-step7/#c144
                  // https://de.wikipedia.org/wiki/IEEE_754
-                 int intValue = (((s7Data[i] & 0xff) << 24) | ((s7Data[i + 1] & 0xff) << 16) |
-                     ((s7Data[i + 2] & 0xff) << 8) | (s7Data[i + 3] & 0xff));
+                 int intValue = ((s7Data[i] & 0xff) << 24) | ((s7Data[i + 1] & 0xff) << 16) |
+                     ((s7Data[i + 2] & 0xff) << 8) | (s7Data[i + 3] & 0xff);
                  result.add(Float.intBitsToFloat(intValue));
 -                i+=4;
 +                i += 4;
+             } else if (datatype == String.class) {
+                 StringBuilder builder = new StringBuilder();
+                 while (s7Data[i] != (byte) 0x0 && i < length) {
+                     builder.append((char)s7Data[i]);
+                     i++;
+                 }
+                 i++; // skip terminating character
+                 result.add(builder.toString());
              } else {
                  throw new PlcProtocolException("Unsupported datatype " + datatype.getSimpleName());
              }

-- 
To stop receiving notification emails like this one, please contact
"commits@plc4x.apache.org" <co...@plc4x.apache.org>.

[incubator-plc4x] 03/03: link response into request to retrieve a typed response.

Posted by sr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit d6497dc7fa7dc0b34bf7169318fe241e4341a084
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Thu Jan 11 09:27:21 2018 +0100

    link response into request to retrieve a typed response.
---
 .../plc4x/java/api/messages/items/ReadRequestItem.java      | 13 +++++++++++++
 .../plc4x/java/api/messages/items/ReadResponseItem.java     |  3 ++-
 .../plc4x/java/api/messages/items/WriteRequestItem.java     | 12 ++++++++++++
 .../plc4x/java/api/messages/items/WriteResponseItem.java    |  1 +
 4 files changed, 28 insertions(+), 1 deletion(-)

diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/ReadRequestItem.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/ReadRequestItem.java
index 6086959..fe3bc25 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/ReadRequestItem.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/ReadRequestItem.java
@@ -20,6 +20,8 @@ package org.apache.plc4x.java.api.messages.items;
 
 import org.apache.plc4x.java.api.model.Address;
 
+import java.util.Optional;
+
 public class ReadRequestItem<T> {
 
     private final Class<T> datatype;
@@ -28,16 +30,20 @@ public class ReadRequestItem<T> {
 
     private final int size;
 
+    private ReadResponseItem<T> responseItem;
+
     public ReadRequestItem(Class<T> datatype, Address address) {
         this.datatype = datatype;
         this.address = address;
         this.size = 1;
+        this.responseItem = null;
     }
 
     public ReadRequestItem(Class<T> datatype, Address address, int size) {
         this.datatype = datatype;
         this.address = address;
         this.size = size;
+        this.responseItem = null;
     }
 
     public Class<T> getDatatype() {
@@ -52,4 +58,11 @@ public class ReadRequestItem<T> {
         return size;
     }
 
+    public Optional<ReadResponseItem<T>> getResponseItem() {
+        return Optional.ofNullable(responseItem);
+    }
+
+    protected void setResponseItem(ReadResponseItem<T> responseItem) {
+        this.responseItem = responseItem;
+    }
 }
diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/ReadResponseItem.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/ReadResponseItem.java
index 286fb64..876d4ec 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/ReadResponseItem.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/ReadResponseItem.java
@@ -34,9 +34,10 @@ public class ReadResponseItem<T> {
         this.requestItem = requestItem;
         this.responseCode = responseCode;
         this.values = values;
+        requestItem.setResponseItem(this);
     }
 
-    public ReadRequestItem getRequestItem() {
+    public ReadRequestItem<T> getRequestItem() {
         return requestItem;
     }
 
diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/WriteRequestItem.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/WriteRequestItem.java
index 44111ae..33aa544 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/WriteRequestItem.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/WriteRequestItem.java
@@ -21,6 +21,7 @@ package org.apache.plc4x.java.api.messages.items;
 import org.apache.plc4x.java.api.model.Address;
 
 import java.lang.reflect.Array;
+import java.util.Optional;
 
 public class WriteRequestItem<T> {
 
@@ -30,18 +31,22 @@ public class WriteRequestItem<T> {
 
     private final T[] values;
 
+    private WriteResponseItem<T> responseItem;
+
     @SuppressWarnings("unchecked")
     public WriteRequestItem(Class<T> datatype, Address address, T value) {
         this.datatype = datatype;
         this.address = address;
         this.values = (T[]) Array.newInstance(datatype, 1);
         this.values[0] = value;
+        responseItem = null;
     }
 
     public WriteRequestItem(Class<T> datatype, Address address, T[] values) {
         this.datatype = datatype;
         this.address = address;
         this.values = values;
+        responseItem = null;
     }
 
     public Class<T> getDatatype() {
@@ -56,4 +61,11 @@ public class WriteRequestItem<T> {
         return values;
     }
 
+    public Optional<WriteResponseItem<T>> getResponseItem() {
+        return Optional.ofNullable(responseItem);
+    }
+
+    protected void setResponseItem(WriteResponseItem<T> responseItem) {
+        this.responseItem = responseItem;
+    }
 }
diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/WriteResponseItem.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/WriteResponseItem.java
index 524f68f..1e3995c 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/WriteResponseItem.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/WriteResponseItem.java
@@ -29,6 +29,7 @@ public class WriteResponseItem<T> {
     public WriteResponseItem(WriteRequestItem<T> requestItem, ResponseCode responseCode) {
         this.requestItem = requestItem;
         this.responseCode = responseCode;
+        requestItem.setResponseItem(this);
     }
 
     public WriteRequestItem<T> getRequestItem() {

-- 
To stop receiving notification emails like this one, please contact
"commits@plc4x.apache.org" <co...@plc4x.apache.org>.

[incubator-plc4x] 01/03: fixed one more builder bug

Posted by sr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit b86dc4211a2a46e0a40d34f3a150380241e2244b
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Mon Jan 8 09:45:00 2018 +0100

    fixed one more builder bug
---
 .../main/java/org/apache/plc4x/java/api/messages/PlcWriteRequest.java   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/PlcWriteRequest.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/PlcWriteRequest.java
index 7d8a9e9..c663be5 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/PlcWriteRequest.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/PlcWriteRequest.java
@@ -72,7 +72,7 @@ public interface PlcWriteRequest extends PlcRequest {
         }
 
         private void checkType(Class dataType) {
-            if (firstType != null) {
+            if (firstType == null) {
                 firstType = dataType;
             }
             if (firstType != dataType) {

-- 
To stop receiving notification emails like this one, please contact
"commits@plc4x.apache.org" <co...@plc4x.apache.org>.