You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2018/10/30 15:39:22 UTC

[incubator-plc4x] branch master updated: - Fixed a broken refactoring ... (Don't know why this slipped last time)

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


The following commit(s) were added to refs/heads/master by this push:
     new 624b9d0  - Fixed a broken refactoring ... (Don't know why this slipped last time)
624b9d0 is described below

commit 624b9d0761d8716a936a8040eba91e20ccf3ae05
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Tue Oct 30 16:39:18 2018 +0100

    - Fixed a broken refactoring ... (Don't know why this slipped last time)
---
 .../plc4x/java/s7/netty/strategies/DefaultS7MessageProcessor.java | 8 +++++---
 .../apache/plc4x/java/s7/netty/util/S7RequestSizeCalculator.java  | 4 ++--
 .../java/s7/netty/strategies/DefaultS7MessageProcessorTest.java   | 3 ++-
 3 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/strategies/DefaultS7MessageProcessor.java b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/strategies/DefaultS7MessageProcessor.java
index 0ab4b1c..7d813a4 100644
--- a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/strategies/DefaultS7MessageProcessor.java
+++ b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/strategies/DefaultS7MessageProcessor.java
@@ -359,17 +359,19 @@ public class DefaultS7MessageProcessor implements S7MessageProcessor {
                 if(payload.getType() == ParameterType.READ_VAR) {
                     if (readVarPayload == null) {
                         readVarPayload = (VarPayload) payload;
-                        s7Payloads.add(payload);
                     } else {
+                        s7Payloads.remove(readVarPayload);
                         readVarPayload = readVarPayload.mergePayload((VarPayload) payload);
                     }
+                    s7Payloads.add(readVarPayload);
                 } else if(payload.getType() == ParameterType.WRITE_VAR) {
                     if(writeVarPayload == null) {
                         writeVarPayload = (VarPayload) payload;
-                        s7Payloads.add(payload);
                     } else {
-                        readVarPayload = writeVarPayload.mergePayload((VarPayload) payload);
+                        s7Payloads.remove(writeVarPayload);
+                        writeVarPayload = writeVarPayload.mergePayload((VarPayload) payload);
                     }
+                    s7Payloads.add(writeVarPayload);
                 } else {
                     s7Payloads.add(payload);
                 }
diff --git a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/util/S7RequestSizeCalculator.java b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/util/S7RequestSizeCalculator.java
index b8fe22c..c8feeee 100644
--- a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/util/S7RequestSizeCalculator.java
+++ b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/util/S7RequestSizeCalculator.java
@@ -65,8 +65,8 @@ public class S7RequestSizeCalculator {
      * @return size in bytes this item would add to an existing request message.
      */
     public static short getRequestItemTotalSize(VarParameterItem varParameterItem, VarPayloadItem varPayloadItem) {
-        return (short) (getRequestReadWriteVarParameterItemSize(varParameterItem) +
-            getRequestWriteVarPayloadItemSize(varPayloadItem));
+        return (short) (getRequestReadWriteVarParameterItemSize(varParameterItem) + ((varPayloadItem != null) ?
+            getRequestWriteVarPayloadItemSize(varPayloadItem) : 0));
     }
 
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/strategies/DefaultS7MessageProcessorTest.java b/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/strategies/DefaultS7MessageProcessorTest.java
index ed50c50..a92d2b8 100644
--- a/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/strategies/DefaultS7MessageProcessorTest.java
+++ b/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/strategies/DefaultS7MessageProcessorTest.java
@@ -593,7 +593,7 @@ public class DefaultS7MessageProcessorTest {
 
     /**
      * This test handles the special case in which a response is part of a single request message.
-     * This means that it is immediatly finished and is hereby immediatly processed.
+     * This means that it is immediately finished and is hereby immediately processed.
      *
      * @throws PlcException
      */
@@ -651,6 +651,7 @@ public class DefaultS7MessageProcessorTest {
 
         assertThat(processedResponse.getPayloads(), hasSize(1));
         assertThat(processedResponse.getPayload(VarPayload.class).isPresent(), is(true));
+
         VarPayload varPayload = processedResponse.getPayload(VarPayload.class).get();
         assertThat(varPayload.getItems(), hasSize(2));
     }