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/08/16 12:29:02 UTC

[incubator-plc4x] branch master updated (73a3f42 -> 47ff4f0)

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

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


    from 73a3f42  moved PlcRequestContainer to driver-bases
     new ec3fb9f  added toString()/equals()/hashCode() to AdsSubscriptionHandle
     new 47ff4f0  added a immutability test to plc4j-api to track immutability

The 2 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:
 plc4j/api/pom.xml                                  |   6 ++
 .../api/messages/items/SubscriptionEventItem.java  |   6 +-
 .../items/SubscriptionRequestCyclicItem.java       |   4 +-
 .../messages/items/SubscriptionRequestItem.java    |   4 +-
 .../apache/plc4x/java/api/ImmutabilityTest.java    | 103 +++++++++++++++++++++
 .../java/ads/model/AdsSubscriptionHandle.java      |  25 +++++
 6 files changed, 141 insertions(+), 7 deletions(-)
 create mode 100644 plc4j/api/src/test/java/org/apache/plc4x/java/api/ImmutabilityTest.java


[incubator-plc4x] 02/02: added a immutability test to plc4j-api to track immutability

Posted by sr...@apache.org.
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 47ff4f0d1c29142c7cb306b159bc5fa24ae8e658
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Thu Aug 16 14:28:57 2018 +0200

    added a immutability test to plc4j-api to track immutability
---
 plc4j/api/pom.xml                                  |   6 ++
 .../api/messages/items/SubscriptionEventItem.java  |   6 +-
 .../items/SubscriptionRequestCyclicItem.java       |   4 +-
 .../messages/items/SubscriptionRequestItem.java    |   4 +-
 .../apache/plc4x/java/api/ImmutabilityTest.java    | 103 +++++++++++++++++++++
 5 files changed, 116 insertions(+), 7 deletions(-)

diff --git a/plc4j/api/pom.xml b/plc4j/api/pom.xml
index dbd5703..ac1484b 100644
--- a/plc4j/api/pom.xml
+++ b/plc4j/api/pom.xml
@@ -39,6 +39,12 @@
       <version>0.0.1-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.mutabilitydetector</groupId>
+      <artifactId>MutabilityDetector</artifactId>
+      <version>0.9.6</version>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 
 </project>
