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/12 10:26:44 UTC

[incubator-plc4x] 01/07: use Optional and get rid of unchecked warnings

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

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

commit 113080f850e9d371e05ed5450cca2d7807be319b
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Fri Jan 12 10:39:39 2018 +0100

    use Optional and get rid of unchecked warnings
---
 .../apache/plc4x/java/isotp/netty/IsoTPProtocol.java | 20 +++++++++++---------
 .../plc4x/java/isotp/netty/model/tpdus/Tpdu.java     |  7 ++++---
 .../apache/plc4x/java/s7/netty/Plc4XS7Protocol.java  |  4 ++--
 .../java/s7/netty/model/messages/S7Message.java      | 13 +++++++------
 .../isotp/netty/model/tpdus/IsotpModelTests.java     |  8 ++++----
 .../java/s7/netty/model/messages/S7MessageTests.java |  8 ++++----
 6 files changed, 32 insertions(+), 28 deletions(-)

diff --git a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/isotp/netty/IsoTPProtocol.java b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/isotp/netty/IsoTPProtocol.java
index d2ac23c..d845158 100644
--- a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/isotp/netty/IsoTPProtocol.java
+++ b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/isotp/netty/IsoTPProtocol.java
@@ -58,7 +58,7 @@ public class IsoTPProtocol extends MessageToMessageCodec<IsoOnTcpMessage, Tpdu>
     public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
         // If the connection has just been established, start setting up the connection
         // by sending a connection request to the plc.
