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/05 14:55:34 UTC

[incubator-plc4x] branch refactoring/java_generify updated (fd66d1d -> 99fb948)

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 fd66d1d  added request build for convenient request creation.
     add 8ebeeef  PLC4X-21 - Code coverage doesn't seem to work
     add ef6084a  no need for abstract method as it's in base class and class is abstract
     add 641c99f  refactor and clean up switches
     add 63bba4d  clean up switch statements a little
     add f9d3fa1  no need for local variable
     add 02b8f57  unnneeded import
     add c4c9ac2  statics come first
     add 8917742  prefer parseInt to valueOf
     add c0c3bb1  local var had some name as field
     add 4166952  local var had some name as field
     add 4612ae3  if you don't return null to here's no need to check for it
     add 4619484  exception can't be throw
     add 125e630  no need for nested ifs
     add 708f563  Merge remote-tracking branch 'origin/master'
     add 4eadf74  PLC4X-21 - Code coverage doesn't seem to work
     add 08fc594  PLC4X-21 - Code coverage doesn't seem to work
     add d0adfde  PLC4X-21 - Code coverage doesn't seem to work
     add 0a22610  PLC4X-22: temporary disable camel BOM due to long build-time on site:site
     new 99fb948  Merge branch 'master' into refactoring/java_generify

The 1 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:
 Jenkinsfile                                        |   4 +-
 .../plc4x/java/applications/iotree/IoTree.java     |   2 +-
 .../java/applications/plclogger/PlcLogger.java     |   2 +-
 integrations/apache-camel/pom.xml                  |  23 +-
 .../apache/plc4x/edgent/PlcConnectionAdapter.java  |   6 +-
 .../java/api/connection/AbstractPlcConnection.java |   4 -
 .../PlcUsernamePasswordAuthenticationTest.java     |   0
 .../plc4x/java/api/messages/APIMessageTests.java   |   0
 .../plc4x/java/api/messages/mock/MockAddress.java  |   0
 .../plc4x/java/isotp/netty/IsoTPProtocol.java      | 251 ++++++++++++---------
 .../java/isotp/netty/model/types/DeviceGroup.java  |   4 +-
 .../isotp/netty/model/types/DisconnectReason.java  |   4 +-
 .../isotp/netty/model/types/ParameterCode.java     |   4 +-
 .../isotp/netty/model/types/ProtocolClass.java     |   4 +-
 .../java/isotp/netty/model/types/RejectCause.java  |   4 +-
 .../java/isotp/netty/model/types/TpduCode.java     |   4 +-
 .../java/isotp/netty/model/types/TpduSize.java     |   4 +-
 .../plc4x/java/s7/connection/S7PlcConnection.java  |   6 +-
 .../plc4x/java/s7/netty/Plc4XS7Protocol.java       |  11 +-
 .../org/apache/plc4x/java/s7/netty/S7Protocol.java | 165 +++++++-------
 .../netty/model/types/DataTransportErrorCode.java  |   4 +-
 .../s7/netty/model/types/DataTransportSize.java    |   4 +-
 .../java/s7/netty/model/types/MemoryArea.java      |   4 +-
 .../java/s7/netty/model/types/MessageType.java     |   4 +-
 .../java/s7/netty/model/types/ParameterType.java   |   4 +-
 .../s7/netty/model/types/SpecificationType.java    |   4 +-
 .../java/s7/netty/model/types/TransportSize.java   |   4 +-
 .../netty/model/types/VariableAddressingMode.java  |   4 +-
 pom.xml                                            | 227 +++++++++++--------
 ...ject.properties => sonar-project.properties.sav |   0
 30 files changed, 410 insertions(+), 351 deletions(-)
 rename plc4j/api/src/test/{ => java}/org/apache/plc4x/java/api/authentication/PlcUsernamePasswordAuthenticationTest.java (100%)
 rename plc4j/api/src/test/{ => java}/org/apache/plc4x/java/api/messages/APIMessageTests.java (100%)
 rename plc4j/api/src/test/{ => java}/org/apache/plc4x/java/api/messages/mock/MockAddress.java (100%)
 rename sonar-project.properties => sonar-project.properties.sav (100%)

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

