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>.