\ No newline at end of file
diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/SubscriptionEventItem.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/SubscriptionEventItem.java
index 60d95dc..5142d9a 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/SubscriptionEventItem.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/SubscriptionEventItem.java
@@ -24,9 +24,9 @@ import java.util.Objects;
 
 public class SubscriptionEventItem<T> {
 
-    private SubscriptionRequestItem<T> subscriptionRequestItem;
-    private Calendar timestamp;
-    private List<T> values;
+    private final SubscriptionRequestItem<T> subscriptionRequestItem;
+    private final Calendar timestamp;
+    private final List<T> values;
 
     public SubscriptionEventItem(SubscriptionRequestItem<T> subscriptionRequestItem, Calendar timestamp, List<T> values) {
         this.subscriptionRequestItem = subscriptionRequestItem;
diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/SubscriptionRequestCyclicItem.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/SubscriptionRequestCyclicItem.java
index 06f3a77..336d7b4 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/SubscriptionRequestCyclicItem.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/SubscriptionRequestCyclicItem.java
@@ -27,8 +27,8 @@ import java.util.function.Consumer;
 
 public class SubscriptionRequestCyclicItem<T> extends SubscriptionRequestItem<T> {
 
-    private TimeUnit timeUnit;
-    private int period;
+    private final TimeUnit timeUnit;
+    private final int period;
 
     public SubscriptionRequestCyclicItem(Class<T> dataType, Address address, TimeUnit timeUnit, int period, Consumer<SubscriptionEventItem<T>> consumer) {
         super(dataType, address, SubscriptionType.CYCLIC, consumer);
diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/SubscriptionRequestItem.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/SubscriptionRequestItem.java
index 0667073..a38d258 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/SubscriptionRequestItem.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/SubscriptionRequestItem.java
@@ -26,8 +26,8 @@ import java.util.function.Consumer;
 
 public abstract class SubscriptionRequestItem<T> extends RequestItem<T> {
 
-    private SubscriptionType subscriptionType;
-    private Consumer<SubscriptionEventItem<T>> consumer;
+    private final SubscriptionType subscriptionType;
+    private final Consumer<SubscriptionEventItem<T>> consumer;
 
     public SubscriptionRequestItem(Class<T> datatype, Address address, SubscriptionType subscriptionType, Consumer<SubscriptionEventItem<T>> consumer) {
         super(datatype, address);
diff --git a/plc4j/api/src/test/java/org/apache/plc4x/java/api/ImmutabilityTest.java b/plc4j/api/src/test/java/org/apache/plc4x/java/api/ImmutabilityTest.java
new file mode 100644
index 0000000..d6d60a8
--- /dev/null
+++ b/plc4j/api/src/test/java/org/apache/plc4x/java/api/ImmutabilityTest.java
@@ -0,0 +1,103 @@
+/*
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ */
+package org.apache.plc4x.java.api;
+
+import org.apache.plc4x.java.api.authentication.PlcUsernamePasswordAuthentication;
+import org.apache.plc4x.java.api.messages.*;
+import org.apache.plc4x.java.api.messages.items.*;
+import org.apache.plc4x.java.api.messages.specific.TypeSafePlcReadRequest;
+import org.apache.plc4x.java.api.messages.specific.TypeSafePlcReadResponse;
+import org.apache.plc4x.java.api.messages.specific.TypeSafePlcWriteRequest;
+import org.apache.plc4x.java.api.messages.specific.TypeSafePlcWriteResponse;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+import java.util.Collection;
+import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import static org.hamcrest.Matchers.hasItem;
+import static org.hamcrest.Matchers.not;
+import static org.junit.Assume.assumeThat;
+import static org.mutabilitydetector.unittesting.AllowedReason.allowingForSubclassing;
+import static org.mutabilitydetector.unittesting.MutabilityAssert.assertInstancesOf;
+import static org.mutabilitydetector.unittesting.MutabilityMatchers.areImmutable;
+
+@RunWith(Parameterized.class)
+public class ImmutabilityTest {
+
+    private static Set<Class<?>> NOT_YET_IMMUTABLE = Stream.of(
+        ReadResponseItem.class,
+        SubscriptionEventItem.class,
+        SubscriptionRequestCyclicItem.class,
+        SubscriptionRequestItem.class,
+        SubscriptionResponseItem.class,
+        UnsubscriptionRequestItem.class,
+        WriteRequestItem.class,
+        PlcProprietaryRequest.class,
+        PlcProprietaryResponse.class,
+        PlcSubscriptionEvent.class,
+        PlcUnsubscriptionRequest.class
+    ).collect(Collectors.toSet());
+
+    @Parameterized.Parameter
+    public Class<?> clazz;
+
+    @Parameterized.Parameters(name = "{index} {0}")
+    public static Collection<Object[]> data() {
+        return Stream.of(
+            PlcUsernamePasswordAuthentication.class,
+            ReadRequestItem.class,
+            ReadResponseItem.class,
+            SubscriptionEventItem.class,
+            SubscriptionRequestChangeOfStateItem.class,
+            SubscriptionRequestCyclicItem.class,
+            SubscriptionRequestEventItem.class,
+            SubscriptionRequestItem.class,
+            SubscriptionResponseItem.class,
+            UnsubscriptionRequestItem.class,
+            WriteRequestItem.class,
+            WriteResponseItem.class,
+            TypeSafePlcReadRequest.class,
+            TypeSafePlcReadResponse.class,
+            TypeSafePlcWriteRequest.class,
+            TypeSafePlcWriteResponse.class,
+            PlcProprietaryRequest.class,
+            PlcProprietaryResponse.class,
+            PlcSubscriptionEvent.class,
+            PlcSubscriptionRequest.class,
+            PlcSubscriptionResponse.class,
+            PlcUnsubscriptionRequest.class,
+            PlcUnsubscriptionResponse.class,
+            PlcWriteRequest.class,
+            PlcWriteResponse.class
+        ).map(aClass -> new Object[]{aClass})
+            .collect(Collectors.toList());
+    }
+
+    @Test
+    public void immutability() {
+        assumeThat(clazz + " not yet immutable", NOT_YET_IMMUTABLE, not(hasItem(clazz)));
+        assertInstancesOf(clazz,
+            areImmutable(),
+            allowingForSubclassing());
+    }
+}


[incubator-plc4x] 01/02: added toString()/equals()/hashCode() to AdsSubscriptionHandle

Posted by sr...@apache.org.
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 ec3fb9fe3f18b6256418d00e2e4e5dac383ee093
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Thu Aug 16 10:52:49 2018 +0200

    added toString()/equals()/hashCode() to AdsSubscriptionHandle
---
 .../java/ads/model/AdsSubscriptionHandle.java      | 25 ++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/model/AdsSubscriptionHandle.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/model/AdsSubscriptionHandle.java
index 2850fa9..69742cb 100644
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/model/AdsSubscriptionHandle.java
+++ b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/model/AdsSubscriptionHandle.java
@@ -21,6 +21,8 @@ package org.apache.plc4x.java.ads.model;
 import org.apache.plc4x.java.ads.api.commands.types.NotificationHandle;
 import org.apache.plc4x.java.api.model.SubscriptionHandle;
 
+import java.util.Objects;
+
 public class AdsSubscriptionHandle implements SubscriptionHandle {
 
     private NotificationHandle notificationHandle;
@@ -33,4 +35,27 @@ public class AdsSubscriptionHandle implements SubscriptionHandle {
         return notificationHandle;
     }
 
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) {
+            return true;
+        }
+        if (!(o instanceof AdsSubscriptionHandle)) {
+            return false;
+        }
+        AdsSubscriptionHandle that = (AdsSubscriptionHandle) o;
+        return Objects.equals(notificationHandle, that.notificationHandle);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(notificationHandle);
+    }
+
+    @Override
+    public String toString() {
+        return "AdsSubscriptionHandle{" +
+            "notificationHandle=" + notificationHandle +
+            '}';
+    }
 }