[incubator-plc4x] 01/01: 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 99fb948b8fdfdeed791728a78f0d677dd884dbb4
Merge: fd66d1d 0a22610
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Fri Jan 5 15:55:09 2018 +0100

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

 Jenkinsfile                                        |   4 +-
 .../plc4x/java/applications/iotree/IoTree.java     |   2 +-
 .../java/applications/plclogger/PlcLogger.java     |   2 +-
 integrations/apache-camel/pom.xml                  |  23 +-
 .../apache/plc4x/edgent/PlcConnectionAdapter.java  |   6 +-
 .../java/api/connection/AbstractPlcConnection.java |   4 -
 .../PlcUsernamePasswordAuthenticationTest.java     |   0
 .../plc4x/java/api/messages/APIMessageTests.java   |   0
 .../plc4x/java/api/messages/mock/MockAddress.java  |   0
 .../plc4x/java/isotp/netty/IsoTPProtocol.java      | 251 ++++++++++++---------
 .../java/isotp/netty/model/types/DeviceGroup.java  |   4 +-
 .../isotp/netty/model/types/DisconnectReason.java  |   4 +-
 .../isotp/netty/model/types/ParameterCode.java     |   4 +-
 .../isotp/netty/model/types/ProtocolClass.java     |   4 +-
 .../java/isotp/netty/model/types/RejectCause.java  |   4 +-
 .../java/isotp/netty/model/types/TpduCode.java     |   4 +-
 .../java/isotp/netty/model/types/TpduSize.java     |   4 +-
 .../plc4x/java/s7/connection/S7PlcConnection.java  |   6 +-
 .../plc4x/java/s7/netty/Plc4XS7Protocol.java       |  11 +-
 .../org/apache/plc4x/java/s7/netty/S7Protocol.java | 165 +++++++-------
 .../netty/model/types/DataTransportErrorCode.java  |   4 +-
 .../s7/netty/model/types/DataTransportSize.java    |   4 +-
 .../java/s7/netty/model/types/MemoryArea.java      |   4 +-
 .../java/s7/netty/model/types/MessageType.java     |   4 +-
 .../java/s7/netty/model/types/ParameterType.java   |   4 +-
 .../s7/netty/model/types/SpecificationType.java    |   4 +-
 .../java/s7/netty/model/types/TransportSize.java   |   4 +-
 .../netty/model/types/VariableAddressingMode.java  |   4 +-
 pom.xml                                            | 227 +++++++++++--------
 ...ject.properties => sonar-project.properties.sav |   0
 30 files changed, 410 insertions(+), 351 deletions(-)

