2 * Copyright (c) 2010-2020 Contributors to the openHAB project
4 * See the NOTICE file(s) distributed with this work for additional
7 * This program and the accompanying materials are made available under the
8 * terms of the Eclipse Public License 2.0 which is available at
9 * http://www.eclipse.org/legal/epl-2.0
11 * SPDX-License-Identifier: EPL-2.0
13 package org.openhab.io.transport.modbus.internal;
15 import org.apache.commons.lang.builder.EqualsBuilder;
16 import org.apache.commons.lang.builder.HashCodeBuilder;
17 import org.apache.commons.lang.builder.StandardToStringStyle;
18 import org.apache.commons.lang.builder.ToStringBuilder;
19 import org.eclipse.jdt.annotation.NonNullByDefault;
20 import org.eclipse.jdt.annotation.Nullable;
21 import org.openhab.io.transport.modbus.ModbusFailureCallback;
22 import org.openhab.io.transport.modbus.ModbusReadCallback;
23 import org.openhab.io.transport.modbus.ModbusReadRequestBlueprint;
24 import org.openhab.io.transport.modbus.PollTask;
25 import org.openhab.io.transport.modbus.endpoint.ModbusSlaveEndpoint;
28 * Implementation of {@link PollTask} that differentiates tasks using endpoint, request and callbacks.
30 * Note: Two differentiate poll tasks are considered unequal if their callbacks are unequal.
32 * HashCode and equals should be defined such that two poll tasks considered the same only if their request,
33 * maxTries, endpoint and callback are the same.
35 * @author Sami Salonen - Initial contribution
39 public class BasicPollTask implements PollTask {
41 static StandardToStringStyle toStringStyle = new StandardToStringStyle();
43 toStringStyle.setUseShortClassName(true);
46 private ModbusSlaveEndpoint endpoint;
47 private ModbusReadRequestBlueprint request;
48 private ModbusReadCallback resultCallback;
49 private ModbusFailureCallback<ModbusReadRequestBlueprint> failureCallback;
51 public BasicPollTask(ModbusSlaveEndpoint endpoint, ModbusReadRequestBlueprint request,
52 ModbusReadCallback resultCallback, ModbusFailureCallback<ModbusReadRequestBlueprint> failureCallback) {
53 this.endpoint = endpoint;
54 this.request = request;
55 this.resultCallback = resultCallback;
56 this.failureCallback = failureCallback;
60 public ModbusReadRequestBlueprint getRequest() {
65 public ModbusSlaveEndpoint getEndpoint() {
70 public ModbusReadCallback getResultCallback() {
71 return resultCallback;
75 public ModbusFailureCallback<ModbusReadRequestBlueprint> getFailureCallback() {
76 return failureCallback;
80 public int hashCode() {
81 return new HashCodeBuilder(69, 5).append(request).append(getEndpoint()).append(getResultCallback())
82 .append(getFailureCallback()).toHashCode();
86 public String toString() {
87 return new ToStringBuilder(this, toStringStyle).append("request", request).append("endpoint", endpoint)
88 .append("resultCallback", getResultCallback()).append("failureCallback", getFailureCallback())
93 public boolean equals(@Nullable Object obj) {
100 if (obj.getClass() != getClass()) {
103 BasicPollTask rhs = (BasicPollTask) obj;
104 return new EqualsBuilder().append(request, rhs.request).append(endpoint, rhs.endpoint)
105 .append(getResultCallback(), rhs.getResultCallback())
106 .append(getFailureCallback(), rhs.getFailureCallback()).isEquals();