-        if(evt instanceof S7ConnectionEvent && ((S7ConnectionEvent) evt).getState() == S7ConnectionState.INITIAL) {
+        if (evt instanceof S7ConnectionEvent && ((S7ConnectionEvent) evt).getState() == S7ConnectionState.INITIAL) {
             logger.debug("ISO Transport Protocol Sending Connection Request");
             // Open the session on ISO Transport Protocol first.
             ConnectionRequestTpdu connectionRequest = new ConnectionRequestTpdu(
@@ -77,7 +77,7 @@ public class IsoTPProtocol extends MessageToMessageCodec<IsoOnTcpMessage, Tpdu>
     @Override
     protected void encode(ChannelHandlerContext ctx, Tpdu in, List<Object> out) throws Exception {
         logger.debug("ISO Transport Protocol Message sent");
-        
+
         if (in == null) {
             return;
         }
@@ -148,7 +148,7 @@ public class IsoTPProtocol extends MessageToMessageCodec<IsoOnTcpMessage, Tpdu>
 
     @Override
     protected void decode(ChannelHandlerContext ctx, IsoOnTcpMessage in, List<Object> out) throws Exception {
-        if(logger.isTraceEnabled()) {
+        if (logger.isTraceEnabled()) {
             logger.trace("Got Data: {}", ByteBufUtil.hexDump(in.getUserData()));
         }
         logger.debug("ISO TP Message received");
@@ -161,7 +161,7 @@ public class IsoTPProtocol extends MessageToMessageCodec<IsoOnTcpMessage, Tpdu>
         if (userData.writerIndex() < 1) {
             return;
         }
-        
+
         int packetStart = userData.readerIndex();
         byte headerLength = userData.readByte();
         int headerEnd = packetStart + headerLength;
@@ -203,8 +203,10 @@ public class IsoTPProtocol extends MessageToMessageCodec<IsoOnTcpMessage, Tpdu>
             // Save some of the information in the session and tell the next
             // layer to negotiate the connection parameters.
             if (tpdu instanceof ConnectionConfirmTpdu) {
-                calledTsapParameter = tpdu.getParameter(CalledTsapParameter.class);
-                tpduSizeParameter = tpdu.getParameter(TpduSizeParameter.class);
+                // TODO: check if null is a valid value (fails test: org.apache.plc4x.java.isotp.netty.IsoTPProtocolTest.decodeConnectionConfirm)
+                calledTsapParameter = tpdu.getParameter(CalledTsapParameter.class).orElse(null);
+                // TODO: check if null is a valid value (fails test: org.apache.plc4x.java.isotp.netty.IsoTPProtocolTest.decodeConnectionConfirm)
+                tpduSizeParameter = tpdu.getParameter(TpduSizeParameter.class).orElse(null);
             }
             out.add(new IsoTPMessage(tpdu, userData));
         }
@@ -254,7 +256,7 @@ public class IsoTPProtocol extends MessageToMessageCodec<IsoOnTcpMessage, Tpdu>
         } else { // TpduCode.CONNECTION_CONFIRM
             tpdu = new ConnectionConfirmTpdu(destinationReference, sourceReference, protocolClass, parameters, userData);
             ctx.channel().pipeline().fireUserEventTriggered(
-                    new S7ConnectionEvent(S7ConnectionState.ISO_TP_CONNECTION_RESPONSE_RECEIVED));
+                new S7ConnectionEvent(S7ConnectionState.ISO_TP_CONNECTION_RESPONSE_RECEIVED));
 
         }
         return tpdu;
@@ -264,7 +266,7 @@ public class IsoTPProtocol extends MessageToMessageCodec<IsoOnTcpMessage, Tpdu>
         if (parameters == null) {
             return;
         }
-        
+
         for (Parameter parameter : parameters) {
             out.writeByte(parameter.getType().getCode());
             out.writeByte((byte) (getParameterLength(parameter) - 2));
@@ -307,7 +309,7 @@ public class IsoTPProtocol extends MessageToMessageCodec<IsoOnTcpMessage, Tpdu>
         if (tpdu == null) {
             return 0;
         }
-        
+
         short headerLength;
         switch (tpdu.getTpduCode()) {
             case CONNECTION_REQUEST:
diff --git a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/isotp/netty/model/tpdus/Tpdu.java b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/isotp/netty/model/tpdus/Tpdu.java
index 92f8c78..08ca6a2 100644
--- a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/isotp/netty/model/tpdus/Tpdu.java
+++ b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/isotp/netty/model/tpdus/Tpdu.java
@@ -24,6 +24,7 @@ import org.apache.plc4x.java.isotp.netty.model.types.TpduCode;
 import org.apache.plc4x.java.netty.Message;
 
 import java.util.List;
+import java.util.Optional;
 
 public abstract class Tpdu extends Message {
 
@@ -44,15 +45,15 @@ public abstract class Tpdu extends Message {
         return parameters;
     }
 
-    public <T extends Parameter> T getParameter(Class<? extends T> parameterClass) {
+    public <T extends Parameter> Optional<T> getParameter(Class<T> parameterClass) {
         if (parameters != null) {
             for (Parameter parameter : parameters) {
                 if (parameter.getClass() == parameterClass) {
-                    return (T) parameter;
+                    return Optional.of(parameterClass.cast(parameter));
                 }
             }
         }
-        return null;
+        return Optional.empty();
     }
 
 }
diff --git 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
index 7b2aaa2..25cb635 100644
--- 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
@@ -142,7 +142,7 @@ public class Plc4XS7Protocol extends MessageToMessageCodec<S7Message, PlcRequest
                     PlcReadRequest plcReadRequest = (PlcReadRequest) requestContainer.getRequest();
 
                     List<ReadResponseItem<?>> responseItems = new LinkedList<>();
-                    VarPayload payload = responseMessage.getPayload(VarPayload.class);
+                    VarPayload payload = responseMessage.getPayload(VarPayload.class).get();
                     // If the numbers of items don't match, we're in big trouble as the only
                     // way to know how to interpret the responses is by aligning them with the
                     // items from the request as this information is not returned by the PLC.
@@ -185,7 +185,7 @@ public class Plc4XS7Protocol extends MessageToMessageCodec<S7Message, PlcRequest
                 else if (requestContainer.getRequest() instanceof PlcWriteRequest) {
                     PlcWriteRequest plcWriteRequest = (PlcWriteRequest) requestContainer.getRequest();
                     List<WriteResponseItem<?>> responseItems = new LinkedList<>();
-                    VarPayload payload = responseMessage.getPayload(VarPayload.class);
+                    VarPayload payload = responseMessage.getPayload(VarPayload.class).get();
                     // If the numbers of items don't match, we're in big trouble as the only
                     // way to know how to interpret the responses is by aligning them with the
                     // items from the request as this information is not returned by the PLC.
diff --git a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/model/messages/S7Message.java b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/model/messages/S7Message.java
index 89a71d8..214aed7 100644
--- a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/model/messages/S7Message.java
+++ b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/model/messages/S7Message.java
@@ -24,6 +24,7 @@ import org.apache.plc4x.java.s7.netty.model.payloads.S7Payload;
 import org.apache.plc4x.java.s7.netty.model.types.MessageType;
 
 import java.util.List;
+import java.util.Optional;
 
 public abstract class S7Message extends Message {
 
@@ -52,30 +53,30 @@ public abstract class S7Message extends Message {
         return parameters;
     }
 
-    public <T> T getParameter(Class<? extends T> parameterType) {
+    public <T> Optional<T> getParameter(Class<T> parameterType) {
         if (parameters != null) {
             for (S7Parameter s7Parameter : parameters) {
                 if (s7Parameter.getClass() == parameterType) {
-                    return (T) s7Parameter;
+                    return Optional.of(parameterType.cast(s7Parameter));
                 }
             }
         }
-        return null;
+        return Optional.empty();
     }
 
     public List<S7Payload> getPayloads() {
         return payloads;
     }
 
-    public <T> T getPayload(Class<? extends T> payloadType) {
+    public <T> Optional<T> getPayload(Class<T> payloadType) {
         if (payloads != null) {
             for (S7Payload s7Payload : payloads) {
                 if (s7Payload.getClass() == payloadType) {
-                    return (T) s7Payload;
+                    return Optional.of(payloadType.cast(s7Payload));
                 }
             }
         }
-        return null;
+        return Optional.empty();
     }
 
 }
\ No newline at end of file
diff --git a/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/isotp/netty/model/tpdus/IsotpModelTests.java b/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/isotp/netty/model/tpdus/IsotpModelTests.java
index 8cee347..8bebc6a 100644
--- a/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/isotp/netty/model/tpdus/IsotpModelTests.java
+++ b/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/isotp/netty/model/tpdus/IsotpModelTests.java
@@ -33,7 +33,7 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
-import static org.junit.jupiter.api.Assertions.*;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 class IsotpModelTests {
 
@@ -69,12 +69,12 @@ class IsotpModelTests {
         ErrorTpdu tpdu = new ErrorTpdu(destinationReference, rejectCause, parameters, userData);
 
         parameters.add(new TpduSizeParameter(TpduSize.SIZE_1024));
-        parameters.add(new ChecksumParameter((byte)0xFF));
+        parameters.add(new ChecksumParameter((byte) 0xFF));
 
         assertTrue(tpdu.getParameters().size() == 2, "Unexpected number of parameters");
         assertTrue(tpdu.getParameters().containsAll(parameters), "Unexpected parameter");
-        assertTrue(tpdu.getParameter(ChecksumParameter.class) != null, "Checksum parameter should exist");
-        assertTrue(tpdu.getParameter(CallingTsapParameter.class) == null, "CallingTsapParameter parameter should not exist");
+        assertTrue(tpdu.getParameter(ChecksumParameter.class).isPresent(), "Checksum parameter should exist");
+        assertTrue(!tpdu.getParameter(CallingTsapParameter.class).isPresent(), "CallingTsapParameter parameter should not exist");
     }
 
     @Test
diff --git a/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/model/messages/S7MessageTests.java b/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/model/messages/S7MessageTests.java
index 0294ccd..0959354 100644
--- a/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/model/messages/S7MessageTests.java
+++ b/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/model/messages/S7MessageTests.java
@@ -116,8 +116,8 @@ class S7MessageTests {
         assertTrue(message.getMessageType() == MessageType.USER_DATA, "Unexpected message type");
         assertTrue(message.getParameters().size() == 1, "Unexpected number of parameters");
         assertTrue(message.getParameters().containsAll(s7Parameters), "Unexpected parameters");
-        assertTrue(message.getParameter(VarParameter.class).equals(varParameter), "Parameter missing");
-        assertTrue(message.getParameter(CpuServicesParameter.class) == null, "Contains unexpected parameter");
+        assertTrue(message.getParameter(VarParameter.class).get().equals(varParameter), "Parameter missing");
+        assertTrue(!message.getParameter(CpuServicesParameter.class).isPresent(), "Contains unexpected parameter");
         assertTrue(message.getPayloads().size() == 0, "Unexpected number of payloads");
     }
 
@@ -143,8 +143,8 @@ class S7MessageTests {
         assertTrue(message.getMessageType() == MessageType.USER_DATA, "Unexpected message type");
         assertTrue(message.getPayloads().size() == 1, "Unexpected number of payloads");
         assertTrue(message.getPayloads().containsAll(s7Payloads), "Unexpected payloads");
-        assertTrue(message.getPayload(VarPayload.class).equals(varPayload), "Payload missing");
-        assertTrue(message.getPayload(VarParameter.class) == null, "Contains unexpected payload"); // No other parameter classes
+        assertTrue(message.getPayload(VarPayload.class).get().equals(varPayload), "Payload missing");
+        assertTrue(!message.getPayload(VarParameter.class).isPresent(), "Contains unexpected payload"); // No other parameter classes
         assertTrue(message.getParameters().size() == 0, "Unexpected number of parameters");
     }
 

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