From 70eec7dee8170dce907b5cbc712171469ede1e8d Mon Sep 17 00:00:00 2001 From: Natalia Krzykala Date: Mon, 19 Aug 2024 11:05:01 +0200 Subject: [PATCH] GH-1504: Clean and Test custom equals() and hashcode() method --- leshan-lwm2m-bsserver/pom.xml | 4 + .../InMemoryBootstrapConfigStore.java | 39 ++--- .../InMemoryBootstrapConfigStoreTest.java | 27 ++++ leshan-lwm2m-client/pom.xml | 4 + .../leshan/client/servers/LwM2mServer.java | 50 +++---- .../client/servers/LwM2mServerTest.java | 27 ++++ .../java/org/eclipse/leshan/core/LwM2m.java | 78 +++++----- .../org/eclipse/leshan/core/ResponseCode.java | 31 ++-- .../leshan/core/endpoint/Protocol.java | 42 +++--- .../leshan/core/json/JsonArrayEntry.java | 72 +++------- .../leshan/core/json/JsonRootObject.java | 48 ++----- .../org/eclipse/leshan/core/link/Link.java | 40 ++---- .../core/link/attributes/AttributeSet.java | 45 +++--- .../core/link/attributes/BaseAttribute.java | 43 +++--- .../link/attributes/ValuelessAttribute.java | 32 ++--- .../core/link/lwm2m/MixedLwM2mLink.java | 45 +++--- .../link/lwm2m/attributes/LwM2mAttribute.java | 37 ++--- .../core/model/LwM2mModelRepository.java | 42 ++---- .../leshan/core/node/LwM2mIncompletePath.java | 4 + .../core/node/LwM2mMultipleResource.java | 47 +++--- .../eclipse/leshan/core/node/LwM2mObject.java | 38 ++--- .../leshan/core/node/LwM2mObjectInstance.java | 50 +++---- .../eclipse/leshan/core/node/LwM2mPath.java | 41 +++--- .../core/node/LwM2mResourceInstance.java | 8 +- .../eclipse/leshan/core/node/LwM2mRoot.java | 29 ++-- .../leshan/core/node/LwM2mSingleResource.java | 93 ++++++------ .../eclipse/leshan/core/node/ObjectLink.java | 29 ++-- .../core/node/TimestampedLwM2mNode.java | 35 ++--- .../core/node/TimestampedLwM2mNodes.java | 39 ++--- .../observation/CompositeObservation.java | 48 +++---- .../leshan/core/observation/Observation.java | 46 ++---- .../observation/ObservationIdentifier.java | 25 ++-- .../core/observation/SingleObservation.java | 42 +++--- .../leshan/core/oscore/AeadAlgorithm.java | 35 ++--- .../leshan/core/oscore/OscoreSetting.java | 50 ++----- .../org/eclipse/leshan/core/peer/IpPeer.java | 8 +- .../leshan/core/peer/OscoreIdentity.java | 24 ++-- .../eclipse/leshan/core/peer/PskIdentity.java | 17 +-- .../eclipse/leshan/core/peer/RpkIdentity.java | 17 +-- .../leshan/core/peer/SocketIdentity.java | 17 +-- .../leshan/core/peer/X509Identity.java | 16 +-- .../AbstractSimpleDownlinkRequest.java | 45 +++--- .../core/request/BootstrapDeleteRequest.java | 4 + .../request/BootstrapDiscoverRequest.java | 4 + .../core/request/BootstrapReadRequest.java | 33 ++--- .../leshan/core/request/BootstrapRequest.java | 47 +++--- .../core/request/BootstrapWriteRequest.java | 4 + .../request/CancelObservationRequest.java | 36 +++-- .../leshan/core/request/ContentFormat.java | 38 +++-- .../leshan/core/request/CreateRequest.java | 48 +++---- .../leshan/core/request/DeleteRequest.java | 4 + .../core/request/DeregisterRequest.java | 36 +++-- .../leshan/core/request/DiscoverRequest.java | 4 + .../leshan/core/request/ExecuteRequest.java | 36 +++-- .../core/request/ObserveCompositeRequest.java | 45 +++--- .../leshan/core/request/ObserveRequest.java | 32 ++--- .../core/request/ReadCompositeRequest.java | 48 +++---- .../leshan/core/request/ReadRequest.java | 33 ++--- .../leshan/core/request/RegisterRequest.java | 74 +++------- .../leshan/core/request/SendRequest.java | 40 ++---- .../leshan/core/request/UpdateRequest.java | 66 +++------ .../core/request/WriteAttributesRequest.java | 36 +++-- .../leshan/core/request/WriteRequest.java | 43 +++--- .../core/request/argument/Argument.java | 32 ++--- .../core/request/argument/Arguments.java | 41 +++--- .../java/org/eclipse/leshan/core/tlv/Tlv.java | 67 +++------ .../leshan/core/util/datatype/ULong.java | 30 ++-- .../org/eclipse/leshan/senml/SenMLPack.java | 29 ++-- .../org/eclipse/leshan/senml/SenMLRecord.java | 92 +++--------- .../org/eclipse/leshan/core/LwM2mTest.java | 45 ++++++ .../eclipse/leshan/core/ResponseCodeTest.java | 27 ++++ .../leshan/core/endpoint/ProtocolTest.java | 27 ++++ .../leshan/core/json/JsonArrayEntryTest.java | 29 ++++ .../leshan/core/json/JsonRootObjectTest.java | 29 ++++ .../eclipse/leshan/core/link/LinkTest.java | 28 ++++ .../leshan/core/link/MixedLwM2mLinkTest.java | 21 +++ .../link/attributes/AttributeSetTest.java | 19 +++ .../link/attributes/BaseAttributeTest.java | 45 ++++++ .../attributes/ValuelessAttributeTest.java | 27 ++++ .../lwm2m/attributes/LwM2mAttributeTest.java | 27 ++++ .../core/model/LwM2mModelRepositoryTest.java | 28 ++++ .../core/node/LwM2mMultipleResourceTest.java | 29 ++++ .../core/node/LwM2mObjectInstanceTest.java | 27 ++++ .../leshan/core/node/LwM2mObjectTest.java | 28 ++++ .../leshan/core/node/LwM2mPathTest.java | 5 +- .../core/node/LwM2mResourceInstanceTest.java | 27 ++++ .../leshan/core/node/LwM2mRootTest.java | 27 ++++ .../core/node/LwM2mSingleResourceTest.java | 27 ++++ .../leshan/core/node/ObjectLinkTest.java | 27 ++++ .../core/node/TimestampedLwM2mNodeTest.java | 27 ++++ .../core/node/TimestampedLwM2mNodesTest.java | 7 + .../observation/CompositeObservationTest.java | 48 +++++++ .../ObservationIdentifierTest.java | 27 ++++ .../observation/SingleObservationTest.java | 45 ++++++ .../leshan/core/oscore/AeadAlgorithmTest.java | 27 ++++ .../leshan/core/oscore/OscoreSettingTest.java | 27 ++++ .../eclipse/leshan/core/peer/IpPeerTest.java | 27 ++++ .../leshan/core/peer/OscoreIdentityTest.java | 27 ++++ .../leshan/core/peer/PskIdentityTest.java | 27 ++++ .../leshan/core/peer/RpkIdentityTest.java | 27 ++++ .../leshan/core/peer/SocketIdentityTest.java | 27 ++++ .../leshan/core/peer/X509IdentityTest.java | 27 ++++ .../AbstractSimpleDownlinkRequestTest.java | 52 +++++++ .../request/BootstrapReadRequestTest.java | 40 ++++++ .../core/request/BootstrapRequestTest.java | 41 ++++++ .../request/CancelObservationRequestTest.java | 43 ++++++ .../core/request/ContentFormatTest.java | 8 ++ .../core/request/CreateRequestTest.java | 43 ++++++ .../core/request/DeregisterRequestTest.java | 41 ++++++ .../core/request/ExecuteRequestTest.java | 43 ++++++ .../request/ObserveCompositeRequestTest.java | 45 ++++++ .../core/request/ObserveRequestTest.java | 40 ++++++ .../request/ReadCompositeRequestTest.java | 40 ++++++ .../leshan/core/request/ReadRequestTest.java | 40 ++++++ .../core/request/RegisterRequestTest.java | 48 +++++++ .../leshan/core/request/SendRequestTest.java | 19 +++ .../core/request/UpdateRequestTest.java | 47 ++++++ .../request/WriteAttributesRequestTest.java | 20 +++ .../leshan/core/request/WriteRequestTest.java | 47 ++++++ .../core/request/argument/ArgumentTest.java | 28 ++++ .../core/request/argument/ArgumentsTest.java | 7 + .../org/eclipse/leshan/core/tlv/TlvTest.java | 33 +++++ .../leshan/core/util/datatype/ULongTest.java | 27 ++++ .../eclipse/leshan/senml/SenMLPackTest.java | 28 ++++ .../eclipse/leshan/senml/SenMLRecordTest.java | 29 ++++ leshan-lwm2m-server/pom.xml | 4 + .../server/registration/Registration.java | 135 ++++-------------- .../registration/RegistrationUpdate.java | 46 +++--- .../server/registration/RegistrationTest.java | 7 + .../registration/RegistrationUpdateTest.java | 7 + leshan-lwm2m-servers-shared/pom.xml | 4 + .../leshan/servers/security/SecurityInfo.java | 68 +++------ .../servers/security/SecurityInfoTest.java | 27 ++++ leshan-tl-cf-server-coap/pom.xml | 4 + .../observation/ObservationServiceTest.java | 11 ++ leshan-tl-cf-shared-oscore/pom.xml | 4 + .../oscore/cf/OscoreParameters.java | 50 ++----- .../oscore/cf/OscoreParametersTest.java | 27 ++++ leshan-tl-jc-client-coap/pom.xml | 9 ++ .../client/observe/HashMapObserversStore.java | 22 ++- .../client/resource/RouterService.java | 13 +- .../observe/HashMapObserversStoreTest.java | 27 ++++ .../client/resource/RouterServiceTest.java | 28 ++++ 143 files changed, 2957 insertions(+), 1775 deletions(-) create mode 100644 leshan-lwm2m-bsserver/src/test/java/org/eclipse/leshan/bsserver/InMemoryBootstrapConfigStoreTest.java create mode 100644 leshan-lwm2m-client/src/test/java/org/eclipse/leshan/client/servers/LwM2mServerTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/LwM2mTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/ResponseCodeTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/endpoint/ProtocolTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/json/JsonArrayEntryTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/json/JsonRootObjectTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/link/LinkTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/link/attributes/BaseAttributeTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/link/attributes/ValuelessAttributeTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/link/lwm2m/attributes/LwM2mAttributeTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/model/LwM2mModelRepositoryTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/node/LwM2mMultipleResourceTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/node/LwM2mObjectInstanceTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/node/LwM2mObjectTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/node/LwM2mResourceInstanceTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/node/LwM2mRootTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/node/LwM2mSingleResourceTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/node/ObjectLinkTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/node/TimestampedLwM2mNodeTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/observation/CompositeObservationTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/observation/ObservationIdentifierTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/observation/SingleObservationTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/oscore/AeadAlgorithmTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/oscore/OscoreSettingTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/peer/IpPeerTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/peer/OscoreIdentityTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/peer/PskIdentityTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/peer/RpkIdentityTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/peer/SocketIdentityTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/peer/X509IdentityTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/AbstractSimpleDownlinkRequestTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/BootstrapReadRequestTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/BootstrapRequestTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/CancelObservationRequestTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/CreateRequestTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/DeregisterRequestTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/ExecuteRequestTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/ObserveCompositeRequestTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/ObserveRequestTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/ReadCompositeRequestTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/ReadRequestTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/RegisterRequestTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/UpdateRequestTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/WriteRequestTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/argument/ArgumentTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/tlv/TlvTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/util/datatype/ULongTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/senml/SenMLPackTest.java create mode 100644 leshan-lwm2m-core/src/test/java/org/eclipse/leshan/senml/SenMLRecordTest.java create mode 100644 leshan-lwm2m-servers-shared/src/test/java/org/eclipse/leshan/servers/security/SecurityInfoTest.java create mode 100644 leshan-tl-cf-shared-oscore/src/test/java/org/eclipse/leshan/transport/californium/oscore/cf/OscoreParametersTest.java create mode 100644 leshan-tl-jc-client-coap/src/test/java/org/eclipse/leshan/transport/javacoap/client/observe/HashMapObserversStoreTest.java create mode 100644 leshan-tl-jc-client-coap/src/test/java/org/eclipse/leshan/transport/javacoap/client/resource/RouterServiceTest.java diff --git a/leshan-lwm2m-bsserver/pom.xml b/leshan-lwm2m-bsserver/pom.xml index 51c6e7a3cc..76d16aa631 100644 --- a/leshan-lwm2m-bsserver/pom.xml +++ b/leshan-lwm2m-bsserver/pom.xml @@ -56,5 +56,9 @@ Contributors: logback-classic test + + nl.jqno.equalsverifier + equalsverifier + diff --git a/leshan-lwm2m-bsserver/src/main/java/org/eclipse/leshan/bsserver/InMemoryBootstrapConfigStore.java b/leshan-lwm2m-bsserver/src/main/java/org/eclipse/leshan/bsserver/InMemoryBootstrapConfigStore.java index 6732e94606..4d9f779c5b 100644 --- a/leshan-lwm2m-bsserver/src/main/java/org/eclipse/leshan/bsserver/InMemoryBootstrapConfigStore.java +++ b/leshan-lwm2m-bsserver/src/main/java/org/eclipse/leshan/bsserver/InMemoryBootstrapConfigStore.java @@ -18,6 +18,7 @@ import java.util.Collections; import java.util.Map; +import java.util.Objects; import java.util.concurrent.ConcurrentHashMap; import org.eclipse.leshan.bsserver.BootstrapConfig.ServerSecurity; @@ -104,8 +105,8 @@ public Map getAll() { } protected static class PskByServer { - public String serverUrl; - public String identity; + public final String serverUrl; + public final String identity; public PskByServer(String serverUrl, String identity) { this.serverUrl = serverUrl; @@ -113,34 +114,18 @@ public PskByServer(String serverUrl, String identity) { } @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((identity == null) ? 0 : identity.hashCode()); - result = prime * result + ((serverUrl == null) ? 0 : serverUrl.hashCode()); - return result; + public final boolean equals(Object o) { + if (this == o) + return true; + if (!(o instanceof PskByServer)) + return false; + PskByServer that = (PskByServer) o; + return Objects.equals(serverUrl, that.serverUrl) && Objects.equals(identity, that.identity); } @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - PskByServer other = (PskByServer) obj; - if (identity == null) { - if (other.identity != null) - return false; - } else if (!identity.equals(other.identity)) - return false; - if (serverUrl == null) { - if (other.serverUrl != null) - return false; - } else if (!serverUrl.equals(other.serverUrl)) - return false; - return true; + public final int hashCode() { + return Objects.hash(serverUrl, identity); } } } diff --git a/leshan-lwm2m-bsserver/src/test/java/org/eclipse/leshan/bsserver/InMemoryBootstrapConfigStoreTest.java b/leshan-lwm2m-bsserver/src/test/java/org/eclipse/leshan/bsserver/InMemoryBootstrapConfigStoreTest.java new file mode 100644 index 0000000000..cddab7d37d --- /dev/null +++ b/leshan-lwm2m-bsserver/src/test/java/org/eclipse/leshan/bsserver/InMemoryBootstrapConfigStoreTest.java @@ -0,0 +1,27 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.bsserver; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class InMemoryBootstrapConfigStoreTest { + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(InMemoryBootstrapConfigStore.PskByServer.class).verify(); + } +} diff --git a/leshan-lwm2m-client/pom.xml b/leshan-lwm2m-client/pom.xml index c9e3484e55..cdd1d5e58a 100644 --- a/leshan-lwm2m-client/pom.xml +++ b/leshan-lwm2m-client/pom.xml @@ -47,5 +47,9 @@ Contributors: junit-jupiter-engine test + + nl.jqno.equalsverifier + equalsverifier + diff --git a/leshan-lwm2m-client/src/main/java/org/eclipse/leshan/client/servers/LwM2mServer.java b/leshan-lwm2m-client/src/main/java/org/eclipse/leshan/client/servers/LwM2mServer.java index c63c59fa55..f6cf9c1822 100644 --- a/leshan-lwm2m-client/src/main/java/org/eclipse/leshan/client/servers/LwM2mServer.java +++ b/leshan-lwm2m-client/src/main/java/org/eclipse/leshan/client/servers/LwM2mServer.java @@ -16,6 +16,7 @@ package org.eclipse.leshan.client.servers; import java.net.URI; +import java.util.Objects; import org.eclipse.leshan.core.peer.LwM2mPeer; @@ -29,6 +30,22 @@ public class LwM2mServer { */ public final static LwM2mServer SYSTEM = new LwM2mServer(null, null, Role.SYSTEM, null); + @Override + public final boolean equals(Object o) { + if (this == o) + return true; + if (!(o instanceof LwM2mServer)) + return false; + LwM2mServer that = (LwM2mServer) o; + return Objects.equals(transportData, that.transportData) && Objects.equals(id, that.id) && role == that.role + && Objects.equals(uri, that.uri); + } + + @Override + public final int hashCode() { + return Objects.hash(transportData, id, role, uri); + } + public enum Role { /** * Indicate internal call. Enables the "system" to read protected resources (e.g. resources of the security @@ -125,37 +142,4 @@ public String toString() { return null; } - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((id == null) ? 0 : id.hashCode()); - result = prime * result + ((transportData == null) ? 0 : transportData.hashCode()); - result = prime * result + ((role == null) ? 0 : role.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - LwM2mServer other = (LwM2mServer) obj; - if (id == null) { - if (other.id != null) - return false; - } else if (!id.equals(other.id)) - return false; - if (transportData == null) { - if (other.transportData != null) - return false; - } else if (!transportData.equals(other.transportData)) - return false; - if (role != other.role) - return false; - return true; - } } diff --git a/leshan-lwm2m-client/src/test/java/org/eclipse/leshan/client/servers/LwM2mServerTest.java b/leshan-lwm2m-client/src/test/java/org/eclipse/leshan/client/servers/LwM2mServerTest.java new file mode 100644 index 0000000000..e298dc5526 --- /dev/null +++ b/leshan-lwm2m-client/src/test/java/org/eclipse/leshan/client/servers/LwM2mServerTest.java @@ -0,0 +1,27 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.client.servers; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class LwM2mServerTest { + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(LwM2mServer.class).verify(); + } +} diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/LwM2m.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/LwM2m.java index 1540765cc4..094c3ca491 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/LwM2m.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/LwM2m.java @@ -15,11 +15,14 @@ *******************************************************************************/ package org.eclipse.leshan.core; +import java.util.Objects; + public interface LwM2m { /** * Version of LWM2M specification. */ + public class LwM2mVersion extends Version { public static final LwM2mVersion V1_0 = new LwM2mVersion("1.0", true); @@ -64,25 +67,24 @@ public static LwM2mVersion lastSupported() { } @Override - public int hashCode() { - final int prime = 31; - int result = super.hashCode(); - result = prime * result + (supported ? 1231 : 1237); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) + public boolean equals(Object o) { + if (this == o) return true; - if (!super.equals(obj)) - return false; - if (getClass() != obj.getClass()) + if (!(o instanceof LwM2mVersion)) return false; - LwM2mVersion other = (LwM2mVersion) obj; - if (supported != other.supported) + if (!super.equals(o)) return false; - return true; + LwM2mVersion that = (LwM2mVersion) o; + return that.canEqual(this) && supported == that.supported; + } + + public boolean canEqual(Object o) { + return (o instanceof LwM2mVersion); + } + + @Override + public int hashCode() { + return Objects.hash(super.hashCode(), supported); } } @@ -168,31 +170,6 @@ public static String validate(String version) { return null; } - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + major; - result = prime * result + minor; - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - Version other = (Version) obj; - if (major != other.major) - return false; - if (minor != other.minor) - return false; - return true; - } - @Override public int compareTo(Version other) { if (major != other.major) @@ -211,6 +188,25 @@ public boolean olderThan(Version version) { public boolean newerThan(String version) { return newerThan(new Version(version)); } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (!(o instanceof Version)) + return false; + Version that = (Version) o; + return that.canEqual(this) && major == that.major && minor == that.minor; + } + + public boolean canEqual(Object o) { + return (o instanceof Version); + } + + @Override + public int hashCode() { + return Objects.hash(major, minor); + } } /** The default CoAP port for unsecured CoAP communication */ diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/ResponseCode.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/ResponseCode.java index d7dc12724b..b0b731a2b6 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/ResponseCode.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/ResponseCode.java @@ -15,6 +15,8 @@ *******************************************************************************/ package org.eclipse.leshan.core; +import java.util.Objects; + import org.eclipse.leshan.core.util.Validate; /** @@ -84,8 +86,8 @@ public class ResponseCode { REQUEST_ENTITY_INCOMPLETE, PRECONDITION_FAILED, REQUEST_ENTITY_TOO_LARGE, UNSUPPORTED_CONTENT_FORMAT, INTERNAL_SERVER_ERROR }; - private int code; - private String name; + private final int code; + private final String name; public ResponseCode(int code, String name) { Validate.notNull(name); @@ -145,24 +147,17 @@ public String toString() { } @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + code; - return result; + public final boolean equals(Object o) { + if (this == o) + return true; + if (!(o instanceof ResponseCode)) + return false; + ResponseCode that = (ResponseCode) o; + return code == that.code; } @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - ResponseCode other = (ResponseCode) obj; - if (code != other.code) - return false; - return true; + public final int hashCode() { + return Objects.hash(code); } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/endpoint/Protocol.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/endpoint/Protocol.java index c7c3c3aa14..dbb28df447 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/endpoint/Protocol.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/endpoint/Protocol.java @@ -15,6 +15,8 @@ *******************************************************************************/ package org.eclipse.leshan.core.endpoint; +import java.util.Objects; + public class Protocol { public static final Protocol COAP = new Protocol("COAP", "coap"); @@ -41,31 +43,6 @@ public String getUriScheme() { return uriScheme; } - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((name == null) ? 0 : name.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - Protocol other = (Protocol) obj; - if (name == null) { - if (other.name != null) - return false; - } else if (!name.equals(other.name)) - return false; - return true; - } - @Override public String toString() { return getName(); @@ -79,4 +56,19 @@ public static Protocol fromUri(String uri) { } return null; } + + @Override + public final boolean equals(Object o) { + if (this == o) + return true; + if (!(o instanceof Protocol)) + return false; + Protocol protocol = (Protocol) o; + return Objects.equals(name, protocol.name); + } + + @Override + public final int hashCode() { + return Objects.hashCode(name); + } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/json/JsonArrayEntry.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/json/JsonArrayEntry.java index 304674378d..f8b71e9858 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/json/JsonArrayEntry.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/json/JsonArrayEntry.java @@ -18,6 +18,7 @@ package org.eclipse.leshan.core.json; import java.math.BigDecimal; +import java.util.Objects; import org.eclipse.leshan.core.model.ResourceModel; import org.eclipse.leshan.core.model.ResourceModel.Type; @@ -118,65 +119,32 @@ public Object getResourceValue() { } @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((booleanValue == null) ? 0 : booleanValue.hashCode()); - result = prime * result + ((floatValue == null) ? 0 : floatValue.hashCode()); - result = prime * result + ((name == null) ? 0 : name.hashCode()); - result = prime * result + ((objectLinkValue == null) ? 0 : objectLinkValue.hashCode()); - result = prime * result + ((stringValue == null) ? 0 : stringValue.hashCode()); - result = prime * result + ((time == null) ? 0 : time.hashCode()); - return result; + public String toString() { + return String.format( + "JsonArrayEntry [name=%s, floatValue=%s, booleanValue=%s, objectLinkValue=%s, stringValue=%s, time=%s]", + name, floatValue, booleanValue, objectLinkValue, stringValue, time); } @Override - public boolean equals(Object obj) { - if (this == obj) + public final boolean equals(Object o) { + if (this == o) return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - JsonArrayEntry other = (JsonArrayEntry) obj; - if (booleanValue == null) { - if (other.booleanValue != null) - return false; - } else if (!booleanValue.equals(other.booleanValue)) - return false; - if (floatValue == null) { - if (other.floatValue != null) - return false; - } else if (!floatValue.equals(other.floatValue)) - return false; - if (name == null) { - if (other.name != null) - return false; - } else if (!name.equals(other.name)) - return false; - if (objectLinkValue == null) { - if (other.objectLinkValue != null) - return false; - } else if (!objectLinkValue.equals(other.objectLinkValue)) + if (!(o instanceof JsonArrayEntry)) return false; - if (stringValue == null) { - if (other.stringValue != null) - return false; - } else if (!stringValue.equals(other.stringValue)) - return false; - if (time == null) { - if (other.time != null) - return false; - } else if (!time.equals(other.time)) - return false; - return true; + JsonArrayEntry that = (JsonArrayEntry) o; + + boolean comparablyEqual = (time == null && that.time == null) + || (time != null && that.time != null && time.compareTo(that.time) == 0); + + return Objects.equals(name, that.name) && Objects.equals(floatValue, that.floatValue) + && Objects.equals(booleanValue, that.booleanValue) + && Objects.equals(objectLinkValue, that.objectLinkValue) + && Objects.equals(stringValue, that.stringValue) && comparablyEqual; } @Override - public String toString() { - return String.format( - "JsonArrayEntry [name=%s, floatValue=%s, booleanValue=%s, objectLinkValue=%s, stringValue=%s, time=%s]", - name, floatValue, booleanValue, objectLinkValue, stringValue, time); + public final int hashCode() { + return Objects.hash(name, floatValue, booleanValue, objectLinkValue, stringValue, + time != null ? time.stripTrailingZeros() : null); } - } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/json/JsonRootObject.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/json/JsonRootObject.java index b49312d188..6a5eeed7d9 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/json/JsonRootObject.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/json/JsonRootObject.java @@ -20,6 +20,7 @@ import java.math.BigDecimal; import java.util.Collections; import java.util.List; +import java.util.Objects; /** * The class representing the JSON format of LWM2M @@ -62,46 +63,27 @@ public List getResourceList() { } @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((baseName == null) ? 0 : baseName.hashCode()); - result = prime * result + ((baseTime == null) ? 0 : baseTime.hashCode()); - result = prime * result + ((jsonArray == null) ? 0 : jsonArray.hashCode()); - return result; + public String toString() { + return String.format("LwM2mJsonElement [baseName=%s, baseTime=%s, resourceList=%s]", baseName, baseTime, + jsonArray); } @Override - public boolean equals(Object obj) { - if (this == obj) + public final boolean equals(Object o) { + if (this == o) return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - JsonRootObject other = (JsonRootObject) obj; - if (baseName == null) { - if (other.baseName != null) - return false; - } else if (!baseName.equals(other.baseName)) - return false; - if (baseTime == null) { - if (other.baseTime != null) - return false; - } else if (!baseTime.equals(other.baseTime)) - return false; - if (jsonArray == null) { - if (other.jsonArray != null) - return false; - } else if (!jsonArray.equals(other.jsonArray)) + if (!(o instanceof JsonRootObject)) return false; - return true; + JsonRootObject that = (JsonRootObject) o; + + boolean comparablyEqual = (baseTime == null && that.baseTime == null) + || (baseTime != null && that.baseTime != null && baseTime.compareTo(that.baseTime) == 0); + + return Objects.equals(baseName, that.baseName) && Objects.equals(jsonArray, that.jsonArray) && comparablyEqual; } @Override - public String toString() { - return String.format("LwM2mJsonElement [baseName=%s, baseTime=%s, resourceList=%s]", baseName, baseTime, - jsonArray); + public final int hashCode() { + return Objects.hash(baseName, jsonArray, baseTime != null ? baseTime.stripTrailingZeros() : null); } - } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/link/Link.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/link/Link.java index 90063e362c..9109fd8050 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/link/Link.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/link/Link.java @@ -17,6 +17,7 @@ package org.eclipse.leshan.core.link; import java.util.Collection; +import java.util.Objects; import org.eclipse.leshan.core.link.attributes.Attribute; import org.eclipse.leshan.core.link.attributes.AttributeSet; @@ -119,33 +120,22 @@ public String toCoreLinkFormat() { } @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((attributes == null) ? 0 : attributes.hashCode()); - result = prime * result + ((uriReference == null) ? 0 : uriReference.hashCode()); - return result; + public boolean equals(Object o) { + if (this == o) + return true; + if (!(o instanceof Link)) + return false; + Link that = (Link) o; + return that.canEqual(this) && Objects.equals(uriReference, that.uriReference) + && Objects.equals(attributes, that.attributes); + } + + public boolean canEqual(Object o) { + return (o instanceof Link); } @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - Link other = (Link) obj; - if (attributes == null) { - if (other.attributes != null) - return false; - } else if (!attributes.equals(other.attributes)) - return false; - if (uriReference == null) { - if (other.uriReference != null) - return false; - } else if (!uriReference.equals(other.uriReference)) - return false; - return true; + public int hashCode() { + return Objects.hash(uriReference, attributes); } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/link/attributes/AttributeSet.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/link/attributes/AttributeSet.java index 00b0241191..913daabc75 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/link/attributes/AttributeSet.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/link/attributes/AttributeSet.java @@ -20,6 +20,7 @@ import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; +import java.util.Objects; /** * A set of {@link Attribute} @@ -72,31 +73,6 @@ public Iterator iterator() { return attributes.values().iterator(); } - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((attributes == null) ? 0 : attributes.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - AttributeSet other = (AttributeSet) obj; - if (attributes == null) { - if (other.attributes != null) - return false; - } else if (!attributes.equals(other.attributes)) - return false; - return true; - } - @Override public String toString() { StringBuilder builder = new StringBuilder(); @@ -119,4 +95,23 @@ public String toCoreLinkFormat() { } return builder.toString(); } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (!(o instanceof AttributeSet)) + return false; + AttributeSet that = (AttributeSet) o; + return that.canEqual(this) && Objects.equals(attributes, that.attributes); + } + + public boolean canEqual(Object o) { + return (o instanceof AttributeSet); + } + + @Override + public int hashCode() { + return Objects.hashCode(attributes); + } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/link/attributes/BaseAttribute.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/link/attributes/BaseAttribute.java index 67cf6cc8f6..1f1a611502 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/link/attributes/BaseAttribute.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/link/attributes/BaseAttribute.java @@ -15,6 +15,7 @@ *******************************************************************************/ package org.eclipse.leshan.core.link.attributes; +import java.util.Objects; import java.util.regex.Pattern; import org.eclipse.leshan.core.util.Validate; @@ -26,8 +27,8 @@ public abstract class BaseAttribute implements Attribute { private static final Pattern parnamePattern = Pattern.compile("[!#$&+\\-.^_`|~a-zA-Z0-9]+"); - private String name; - private Object value; + private final String name; + private final Object value; public BaseAttribute(String name, Object value, boolean validate) { this.name = name; @@ -66,38 +67,26 @@ public String toCoreLinkFormat() { } @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((name == null) ? 0 : name.hashCode()); - result = prime * result + ((value == null) ? 0 : value.hashCode()); - return result; + public String toString() { + return String.format("%s=%s", name, value); } @Override - public boolean equals(Object obj) { - if (this == obj) + public boolean equals(Object o) { + if (this == o) return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - BaseAttribute other = (BaseAttribute) obj; - if (name == null) { - if (other.name != null) - return false; - } else if (!name.equals(other.name)) - return false; - if (value == null) { - if (other.value != null) - return false; - } else if (!value.equals(other.value)) + if (!(o instanceof BaseAttribute)) return false; - return true; + BaseAttribute that = (BaseAttribute) o; + return that.canEqual(this) && Objects.equals(name, that.name) && Objects.equals(value, that.value); + } + + public boolean canEqual(Object o) { + return (o instanceof BaseAttribute); } @Override - public String toString() { - return String.format("%s=%s", name, value); + public int hashCode() { + return Objects.hash(name, value); } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/link/attributes/ValuelessAttribute.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/link/attributes/ValuelessAttribute.java index b8f2400f81..5a72f120c0 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/link/attributes/ValuelessAttribute.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/link/attributes/ValuelessAttribute.java @@ -15,6 +15,8 @@ *******************************************************************************/ package org.eclipse.leshan.core.link.attributes; +import java.util.Objects; + import org.eclipse.leshan.core.util.Validate; /** @@ -22,7 +24,7 @@ */ public class ValuelessAttribute implements Attribute { - private String name; + private final String name; public ValuelessAttribute(String name) { Validate.notNull(name); @@ -60,27 +62,17 @@ public String toCoreLinkFormat() { } @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((name == null) ? 0 : name.hashCode()); - return result; + public final boolean equals(Object o) { + if (this == o) + return true; + if (!(o instanceof ValuelessAttribute)) + return false; + ValuelessAttribute that = (ValuelessAttribute) o; + return Objects.equals(name, that.name); } @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - ValuelessAttribute other = (ValuelessAttribute) obj; - if (name == null) { - if (other.name != null) - return false; - } else if (!name.equals(other.name)) - return false; - return true; + public final int hashCode() { + return Objects.hashCode(name); } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/link/lwm2m/MixedLwM2mLink.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/link/lwm2m/MixedLwM2mLink.java index 597b4b404f..6ab41c8633 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/link/lwm2m/MixedLwM2mLink.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/link/lwm2m/MixedLwM2mLink.java @@ -16,6 +16,7 @@ package org.eclipse.leshan.core.link.lwm2m; import java.util.Collection; +import java.util.Objects; import org.eclipse.leshan.core.link.Link; import org.eclipse.leshan.core.link.attributes.Attribute; @@ -31,8 +32,8 @@ */ public class MixedLwM2mLink extends Link { - private LwM2mPath path; - private String rootPath; + private final LwM2mPath path; + private final String rootPath; public MixedLwM2mLink(String rootPath, LwM2mPath path, Attribute... attributes) { this(rootPath, path, new MixedLwM2mAttributeSet(attributes)); @@ -78,33 +79,23 @@ public MixedLwM2mAttributeSet getAttributes() { } @Override - public int hashCode() { - final int prime = 31; - int result = super.hashCode(); - result = prime * result + ((path == null) ? 0 : path.hashCode()); - result = prime * result + ((rootPath == null) ? 0 : rootPath.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) + public boolean equals(Object o) { + if (this == o) return true; - if (!super.equals(obj)) - return false; - if (getClass() != obj.getClass()) - return false; - MixedLwM2mLink other = (MixedLwM2mLink) obj; - if (path == null) { - if (other.path != null) - return false; - } else if (!path.equals(other.path)) + if (!(o instanceof MixedLwM2mLink)) return false; - if (rootPath == null) { - if (other.rootPath != null) - return false; - } else if (!rootPath.equals(other.rootPath)) + if (!super.equals(o)) return false; - return true; + MixedLwM2mLink that = (MixedLwM2mLink) o; + return that.canEqual(this) && Objects.equals(path, that.path) && Objects.equals(rootPath, that.rootPath); + } + + public boolean canEqual(Object o) { + return (o instanceof MixedLwM2mLink); + } + + @Override + public int hashCode() { + return Objects.hash(super.hashCode(), path, rootPath); } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/link/lwm2m/attributes/LwM2mAttribute.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/link/lwm2m/attributes/LwM2mAttribute.java index 733556471c..3f49434e00 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/link/lwm2m/attributes/LwM2mAttribute.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/link/lwm2m/attributes/LwM2mAttribute.java @@ -16,6 +16,8 @@ *******************************************************************************/ package org.eclipse.leshan.core.link.lwm2m.attributes; +import java.util.Objects; + import org.eclipse.leshan.core.link.attributes.Attribute; import org.eclipse.leshan.core.util.Validate; @@ -135,34 +137,17 @@ public boolean canBeAttachedTo(Attachment attachement) { } @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((model == null) ? 0 : model.hashCode()); - result = prime * result + ((value == null) ? 0 : value.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) + public final boolean equals(Object o) { + if (this == o) return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) + if (!(o instanceof LwM2mAttribute)) return false; - LwM2mAttribute other = (LwM2mAttribute) obj; - if (model == null) { - if (other.model != null) - return false; - } else if (!model.equals(other.model)) - return false; - if (value == null) { - if (other.value != null) - return false; - } else if (!value.equals(other.value)) - return false; - return true; + LwM2mAttribute that = (LwM2mAttribute) o; + return Objects.equals(model, that.model) && Objects.equals(value, that.value); } + @Override + public final int hashCode() { + return Objects.hash(model, value); + } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/model/LwM2mModelRepository.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/model/LwM2mModelRepository.java index 308eb2681b..43a070623b 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/model/LwM2mModelRepository.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/model/LwM2mModelRepository.java @@ -18,6 +18,7 @@ import java.util.Arrays; import java.util.Collection; import java.util.NavigableMap; +import java.util.Objects; import java.util.TreeMap; import org.eclipse.leshan.core.LwM2m.Version; @@ -33,9 +34,9 @@ public class LwM2mModelRepository { private static final Logger LOG = LoggerFactory.getLogger(LwM2mModelRepository.class); - private static class Key implements Comparable { - Integer id; - Version version; + static class Key implements Comparable { + final Integer id; + final Version version; public Key(Integer id, Version version) { this.id = id; @@ -60,41 +61,24 @@ public int compareTo(Key o) { } @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((id == null) ? 0 : id.hashCode()); - result = prime * result + ((version == null) ? 0 : version.hashCode()); - return result; + public String toString() { + return String.format("key[%s/%s]", id, version); } @Override - public boolean equals(Object obj) { - if (this == obj) + public final boolean equals(Object o) { + if (this == o) return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - Key other = (Key) obj; - if (id == null) { - if (other.id != null) - return false; - } else if (!id.equals(other.id)) + if (!(o instanceof Key)) return false; - if (version == null) { - if (other.version != null) - return false; - } else if (!version.equals(other.version)) - return false; - return true; + Key that = (Key) o; + return Objects.equals(id, that.id) && Objects.equals(version, that.version); } @Override - public String toString() { - return String.format("key[%s/%s]", id, version); + public final int hashCode() { + return Objects.hash(id, version); } - } // This map contains all the object models available. Different version could be used. diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/LwM2mIncompletePath.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/LwM2mIncompletePath.java index 82a6679cac..0d367abcf6 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/LwM2mIncompletePath.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/LwM2mIncompletePath.java @@ -114,4 +114,8 @@ public String toString() { } return b.toString(); } + + public boolean canEqual(Object o) { + return (o instanceof LwM2mIncompletePath); + } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/LwM2mMultipleResource.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/LwM2mMultipleResource.java index 00f6c2a555..b9fb2abced 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/LwM2mMultipleResource.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/LwM2mMultipleResource.java @@ -23,6 +23,7 @@ import java.util.Map; import java.util.Map.Entry; import java.util.NoSuchElementException; +import java.util.Objects; import java.util.TreeMap; import org.eclipse.leshan.core.link.Link; @@ -226,37 +227,6 @@ public void accept(LwM2mNodeVisitor visitor) { visitor.visit(this); } - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + id; - result = prime * result + ((type == null) ? 0 : type.hashCode()); - result = prime * result + ((instances == null) ? 0 : instances.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - LwM2mMultipleResource other = (LwM2mMultipleResource) obj; - if (id != other.id) - return false; - if (type != other.type) - return false; - if (instances == null) { - if (other.instances != null) - return false; - } else if (!instances.equals(other.instances)) - return false; - return true; - } - @Override public String toString() { return String.format("LwM2mMultipleResource [id=%s, values=%s, type=%s]", id, instances, type); @@ -289,4 +259,19 @@ public StringBuilder appendPrettyNode(StringBuilder b, LwM2mPath path) { } return b; } + + @Override + public final boolean equals(Object o) { + if (this == o) + return true; + if (!(o instanceof LwM2mMultipleResource)) + return false; + LwM2mMultipleResource that = (LwM2mMultipleResource) o; + return id == that.id && Objects.equals(instances, that.instances) && type == that.type; + } + + @Override + public final int hashCode() { + return Objects.hash(id, instances, type); + } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/LwM2mObject.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/LwM2mObject.java index 9394475c95..953bcc5ec5 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/LwM2mObject.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/LwM2mObject.java @@ -21,6 +21,7 @@ import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; +import java.util.Objects; import java.util.TreeMap; /** @@ -119,37 +120,18 @@ public StringBuilder appendPrettyNode(StringBuilder b, LwM2mPath path) { } @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + id; - result = prime * result + ((instances == null) ? 0 : instances.hashCode()); - return result; + public final boolean equals(Object o) { + if (this == o) + return true; + if (!(o instanceof LwM2mObject)) + return false; + LwM2mObject that = (LwM2mObject) o; + return id == that.id && Objects.equals(instances, that.instances); } @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (getClass() != obj.getClass()) { - return false; - } - LwM2mObject other = (LwM2mObject) obj; - if (id != other.id) { - return false; - } - if (instances == null) { - if (other.instances != null) { - return false; - } - } else if (!instances.equals(other.instances)) { - return false; - } - return true; + public final int hashCode() { + return Objects.hash(id, instances); } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/LwM2mObjectInstance.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/LwM2mObjectInstance.java index fac283b711..6a30ef901e 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/LwM2mObjectInstance.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/LwM2mObjectInstance.java @@ -21,6 +21,7 @@ import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; +import java.util.Objects; import java.util.TreeMap; import org.eclipse.leshan.core.node.codec.tlv.LwM2mNodeTlvDecoder; @@ -119,40 +120,6 @@ public String prettyPrint() { return builder.toString(); } - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + id; - result = prime * result + ((resources == null) ? 0 : resources.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (getClass() != obj.getClass()) { - return false; - } - LwM2mObjectInstance other = (LwM2mObjectInstance) obj; - if (id != other.id) { - return false; - } - if (resources == null) { - if (other.resources != null) { - return false; - } - } else if (!resources.equals(other.resources)) { - return false; - } - return true; - } - @Override public String toPrettyString(LwM2mPath path) { return appendPrettyNode(new StringBuilder(), path).toString(); @@ -180,4 +147,19 @@ public StringBuilder appendPrettyNode(StringBuilder b, LwM2mPath path) { } return b; } + + @Override + public final boolean equals(Object o) { + if (this == o) + return true; + if (!(o instanceof LwM2mObjectInstance)) + return false; + LwM2mObjectInstance that = (LwM2mObjectInstance) o; + return id == that.id && Objects.equals(resources, that.resources); + } + + @Override + public final int hashCode() { + return Objects.hash(id, resources); + } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/LwM2mPath.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/LwM2mPath.java index 4bfc0a3b3f..991b98e9c9 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/LwM2mPath.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/LwM2mPath.java @@ -379,25 +379,6 @@ public String toString() { return b.toString(); } - @Override - public int hashCode() { - return Objects.hash(objectId, objectInstanceId, resourceId, resourceInstanceId); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - LwM2mPath other = (LwM2mPath) obj; - return Objects.equals(objectId, other.objectId) && Objects.equals(objectInstanceId, other.objectInstanceId) - && Objects.equals(resourceId, other.resourceId) - && Objects.equals(resourceInstanceId, other.resourceInstanceId); - } - @Override public int compareTo(LwM2mPath o) { int res = compareInteger(this.objectId, o.objectId); @@ -489,4 +470,26 @@ public static void validateNotOverlapping(List paths) { } } } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (!(o instanceof LwM2mPath)) + return false; + LwM2mPath that = (LwM2mPath) o; + return that.canEqual(this) && Objects.equals(objectId, that.objectId) + && Objects.equals(objectInstanceId, that.objectInstanceId) + && Objects.equals(resourceId, that.resourceId) + && Objects.equals(resourceInstanceId, that.resourceInstanceId); + } + + public boolean canEqual(Object o) { + return (o instanceof LwM2mPath); + } + + @Override + public int hashCode() { + return Objects.hash(objectId, objectInstanceId, resourceId, resourceInstanceId); + } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/LwM2mResourceInstance.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/LwM2mResourceInstance.java index 4522af31de..caa1b8f6ce 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/LwM2mResourceInstance.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/LwM2mResourceInstance.java @@ -182,7 +182,7 @@ public void accept(LwM2mNodeVisitor visitor) { } @Override - public int hashCode() { + public final int hashCode() { final int prime = 31; int result = 1; result = prime * result + id; @@ -200,12 +200,10 @@ public int hashCode() { } @Override - public boolean equals(Object obj) { + public final boolean equals(Object obj) { if (this == obj) return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) + if (!(obj instanceof LwM2mResourceInstance)) return false; LwM2mResourceInstance other = (LwM2mResourceInstance) obj; if (id != other.id) diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/LwM2mRoot.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/LwM2mRoot.java index 6d5289bb83..be5c8cd7fb 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/LwM2mRoot.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/LwM2mRoot.java @@ -19,6 +19,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.Map; +import java.util.Objects; public class LwM2mRoot implements LwM2mNode { private final Map objects; @@ -46,32 +47,22 @@ public Map getObjects() { } @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((objects == null) ? 0 : objects.hashCode()); - return result; + public String toString() { + return String.format("LwM2mRoot [objects=%s]", objects); } @Override - public boolean equals(Object obj) { - if (this == obj) + public final boolean equals(Object o) { + if (this == o) return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) + if (!(o instanceof LwM2mRoot)) return false; - LwM2mRoot other = (LwM2mRoot) obj; - if (objects == null) { - if (other.objects != null) - return false; - } else if (!objects.equals(other.objects)) - return false; - return true; + LwM2mRoot lwM2mRoot = (LwM2mRoot) o; + return Objects.equals(objects, lwM2mRoot.objects); } @Override - public String toString() { - return String.format("LwM2mRoot [objects=%s]", objects); + public final int hashCode() { + return Objects.hashCode(objects); } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/LwM2mSingleResource.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/LwM2mSingleResource.java index 0c46331369..fbfa8e240b 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/LwM2mSingleResource.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/LwM2mSingleResource.java @@ -45,6 +45,51 @@ protected LwM2mSingleResource(int id, Object value, Type type) { this.type = type; } + @Override + public final boolean equals(Object obj) { + if (this == obj) + return true; + if (!(obj instanceof LwM2mSingleResource)) + return false; + LwM2mSingleResource other = (LwM2mSingleResource) obj; + if (id != other.id) + return false; + if (type != other.type) + return false; + if (value == null) { + if (other.value != null) + return false; + } else { + // Custom equals to handle arrays + if (type == Type.OPAQUE) { + return Arrays.equals((byte[]) value, (byte[]) other.value); + } else if (type == Type.CORELINK) { + return Arrays.equals((Link[]) value, (Link[]) other.value); + } else { + return value.equals(other.value); + } + } + return true; + } + + @Override + public final int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + id; + result = prime * result + ((type == null) ? 0 : type.hashCode()); + + // Custom hashcode to handle arrays + if (type == Type.OPAQUE) { + result = prime * result + ((value == null) ? 0 : Arrays.hashCode((byte[]) value)); + } else if (type == Type.CORELINK) { + result = prime * result + ((value == null) ? 0 : Arrays.hashCode((Link[]) value)); + } else { + result = prime * result + ((value == null) ? 0 : value.hashCode()); + } + return result; + } + public static LwM2mSingleResource newResource(int id, Object value) { LwM2mNodeUtil.validateNotNull(value, "value MUST NOT be null"); @@ -242,53 +287,6 @@ public void accept(LwM2mNodeVisitor visitor) { visitor.visit(this); } - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + id; - result = prime * result + ((type == null) ? 0 : type.hashCode()); - - // Custom hashcode to handle arrays - if (type == Type.OPAQUE) { - result = prime * result + ((value == null) ? 0 : Arrays.hashCode((byte[]) value)); - } else if (type == Type.CORELINK) { - result = prime * result + ((value == null) ? 0 : Arrays.hashCode((Link[]) value)); - } else { - result = prime * result + ((value == null) ? 0 : value.hashCode()); - } - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - LwM2mSingleResource other = (LwM2mSingleResource) obj; - if (id != other.id) - return false; - if (type != other.type) - return false; - if (value == null) { - if (other.value != null) - return false; - } else { - // Custom equals to handle arrays - if (type == Type.OPAQUE) { - return Arrays.equals((byte[]) value, (byte[]) other.value); - } else if (type == Type.CORELINK) { - return Arrays.equals((Link[]) value, (Link[]) other.value); - } else { - return value.equals(other.value); - } - } - return true; - } - @Override public String toString() { // We don't print OPAQUE value as this could be credentials one. @@ -314,4 +312,5 @@ public StringBuilder appendPrettyNode(StringBuilder b, LwM2mPath path) { return b; } + } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/ObjectLink.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/ObjectLink.java index b0c59bdbb3..49d5b10c92 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/ObjectLink.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/ObjectLink.java @@ -16,6 +16,7 @@ package org.eclipse.leshan.core.node; import java.util.Arrays; +import java.util.Objects; import org.eclipse.leshan.core.util.Validate; @@ -104,32 +105,22 @@ public boolean isNullLink() { } @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + objectId; - result = prime * result + objectInstanceId; - return result; + public String toString() { + return String.format("/%d/%d", objectId, objectInstanceId); } @Override - public boolean equals(Object obj) { - if (this == obj) + public final boolean equals(Object o) { + if (this == o) return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - ObjectLink other = (ObjectLink) obj; - if (objectId != other.objectId) + if (!(o instanceof ObjectLink)) return false; - if (objectInstanceId != other.objectInstanceId) - return false; - return true; + ObjectLink that = (ObjectLink) o; + return objectId == that.objectId && objectInstanceId == that.objectInstanceId; } @Override - public String toString() { - return String.format("/%d/%d", objectId, objectInstanceId); + public final int hashCode() { + return Objects.hash(objectId, objectInstanceId); } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/TimestampedLwM2mNode.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/TimestampedLwM2mNode.java index 731a3dde01..c9993576a3 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/TimestampedLwM2mNode.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/TimestampedLwM2mNode.java @@ -16,6 +16,7 @@ package org.eclipse.leshan.core.node; import java.time.Instant; +import java.util.Objects; import org.eclipse.leshan.core.util.Validate; @@ -44,38 +45,22 @@ public boolean isTimestamped() { } @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((node == null) ? 0 : node.hashCode()); - result = prime * result + ((timestamp == null) ? 0 : timestamp.hashCode()); - return result; + public String toString() { + return String.format("TimestampedLwM2mNode [timestamp=%s, node=%s]", timestamp, node); } @Override - public boolean equals(Object obj) { - if (this == obj) + public final boolean equals(Object o) { + if (this == o) return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - TimestampedLwM2mNode other = (TimestampedLwM2mNode) obj; - if (node == null) { - if (other.node != null) - return false; - } else if (!node.equals(other.node)) + if (!(o instanceof TimestampedLwM2mNode)) return false; - if (timestamp == null) { - if (other.timestamp != null) - return false; - } else if (!timestamp.equals(other.timestamp)) - return false; - return true; + TimestampedLwM2mNode that = (TimestampedLwM2mNode) o; + return Objects.equals(timestamp, that.timestamp) && Objects.equals(node, that.node); } @Override - public String toString() { - return String.format("TimestampedLwM2mNode [timestamp=%s, node=%s]", timestamp, node); + public final int hashCode() { + return Objects.hash(timestamp, node); } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/TimestampedLwM2mNodes.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/TimestampedLwM2mNodes.java index b1cb876005..c47981b1bd 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/TimestampedLwM2mNodes.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/node/TimestampedLwM2mNodes.java @@ -23,6 +23,7 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; +import java.util.Objects; import java.util.Set; import java.util.TreeMap; @@ -79,37 +80,27 @@ public String toString() { return String.format("TimestampedLwM2mNodes [%s]", timestampedPathNodesMap); } - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((timestampedPathNodesMap == null) ? 0 : timestampedPathNodesMap.hashCode()); - return result; + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(List paths) { + return new Builder(paths); } @Override - public boolean equals(Object obj) { - if (this == obj) + public final boolean equals(Object o) { + if (this == o) return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) + if (!(o instanceof TimestampedLwM2mNodes)) return false; - TimestampedLwM2mNodes other = (TimestampedLwM2mNodes) obj; - if (timestampedPathNodesMap == null) { - if (other.timestampedPathNodesMap != null) - return false; - } else if (!timestampedPathNodesMap.equals(other.timestampedPathNodesMap)) - return false; - return true; - } - - public static Builder builder() { - return new Builder(); + TimestampedLwM2mNodes that = (TimestampedLwM2mNodes) o; + return Objects.equals(timestampedPathNodesMap, that.timestampedPathNodesMap); } - public static Builder builder(List paths) { - return new Builder(paths); + @Override + public final int hashCode() { + return Objects.hashCode(timestampedPathNodesMap); } public static class Builder { diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/observation/CompositeObservation.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/observation/CompositeObservation.java index c37f23f0c5..8fc0cefe53 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/observation/CompositeObservation.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/observation/CompositeObservation.java @@ -18,6 +18,7 @@ import java.util.List; import java.util.Map; +import java.util.Objects; import org.eclipse.leshan.core.node.LwM2mNode; import org.eclipse.leshan.core.node.LwM2mPath; @@ -82,40 +83,25 @@ public String toString() { } @Override - public int hashCode() { - final int prime = 31; - int result = super.hashCode(); - result = prime * result + ((paths == null) ? 0 : paths.hashCode()); - result = prime * result + ((requestContentFormat == null) ? 0 : requestContentFormat.hashCode()); - result = prime * result + ((responseContentFormat == null) ? 0 : responseContentFormat.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) + public boolean equals(Object o) { + if (this == o) return true; - if (!super.equals(obj)) - return false; - if (getClass() != obj.getClass()) - return false; - CompositeObservation other = (CompositeObservation) obj; - if (paths == null) { - if (other.paths != null) - return false; - } else if (!paths.equals(other.paths)) + if (!(o instanceof CompositeObservation)) return false; - if (requestContentFormat == null) { - if (other.requestContentFormat != null) - return false; - } else if (!requestContentFormat.equals(other.requestContentFormat)) + if (!super.equals(o)) return false; - if (responseContentFormat == null) { - if (other.responseContentFormat != null) - return false; - } else if (!responseContentFormat.equals(other.responseContentFormat)) - return false; - return true; + CompositeObservation that = (CompositeObservation) o; + return that.canEqual(this) && Objects.equals(paths, that.paths) + && Objects.equals(requestContentFormat, that.requestContentFormat) + && Objects.equals(responseContentFormat, that.responseContentFormat); + } + + public boolean canEqual(Object o) { + return (o instanceof CompositeObservation); } + @Override + public int hashCode() { + return Objects.hash(super.hashCode(), paths, requestContentFormat, responseContentFormat); + } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/observation/Observation.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/observation/Observation.java index b5bfefffc9..8f2babc672 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/observation/Observation.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/observation/Observation.java @@ -20,6 +20,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.Map; +import java.util.Objects; /** * An abstract class for observation of a resource provided by a LWM2M Client. @@ -84,39 +85,22 @@ public Map getProtocolData() { } @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((context == null) ? 0 : context.hashCode()); - result = prime * result + ((id == null) ? 0 : id.hashCode()); - result = prime * result + ((registrationId == null) ? 0 : registrationId.hashCode()); - return result; + public boolean equals(Object o) { + if (this == o) + return true; + if (!(o instanceof Observation)) + return false; + Observation that = (Observation) o; + return that.canEqual(this) && Objects.equals(id, that.id) && Objects.equals(registrationId, that.registrationId) + && Objects.equals(context, that.context); + } + + public boolean canEqual(Object o) { + return (o instanceof Observation); } @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - Observation other = (Observation) obj; - if (context == null) { - if (other.context != null) - return false; - } else if (!context.equals(other.context)) - return false; - if (id == null) { - if (other.id != null) - return false; - } else if (!id.equals(other.id)) - return false; - if (registrationId == null) { - if (other.registrationId != null) - return false; - } else if (!registrationId.equals(other.registrationId)) - return false; - return true; + public int hashCode() { + return Objects.hash(id, registrationId, context); } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/observation/ObservationIdentifier.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/observation/ObservationIdentifier.java index 47c57ad5d1..de87f8dd04 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/observation/ObservationIdentifier.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/observation/ObservationIdentifier.java @@ -52,24 +52,17 @@ public String toString() { } @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + Arrays.hashCode(bytes); - return result; + public final boolean equals(Object o) { + if (this == o) + return true; + if (!(o instanceof ObservationIdentifier)) + return false; + ObservationIdentifier that = (ObservationIdentifier) o; + return Arrays.equals(bytes, that.bytes); } @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - ObservationIdentifier other = (ObservationIdentifier) obj; - if (!Arrays.equals(bytes, other.bytes)) - return false; - return true; + public final int hashCode() { + return Arrays.hashCode(bytes); } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/observation/SingleObservation.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/observation/SingleObservation.java index 49bf10f549..c79ced762d 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/observation/SingleObservation.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/observation/SingleObservation.java @@ -18,6 +18,7 @@ package org.eclipse.leshan.core.observation; import java.util.Map; +import java.util.Objects; import org.eclipse.leshan.core.node.LwM2mPath; import org.eclipse.leshan.core.request.ContentFormat; @@ -72,33 +73,24 @@ public String toString() { } @Override - public int hashCode() { - final int prime = 31; - int result = super.hashCode(); - result = prime * result + ((contentFormat == null) ? 0 : contentFormat.hashCode()); - result = prime * result + ((path == null) ? 0 : path.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) + public boolean equals(Object o) { + if (this == o) return true; - if (!super.equals(obj)) - return false; - if (getClass() != obj.getClass()) - return false; - SingleObservation other = (SingleObservation) obj; - if (contentFormat == null) { - if (other.contentFormat != null) - return false; - } else if (!contentFormat.equals(other.contentFormat)) + if (!(o instanceof SingleObservation)) return false; - if (path == null) { - if (other.path != null) - return false; - } else if (!path.equals(other.path)) + if (!super.equals(o)) return false; - return true; + SingleObservation that = (SingleObservation) o; + return that.canEqual(this) && Objects.equals(path, that.path) + && Objects.equals(contentFormat, that.contentFormat); + } + + public boolean canEqual(Object o) { + return (o instanceof SingleObservation); + } + + @Override + public int hashCode() { + return Objects.hash(super.hashCode(), path, contentFormat); } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/oscore/AeadAlgorithm.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/oscore/AeadAlgorithm.java index e8ef9ac63c..05d44665ce 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/oscore/AeadAlgorithm.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/oscore/AeadAlgorithm.java @@ -16,6 +16,7 @@ import java.io.Serializable; import java.util.Arrays; +import java.util.Objects; import org.eclipse.leshan.core.util.datatype.NumberUtil; @@ -113,33 +114,17 @@ public String toString() { } @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((name == null) ? 0 : name.hashCode()); - result = prime * result + nonceSize; - result = prime * result + value; - return result; + public final boolean equals(Object o) { + if (this == o) + return true; + if (!(o instanceof AeadAlgorithm)) + return false; + AeadAlgorithm that = (AeadAlgorithm) o; + return value == that.value && nonceSize == that.nonceSize && Objects.equals(name, that.name); } @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - AeadAlgorithm other = (AeadAlgorithm) obj; - if (name == null) { - if (other.name != null) - return false; - } else if (!name.equals(other.name)) - return false; - if (nonceSize != other.nonceSize) - return false; - if (value != other.value) - return false; - return true; + public final int hashCode() { + return Objects.hash(name, value, nonceSize); } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/oscore/OscoreSetting.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/oscore/OscoreSetting.java index c7ca007639..cb9a4af5ac 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/oscore/OscoreSetting.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/oscore/OscoreSetting.java @@ -17,6 +17,7 @@ import java.io.Serializable; import java.util.Arrays; +import java.util.Objects; import org.eclipse.leshan.core.util.Hex; import org.eclipse.leshan.core.util.Validate; @@ -99,45 +100,20 @@ public String toString() { } @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((aeadAlgorithm == null) ? 0 : aeadAlgorithm.hashCode()); - result = prime * result + ((hkdfAlgorithm == null) ? 0 : hkdfAlgorithm.hashCode()); - result = prime * result + Arrays.hashCode(masterSalt); - result = prime * result + Arrays.hashCode(masterSecret); - result = prime * result + Arrays.hashCode(recipientId); - result = prime * result + Arrays.hashCode(senderId); - return result; + public final boolean equals(Object o) { + if (this == o) + return true; + if (!(o instanceof OscoreSetting)) + return false; + OscoreSetting that = (OscoreSetting) o; + return Arrays.equals(senderId, that.senderId) && Arrays.equals(recipientId, that.recipientId) + && Arrays.equals(masterSecret, that.masterSecret) && Objects.equals(aeadAlgorithm, that.aeadAlgorithm) + && Objects.equals(hkdfAlgorithm, that.hkdfAlgorithm) && Arrays.equals(masterSalt, that.masterSalt); } @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - OscoreSetting other = (OscoreSetting) obj; - if (aeadAlgorithm == null) { - if (other.aeadAlgorithm != null) - return false; - } else if (!aeadAlgorithm.equals(other.aeadAlgorithm)) - return false; - if (hkdfAlgorithm == null) { - if (other.hkdfAlgorithm != null) - return false; - } else if (!hkdfAlgorithm.equals(other.hkdfAlgorithm)) - return false; - if (!Arrays.equals(masterSalt, other.masterSalt)) - return false; - if (!Arrays.equals(masterSecret, other.masterSecret)) - return false; - if (!Arrays.equals(recipientId, other.recipientId)) - return false; - if (!Arrays.equals(senderId, other.senderId)) - return false; - return true; + public final int hashCode() { + return Objects.hash(Arrays.hashCode(senderId), Arrays.hashCode(recipientId), Arrays.hashCode(masterSecret), + aeadAlgorithm, hkdfAlgorithm, Arrays.hashCode(masterSalt)); } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/peer/IpPeer.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/peer/IpPeer.java index 7d7560d464..0bb938e643 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/peer/IpPeer.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/peer/IpPeer.java @@ -84,17 +84,17 @@ public String toString() { } @Override - public boolean equals(Object o) { + public final boolean equals(Object o) { if (this == o) return true; - if (o == null || getClass() != o.getClass()) + if (!(o instanceof IpPeer)) return false; IpPeer ipPeer = (IpPeer) o; - return peerAddress.equals(ipPeer.peerAddress) && Objects.equals(identity, ipPeer.identity); + return Objects.equals(peerAddress, ipPeer.peerAddress) && Objects.equals(identity, ipPeer.identity); } @Override - public int hashCode() { + public final int hashCode() { return Objects.hash(peerAddress, identity); } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/peer/OscoreIdentity.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/peer/OscoreIdentity.java index e8d5ed9b18..354e0285fd 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/peer/OscoreIdentity.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/peer/OscoreIdentity.java @@ -45,23 +45,17 @@ public String toString() { } @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + Arrays.hashCode(RecipientId); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) + public final boolean equals(Object o) { + if (this == o) return true; - if (obj == null) + if (!(o instanceof OscoreIdentity)) return false; - if (getClass() != obj.getClass()) - return false; - OscoreIdentity other = (OscoreIdentity) obj; - return Arrays.equals(RecipientId, other.RecipientId); + OscoreIdentity that = (OscoreIdentity) o; + return Arrays.equals(RecipientId, that.RecipientId); } + @Override + public final int hashCode() { + return Arrays.hashCode(RecipientId); + } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/peer/PskIdentity.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/peer/PskIdentity.java index 2382e18edc..726f07f21d 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/peer/PskIdentity.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/peer/PskIdentity.java @@ -44,20 +44,17 @@ public String toString() { } @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((pskIdentity == null) ? 0 : pskIdentity.hashCode()); - return result; - } - - @Override - public boolean equals(Object o) { + public final boolean equals(Object o) { if (this == o) return true; - if (o == null || getClass() != o.getClass()) + if (!(o instanceof PskIdentity)) return false; PskIdentity that = (PskIdentity) o; return Objects.equals(pskIdentity, that.pskIdentity); } + + @Override + public final int hashCode() { + return Objects.hashCode(pskIdentity); + } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/peer/RpkIdentity.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/peer/RpkIdentity.java index b29f74944f..ed98f560d7 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/peer/RpkIdentity.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/peer/RpkIdentity.java @@ -44,20 +44,17 @@ public String toString() { } @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((rawPublicKey == null) ? 0 : rawPublicKey.hashCode()); - return result; - } - - @Override - public boolean equals(Object o) { + public final boolean equals(Object o) { if (this == o) return true; - if (o == null || getClass() != o.getClass()) + if (!(o instanceof RpkIdentity)) return false; RpkIdentity that = (RpkIdentity) o; return Objects.equals(rawPublicKey, that.rawPublicKey); } + + @Override + public final int hashCode() { + return Objects.hashCode(rawPublicKey); + } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/peer/SocketIdentity.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/peer/SocketIdentity.java index 808068d5c0..1a93b5490e 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/peer/SocketIdentity.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/peer/SocketIdentity.java @@ -44,20 +44,17 @@ public String toString() { } @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((peerAddress == null) ? 0 : peerAddress.hashCode()); - return result; - } - - @Override - public boolean equals(Object o) { + public final boolean equals(Object o) { if (this == o) return true; - if (o == null || getClass() != o.getClass()) + if (!(o instanceof SocketIdentity)) return false; SocketIdentity that = (SocketIdentity) o; return Objects.equals(peerAddress, that.peerAddress); } + + @Override + public final int hashCode() { + return Objects.hashCode(peerAddress); + } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/peer/X509Identity.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/peer/X509Identity.java index 6c9dd5d01e..56245bb9c3 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/peer/X509Identity.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/peer/X509Identity.java @@ -44,21 +44,17 @@ public String toString() { } @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((x509CommonName == null) ? 0 : x509CommonName.hashCode()); - return result; - } - - @Override - public boolean equals(Object o) { + public final boolean equals(Object o) { if (this == o) return true; - if (o == null || getClass() != o.getClass()) + if (!(o instanceof X509Identity)) return false; X509Identity that = (X509Identity) o; return Objects.equals(x509CommonName, that.x509CommonName); } + @Override + public final int hashCode() { + return Objects.hashCode(x509CommonName); + } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/AbstractSimpleDownlinkRequest.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/AbstractSimpleDownlinkRequest.java index 25d69b744f..a8858d9e80 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/AbstractSimpleDownlinkRequest.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/AbstractSimpleDownlinkRequest.java @@ -15,6 +15,8 @@ *******************************************************************************/ package org.eclipse.leshan.core.request; +import java.util.Objects; + import org.eclipse.leshan.core.node.InvalidLwM2mPathException; import org.eclipse.leshan.core.node.LwM2mPath; import org.eclipse.leshan.core.request.exception.InvalidRequestException; @@ -46,31 +48,6 @@ public LwM2mPath getPath() { return this.path; } - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((path == null) ? 0 : path.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - AbstractSimpleDownlinkRequest other = (AbstractSimpleDownlinkRequest) obj; - if (path == null) { - if (other.path != null) - return false; - } else if (!path.equals(other.path)) - return false; - return true; - } - protected static LwM2mPath newPath(Integer objectId) { try { return new LwM2mPath(objectId); @@ -112,4 +89,22 @@ protected static LwM2mPath newPath(String path) { } } + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (!(o instanceof AbstractSimpleDownlinkRequest)) + return false; + AbstractSimpleDownlinkRequest that = (AbstractSimpleDownlinkRequest) o; + return that.canEqual(this) && Objects.equals(path, that.path); + } + + public boolean canEqual(Object o) { + return (o instanceof AbstractSimpleDownlinkRequest); + } + + @Override + public int hashCode() { + return Objects.hashCode(path); + } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/BootstrapDeleteRequest.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/BootstrapDeleteRequest.java index 0233b52dbf..7d6e0b5c4f 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/BootstrapDeleteRequest.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/BootstrapDeleteRequest.java @@ -99,4 +99,8 @@ public final String toString() { return String.format("BootstrapDeleteRequest [%s]", getPath()); } + public boolean canEqual(Object o) { + return (o instanceof BootstrapDeleteRequest); + } + } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/BootstrapDiscoverRequest.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/BootstrapDiscoverRequest.java index 52f3481fbb..5fc3695374 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/BootstrapDiscoverRequest.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/BootstrapDiscoverRequest.java @@ -87,4 +87,8 @@ public void accept(DownlinkRequestVisitor visitor) { public void accept(DownlinkBootstrapRequestVisitor visitor) { visitor.visit(this); } + + public boolean canEqual(Object o) { + return (o instanceof BootstrapDiscoverRequest); + } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/BootstrapReadRequest.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/BootstrapReadRequest.java index b4146a9e2e..38e20600fb 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/BootstrapReadRequest.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/BootstrapReadRequest.java @@ -15,6 +15,8 @@ *******************************************************************************/ package org.eclipse.leshan.core.request; +import java.util.Objects; + import org.eclipse.leshan.core.node.LwM2mPath; import org.eclipse.leshan.core.request.exception.InvalidRequestException; import org.eclipse.leshan.core.response.BootstrapReadResponse; @@ -146,24 +148,23 @@ public void accept(DownlinkBootstrapRequestVisitor visitor) { } @Override - public int hashCode() { - final int prime = 31; - int result = super.hashCode(); - result = prime * result + ((format == null) ? 0 : format.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) + public boolean equals(Object o) { + if (this == o) return true; - if (!super.equals(obj)) - return false; - if (getClass() != obj.getClass()) + if (!(o instanceof BootstrapReadRequest)) return false; - BootstrapReadRequest other = (BootstrapReadRequest) obj; - if (format != other.format) + if (!super.equals(o)) return false; - return true; + BootstrapReadRequest that = (BootstrapReadRequest) o; + return that.canEqual(this) && Objects.equals(format, that.format); + } + + public boolean canEqual(Object o) { + return (o instanceof BootstrapReadRequest); + } + + @Override + public int hashCode() { + return Objects.hash(super.hashCode(), format); } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/BootstrapRequest.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/BootstrapRequest.java index 78f5a787de..31aa16e6ac 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/BootstrapRequest.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/BootstrapRequest.java @@ -18,6 +18,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.Map; +import java.util.Objects; import org.eclipse.leshan.core.request.exception.InvalidRequestException; import org.eclipse.leshan.core.response.BootstrapResponse; @@ -105,39 +106,23 @@ public void accept(UplinkRequestVisitor visitor) { } @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((additionalAttributes == null) ? 0 : additionalAttributes.hashCode()); - result = prime * result + ((endpointName == null) ? 0 : endpointName.hashCode()); - result = prime * result + ((preferredContentFormat == null) ? 0 : preferredContentFormat.hashCode()); - return result; + public boolean equals(Object o) { + if (this == o) + return true; + if (!(o instanceof BootstrapRequest)) + return false; + BootstrapRequest that = (BootstrapRequest) o; + return that.canEqual(this) && Objects.equals(endpointName, that.endpointName) + && Objects.equals(additionalAttributes, that.additionalAttributes) + && Objects.equals(preferredContentFormat, that.preferredContentFormat); + } + + public boolean canEqual(Object o) { + return (o instanceof BootstrapRequest); } @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - BootstrapRequest other = (BootstrapRequest) obj; - if (additionalAttributes == null) { - if (other.additionalAttributes != null) - return false; - } else if (!additionalAttributes.equals(other.additionalAttributes)) - return false; - if (endpointName == null) { - if (other.endpointName != null) - return false; - } else if (!endpointName.equals(other.endpointName)) - return false; - if (preferredContentFormat == null) { - if (other.preferredContentFormat != null) - return false; - } else if (!preferredContentFormat.equals(other.preferredContentFormat)) - return false; - return true; + public int hashCode() { + return Objects.hash(endpointName, additionalAttributes, preferredContentFormat); } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/BootstrapWriteRequest.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/BootstrapWriteRequest.java index 28467a1b89..e2fabe4684 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/BootstrapWriteRequest.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/BootstrapWriteRequest.java @@ -125,4 +125,8 @@ public String toString() { return String.format("BootstrapWriteRequest [path=%s, node=%s, contentFormat=%s]", getPath(), node, contentFormat); } + + public boolean canEqual(Object o) { + return (o instanceof BootstrapWriteRequest); + } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/CancelObservationRequest.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/CancelObservationRequest.java index 0306850ff7..c53286eace 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/CancelObservationRequest.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/CancelObservationRequest.java @@ -15,6 +15,8 @@ *******************************************************************************/ package org.eclipse.leshan.core.request; +import java.util.Objects; + import org.eclipse.leshan.core.observation.Observation; import org.eclipse.leshan.core.observation.SingleObservation; import org.eclipse.leshan.core.request.exception.InvalidRequestException; @@ -66,27 +68,23 @@ public final String toString() { } @Override - public int hashCode() { - final int prime = 31; - int result = super.hashCode(); - result = prime * result + ((observation == null) ? 0 : observation.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) + public boolean equals(Object o) { + if (this == o) return true; - if (!super.equals(obj)) - return false; - if (getClass() != obj.getClass()) + if (!(o instanceof CancelObservationRequest)) return false; - CancelObservationRequest other = (CancelObservationRequest) obj; - if (observation == null) { - if (other.observation != null) - return false; - } else if (!observation.equals(other.observation)) + if (!super.equals(o)) return false; - return true; + CancelObservationRequest that = (CancelObservationRequest) o; + return that.canEqual(this) && Objects.equals(observation, that.observation); + } + + public boolean canEqual(Object o) { + return (o instanceof CancelObservationRequest); + } + + @Override + public int hashCode() { + return Objects.hash(super.hashCode(), observation); } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/ContentFormat.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/ContentFormat.java index 7044e0b198..c508b7fd11 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/ContentFormat.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/ContentFormat.java @@ -21,6 +21,7 @@ import java.util.Collections; import java.util.HashSet; import java.util.List; +import java.util.Objects; import java.util.Set; import org.eclipse.leshan.core.LwM2m.LwM2mVersion; @@ -164,28 +165,6 @@ public String toString() { return String.format("%s(%s)", name, code); } - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + code; - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - ContentFormat other = (ContentFormat) obj; - if (code != other.code) - return false; - return true; - } - @Override public int compareTo(ContentFormat ct) { return Integer.compare(this.code, ct.code); @@ -209,4 +188,19 @@ public static List getOptionalContentFormatForClient(Collection implements UplinkDeviceManagementRequest { - private String registrationId = null; + private final String registrationId; /** * Creates a request for removing the registration information from the LWM2M Server. @@ -67,32 +69,26 @@ public void accept(UplinkDeviceManagementRequestVisitor visitor) { } @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((registrationId == null) ? 0 : registrationId.hashCode()); - return result; + public String toString() { + return String.format("DeregisterRequest [registrationId=%s]", registrationId); } @Override - public boolean equals(Object obj) { - if (this == obj) + public boolean equals(Object o) { + if (this == o) return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - DeregisterRequest other = (DeregisterRequest) obj; - if (registrationId == null) { - if (other.registrationId != null) - return false; - } else if (!registrationId.equals(other.registrationId)) + if (!(o instanceof DeregisterRequest)) return false; - return true; + DeregisterRequest that = (DeregisterRequest) o; + return that.canEqual(this) && Objects.equals(registrationId, that.registrationId); + } + + public boolean canEqual(Object o) { + return (o instanceof DeregisterRequest); } @Override - public String toString() { - return String.format("DeregisterRequest [registrationId=%s]", registrationId); + public int hashCode() { + return Objects.hashCode(registrationId); } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/DiscoverRequest.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/DiscoverRequest.java index 5c482a3ace..c82dc2a89a 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/DiscoverRequest.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/DiscoverRequest.java @@ -100,4 +100,8 @@ public void accept(DownlinkDeviceManagementRequestVisitor visitor) { public final String toString() { return String.format("DiscoverRequest [%s]", getPath()); } + + public boolean canEqual(Object o) { + return (o instanceof DiscoverRequest); + } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/ExecuteRequest.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/ExecuteRequest.java index dd4a6599a6..5670d5a451 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/ExecuteRequest.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/ExecuteRequest.java @@ -15,6 +15,8 @@ *******************************************************************************/ package org.eclipse.leshan.core.request; +import java.util.Objects; + import org.eclipse.leshan.core.node.LwM2mPath; import org.eclipse.leshan.core.request.argument.Arguments; import org.eclipse.leshan.core.request.argument.InvalidArgumentException; @@ -165,27 +167,23 @@ public Arguments getArguments() { } @Override - public int hashCode() { - final int prime = 31; - int result = super.hashCode(); - result = prime * result + ((arguments == null) ? 0 : arguments.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) + public boolean equals(Object o) { + if (this == o) return true; - if (!super.equals(obj)) - return false; - if (getClass() != obj.getClass()) + if (!(o instanceof ExecuteRequest)) return false; - ExecuteRequest other = (ExecuteRequest) obj; - if (arguments == null) { - if (other.arguments != null) - return false; - } else if (!arguments.equals(other.arguments)) + if (!super.equals(o)) return false; - return true; + ExecuteRequest that = (ExecuteRequest) o; + return that.canEqual(this) && Objects.equals(arguments, that.arguments); + } + + public boolean canEqual(Object o) { + return (o instanceof ExecuteRequest); + } + + @Override + public int hashCode() { + return Objects.hash(super.hashCode(), arguments); } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/ObserveCompositeRequest.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/ObserveCompositeRequest.java index 4e68ac0c13..ad66384a6d 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/ObserveCompositeRequest.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/ObserveCompositeRequest.java @@ -19,6 +19,7 @@ import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.Objects; import org.eclipse.leshan.core.node.LwM2mNode; import org.eclipse.leshan.core.node.LwM2mNodeException; @@ -150,37 +151,23 @@ public final String toString() { } @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((paths == null) ? 0 : paths.hashCode()); - result = prime * result + ((requestContentFormat == null) ? 0 : requestContentFormat.hashCode()); - result = prime * result + ((responseContentFormat == null) ? 0 : responseContentFormat.hashCode()); - return result; + public boolean equals(Object o) { + if (this == o) + return true; + if (!(o instanceof ObserveCompositeRequest)) + return false; + ObserveCompositeRequest that = (ObserveCompositeRequest) o; + return that.canEqual(this) && Objects.equals(requestContentFormat, that.requestContentFormat) + && Objects.equals(responseContentFormat, that.responseContentFormat) + && Objects.equals(paths, that.paths); + } + + public boolean canEqual(Object o) { + return (o instanceof ObserveCompositeRequest); } @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - ObserveCompositeRequest other = (ObserveCompositeRequest) obj; - if (paths == null) { - if (other.paths != null) - return false; - } else if (!paths.equals(other.paths)) - return false; - if (requestContentFormat == null) { - if (other.requestContentFormat != null) - return false; - } else if (!requestContentFormat.equals(other.requestContentFormat)) - return false; - if (responseContentFormat == null) { - return other.responseContentFormat == null; - } else - return responseContentFormat.equals(other.responseContentFormat); + public int hashCode() { + return Objects.hash(requestContentFormat, responseContentFormat, paths); } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/ObserveRequest.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/ObserveRequest.java index 47fa266ae1..e2919551be 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/ObserveRequest.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/ObserveRequest.java @@ -18,6 +18,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.Map; +import java.util.Objects; import org.eclipse.leshan.core.node.LwM2mPath; import org.eclipse.leshan.core.observation.Observation; @@ -221,24 +222,23 @@ public final String toString() { } @Override - public int hashCode() { - final int prime = 31; - int result = super.hashCode(); - result = prime * result + ((format == null) ? 0 : format.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) + public boolean equals(Object o) { + if (this == o) return true; - if (!super.equals(obj)) - return false; - if (getClass() != obj.getClass()) + if (!(o instanceof ObserveRequest)) return false; - ObserveRequest other = (ObserveRequest) obj; - if (format != other.format) + if (!super.equals(o)) return false; - return true; + ObserveRequest that = (ObserveRequest) o; + return that.canEqual(this) && Objects.equals(format, that.format) && Objects.equals(context, that.context); + } + + public boolean canEqual(Object o) { + return (o instanceof ObserveRequest); + } + + @Override + public int hashCode() { + return Objects.hash(super.hashCode(), format, context); } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/ReadCompositeRequest.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/ReadCompositeRequest.java index 00e6a1772f..967c9e9803 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/ReadCompositeRequest.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/ReadCompositeRequest.java @@ -17,6 +17,7 @@ import java.util.Arrays; import java.util.List; +import java.util.Objects; import org.eclipse.leshan.core.node.LwM2mNode; import org.eclipse.leshan.core.node.LwM2mNodeException; @@ -130,40 +131,23 @@ public String toString() { } @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((paths == null) ? 0 : paths.hashCode()); - result = prime * result + ((requestContentFormat == null) ? 0 : requestContentFormat.hashCode()); - result = prime * result + ((responseContentFormat == null) ? 0 : responseContentFormat.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) + public boolean equals(Object o) { + if (this == o) return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - ReadCompositeRequest other = (ReadCompositeRequest) obj; - if (paths == null) { - if (other.paths != null) - return false; - } else if (!paths.equals(other.paths)) - return false; - if (requestContentFormat == null) { - if (other.requestContentFormat != null) - return false; - } else if (!requestContentFormat.equals(other.requestContentFormat)) + if (!(o instanceof ReadCompositeRequest)) return false; - if (responseContentFormat == null) { - if (other.responseContentFormat != null) - return false; - } else if (!responseContentFormat.equals(other.responseContentFormat)) - return false; - return true; + ReadCompositeRequest that = (ReadCompositeRequest) o; + return that.canEqual(this) && Objects.equals(paths, that.paths) + && Objects.equals(requestContentFormat, that.requestContentFormat) + && Objects.equals(responseContentFormat, that.responseContentFormat); + } + + public boolean canEqual(Object o) { + return (o instanceof ReadCompositeRequest); } + @Override + public int hashCode() { + return Objects.hash(paths, requestContentFormat, responseContentFormat); + } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/ReadRequest.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/ReadRequest.java index a6a7683b9f..166109b723 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/ReadRequest.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/ReadRequest.java @@ -15,6 +15,8 @@ *******************************************************************************/ package org.eclipse.leshan.core.request; +import java.util.Objects; + import org.eclipse.leshan.core.node.LwM2mPath; import org.eclipse.leshan.core.request.exception.InvalidRequestException; import org.eclipse.leshan.core.response.ReadResponse; @@ -194,24 +196,23 @@ public void accept(DownlinkDeviceManagementRequestVisitor visitor) { } @Override - public int hashCode() { - final int prime = 31; - int result = super.hashCode(); - result = prime * result + ((format == null) ? 0 : format.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) + public boolean equals(Object o) { + if (this == o) return true; - if (!super.equals(obj)) - return false; - if (getClass() != obj.getClass()) + if (!(o instanceof ReadRequest)) return false; - ReadRequest other = (ReadRequest) obj; - if (format != other.format) + if (!super.equals(o)) return false; - return true; + ReadRequest that = (ReadRequest) o; + return that.canEqual(this) && Objects.equals(format, that.format); + } + + public boolean canEqual(Object o) { + return (o instanceof ReadRequest); + } + + @Override + public int hashCode() { + return Objects.hash(super.hashCode(), format); } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/RegisterRequest.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/RegisterRequest.java index 9b8cd7e089..e0005af781 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/RegisterRequest.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/RegisterRequest.java @@ -21,6 +21,7 @@ import java.util.EnumSet; import java.util.HashMap; import java.util.Map; +import java.util.Objects; import org.eclipse.leshan.core.LwM2m.LwM2mVersion; import org.eclipse.leshan.core.LwM2m.Version; @@ -177,63 +178,26 @@ public String toString() { } @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((additionalAttributes == null) ? 0 : additionalAttributes.hashCode()); - result = prime * result + ((bindingMode == null) ? 0 : bindingMode.hashCode()); - result = prime * result + ((endpointName == null) ? 0 : endpointName.hashCode()); - result = prime * result + ((lifetime == null) ? 0 : lifetime.hashCode()); - result = prime * result + ((lwVersion == null) ? 0 : lwVersion.hashCode()); - result = prime * result + Arrays.hashCode(objectLinks); - result = prime * result + ((queueMode == null) ? 0 : queueMode.hashCode()); - result = prime * result + ((smsNumber == null) ? 0 : smsNumber.hashCode()); - return result; + public boolean equals(Object o) { + if (this == o) + return true; + if (!(o instanceof RegisterRequest)) + return false; + RegisterRequest that = (RegisterRequest) o; + return that.canEqual(this) && Objects.equals(endpointName, that.endpointName) + && Objects.equals(lifetime, that.lifetime) && Objects.equals(lwVersion, that.lwVersion) + && Objects.equals(bindingMode, that.bindingMode) && Objects.equals(queueMode, that.queueMode) + && Objects.equals(smsNumber, that.smsNumber) && Objects.deepEquals(objectLinks, that.objectLinks) + && Objects.equals(additionalAttributes, that.additionalAttributes); + } + + public boolean canEqual(Object o) { + return (o instanceof RegisterRequest); } @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - RegisterRequest other = (RegisterRequest) obj; - if (additionalAttributes == null) { - if (other.additionalAttributes != null) - return false; - } else if (!additionalAttributes.equals(other.additionalAttributes)) - return false; - if (bindingMode != other.bindingMode) - return false; - if (endpointName == null) { - if (other.endpointName != null) - return false; - } else if (!endpointName.equals(other.endpointName)) - return false; - if (lifetime == null) { - if (other.lifetime != null) - return false; - } else if (!lifetime.equals(other.lifetime)) - return false; - if (lwVersion == null) { - if (other.lwVersion != null) - return false; - } else if (!lwVersion.equals(other.lwVersion)) - return false; - if (!Arrays.equals(objectLinks, other.objectLinks)) - return false; - if (queueMode == null) { - if (other.queueMode != null) - return false; - } else if (!queueMode.equals(other.queueMode)) - return false; - if (smsNumber == null) { - if (other.smsNumber != null) - return false; - } else if (!smsNumber.equals(other.smsNumber)) - return false; - return true; + public int hashCode() { + return Objects.hash(endpointName, lifetime, lwVersion, bindingMode, queueMode, smsNumber, + Arrays.hashCode(objectLinks), additionalAttributes); } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/SendRequest.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/SendRequest.java index 7dd604c0d4..e671ef0589 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/SendRequest.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/SendRequest.java @@ -17,6 +17,7 @@ import java.util.Map; import java.util.Map.Entry; +import java.util.Objects; import org.eclipse.leshan.core.node.LwM2mNode; import org.eclipse.leshan.core.node.LwM2mObject; @@ -129,33 +130,22 @@ public String toString() { } @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((format == null) ? 0 : format.hashCode()); - result = prime * result + ((timestampedNodes == null) ? 0 : timestampedNodes.hashCode()); - return result; + public boolean equals(Object o) { + if (this == o) + return true; + if (!(o instanceof SendRequest)) + return false; + SendRequest that = (SendRequest) o; + return that.canEqual(this) && Objects.equals(format, that.format) + && Objects.equals(timestampedNodes, that.timestampedNodes); + } + + public boolean canEqual(Object o) { + return (o instanceof SendRequest); } @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - SendRequest other = (SendRequest) obj; - if (format == null) { - if (other.format != null) - return false; - } else if (!format.equals(other.format)) - return false; - if (timestampedNodes == null) { - if (other.timestampedNodes != null) - return false; - } else if (!timestampedNodes.equals(other.timestampedNodes)) - return false; - return true; + public int hashCode() { + return Objects.hash(format, timestampedNodes); } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/UpdateRequest.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/UpdateRequest.java index d75dae4e08..59762bf166 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/UpdateRequest.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/UpdateRequest.java @@ -21,6 +21,7 @@ import java.util.EnumSet; import java.util.HashMap; import java.util.Map; +import java.util.Objects; import org.eclipse.leshan.core.LwM2m.LwM2mVersion; import org.eclipse.leshan.core.link.Link; @@ -130,59 +131,34 @@ public void accept(UplinkDeviceManagementRequestVisitor visitor) { } @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((additionalAttributes == null) ? 0 : additionalAttributes.hashCode()); - result = prime * result + ((bindingMode == null) ? 0 : bindingMode.hashCode()); - result = prime * result + ((lifeTimeInSec == null) ? 0 : lifeTimeInSec.hashCode()); - result = prime * result + Arrays.hashCode(objectLinks); - result = prime * result + ((registrationId == null) ? 0 : registrationId.hashCode()); - result = prime * result + ((smsNumber == null) ? 0 : smsNumber.hashCode()); - return result; + public String toString() { + return String.format( + "UpdateRequest [registrationId=%s, lifeTimeInSec=%s, smsNumber=%s, bindingMode=%s, objectLinks=%s, additionalAttributes=%s]", + registrationId, lifeTimeInSec, smsNumber, bindingMode, Arrays.toString(objectLinks), + additionalAttributes); } @Override - public boolean equals(Object obj) { - if (this == obj) + public boolean equals(Object o) { + if (this == o) return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - UpdateRequest other = (UpdateRequest) obj; - if (additionalAttributes == null) { - if (other.additionalAttributes != null) - return false; - } else if (!additionalAttributes.equals(other.additionalAttributes)) - return false; - if (bindingMode != other.bindingMode) - return false; - if (lifeTimeInSec == null) { - if (other.lifeTimeInSec != null) - return false; - } else if (!lifeTimeInSec.equals(other.lifeTimeInSec)) + if (!(o instanceof UpdateRequest)) return false; - if (!Arrays.equals(objectLinks, other.objectLinks)) - return false; - if (registrationId == null) { - if (other.registrationId != null) - return false; - } else if (!registrationId.equals(other.registrationId)) - return false; - if (smsNumber == null) { - if (other.smsNumber != null) - return false; - } else if (!smsNumber.equals(other.smsNumber)) - return false; - return true; + UpdateRequest that = (UpdateRequest) o; + return that.canEqual(this) && Objects.equals(lifeTimeInSec, that.lifeTimeInSec) + && Objects.equals(smsNumber, that.smsNumber) && Objects.equals(bindingMode, that.bindingMode) + && Objects.equals(registrationId, that.registrationId) + && Objects.deepEquals(objectLinks, that.objectLinks) + && Objects.equals(additionalAttributes, that.additionalAttributes); + } + + public boolean canEqual(Object o) { + return (o instanceof UpdateRequest); } @Override - public String toString() { - return String.format( - "UpdateRequest [registrationId=%s, lifeTimeInSec=%s, smsNumber=%s, bindingMode=%s, objectLinks=%s, additionalAttributes=%s]", - registrationId, lifeTimeInSec, smsNumber, bindingMode, Arrays.toString(objectLinks), + public int hashCode() { + return Objects.hash(lifeTimeInSec, smsNumber, bindingMode, registrationId, Arrays.hashCode(objectLinks), additionalAttributes); } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/WriteAttributesRequest.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/WriteAttributesRequest.java index 17368e0fb0..2f163a399c 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/WriteAttributesRequest.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/WriteAttributesRequest.java @@ -15,6 +15,8 @@ *******************************************************************************/ package org.eclipse.leshan.core.request; +import java.util.Objects; + import org.eclipse.leshan.core.link.lwm2m.attributes.AttributeClass; import org.eclipse.leshan.core.link.lwm2m.attributes.InvalidAttributesException; import org.eclipse.leshan.core.link.lwm2m.attributes.LwM2mAttribute; @@ -110,27 +112,23 @@ public String toString() { } @Override - public int hashCode() { - final int prime = 31; - int result = super.hashCode(); - result = prime * result + ((attributes == null) ? 0 : attributes.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) + public boolean equals(Object o) { + if (this == o) return true; - if (!super.equals(obj)) - return false; - if (getClass() != obj.getClass()) + if (!(o instanceof WriteAttributesRequest)) return false; - WriteAttributesRequest other = (WriteAttributesRequest) obj; - if (attributes == null) { - if (other.attributes != null) - return false; - } else if (!attributes.equals(other.attributes)) + if (!super.equals(o)) return false; - return true; + WriteAttributesRequest that = (WriteAttributesRequest) o; + return that.canEqual(this) && Objects.equals(attributes, that.attributes); + } + + public boolean canEqual(Object o) { + return (o instanceof WriteAttributesRequest); + } + + @Override + public int hashCode() { + return Objects.hash(super.hashCode(), attributes); } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/WriteRequest.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/WriteRequest.java index c53ef3591c..70b7bab7ec 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/WriteRequest.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/WriteRequest.java @@ -18,6 +18,7 @@ import java.util.Collection; import java.util.Date; import java.util.Map; +import java.util.Objects; import org.eclipse.leshan.core.link.Link; import org.eclipse.leshan.core.model.ResourceModel.Type; @@ -527,33 +528,25 @@ public String toString() { } @Override - public int hashCode() { - final int prime = 31; - int result = super.hashCode(); - result = prime * result + ((contentFormat == null) ? 0 : contentFormat.hashCode()); - result = prime * result + ((mode == null) ? 0 : mode.hashCode()); - result = prime * result + ((node == null) ? 0 : node.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) + public boolean equals(Object o) { + if (this == o) return true; - if (!super.equals(obj)) - return false; - if (getClass() != obj.getClass()) - return false; - WriteRequest other = (WriteRequest) obj; - if (contentFormat != other.contentFormat) - return false; - if (mode != other.mode) + if (!(o instanceof WriteRequest)) return false; - if (node == null) { - if (other.node != null) - return false; - } else if (!node.equals(other.node)) + if (!super.equals(o)) return false; - return true; + WriteRequest that = (WriteRequest) o; + return that.canEqual(this) && Objects.equals(node, that.node) + && Objects.equals(contentFormat, that.contentFormat) && mode == that.mode; } + + public boolean canEqual(Object o) { + return (o instanceof WriteRequest); + } + + @Override + public int hashCode() { + return Objects.hash(super.hashCode(), node, contentFormat, mode); + } + } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/argument/Argument.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/argument/Argument.java index 5b70416100..1f00356773 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/argument/Argument.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/argument/Argument.java @@ -15,6 +15,7 @@ *******************************************************************************/ package org.eclipse.leshan.core.request.argument; +import java.util.Objects; import java.util.regex.Pattern; /** @@ -93,30 +94,17 @@ public String toString() { } @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + digit; - result = prime * result + ((value == null) ? 0 : value.hashCode()); - return result; + public final boolean equals(Object o) { + if (this == o) + return true; + if (!(o instanceof Argument)) + return false; + Argument argument = (Argument) o; + return digit == argument.digit && Objects.equals(value, argument.value); } @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - Argument other = (Argument) obj; - if (digit != other.digit) - return false; - if (value == null) { - if (other.value != null) - return false; - } else if (!value.equals(other.value)) - return false; - return true; + public final int hashCode() { + return Objects.hash(digit, value); } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/argument/Arguments.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/argument/Arguments.java index 8eac520941..1cca0c9122 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/argument/Arguments.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/request/argument/Arguments.java @@ -22,6 +22,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Set; /** @@ -43,31 +44,6 @@ public String toString() { return String.format("Arguments [argumentMap=%s]", argumentMap.toString()); } - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((argumentMap == null) ? 0 : argumentMap.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - Arguments other = (Arguments) obj; - if (argumentMap == null) { - if (other.argumentMap != null) - return false; - } else if (!argumentMap.equals(other.argumentMap)) - return false; - return true; - } - /** * Returns number of arguments. */ @@ -266,6 +242,21 @@ public static Arguments emptyArguments() { return new Arguments(Collections.emptyMap()); } + @Override + public final boolean equals(Object o) { + if (this == o) + return true; + if (!(o instanceof Arguments)) + return false; + Arguments arguments = (Arguments) o; + return Objects.equals(argumentMap, arguments.argumentMap); + } + + @Override + public final int hashCode() { + return Objects.hashCode(argumentMap); + } + /** * Builder for creating {$link Arguments}. */ diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/tlv/Tlv.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/tlv/Tlv.java index 222b934a94..b1a5714d4e 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/tlv/Tlv.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/tlv/Tlv.java @@ -16,6 +16,7 @@ package org.eclipse.leshan.core.tlv; import java.util.Arrays; +import java.util.Objects; /** * A Type-Length-Value container, can contain multiple TLV entries. @@ -23,15 +24,15 @@ public class Tlv { // type of TLV, indicate if it's containing a value or TLV containing more TLV or values - private TlvType type; + private final TlvType type; // if of type OBJECT_INSTANCE,MULTIPLE_RESOURCE or null - private Tlv[] children; + private final Tlv[] children; // if type RESOURCE_VALUE or RESOURCE_INSTANCE => null - private byte[] value; + private final byte[] value; - private int identifier; + private final int identifier; /** * Creates a TLV container. @@ -67,32 +68,32 @@ public TlvType getType() { return type; } - public void setType(TlvType type) { - this.type = type; - } - public Tlv[] getChildren() { return children; } - public void setChildren(Tlv[] children) { - this.children = children; - } - public byte[] getValue() { return value; } - public void setValue(byte[] value) { - this.value = value; - } - public int getIdentifier() { return identifier; } - public void setIdentifier(int identifier) { - this.identifier = identifier; + @Override + public final boolean equals(Object o) { + if (this == o) + return true; + if (!(o instanceof Tlv)) + return false; + Tlv tlv = (Tlv) o; + return identifier == tlv.identifier && type == tlv.type && Objects.deepEquals(children, tlv.children) + && Arrays.equals(value, tlv.value); + } + + @Override + public final int hashCode() { + return Objects.hash(type, Arrays.hashCode(children), Arrays.hashCode(value), identifier); } public enum TlvType { @@ -105,34 +106,4 @@ public String toString() { Arrays.toString(children), Arrays.toString(value), Integer.toString(identifier) }); } - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + Arrays.hashCode(children); - result = prime * result + identifier; - result = prime * result + ((type == null) ? 0 : type.hashCode()); - result = prime * result + Arrays.hashCode(value); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - Tlv other = (Tlv) obj; - if (!Arrays.equals(children, other.children)) - return false; - if (identifier != other.identifier) - return false; - if (type != other.type) - return false; - if (!Arrays.equals(value, other.value)) - return false; - return true; - } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/util/datatype/ULong.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/util/datatype/ULong.java index 47d4805c09..5d80424fed 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/util/datatype/ULong.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/core/util/datatype/ULong.java @@ -16,6 +16,7 @@ package org.eclipse.leshan.core.util.datatype; import java.math.BigInteger; +import java.util.Objects; /** * The unsigned long type @@ -173,20 +174,6 @@ public double doubleValue() { return value; } - @Override - public int hashCode() { - - return Long.valueOf(value).hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (obj instanceof ULong) - return value == ((ULong) obj).value; - - return false; - } - @Override public String toString() { if (value >= 0) @@ -262,4 +249,19 @@ public ULong subtract(final long val) { public BigInteger toBigInteger() { return new BigInteger(toString()); } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (!(o instanceof ULong)) + return false; + ULong that = (ULong) o; + return value == that.value; + } + + @Override + public int hashCode() { + return Objects.hashCode(value); + } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/senml/SenMLPack.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/senml/SenMLPack.java index 0334a47b3f..9b16fe303e 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/senml/SenMLPack.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/senml/SenMLPack.java @@ -17,6 +17,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Objects; /** * The class representing the SenML Pack. @@ -60,32 +61,22 @@ public List getRecords() { } @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((records == null) ? 0 : records.hashCode()); - return result; + public String toString() { + return String.format("SenMLPack [records=%s]", records); } @Override - public boolean equals(Object obj) { - if (this == obj) + public final boolean equals(Object o) { + if (this == o) return true; - if (obj == null) + if (!(o instanceof SenMLPack)) return false; - if (getClass() != obj.getClass()) - return false; - SenMLPack other = (SenMLPack) obj; - if (records == null) { - if (other.records != null) - return false; - } else if (!records.equals(other.records)) - return false; - return true; + SenMLPack senMLPack = (SenMLPack) o; + return Objects.equals(records, senMLPack.records); } @Override - public String toString() { - return String.format("SenMLPack [records=%s]", records); + public final int hashCode() { + return Objects.hashCode(records); } } diff --git a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/senml/SenMLRecord.java b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/senml/SenMLRecord.java index 0f187ec0f5..2b26353920 100644 --- a/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/senml/SenMLRecord.java +++ b/leshan-lwm2m-core/src/main/java/org/eclipse/leshan/senml/SenMLRecord.java @@ -16,6 +16,7 @@ import java.math.BigDecimal; import java.util.Arrays; +import java.util.Objects; import org.eclipse.leshan.core.util.Hex; @@ -153,84 +154,31 @@ public Object getResourceValue() { } @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((baseName == null) ? 0 : baseName.hashCode()); - result = prime * result + ((baseTime == null) ? 0 : baseTime.hashCode()); - result = prime * result + ((booleanValue == null) ? 0 : booleanValue.hashCode()); - result = prime * result + ((numberValue == null) ? 0 : numberValue.hashCode()); - result = prime * result + ((name == null) ? 0 : name.hashCode()); - result = prime * result + ((objectLinkValue == null) ? 0 : objectLinkValue.hashCode()); - result = prime * result + ((stringValue == null) ? 0 : stringValue.hashCode()); - result = prime * result + ((opaqueValue == null) ? 0 : Arrays.hashCode(opaqueValue)); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) + public final boolean equals(Object o) { + if (this == o) return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) + if (!(o instanceof SenMLRecord)) return false; - SenMLRecord other = (SenMLRecord) obj; + SenMLRecord that = (SenMLRecord) o; - if (baseName == null) { - if (other.baseName != null) - return false; - } else if (!baseName.equals(other.baseName)) - return false; - if (baseTime == null) { - if (other.baseTime != null) - return false; - } else if (!baseTime.equals(other.baseTime)) - return false; + boolean comparablyEqualTime = (time == null && that.time == null) + || (time != null && that.time != null && time.compareTo(that.time) == 0); - if (name == null) { - if (other.name != null) - return false; - } else if (!name.equals(other.name)) - return false; - if (time == null) { - if (other.time != null) - return false; - } else if (!time.equals(other.time)) - return false; + boolean comparablyEqualBaseTime = (baseTime == null && that.baseTime == null) + || (baseTime != null && that.baseTime != null && baseTime.compareTo(that.baseTime) == 0); - if (booleanValue == null) { - if (other.booleanValue != null) - return false; - } else if (!booleanValue.equals(other.booleanValue)) - return false; - if (numberValue == null) { - if (other.numberValue != null) - return false; - } else if (!numberValue.equals(other.numberValue)) - return false; - if (name == null) { - if (other.name != null) - return false; - } else if (!name.equals(other.name)) - return false; - if (objectLinkValue == null) { - if (other.objectLinkValue != null) - return false; - } else if (!objectLinkValue.equals(other.objectLinkValue)) - return false; - if (stringValue == null) { - if (other.stringValue != null) - return false; - } else if (!stringValue.equals(other.stringValue)) - return false; - if (opaqueValue == null) { - if (other.opaqueValue != null) - return false; - } else if (!Arrays.equals(opaqueValue, other.opaqueValue)) - return false; + return Objects.equals(baseName, that.baseName) && comparablyEqualBaseTime && Objects.equals(name, that.name) + && comparablyEqualTime && Objects.equals(numberValue, that.numberValue) + && Objects.equals(booleanValue, that.booleanValue) + && Objects.equals(objectLinkValue, that.objectLinkValue) + && Objects.equals(stringValue, that.stringValue) && Arrays.equals(opaqueValue, that.opaqueValue); + } - return true; + @Override + public final int hashCode() { + return Objects.hash(baseName, baseTime != null ? baseTime.stripTrailingZeros() : null, name, + time != null ? time.stripTrailingZeros() : null, numberValue, booleanValue, objectLinkValue, + stringValue, Arrays.hashCode(opaqueValue)); } @Override diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/LwM2mTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/LwM2mTest.java new file mode 100644 index 0000000000..b2653ec1a3 --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/LwM2mTest.java @@ -0,0 +1,45 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class LwM2mTest { + + private class ExtendedLwM2mVersion extends LwM2m.LwM2mVersion { + ExtendedLwM2mVersion(String version, boolean supported) { + super(version, supported); + } + + @Override + public boolean canEqual(Object obj) { + return (obj instanceof ExtendedLwM2mVersion); + } + } + + @Test + public void assertEqualsHashcodeLwM2mVersion() { + EqualsVerifier.forClass(LwM2m.LwM2mVersion.class).withRedefinedSuperclass() + .withRedefinedSubclass(ExtendedLwM2mVersion.class).verify(); + } + + @Test + public void assertEqualsHashcodeVersion() { + EqualsVerifier.forClass(LwM2m.Version.class).withRedefinedSubclass(LwM2m.LwM2mVersion.class).verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/ResponseCodeTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/ResponseCodeTest.java new file mode 100644 index 0000000000..19c87315e5 --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/ResponseCodeTest.java @@ -0,0 +1,27 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class ResponseCodeTest { + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(ResponseCode.class).withIgnoredFields("name").verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/endpoint/ProtocolTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/endpoint/ProtocolTest.java new file mode 100644 index 0000000000..1fab25e189 --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/endpoint/ProtocolTest.java @@ -0,0 +1,27 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core.endpoint; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class ProtocolTest { + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(Protocol.class).withIgnoredFields("uriScheme").verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/json/JsonArrayEntryTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/json/JsonArrayEntryTest.java new file mode 100644 index 0000000000..41ce8b550c --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/json/JsonArrayEntryTest.java @@ -0,0 +1,29 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ + +package org.eclipse.leshan.core.json; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; +import nl.jqno.equalsverifier.Warning; + +class JsonArrayEntryTest { + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(JsonArrayEntry.class).suppress(Warning.NONFINAL_FIELDS).verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/json/JsonRootObjectTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/json/JsonRootObjectTest.java new file mode 100644 index 0000000000..956c5ccd78 --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/json/JsonRootObjectTest.java @@ -0,0 +1,29 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ + +package org.eclipse.leshan.core.json; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; +import nl.jqno.equalsverifier.Warning; + +class JsonRootObjectTest { + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(JsonRootObject.class).suppress(Warning.NONFINAL_FIELDS).verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/link/LinkTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/link/LinkTest.java new file mode 100644 index 0000000000..79bcc12513 --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/link/LinkTest.java @@ -0,0 +1,28 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core.link; + +import org.eclipse.leshan.core.link.lwm2m.MixedLwM2mLink; +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class LinkTest { + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(Link.class).withRedefinedSubclass(MixedLwM2mLink.class).verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/link/MixedLwM2mLinkTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/link/MixedLwM2mLinkTest.java index 50642a05f6..5f129b0667 100644 --- a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/link/MixedLwM2mLinkTest.java +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/link/MixedLwM2mLinkTest.java @@ -17,11 +17,15 @@ import static org.junit.jupiter.api.Assertions.assertEquals; +import org.eclipse.leshan.core.link.attributes.Attribute; import org.eclipse.leshan.core.link.attributes.ResourceTypeAttribute; import org.eclipse.leshan.core.link.lwm2m.MixedLwM2mLink; +import org.eclipse.leshan.core.link.lwm2m.attributes.MixedLwM2mAttributeSet; import org.eclipse.leshan.core.node.LwM2mPath; import org.junit.jupiter.api.Test; +import nl.jqno.equalsverifier.EqualsVerifier; + public class MixedLwM2mLinkTest { @Test @@ -41,4 +45,21 @@ public void check_uri_reference() { link = new MixedLwM2mLink(null, new LwM2mPath(2)); assertEquals("/2", link.getUriReference()); } + + private class ExtendedMixedLwM2mLink extends MixedLwM2mLink { + public ExtendedMixedLwM2mLink(String rootPath, LwM2mPath path, Attribute... attributes) { + super(rootPath, path, new MixedLwM2mAttributeSet(attributes)); + } + + @Override + public boolean canEqual(Object obj) { + return (obj instanceof ExtendedMixedLwM2mLink); + } + } + + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(MixedLwM2mLink.class).withRedefinedSuperclass() + .withRedefinedSubclass(ExtendedMixedLwM2mLink.class).verify(); + } } diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/link/attributes/AttributeSetTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/link/attributes/AttributeSetTest.java index ccfb2a7114..ae487a9daa 100644 --- a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/link/attributes/AttributeSetTest.java +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/link/attributes/AttributeSetTest.java @@ -32,6 +32,8 @@ import org.eclipse.leshan.core.node.LwM2mPath; import org.junit.jupiter.api.Test; +import nl.jqno.equalsverifier.EqualsVerifier; + public class AttributeSetTest { private static LwM2mAttributeParser parser = new DefaultLwM2mAttributeParser(); @@ -156,4 +158,21 @@ public void should_throw_on_invalid_assignation_level() { sut.validate(new LwM2mPath("/3/0/9")); }); } + + private class ExtendedAttributeSet extends AttributeSet { + public ExtendedAttributeSet(Attribute... attributes) { + super(attributes); + } + + @Override + public boolean canEqual(Object obj) { + return (obj instanceof AttributeSetTest.ExtendedAttributeSet); + } + } + + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(AttributeSet.class).withRedefinedSubclass(AttributeSetTest.ExtendedAttributeSet.class) + .verify(); + } } diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/link/attributes/BaseAttributeTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/link/attributes/BaseAttributeTest.java new file mode 100644 index 0000000000..7d29085695 --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/link/attributes/BaseAttributeTest.java @@ -0,0 +1,45 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core.link.attributes; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class BaseAttributeTest { + + private class ExtendedBaseAttribute extends BaseAttribute { + public ExtendedBaseAttribute(String name, Object value) { + super(name, value, false); + } + + @Override + public boolean canEqual(Object obj) { + return obj instanceof ExtendedBaseAttribute; + } + + @Override + public String getCoreLinkValue() { + Object val = getValue(); + return val != null ? val.toString() : ""; + } + } + + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(BaseAttribute.class).withRedefinedSubclass(ExtendedBaseAttribute.class).verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/link/attributes/ValuelessAttributeTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/link/attributes/ValuelessAttributeTest.java new file mode 100644 index 0000000000..b8bbbbc0ee --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/link/attributes/ValuelessAttributeTest.java @@ -0,0 +1,27 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core.link.attributes; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class ValuelessAttributeTest { + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(ValuelessAttribute.class).verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/link/lwm2m/attributes/LwM2mAttributeTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/link/lwm2m/attributes/LwM2mAttributeTest.java new file mode 100644 index 0000000000..f593fdf060 --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/link/lwm2m/attributes/LwM2mAttributeTest.java @@ -0,0 +1,27 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core.link.lwm2m.attributes; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class LwM2mAttributeTest { + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(LwM2mAttribute.class).verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/model/LwM2mModelRepositoryTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/model/LwM2mModelRepositoryTest.java new file mode 100644 index 0000000000..a1f0402686 --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/model/LwM2mModelRepositoryTest.java @@ -0,0 +1,28 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ + +package org.eclipse.leshan.core.model; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class LwM2mModelRepositoryTest { + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(LwM2mModelRepository.Key.class).verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/node/LwM2mMultipleResourceTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/node/LwM2mMultipleResourceTest.java new file mode 100644 index 0000000000..52d15a2d68 --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/node/LwM2mMultipleResourceTest.java @@ -0,0 +1,29 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core.node; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class LwM2mMultipleResourceTest { + + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(LwM2mMultipleResource.class).verify(); + } + +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/node/LwM2mObjectInstanceTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/node/LwM2mObjectInstanceTest.java new file mode 100644 index 0000000000..43f129f9fd --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/node/LwM2mObjectInstanceTest.java @@ -0,0 +1,27 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core.node; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class LwM2mObjectInstanceTest { + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(LwM2mObjectInstance.class).verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/node/LwM2mObjectTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/node/LwM2mObjectTest.java new file mode 100644 index 0000000000..1cbafd1ab5 --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/node/LwM2mObjectTest.java @@ -0,0 +1,28 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core.node; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class LwM2mObjectTest { + + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(LwM2mObject.class).verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/node/LwM2mPathTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/node/LwM2mPathTest.java index 7353e528e3..a61fe9805c 100644 --- a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/node/LwM2mPathTest.java +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/node/LwM2mPathTest.java @@ -78,9 +78,6 @@ private void assertFirstSmaller(String path1, String path2) { @Test public void assertEqualsHashcode() { - // TODO we should not use EqualsVerifier.simple() - // But implement a right hashcode/equals way - // see : https://github.com/eclipse-leshan/leshan/issues/1504 - EqualsVerifier.simple().forClass(LwM2mPath.class).verify(); + EqualsVerifier.forClass(LwM2mPath.class).withRedefinedSubclass(LwM2mIncompletePath.class).verify(); } } diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/node/LwM2mResourceInstanceTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/node/LwM2mResourceInstanceTest.java new file mode 100644 index 0000000000..c4bf6c4755 --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/node/LwM2mResourceInstanceTest.java @@ -0,0 +1,27 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core.node; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class LwM2mResourceInstanceTest { + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(LwM2mResourceInstance.class).verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/node/LwM2mRootTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/node/LwM2mRootTest.java new file mode 100644 index 0000000000..44436d86ff --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/node/LwM2mRootTest.java @@ -0,0 +1,27 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core.node; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class LwM2mRootTest { + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(LwM2mRoot.class).verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/node/LwM2mSingleResourceTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/node/LwM2mSingleResourceTest.java new file mode 100644 index 0000000000..beb3cbba0f --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/node/LwM2mSingleResourceTest.java @@ -0,0 +1,27 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core.node; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class LwM2mSingleResourceTest { + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(LwM2mSingleResource.class).verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/node/ObjectLinkTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/node/ObjectLinkTest.java new file mode 100644 index 0000000000..af5bb3bbdb --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/node/ObjectLinkTest.java @@ -0,0 +1,27 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core.node; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class ObjectLinkTest { + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(ObjectLink.class).verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/node/TimestampedLwM2mNodeTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/node/TimestampedLwM2mNodeTest.java new file mode 100644 index 0000000000..aedee54aa1 --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/node/TimestampedLwM2mNodeTest.java @@ -0,0 +1,27 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core.node; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class TimestampedLwM2mNodeTest { + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(TimestampedLwM2mNode.class).verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/node/TimestampedLwM2mNodesTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/node/TimestampedLwM2mNodesTest.java index 11a72b68b3..d48adf4129 100644 --- a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/node/TimestampedLwM2mNodesTest.java +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/node/TimestampedLwM2mNodesTest.java @@ -30,6 +30,8 @@ import org.junit.jupiter.api.Test; +import nl.jqno.equalsverifier.EqualsVerifier; + public class TimestampedLwM2mNodesTest { private final Instant timestamp_1E9_ms = Instant.ofEpochMilli(1_000_000_000); @@ -222,4 +224,9 @@ private TimestampedLwM2mNodes getExampleMixedTimestampLwM2mNodes() { tsNodes.put(timestamp_1E9_ms, new LwM2mPath("/0/0/1"), LwM2mSingleResource.newIntegerResource(1, 111L)); return tsNodes.build(); } + + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(TimestampedLwM2mNodes.class).verify(); + } } diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/observation/CompositeObservationTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/observation/CompositeObservationTest.java new file mode 100644 index 0000000000..af84f8f769 --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/observation/CompositeObservationTest.java @@ -0,0 +1,48 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core.observation; + +import java.util.List; +import java.util.Map; + +import org.eclipse.leshan.core.node.LwM2mPath; +import org.eclipse.leshan.core.request.ContentFormat; +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class CompositeObservationTest { + + public class ExtendedCompositeObservation extends CompositeObservation { + + public ExtendedCompositeObservation(ObservationIdentifier id, String registrationId, List paths, + ContentFormat requestContentFormat, ContentFormat responseContentFormat, Map context, + Map protocolData) { + super(id, registrationId, paths, requestContentFormat, responseContentFormat, context, protocolData); + } + + @Override + public boolean canEqual(Object obj) { + return (obj instanceof ExtendedCompositeObservation); + } + } + + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(CompositeObservation.class).withRedefinedSuperclass() + .withRedefinedSubclass(ExtendedCompositeObservation.class).withIgnoredFields("protocolData").verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/observation/ObservationIdentifierTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/observation/ObservationIdentifierTest.java new file mode 100644 index 0000000000..0766be90e7 --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/observation/ObservationIdentifierTest.java @@ -0,0 +1,27 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core.observation; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class ObservationIdentifierTest { + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(ObservationIdentifier.class).verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/observation/SingleObservationTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/observation/SingleObservationTest.java new file mode 100644 index 0000000000..d6f719ad45 --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/observation/SingleObservationTest.java @@ -0,0 +1,45 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core.observation; + +import java.util.Map; + +import org.eclipse.leshan.core.node.LwM2mPath; +import org.eclipse.leshan.core.request.ContentFormat; +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class SingleObservationTest { + + private class ExtendedSingleObservation extends SingleObservation { + ExtendedSingleObservation(ObservationIdentifier id, String registrationId, LwM2mPath path, + ContentFormat contentFormat, Map context, Map protocolData) { + super(id, registrationId, path, contentFormat, context, protocolData); + } + + @Override + public boolean canEqual(Object obj) { + return (obj instanceof ExtendedSingleObservation); + } + } + + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(SingleObservation.class).withRedefinedSuperclass() + .withRedefinedSubclass(ExtendedSingleObservation.class).withIgnoredFields("protocolData").verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/oscore/AeadAlgorithmTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/oscore/AeadAlgorithmTest.java new file mode 100644 index 0000000000..b0f75280e9 --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/oscore/AeadAlgorithmTest.java @@ -0,0 +1,27 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core.oscore; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class AeadAlgorithmTest { + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(AeadAlgorithm.class).verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/oscore/OscoreSettingTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/oscore/OscoreSettingTest.java new file mode 100644 index 0000000000..060de096ca --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/oscore/OscoreSettingTest.java @@ -0,0 +1,27 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core.oscore; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class OscoreSettingTest { + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(OscoreSetting.class).verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/peer/IpPeerTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/peer/IpPeerTest.java new file mode 100644 index 0000000000..bc6adf7324 --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/peer/IpPeerTest.java @@ -0,0 +1,27 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core.peer; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class IpPeerTest { + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(IpPeer.class).withIgnoredFields("virtualHost").verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/peer/OscoreIdentityTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/peer/OscoreIdentityTest.java new file mode 100644 index 0000000000..523e5ffeb9 --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/peer/OscoreIdentityTest.java @@ -0,0 +1,27 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core.peer; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class OscoreIdentityTest { + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(OscoreIdentity.class).verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/peer/PskIdentityTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/peer/PskIdentityTest.java new file mode 100644 index 0000000000..090397e40e --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/peer/PskIdentityTest.java @@ -0,0 +1,27 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core.peer; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class PskIdentityTest { + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(PskIdentity.class).verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/peer/RpkIdentityTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/peer/RpkIdentityTest.java new file mode 100644 index 0000000000..7ce449ef06 --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/peer/RpkIdentityTest.java @@ -0,0 +1,27 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core.peer; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class RpkIdentityTest { + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(RpkIdentity.class).verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/peer/SocketIdentityTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/peer/SocketIdentityTest.java new file mode 100644 index 0000000000..2552353ee8 --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/peer/SocketIdentityTest.java @@ -0,0 +1,27 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core.peer; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class SocketIdentityTest { + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(SocketIdentity.class).verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/peer/X509IdentityTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/peer/X509IdentityTest.java new file mode 100644 index 0000000000..54bea42b3e --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/peer/X509IdentityTest.java @@ -0,0 +1,27 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core.peer; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class X509IdentityTest { + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(X509Identity.class).verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/AbstractSimpleDownlinkRequestTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/AbstractSimpleDownlinkRequestTest.java new file mode 100644 index 0000000000..210aa0f47e --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/AbstractSimpleDownlinkRequestTest.java @@ -0,0 +1,52 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core.request; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class AbstractSimpleDownlinkRequestTest { + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(AbstractSimpleDownlinkRequest.class).withRedefinedSubclass(CreateRequest.class) + .withIgnoredFields("coapRequest").verify(); + EqualsVerifier.forClass(AbstractSimpleDownlinkRequest.class).withRedefinedSubclass(BootstrapReadRequest.class) + .withIgnoredFields("coapRequest").verify(); + EqualsVerifier.forClass(AbstractSimpleDownlinkRequest.class) + .withRedefinedSubclass(CancelObservationRequest.class).withIgnoredFields("coapRequest").verify(); + EqualsVerifier.forClass(AbstractSimpleDownlinkRequest.class).withRedefinedSubclass(ExecuteRequest.class) + .withIgnoredFields("coapRequest").verify(); + EqualsVerifier.forClass(AbstractSimpleDownlinkRequest.class).withRedefinedSubclass(ObserveRequest.class) + .withIgnoredFields("coapRequest").verify(); + EqualsVerifier.forClass(AbstractSimpleDownlinkRequest.class).withRedefinedSubclass(ReadRequest.class) + .withIgnoredFields("coapRequest").verify(); + EqualsVerifier.forClass(AbstractSimpleDownlinkRequest.class).withRedefinedSubclass(WriteAttributesRequest.class) + .withIgnoredFields("coapRequest").verify(); + EqualsVerifier.forClass(AbstractSimpleDownlinkRequest.class).withRedefinedSubclass(WriteRequest.class) + .withIgnoredFields("coapRequest").verify(); + EqualsVerifier.forClass(AbstractSimpleDownlinkRequest.class).withRedefinedSubclass(DiscoverRequest.class) + .withIgnoredFields("coapRequest").verify(); + EqualsVerifier.forClass(AbstractSimpleDownlinkRequest.class).withRedefinedSubclass(BootstrapDeleteRequest.class) + .withIgnoredFields("coapRequest").verify(); + EqualsVerifier.forClass(AbstractSimpleDownlinkRequest.class) + .withRedefinedSubclass(BootstrapDiscoverRequest.class).withIgnoredFields("coapRequest").verify(); + EqualsVerifier.forClass(AbstractSimpleDownlinkRequest.class).withRedefinedSubclass(BootstrapWriteRequest.class) + .withIgnoredFields("coapRequest").verify(); + EqualsVerifier.forClass(AbstractSimpleDownlinkRequest.class).withRedefinedSubclass(DeleteRequest.class) + .withIgnoredFields("coapRequest").verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/BootstrapReadRequestTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/BootstrapReadRequestTest.java new file mode 100644 index 0000000000..9738ebf890 --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/BootstrapReadRequestTest.java @@ -0,0 +1,40 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core.request; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class BootstrapReadRequestTest { + + private class ExtendedBootstrapReadRequest extends BootstrapReadRequest { + ExtendedBootstrapReadRequest(int objectId) { + super(null, newPath(objectId), null); + } + + @Override + public boolean canEqual(Object obj) { + return (obj instanceof ExtendedBootstrapReadRequest); + } + } + + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(BootstrapReadRequest.class).withRedefinedSuperclass() + .withRedefinedSubclass(ExtendedBootstrapReadRequest.class).withIgnoredFields("coapRequest").verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/BootstrapRequestTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/BootstrapRequestTest.java new file mode 100644 index 0000000000..d87c45c646 --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/BootstrapRequestTest.java @@ -0,0 +1,41 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core.request; + +import org.eclipse.leshan.core.request.exception.InvalidRequestException; +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class BootstrapRequestTest { + + private class ExtendedBootstrapRequest extends BootstrapRequest { + public ExtendedBootstrapRequest(String endpointName) throws InvalidRequestException { + super(endpointName, null, null); + } + + @Override + public boolean canEqual(Object obj) { + return (obj instanceof ExtendedBootstrapRequest); + } + } + + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(BootstrapRequest.class).withRedefinedSubclass(ExtendedBootstrapRequest.class) + .withIgnoredFields("coapRequest").verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/CancelObservationRequestTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/CancelObservationRequestTest.java new file mode 100644 index 0000000000..c169c472ef --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/CancelObservationRequestTest.java @@ -0,0 +1,43 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core.request; + +import org.eclipse.leshan.core.observation.SingleObservation; +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class CancelObservationRequestTest { + + public class ExtendedCancelObservationRequest extends CancelObservationRequest { + + public ExtendedCancelObservationRequest(SingleObservation observation) { + super(observation); + } + + @Override + public boolean canEqual(Object obj) { + return (obj instanceof ExtendedCancelObservationRequest); + } + } + + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(CancelObservationRequest.class).withRedefinedSuperclass() + .withRedefinedSubclass(ExtendedCancelObservationRequest.class).withIgnoredFields("coapRequest") + .verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/ContentFormatTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/ContentFormatTest.java index 095122b92d..1f3939da0d 100644 --- a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/ContentFormatTest.java +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/ContentFormatTest.java @@ -32,6 +32,8 @@ import org.eclipse.leshan.core.node.codec.CodecException; import org.junit.jupiter.api.Test; +import nl.jqno.equalsverifier.EqualsVerifier; + public class ContentFormatTest { @Test @@ -51,4 +53,10 @@ public void get_optional_content_format_for_v1_1() throws CodecException { assertEquals(Arrays.asList(TLV, JSON, SENML_JSON, SENML_CBOR, CBOR), optionalContentFormat); } + + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(ContentFormat.class).withIgnoredFields("name", "mediaType", "mandatoryForClient") + .verify(); + } } diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/CreateRequestTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/CreateRequestTest.java new file mode 100644 index 0000000000..93217d8659 --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/CreateRequestTest.java @@ -0,0 +1,43 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core.request; + +import org.eclipse.leshan.core.node.LwM2mResource; +import org.eclipse.leshan.core.request.exception.InvalidRequestException; +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class CreateRequestTest { + + public class ExtendedCreateRequest extends CreateRequest { + public ExtendedCreateRequest(ContentFormat contentFormat, int objectId, LwM2mResource... resources) + throws InvalidRequestException { + super(contentFormat, objectId, resources); + } + + @Override + public boolean canEqual(Object obj) { + return (obj instanceof ExtendedCreateRequest); + } + } + + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(CreateRequest.class).withRedefinedSubclass(ExtendedCreateRequest.class) + .withRedefinedSuperclass().withIgnoredFields("coapRequest").verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/DeregisterRequestTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/DeregisterRequestTest.java new file mode 100644 index 0000000000..21125eb69a --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/DeregisterRequestTest.java @@ -0,0 +1,41 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core.request; + +import org.eclipse.leshan.core.request.exception.InvalidRequestException; +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class DeregisterRequestTest { + + private class ExtendedDeregisterRequest extends DeregisterRequest { + public ExtendedDeregisterRequest(String registrationId) throws InvalidRequestException { + super(registrationId, null); + } + + @Override + public boolean canEqual(Object obj) { + return (obj instanceof ExtendedDeregisterRequest); + } + } + + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(DeregisterRequest.class).withRedefinedSubclass(ExtendedDeregisterRequest.class) + .withIgnoredFields("coapRequest").verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/ExecuteRequestTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/ExecuteRequestTest.java new file mode 100644 index 0000000000..288b96eb07 --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/ExecuteRequestTest.java @@ -0,0 +1,43 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core.request; + +import org.eclipse.leshan.core.request.argument.Arguments; +import org.eclipse.leshan.core.request.exception.InvalidRequestException; +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class ExecuteRequestTest { + + private class ExtendedExecuteRequest extends ExecuteRequest { + ExtendedExecuteRequest(String path) throws InvalidRequestException { + super(path, (Arguments) null); + } + + @Override + public boolean canEqual(Object obj) { + return (obj instanceof ExtendedExecuteRequest); + } + } + + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(ExecuteRequest.class).withRedefinedSuperclass() + .withRedefinedSubclass(ExtendedExecuteRequest.class).withIgnoredFields("coapRequest").verify(); + } + +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/ObserveCompositeRequestTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/ObserveCompositeRequestTest.java new file mode 100644 index 0000000000..fe24d6f4a3 --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/ObserveCompositeRequestTest.java @@ -0,0 +1,45 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core.request; + +import java.util.List; + +import org.eclipse.leshan.core.node.LwM2mPath; +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class ObserveCompositeRequestTest { + + private class ExtendedObserveCompositeRequest extends ObserveCompositeRequest { + ExtendedObserveCompositeRequest(ContentFormat requestContentFormat, ContentFormat responseContentFormat, + List paths) { + super(requestContentFormat, responseContentFormat, paths, null); + } + + @Override + public boolean canEqual(Object obj) { + return (obj instanceof ExtendedObserveCompositeRequest); + } + } + + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(ObserveCompositeRequest.class) + .withRedefinedSubclass(ExtendedObserveCompositeRequest.class) + .withIgnoredFields("context", "coapRequest").verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/ObserveRequestTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/ObserveRequestTest.java new file mode 100644 index 0000000000..c2921da567 --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/ObserveRequestTest.java @@ -0,0 +1,40 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core.request; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class ObserveRequestTest { + + private class ExtendedObserveRequest extends ObserveRequest { + public ExtendedObserveRequest(int objectId) { + super((String) null); + } + + @Override + public boolean canEqual(Object obj) { + return (obj instanceof ExtendedObserveRequest); + } + } + + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(ObserveRequest.class).withRedefinedSuperclass() + .withRedefinedSubclass(ExtendedObserveRequest.class).withIgnoredFields("coapRequest").verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/ReadCompositeRequestTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/ReadCompositeRequestTest.java new file mode 100644 index 0000000000..e9fc029c21 --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/ReadCompositeRequestTest.java @@ -0,0 +1,40 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core.request; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class ReadCompositeRequestTest { + private class ExtendedReadCompositeRequest extends ReadCompositeRequest { + ExtendedReadCompositeRequest(ContentFormat requestContentFormat, ContentFormat responseContentFormat, + String... paths) { + super(null, requestContentFormat, responseContentFormat, null); + } + + @Override + public boolean canEqual(Object obj) { + return (obj instanceof ExtendedReadCompositeRequest); + } + } + + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(ReadCompositeRequest.class).withRedefinedSubclass(ExtendedReadCompositeRequest.class) + .withIgnoredFields("coapRequest").verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/ReadRequestTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/ReadRequestTest.java new file mode 100644 index 0000000000..d583819bfd --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/ReadRequestTest.java @@ -0,0 +1,40 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core.request; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class ReadRequestTest { + + private class ExtendedReadRequest extends ReadRequest { + public ExtendedReadRequest(int objectId) { + super(null, newPath(objectId), null); + } + + @Override + public boolean canEqual(Object obj) { + return (obj instanceof ExtendedReadRequest); + } + } + + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(ReadRequest.class).withRedefinedSuperclass() + .withRedefinedSubclass(ExtendedReadRequest.class).withIgnoredFields("coapRequest").verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/RegisterRequestTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/RegisterRequestTest.java new file mode 100644 index 0000000000..c177d3f5df --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/RegisterRequestTest.java @@ -0,0 +1,48 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core.request; + +import java.util.EnumSet; +import java.util.Map; + +import org.eclipse.leshan.core.link.Link; +import org.eclipse.leshan.core.request.exception.InvalidRequestException; +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class RegisterRequestTest { + + private class ExtendedRegisterRequest extends RegisterRequest { + ExtendedRegisterRequest(String endpointName, Long lifetime, String lwVersion, EnumSet bindingMode, + Boolean queueMode, String smsNumber, Link[] objectLinks, Map additionalAttributes) + throws InvalidRequestException { + super(endpointName, lifetime, lwVersion, bindingMode, queueMode, smsNumber, objectLinks, + additionalAttributes, null); + } + + @Override + public boolean canEqual(Object o) { + return (o instanceof ExtendedRegisterRequest); + } + } + + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(RegisterRequest.class).withRedefinedSubclass(ExtendedRegisterRequest.class) + .withIgnoredFields("coapRequest").verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/SendRequestTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/SendRequestTest.java index dc89487ecc..6fc434cd1a 100644 --- a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/SendRequestTest.java +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/SendRequestTest.java @@ -27,6 +27,8 @@ import org.eclipse.leshan.core.request.exception.InvalidRequestException; import org.junit.jupiter.api.Test; +import nl.jqno.equalsverifier.EqualsVerifier; + public class SendRequestTest { @Test @@ -57,4 +59,21 @@ public void send_request_with_path_without_node_should_fail() { new SendRequest(ContentFormat.SENML_JSON, nodes); }); } + + private class ExtendedSendRequest extends SendRequest { + ExtendedSendRequest(ContentFormat format, Map nodes) { + super(format, nodes, null); + } + + @Override + public boolean canEqual(Object obj) { + return (obj instanceof ExtendedSendRequest); + } + } + + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(SendRequest.class).withRedefinedSubclass(ExtendedSendRequest.class) + .withIgnoredFields("coapRequest").verify(); + } } diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/UpdateRequestTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/UpdateRequestTest.java new file mode 100644 index 0000000000..b22fbf4cf7 --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/UpdateRequestTest.java @@ -0,0 +1,47 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core.request; + +import java.util.EnumSet; +import java.util.Map; + +import org.eclipse.leshan.core.link.Link; +import org.eclipse.leshan.core.request.exception.InvalidRequestException; +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class UpdateRequestTest { + + private class ExtendedUpdateRequest extends UpdateRequest { + ExtendedUpdateRequest(String registrationId, Long lifetime, String smsNumber, EnumSet binding, + Link[] objectLinks, Map additionalAttributes) throws InvalidRequestException { + super(registrationId, lifetime, smsNumber, binding, objectLinks, additionalAttributes, null); + } + + @Override + public boolean canEqual(Object obj) { + return (obj instanceof ExtendedUpdateRequest); + } + } + + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(UpdateRequest.class).withRedefinedSubclass(ExtendedUpdateRequest.class) + .withIgnoredFields("coapRequest").verify(); + } + +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/WriteAttributesRequestTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/WriteAttributesRequestTest.java index 73f3270d8c..5d41b89927 100644 --- a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/WriteAttributesRequestTest.java +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/WriteAttributesRequestTest.java @@ -19,9 +19,12 @@ import org.eclipse.leshan.core.link.lwm2m.attributes.LwM2mAttributeSet; import org.eclipse.leshan.core.link.lwm2m.attributes.LwM2mAttributes; +import org.eclipse.leshan.core.node.LwM2mPath; import org.eclipse.leshan.core.request.exception.InvalidRequestException; import org.junit.jupiter.api.Test; +import nl.jqno.equalsverifier.EqualsVerifier; + public class WriteAttributesRequestTest { @Test @@ -99,4 +102,21 @@ public void should_throw_on_invalid_lt_gt_st_combination() { new WriteAttributesRequest(3, 0, 9, sut); }); } + + public class ExtendedWriteAttributesRequest extends WriteAttributesRequest { + ExtendedWriteAttributesRequest(LwM2mPath path, LwM2mAttributeSet attributes) { + super(String.valueOf(path), attributes, null); + } + + @Override + public boolean canEqual(Object obj) { + return (obj instanceof ExtendedWriteAttributesRequest); + } + } + + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(WriteAttributesRequest.class).withRedefinedSuperclass() + .withRedefinedSubclass(ExtendedWriteAttributesRequest.class).withIgnoredFields("coapRequest").verify(); + } } diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/WriteRequestTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/WriteRequestTest.java new file mode 100644 index 0000000000..d4f19bd643 --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/WriteRequestTest.java @@ -0,0 +1,47 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core.request; + +import java.util.Collection; + +import org.eclipse.leshan.core.node.LwM2mObjectInstance; +import org.eclipse.leshan.core.node.LwM2mResource; +import org.eclipse.leshan.core.request.exception.InvalidRequestException; +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class WriteRequestTest { + private class ExtendedWriteRequest extends WriteRequest { + public ExtendedWriteRequest(Mode mode, ContentFormat contentFormat, int objectId, int objectInstanceId, + Collection resources) throws InvalidRequestException { + super(mode, contentFormat, newPath(objectId, objectInstanceId), + new LwM2mObjectInstance(objectId, resources), null); + } + + @Override + public boolean canEqual(Object obj) { + return (obj instanceof ExtendedWriteRequest); + } + } + + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(WriteRequest.class).withRedefinedSuperclass() + .withRedefinedSubclass(ExtendedWriteRequest.class).withIgnoredFields("coapRequest").verify(); + } + +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/argument/ArgumentTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/argument/ArgumentTest.java new file mode 100644 index 0000000000..b6f28288f1 --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/argument/ArgumentTest.java @@ -0,0 +1,28 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core.request.argument; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class ArgumentTest { + + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(Argument.class).verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/argument/ArgumentsTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/argument/ArgumentsTest.java index 08cf07439e..50fdff3450 100644 --- a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/argument/ArgumentsTest.java +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/request/argument/ArgumentsTest.java @@ -26,6 +26,8 @@ import org.junit.jupiter.api.Test; +import nl.jqno.equalsverifier.EqualsVerifier; + public class ArgumentsTest { @Test @@ -103,4 +105,9 @@ public void should_forbid_arguments_with_the_same_digit() throws InvalidArgument .build(); }); } + + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(Arguments.class).verify(); + } } diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/tlv/TlvTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/tlv/TlvTest.java new file mode 100644 index 0000000000..d50a8016b9 --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/tlv/TlvTest.java @@ -0,0 +1,33 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ + +package org.eclipse.leshan.core.tlv; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class TlvTest { + + @Test + public void assertEqualsHashcode() { + byte[] bytes = { 1, 2, 3, 4, 5 }; + Tlv prefab1 = new Tlv(Tlv.TlvType.OBJECT_INSTANCE, new Tlv[0], null, 1); + Tlv prefab2 = new Tlv(Tlv.TlvType.RESOURCE_VALUE, null, bytes, 2); + + EqualsVerifier.forClass(Tlv.class).withPrefabValues(Tlv.class, prefab1, prefab2).verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/util/datatype/ULongTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/util/datatype/ULongTest.java new file mode 100644 index 0000000000..ab1cfe335c --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/core/util/datatype/ULongTest.java @@ -0,0 +1,27 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.core.util.datatype; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class ULongTest { + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(ULong.class).verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/senml/SenMLPackTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/senml/SenMLPackTest.java new file mode 100644 index 0000000000..e7cccf367e --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/senml/SenMLPackTest.java @@ -0,0 +1,28 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.senml; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; +import nl.jqno.equalsverifier.Warning; + +class SenMLPackTest { + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(SenMLPack.class).suppress(Warning.NONFINAL_FIELDS).verify(); + } +} diff --git a/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/senml/SenMLRecordTest.java b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/senml/SenMLRecordTest.java new file mode 100644 index 0000000000..9efc32a4f4 --- /dev/null +++ b/leshan-lwm2m-core/src/test/java/org/eclipse/leshan/senml/SenMLRecordTest.java @@ -0,0 +1,29 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.senml; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; +import nl.jqno.equalsverifier.Warning; + +class SenMLRecordTest { + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(SenMLRecord.class).suppress(Warning.NONFINAL_FIELDS).verify(); + } + +} diff --git a/leshan-lwm2m-server/pom.xml b/leshan-lwm2m-server/pom.xml index 6a2731a6b1..14d6b20fcf 100644 --- a/leshan-lwm2m-server/pom.xml +++ b/leshan-lwm2m-server/pom.xml @@ -56,5 +56,9 @@ Contributors: logback-classic test + + nl.jqno.equalsverifier + equalsverifier + diff --git a/leshan-lwm2m-server/src/main/java/org/eclipse/leshan/server/registration/Registration.java b/leshan-lwm2m-server/src/main/java/org/eclipse/leshan/server/registration/Registration.java index b5473bafa7..61766a6e3a 100644 --- a/leshan-lwm2m-server/src/main/java/org/eclipse/leshan/server/registration/Registration.java +++ b/leshan-lwm2m-server/src/main/java/org/eclipse/leshan/server/registration/Registration.java @@ -28,6 +28,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Map; +import java.util.Objects; import java.util.Set; import java.util.TreeSet; @@ -372,119 +373,33 @@ public String toString() { } @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result - + ((additionalRegistrationAttributes == null) ? 0 : additionalRegistrationAttributes.hashCode()); - result = prime * result + ((applicationData == null) ? 0 : applicationData.hashCode()); - result = prime * result + ((availableInstances == null) ? 0 : availableInstances.hashCode()); - result = prime * result + ((bindingMode == null) ? 0 : bindingMode.hashCode()); - result = prime * result + ((endpoint == null) ? 0 : endpoint.hashCode()); - result = prime * result + ((id == null) ? 0 : id.hashCode()); - result = prime * result + ((clientTransportData == null) ? 0 : clientTransportData.hashCode()); - result = prime * result + ((lastUpdate == null) ? 0 : lastUpdate.hashCode()); - result = prime * result + (int) (lifeTimeInSec ^ (lifeTimeInSec >>> 32)); - result = prime * result + ((lwM2mVersion == null) ? 0 : lwM2mVersion.hashCode()); - result = prime * result + Arrays.hashCode(objectLinks); - result = prime * result + ((queueMode == null) ? 0 : queueMode.hashCode()); - result = prime * result + ((registrationDate == null) ? 0 : registrationDate.hashCode()); - result = prime * result + ((rootPath == null) ? 0 : rootPath.hashCode()); - result = prime * result + ((smsNumber == null) ? 0 : smsNumber.hashCode()); - result = prime * result + ((supportedContentFormats == null) ? 0 : supportedContentFormats.hashCode()); - result = prime * result + ((supportedObjects == null) ? 0 : supportedObjects.hashCode()); - return result; + public final boolean equals(Object o) { + if (this == o) + return true; + if (!(o instanceof Registration)) + return false; + Registration that = (Registration) o; + return lifeTimeInSec == that.lifeTimeInSec && Objects.equals(registrationDate, that.registrationDate) + && Objects.equals(clientTransportData, that.clientTransportData) + && Objects.equals(smsNumber, that.smsNumber) && Objects.equals(lwM2mVersion, that.lwM2mVersion) + && Objects.equals(bindingMode, that.bindingMode) && Objects.equals(queueMode, that.queueMode) + && Objects.equals(endpoint, that.endpoint) && Objects.equals(id, that.id) + && Arrays.equals(objectLinks, that.objectLinks) + && Objects.equals(additionalRegistrationAttributes, that.additionalRegistrationAttributes) + && Objects.equals(rootPath, that.rootPath) + && Objects.equals(supportedContentFormats, that.supportedContentFormats) + && Objects.equals(supportedObjects, that.supportedObjects) + && Objects.equals(availableInstances, that.availableInstances) + && Objects.equals(lastUpdate, that.lastUpdate) && Objects.equals(applicationData, that.applicationData) + && Objects.equals(lastEndpointUsed, that.lastEndpointUsed); } @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - Registration other = (Registration) obj; - if (additionalRegistrationAttributes == null) { - if (other.additionalRegistrationAttributes != null) - return false; - } else if (!additionalRegistrationAttributes.equals(other.additionalRegistrationAttributes)) - return false; - if (applicationData == null) { - if (other.applicationData != null) - return false; - } else if (!applicationData.equals(other.applicationData)) - return false; - if (availableInstances == null) { - if (other.availableInstances != null) - return false; - } else if (!availableInstances.equals(other.availableInstances)) - return false; - if (bindingMode == null) { - if (other.bindingMode != null) - return false; - } else if (!bindingMode.equals(other.bindingMode)) - return false; - if (endpoint == null) { - if (other.endpoint != null) - return false; - } else if (!endpoint.equals(other.endpoint)) - return false; - if (id == null) { - if (other.id != null) - return false; - } else if (!id.equals(other.id)) - return false; - if (clientTransportData == null) { - if (other.clientTransportData != null) - return false; - } else if (!clientTransportData.equals(other.clientTransportData)) - return false; - if (lastUpdate == null) { - if (other.lastUpdate != null) - return false; - } else if (!lastUpdate.equals(other.lastUpdate)) - return false; - if (lifeTimeInSec != other.lifeTimeInSec) - return false; - if (lwM2mVersion == null) { - if (other.lwM2mVersion != null) - return false; - } else if (!lwM2mVersion.equals(other.lwM2mVersion)) - return false; - if (!Arrays.equals(objectLinks, other.objectLinks)) - return false; - if (queueMode == null) { - if (other.queueMode != null) - return false; - } else if (!queueMode.equals(other.queueMode)) - return false; - if (registrationDate == null) { - if (other.registrationDate != null) - return false; - } else if (!registrationDate.equals(other.registrationDate)) - return false; - if (rootPath == null) { - if (other.rootPath != null) - return false; - } else if (!rootPath.equals(other.rootPath)) - return false; - if (smsNumber == null) { - if (other.smsNumber != null) - return false; - } else if (!smsNumber.equals(other.smsNumber)) - return false; - if (supportedContentFormats == null) { - if (other.supportedContentFormats != null) - return false; - } else if (!supportedContentFormats.equals(other.supportedContentFormats)) - return false; - if (supportedObjects == null) { - if (other.supportedObjects != null) - return false; - } else if (!supportedObjects.equals(other.supportedObjects)) - return false; - return true; + public final int hashCode() { + return Objects.hash(registrationDate, clientTransportData, lifeTimeInSec, smsNumber, lwM2mVersion, bindingMode, + queueMode, endpoint, id, Arrays.hashCode(objectLinks), additionalRegistrationAttributes, rootPath, + supportedContentFormats, supportedObjects, availableInstances, lastUpdate, applicationData, + lastEndpointUsed); } public static class Builder { diff --git a/leshan-lwm2m-server/src/main/java/org/eclipse/leshan/server/registration/RegistrationUpdate.java b/leshan-lwm2m-server/src/main/java/org/eclipse/leshan/server/registration/RegistrationUpdate.java index 0a94fbc07c..540123bd84 100644 --- a/leshan-lwm2m-server/src/main/java/org/eclipse/leshan/server/registration/RegistrationUpdate.java +++ b/leshan-lwm2m-server/src/main/java/org/eclipse/leshan/server/registration/RegistrationUpdate.java @@ -232,34 +232,28 @@ public String toString() { } @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + Arrays.hashCode(objectLinks); - result = prime * result + Objects.hash(additionalAttributes, alternatePath, applicationData, availableInstances, - bindingMode, clientTransportData, lifeTimeInSec, registrationId, smsNumber, supportedContentFormats, - supportedObjects); - return result; + public final boolean equals(Object o) { + if (this == o) + return true; + if (!(o instanceof RegistrationUpdate)) + return false; + RegistrationUpdate that = (RegistrationUpdate) o; + return Objects.equals(registrationId, that.registrationId) + && Objects.equals(clientTransportData, that.clientTransportData) + && Objects.equals(lifeTimeInSec, that.lifeTimeInSec) && Objects.equals(smsNumber, that.smsNumber) + && Objects.equals(bindingMode, that.bindingMode) && Arrays.equals(objectLinks, that.objectLinks) + && Objects.equals(alternatePath, that.alternatePath) + && Objects.equals(supportedContentFormats, that.supportedContentFormats) + && Objects.equals(supportedObjects, that.supportedObjects) + && Objects.equals(availableInstances, that.availableInstances) + && Objects.equals(additionalAttributes, that.additionalAttributes) + && Objects.equals(applicationData, that.applicationData); } @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - RegistrationUpdate other = (RegistrationUpdate) obj; - return Objects.equals(additionalAttributes, other.additionalAttributes) - && Objects.equals(alternatePath, other.alternatePath) - && Objects.equals(applicationData, other.applicationData) - && Objects.equals(availableInstances, other.availableInstances) - && Objects.equals(bindingMode, other.bindingMode) - && Objects.equals(clientTransportData, other.clientTransportData) - && Objects.equals(lifeTimeInSec, other.lifeTimeInSec) && Arrays.equals(objectLinks, other.objectLinks) - && Objects.equals(registrationId, other.registrationId) && Objects.equals(smsNumber, other.smsNumber) - && Objects.equals(supportedContentFormats, other.supportedContentFormats) - && Objects.equals(supportedObjects, other.supportedObjects); + public final int hashCode() { + return Objects.hash(registrationId, clientTransportData, lifeTimeInSec, smsNumber, bindingMode, + Arrays.hashCode(objectLinks), alternatePath, supportedContentFormats, supportedObjects, + availableInstances, additionalAttributes, applicationData); } } diff --git a/leshan-lwm2m-server/src/test/java/org/eclipse/leshan/server/registration/RegistrationTest.java b/leshan-lwm2m-server/src/test/java/org/eclipse/leshan/server/registration/RegistrationTest.java index 57c5a49f79..876a0052bb 100644 --- a/leshan-lwm2m-server/src/test/java/org/eclipse/leshan/server/registration/RegistrationTest.java +++ b/leshan-lwm2m-server/src/test/java/org/eclipse/leshan/server/registration/RegistrationTest.java @@ -40,6 +40,8 @@ import org.eclipse.leshan.server.registration.RegistrationDataExtractor.RegistrationData; import org.junit.jupiter.api.Test; +import nl.jqno.equalsverifier.EqualsVerifier; + public class RegistrationTest { private final LinkParser linkParser = new DefaultLwM2mLinkParser(); @@ -293,4 +295,9 @@ private Registration given_a_registration_with_object_link_like(String objectLin return builder.build(); } + + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(Registration.class).verify(); + } } diff --git a/leshan-lwm2m-server/src/test/java/org/eclipse/leshan/server/registration/RegistrationUpdateTest.java b/leshan-lwm2m-server/src/test/java/org/eclipse/leshan/server/registration/RegistrationUpdateTest.java index 50b8c41a70..4ca928ea12 100644 --- a/leshan-lwm2m-server/src/test/java/org/eclipse/leshan/server/registration/RegistrationUpdateTest.java +++ b/leshan-lwm2m-server/src/test/java/org/eclipse/leshan/server/registration/RegistrationUpdateTest.java @@ -28,6 +28,8 @@ import org.eclipse.leshan.server.queue.PresenceService; import org.junit.jupiter.api.Test; +import nl.jqno.equalsverifier.EqualsVerifier; + /** * tests the implementation of {@link PresenceService} * @@ -92,4 +94,9 @@ public void testApplicationDataUpdate() throws Exception { assertEquals("10", updatedAppData.get("y")); assertEquals("100", updatedAppData.get("z")); } + + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(RegistrationUpdate.class).verify(); + } } diff --git a/leshan-lwm2m-servers-shared/pom.xml b/leshan-lwm2m-servers-shared/pom.xml index dcf548ece3..0807d487e9 100644 --- a/leshan-lwm2m-servers-shared/pom.xml +++ b/leshan-lwm2m-servers-shared/pom.xml @@ -52,5 +52,9 @@ Contributors: logback-classic test + + nl.jqno.equalsverifier + equalsverifier + diff --git a/leshan-lwm2m-servers-shared/src/main/java/org/eclipse/leshan/servers/security/SecurityInfo.java b/leshan-lwm2m-servers-shared/src/main/java/org/eclipse/leshan/servers/security/SecurityInfo.java index 30a4785018..95daaeb14e 100644 --- a/leshan-lwm2m-servers-shared/src/main/java/org/eclipse/leshan/servers/security/SecurityInfo.java +++ b/leshan-lwm2m-servers-shared/src/main/java/org/eclipse/leshan/servers/security/SecurityInfo.java @@ -19,6 +19,7 @@ import java.io.Serializable; import java.security.PublicKey; import java.util.Arrays; +import java.util.Objects; import org.eclipse.leshan.core.oscore.InvalidOscoreSettingException; import org.eclipse.leshan.core.oscore.OscoreSetting; @@ -196,56 +197,6 @@ public boolean useOSCORE() { return oscoreSetting != null; } - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((endpoint == null) ? 0 : endpoint.hashCode()); - result = prime * result + ((pskIdentity == null) ? 0 : pskIdentity.hashCode()); - result = prime * result + Arrays.hashCode(preSharedKey); - result = prime * result + ((rawPublicKey == null) ? 0 : rawPublicKey.hashCode()); - result = prime * result + (useX509Cert ? 1231 : 1237); - result = prime * result + ((oscoreSetting == null) ? 0 : oscoreSetting.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - SecurityInfo other = (SecurityInfo) obj; - if (endpoint == null) { - if (other.endpoint != null) - return false; - } else if (!endpoint.equals(other.endpoint)) - return false; - if (pskIdentity == null) { - if (other.pskIdentity != null) - return false; - } else if (!pskIdentity.equals(other.pskIdentity)) - return false; - if (!Arrays.equals(preSharedKey, other.preSharedKey)) - return false; - if (rawPublicKey == null) { - if (other.rawPublicKey != null) - return false; - } else if (!rawPublicKey.equals(other.rawPublicKey)) - return false; - if (useX509Cert != other.useX509Cert) - return false; - if (oscoreSetting == null) { - if (other.oscoreSetting != null) - return false; - } else if (!oscoreSetting.equals(other.oscoreSetting)) - return false; - - return true; - } - @Override public String toString() { // TODO make a better toString() @@ -256,4 +207,21 @@ public String toString() { useOSCORE() ? new OscoreIdentity(getOscoreSetting().getRecipientId()) : ""); } + @Override + public final boolean equals(Object o) { + if (this == o) + return true; + if (!(o instanceof SecurityInfo)) + return false; + SecurityInfo that = (SecurityInfo) o; + return useX509Cert == that.useX509Cert && Objects.equals(endpoint, that.endpoint) + && Objects.equals(pskIdentity, that.pskIdentity) && Arrays.equals(preSharedKey, that.preSharedKey) + && Objects.equals(rawPublicKey, that.rawPublicKey) && Objects.equals(oscoreSetting, that.oscoreSetting); + } + + @Override + public final int hashCode() { + return Objects.hash(endpoint, pskIdentity, Arrays.hashCode(preSharedKey), rawPublicKey, useX509Cert, + oscoreSetting); + } } diff --git a/leshan-lwm2m-servers-shared/src/test/java/org/eclipse/leshan/servers/security/SecurityInfoTest.java b/leshan-lwm2m-servers-shared/src/test/java/org/eclipse/leshan/servers/security/SecurityInfoTest.java new file mode 100644 index 0000000000..6a2821e97d --- /dev/null +++ b/leshan-lwm2m-servers-shared/src/test/java/org/eclipse/leshan/servers/security/SecurityInfoTest.java @@ -0,0 +1,27 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.servers.security; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class SecurityInfoTest { + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(SecurityInfo.class).verify(); + } +} diff --git a/leshan-tl-cf-server-coap/pom.xml b/leshan-tl-cf-server-coap/pom.xml index 8fa8e55c7e..4acec6cd04 100644 --- a/leshan-tl-cf-server-coap/pom.xml +++ b/leshan-tl-cf-server-coap/pom.xml @@ -59,6 +59,10 @@ Contributors: logback-classic test + + nl.jqno.equalsverifier + equalsverifier + diff --git a/leshan-tl-cf-server-coap/src/test/java/org/eclipse/leshan/transport/californium/server/observation/ObservationServiceTest.java b/leshan-tl-cf-server-coap/src/test/java/org/eclipse/leshan/transport/californium/server/observation/ObservationServiceTest.java index 80b92f9936..8b1d1957b9 100644 --- a/leshan-tl-cf-server-coap/src/test/java/org/eclipse/leshan/transport/californium/server/observation/ObservationServiceTest.java +++ b/leshan-tl-cf-server-coap/src/test/java/org/eclipse/leshan/transport/californium/server/observation/ObservationServiceTest.java @@ -33,6 +33,7 @@ import org.eclipse.leshan.core.endpoint.Protocol; import org.eclipse.leshan.core.link.Link; import org.eclipse.leshan.core.node.LwM2mPath; +import org.eclipse.leshan.core.observation.CompositeObservation; import org.eclipse.leshan.core.observation.Observation; import org.eclipse.leshan.core.observation.ObservationIdentifier; import org.eclipse.leshan.core.observation.SingleObservation; @@ -59,6 +60,8 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import nl.jqno.equalsverifier.EqualsVerifier; + public class ObservationServiceTest { ObservationServiceImpl observationService; @@ -262,4 +265,12 @@ public void stop() { public void destroy() { } } + + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(Observation.class).withRedefinedSubclass(CompositeObservation.class) + .withIgnoredFields("protocolData").verify(); + EqualsVerifier.forClass(Observation.class).withRedefinedSubclass(SingleObservation.class) + .withIgnoredFields("protocolData").verify(); + } } diff --git a/leshan-tl-cf-shared-oscore/pom.xml b/leshan-tl-cf-shared-oscore/pom.xml index a2a6a5ed0f..4b22ccd337 100644 --- a/leshan-tl-cf-shared-oscore/pom.xml +++ b/leshan-tl-cf-shared-oscore/pom.xml @@ -51,5 +51,9 @@ Contributors: junit-jupiter-engine test + + nl.jqno.equalsverifier + equalsverifier + diff --git a/leshan-tl-cf-shared-oscore/src/main/java/org/eclipse/leshan/transport/californium/oscore/cf/OscoreParameters.java b/leshan-tl-cf-shared-oscore/src/main/java/org/eclipse/leshan/transport/californium/oscore/cf/OscoreParameters.java index 3526f359ad..7d19b48092 100644 --- a/leshan-tl-cf-shared-oscore/src/main/java/org/eclipse/leshan/transport/californium/oscore/cf/OscoreParameters.java +++ b/leshan-tl-cf-shared-oscore/src/main/java/org/eclipse/leshan/transport/californium/oscore/cf/OscoreParameters.java @@ -16,6 +16,7 @@ package org.eclipse.leshan.transport.californium.oscore.cf; import java.util.Arrays; +import java.util.Objects; import org.eclipse.californium.cose.AlgorithmID; import org.eclipse.leshan.core.util.Hex; @@ -77,45 +78,20 @@ public String toString() { } @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((aeadAlgorithm == null) ? 0 : aeadAlgorithm.hashCode()); - result = prime * result + ((hmacAlgorithm == null) ? 0 : hmacAlgorithm.hashCode()); - result = prime * result + Arrays.hashCode(masterSalt); - result = prime * result + Arrays.hashCode(masterSecret); - result = prime * result + Arrays.hashCode(recipientId); - result = prime * result + Arrays.hashCode(senderId); - return result; + public final boolean equals(Object o) { + if (this == o) + return true; + if (!(o instanceof OscoreParameters)) + return false; + OscoreParameters that = (OscoreParameters) o; + return Arrays.equals(senderId, that.senderId) && Arrays.equals(recipientId, that.recipientId) + && Arrays.equals(masterSecret, that.masterSecret) && aeadAlgorithm == that.aeadAlgorithm + && hmacAlgorithm == that.hmacAlgorithm && Arrays.equals(masterSalt, that.masterSalt); } @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - OscoreParameters other = (OscoreParameters) obj; - if (aeadAlgorithm == null) { - if (other.aeadAlgorithm != null) - return false; - } else if (!aeadAlgorithm.equals(other.aeadAlgorithm)) - return false; - if (hmacAlgorithm == null) { - if (other.hmacAlgorithm != null) - return false; - } else if (!hmacAlgorithm.equals(other.hmacAlgorithm)) - return false; - if (!Arrays.equals(masterSalt, other.masterSalt)) - return false; - if (!Arrays.equals(masterSecret, other.masterSecret)) - return false; - if (!Arrays.equals(recipientId, other.recipientId)) - return false; - if (!Arrays.equals(senderId, other.senderId)) - return false; - return true; + public final int hashCode() { + return Objects.hash(Arrays.hashCode(senderId), Arrays.hashCode(recipientId), Arrays.hashCode(masterSecret), + aeadAlgorithm, hmacAlgorithm, Arrays.hashCode(masterSalt)); } } diff --git a/leshan-tl-cf-shared-oscore/src/test/java/org/eclipse/leshan/transport/californium/oscore/cf/OscoreParametersTest.java b/leshan-tl-cf-shared-oscore/src/test/java/org/eclipse/leshan/transport/californium/oscore/cf/OscoreParametersTest.java new file mode 100644 index 0000000000..7d98cb0724 --- /dev/null +++ b/leshan-tl-cf-shared-oscore/src/test/java/org/eclipse/leshan/transport/californium/oscore/cf/OscoreParametersTest.java @@ -0,0 +1,27 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.transport.californium.oscore.cf; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class OscoreParametersTest { + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(OscoreParameters.class).verify(); + } +} diff --git a/leshan-tl-jc-client-coap/pom.xml b/leshan-tl-jc-client-coap/pom.xml index fe3b2eed5f..089537bbce 100644 --- a/leshan-tl-jc-client-coap/pom.xml +++ b/leshan-tl-jc-client-coap/pom.xml @@ -37,6 +37,15 @@ Contributors: org.eclipse.leshan leshan-tl-jc-shared + + nl.jqno.equalsverifier + equalsverifier + + + org.junit.jupiter + junit-jupiter-engine + test + diff --git a/leshan-tl-jc-client-coap/src/main/java/org/eclipse/leshan/transport/javacoap/client/observe/HashMapObserversStore.java b/leshan-tl-jc-client-coap/src/main/java/org/eclipse/leshan/transport/javacoap/client/observe/HashMapObserversStore.java index 01a1bc0b8b..9927732858 100644 --- a/leshan-tl-jc-client-coap/src/main/java/org/eclipse/leshan/transport/javacoap/client/observe/HashMapObserversStore.java +++ b/leshan-tl-jc-client-coap/src/main/java/org/eclipse/leshan/transport/javacoap/client/observe/HashMapObserversStore.java @@ -93,26 +93,24 @@ static class ObserverKey { } @Override - public int hashCode() { - return Objects.hash(peerAddress, token); + public String toString() { + return String.format("ObserverKey [token=%s, peerAddress=%s]", token != null ? token.toHex() : "null", + peerAddress); } @Override - public boolean equals(Object obj) { - if (this == obj) + public final boolean equals(Object o) { + if (this == o) return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) + if (!(o instanceof ObserverKey)) return false; - ObserverKey other = (ObserverKey) obj; - return Objects.equals(peerAddress, other.peerAddress) && Objects.equals(token, other.token); + ObserverKey that = (ObserverKey) o; + return Objects.equals(token, that.token) && Objects.equals(peerAddress, that.peerAddress); } @Override - public String toString() { - return String.format("ObserverKey [token=%s, peerAddress=%s]", token != null ? token.toHex() : "null", - peerAddress); + public final int hashCode() { + return Objects.hash(token, peerAddress); } } } diff --git a/leshan-tl-jc-client-coap/src/main/java/org/eclipse/leshan/transport/javacoap/client/resource/RouterService.java b/leshan-tl-jc-client-coap/src/main/java/org/eclipse/leshan/transport/javacoap/client/resource/RouterService.java index 0f21a42296..0a4a2c0214 100644 --- a/leshan-tl-jc-client-coap/src/main/java/org/eclipse/leshan/transport/javacoap/client/resource/RouterService.java +++ b/leshan-tl-jc-client-coap/src/main/java/org/eclipse/leshan/transport/javacoap/client/resource/RouterService.java @@ -124,7 +124,7 @@ public Service build() { static final class RequestMatcher { private final Method method; private final String uriPath; - private transient final boolean isPrefixed; + private final boolean isPrefixed; RequestMatcher(Method method, String uriPath) { this.method = method; @@ -158,20 +158,17 @@ public RequestMatcher withAnyMethod() { @Override public boolean equals(Object o) { - if (this == o) { + if (this == o) return true; - } - if (o == null || getClass() != o.getClass()) { + if (!(o instanceof RequestMatcher)) return false; - } RequestMatcher that = (RequestMatcher) o; - return method == that.method && Objects.equals(uriPath, that.uriPath) - && Objects.equals(isPrefixed, that.isPrefixed); + return isPrefixed == that.isPrefixed && method == that.method && Objects.equals(uriPath, that.uriPath); } @Override public int hashCode() { - return Objects.hash(method, isPrefixed, uriPath); + return Objects.hash(method, uriPath, isPrefixed); } } } diff --git a/leshan-tl-jc-client-coap/src/test/java/org/eclipse/leshan/transport/javacoap/client/observe/HashMapObserversStoreTest.java b/leshan-tl-jc-client-coap/src/test/java/org/eclipse/leshan/transport/javacoap/client/observe/HashMapObserversStoreTest.java new file mode 100644 index 0000000000..656508fb39 --- /dev/null +++ b/leshan-tl-jc-client-coap/src/test/java/org/eclipse/leshan/transport/javacoap/client/observe/HashMapObserversStoreTest.java @@ -0,0 +1,27 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.transport.javacoap.client.observe; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class HashMapObserversStoreTest { + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(HashMapObserversStore.ObserverKey.class).verify(); + } +} diff --git a/leshan-tl-jc-client-coap/src/test/java/org/eclipse/leshan/transport/javacoap/client/resource/RouterServiceTest.java b/leshan-tl-jc-client-coap/src/test/java/org/eclipse/leshan/transport/javacoap/client/resource/RouterServiceTest.java new file mode 100644 index 0000000000..2a0224e2f7 --- /dev/null +++ b/leshan-tl-jc-client-coap/src/test/java/org/eclipse/leshan/transport/javacoap/client/resource/RouterServiceTest.java @@ -0,0 +1,28 @@ +/******************************************************************************* + * Copyright (c) 2013-2015 Sierra Wireless and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v20.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.html. + * + * Contributors: + * Natalia Krzykała Orange Polska S.A. - initial implementation + *******************************************************************************/ +package org.eclipse.leshan.transport.javacoap.client.resource; + +import org.junit.jupiter.api.Test; + +import nl.jqno.equalsverifier.EqualsVerifier; + +class RouterServiceTest { + @Test + public void assertEqualsHashcode() { + EqualsVerifier.forClass(RouterService.RequestMatcher.class).verify(); + } + +}