diff --cc integrations/apache-edgent/src/main/java/org/apache/plc4x/edgent/PlcConnectionAdapter.java
index 3021ed6,75bc9de..4dc14fe
--- a/integrations/apache-edgent/src/main/java/org/apache/plc4x/edgent/PlcConnectionAdapter.java
+++ b/integrations/apache-edgent/src/main/java/org/apache/plc4x/edgent/PlcConnectionAdapter.java
@@@ -72,125 -71,128 +72,123 @@@ public class PlcConnectionAdapter imple
     *   of read or write errors, my thinking is to enhance the PlcConnectionAdapter
     *   to enable the app to register an error callback handler or such.
     */
 -  
 -  public PlcConnectionAdapter(PlcConnection plcConnection) {
 -    this.plcConnection = plcConnection;
 -  }
 -  
 -  public PlcConnectionAdapter(String plcConnectionUrl) {
 -    this.plcConnectionUrl = plcConnectionUrl;
 -  }
 -  
 -  PlcConnection getConnection() throws PlcException {
 -    synchronized(this) {
 -      if (plcConnection == null) {
 -        plcConnection = new PlcDriverManager().getConnection(plcConnectionUrl);
 -      }
 -      return plcConnection;
 +
 +    public PlcConnectionAdapter(PlcConnection plcConnection) {
 +        this.plcConnection = plcConnection;
      }
 -  }
  
 -  @Override
 -  public void close() throws Exception {
 -    // only close a connection this instance created/connected
 -    if (plcConnectionUrl != null && plcConnection != null) {
 -      plcConnection.close();
 +    public PlcConnectionAdapter(String plcConnectionUrl) {
 +        this.plcConnectionUrl = plcConnectionUrl;
      }
 -  }
 -
 -  <T> Supplier<T> newSupplier(Class<T> datatype, String addressStr) {
 -    PlcConnectionAdapter.checkDatatype(datatype);
 -    return new Supplier<T>() {
 -      private static final long serialVersionUID = 1L;
 -
 -      @Override
 -      public T get() {
 -        PlcConnection connection = null;
 -        Address address = null;
 -        try {
 -          connection = getConnection();
 -          address = connection.parseAddress(addressStr);
 -          PlcReader reader = connection.getReader().get();
 -          PlcReadRequest readRequest = PlcConnectionAdapter.newPlcReadRequest(datatype, address);
 -          return (T) reader.read(readRequest).get().getResponseItems().get(0).getValues().get(0);
 -        }
 -        catch (Exception e) {
 -          logger.error("reading from plc device {} {} failed", connection, address, e);
 -          return null;
 -        }
 -      }
 -      
 -    };
 -  }
 -
 -  <T> Consumer<T> newConsumer(Class<T> datatype, String addressStr) {
 -    PlcConnectionAdapter.checkDatatype(datatype);
 -    return new Consumer<T>() {
 -      private static final long serialVersionUID = 1L;
 -
 -      @Override
 -      public void accept(T arg0) {
 -        PlcConnection connection = null;
 -        Address address = null;
 -        try {
 -          connection = getConnection();
 -          address = connection.parseAddress(addressStr);
 -          PlcWriter writer = connection.getWriter().get();
 -          PlcWriteRequest writeReq = PlcConnectionAdapter.newPlcWriteRequest(address, arg0);
 -          writer.write(writeReq).get();
 -        }
 -        catch (Exception e) {
 -          logger.error("writing to plc device {} {} failed", connection, address, e);
 -        }
 -      }
 -      
 -    };
 -  }
 -  
 -  <T> Consumer<JsonObject> newConsumer(Class<T> datatype, Function<JsonObject,String> addressFn, Function<JsonObject,T> valueFn) {
 -    PlcConnectionAdapter.checkDatatype(datatype);
 -    return new Consumer<JsonObject>() {
 -      private static final long serialVersionUID = 1L;
 -
 -      @Override
 -      public void accept(JsonObject jo) {
 -        PlcConnection connection = null;
 -        Address address = null;
 -        try {
 -          connection = getConnection();
 -          String addressStr = addressFn.apply(jo);
 -          address = connection.parseAddress(addressStr);
 -          T value = valueFn.apply(jo);
 -          PlcWriter writer = connection.getWriter().get();
 -          PlcWriteRequest writeReq = newPlcWriteRequest(address, value);
 -          writer.write(writeReq).get();
 +
 +    PlcConnection getConnection() throws PlcException {
 +        synchronized (this) {
 +            if (plcConnection == null) {
 +                plcConnection = new PlcDriverManager().getConnection(plcConnectionUrl);
 +            }
 +            return plcConnection;
          }
 -        catch (Exception e) {
 -          logger.error("writing to plc device {} {} failed", connection, address, e);
 +    }
 +
 +    @Override
 +    public void close() throws Exception {
 +        // only close a connection this instance created/connected
-         if (plcConnectionUrl != null) {
-             if (plcConnection != null)
-                 plcConnection.close();
++        if (plcConnectionUrl != null && plcConnection != null) {
++            plcConnection.close();
          }
 -      }
 -      
 -    };
 -  }
 -
 -  static void checkDatatype(Class<?> cls) {
 -    if (cls == Boolean.class
 -        || cls == Byte.class
 -        || cls == Short.class
 -        || cls == Integer.class
 -        || cls == Float.class
 -        || cls == String.class
 -        || cls == Calendar.class)
 -      return;
 -    throw new IllegalArgumentException("Not a legal plc data type: "+cls.getSimpleName());
 -  }
 -
 -  @SuppressWarnings("unchecked")
 -  static <T> PlcWriteRequest newPlcWriteRequest(Address address, T value) {
 -    Class<?> cls = value.getClass();
 -    return new PlcWriteRequest(cls, address, value);
 -  }
 -
 -  @SuppressWarnings("unchecked")
 -  static <T> PlcReadRequest newPlcReadRequest(Class<T> datatype, Address address) {
 -      return new PlcReadRequest(datatype, address);
 -  }
 +    }
 +
 +    <T> Supplier<T> newSupplier(Class<T> datatype, String addressStr) {
 +        PlcConnectionAdapter.checkDatatype(datatype);
 +        return new Supplier<T>() {
 +            private static final long serialVersionUID = 1L;
 +
 +            @Override
 +            public T get() {
 +                PlcConnection connection = null;
 +                Address address = null;
 +                try {
 +                    connection = getConnection();
 +                    address = connection.parseAddress(addressStr);
 +                    PlcReader reader = connection.getReader().get();
 +                    SinglePlcReadRequest<T> readRequest = PlcConnectionAdapter.newPlcReadRequest(datatype, address);
 +                    return reader.read(readRequest).get().getResponseItems().get(0).getValues().get(0);
 +                } catch (Exception e) {
 +                    logger.error("reading from plc device {} {} failed", connection, address, e);
 +                    return null;
 +                }
 +            }
- 
 +        };
 +    }
 +
 +    <T> Consumer<T> newConsumer(Class<T> datatype, String addressStr) {
 +        PlcConnectionAdapter.checkDatatype(datatype);
 +        return new Consumer<T>() {
 +            private static final long serialVersionUID = 1L;
 +
 +            @Override
 +            public void accept(T arg0) {
 +                PlcConnection connection = null;
 +                Address address = null;
 +                try {
 +                    connection = getConnection();
 +                    address = connection.parseAddress(addressStr);
 +                    PlcWriter writer = connection.getWriter().get();
 +                    PlcWriteRequest writeReq = PlcConnectionAdapter.newPlcWriteRequest(address, arg0);
 +                    writer.write(writeReq).get();
 +                } catch (Exception e) {
 +                    logger.error("writing to plc device {} {} failed", connection, address, e);
 +                }
 +            }
 +
 +        };
 +    }
 +
 +    <T> Consumer<JsonObject> newConsumer(Class<T> datatype, Function<JsonObject, String> addressFn, Function<JsonObject, T> valueFn) {
 +        PlcConnectionAdapter.checkDatatype(datatype);
 +        return new Consumer<JsonObject>() {
 +            private static final long serialVersionUID = 1L;
 +
 +            @Override
 +            public void accept(JsonObject jo) {
 +                PlcConnection connection = null;
 +                Address address = null;
 +                try {
 +                    connection = getConnection();
 +                    String addressStr = addressFn.apply(jo);
 +                    address = connection.parseAddress(addressStr);
 +                    T value = valueFn.apply(jo);
 +                    PlcWriter writer = connection.getWriter().get();
 +                    PlcWriteRequest writeReq = newPlcWriteRequest(address, value);
 +                    writer.write(writeReq).get();
 +                } catch (Exception e) {
 +                    logger.error("writing to plc device {} {} failed", connection, address, e);
 +                }
 +            }
 +
 +        };
 +    }
 +
 +    static void checkDatatype(Class<?> cls) {
 +        if (cls == Boolean.class
 +            || cls == Byte.class
 +            || cls == Short.class
 +            || cls == Integer.class
 +            || cls == Float.class
 +            || cls == String.class
 +            || cls == Calendar.class)
 +            return;
 +        throw new IllegalArgumentException("Not a legal plc data type: " + cls.getSimpleName());
 +    }
 +
 +    static <T> SinglePlcWriteRequest<T> newPlcWriteRequest(Address address, T value) {
 +        @SuppressWarnings("unchecked")
 +        Class<T> cls = (Class<T>) value.getClass();
 +        return new SinglePlcWriteRequest<>(cls, address, value);
 +    }
 +
 +    static <T> SinglePlcReadRequest<T> newPlcReadRequest(Class<T> datatype, Address address) {
 +        return new SinglePlcReadRequest<>(datatype, address);
 +    }
  
  }
diff --cc plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/Plc4XS7Protocol.java
index ab7bd37,6a75419..0118cc0
--- 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
@@@ -294,8 -286,8 +294,8 @@@ public class Plc4XS7Protocol extends Me
      }
  
      private byte[] encodeData(Object[] values) {
 -        if(values.length == 0) {
 +        if (values.length == 0) {
-             return null;
+             return new byte[]{};
          }
          byte[] result = null;
          Class valueType = values[0].getClass();
@@@ -362,22 -354,18 +362,19 @@@
          return ResponseCode.INTERNAL_ERROR;
      }
  
-     @SuppressWarnings("unchecked")
-     private <T> List<T> decodeData(Class<T> datatype, byte[] s7Data) throws PlcProtocolException {
-         if (s7Data.length == 0) {
-             return null;
-         }
 -    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;) {
 +        for (int i = 0; i < s7Data.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)));

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