/** * Copyright (c) 2010-2017 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ package org.openhab.binding.modbus.internal.pooling; import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.StandardToStringStyle; import org.apache.commons.lang.builder.ToStringBuilder; import net.wimpi.modbus.net.ModbusSlaveConnection; import net.wimpi.modbus.util.SerialParameters; /** * Serial endpoint. Endpoint differentiates different modbus slaves only by the serial port. * port. * * Endpoint contains SerialParameters which should be enough to establish the connection. * */ public class ModbusSerialSlaveEndpoint implements ModbusSlaveEndpoint { private SerialParameters serialParameters; private static StandardToStringStyle toStringStyle = new StandardToStringStyle(); static { toStringStyle.setUseShortClassName(true); } public ModbusSerialSlaveEndpoint(SerialParameters serialParameters) { this.serialParameters = serialParameters; } public SerialParameters getSerialParameters() { return serialParameters; } @Override public <R> R accept(ModbusSlaveEndpointVisitor<R> factory) { return factory.visit(this); } @Override public ModbusSlaveConnection create(ModbusSlaveConnectionFactory factory) { return accept(factory); } @Override public int hashCode() { // hashcode & equal is determined purely by port name return serialParameters.getPortName().hashCode(); } @Override public boolean equals(Object obj) { // equals is determined purely by port name if (obj == null) { return false; } if (obj == this) { return true; } if (obj.getClass() != getClass()) { return false; } ModbusSerialSlaveEndpoint rhs = (ModbusSerialSlaveEndpoint) obj; return new EqualsBuilder().append(serialParameters.getPortName(), rhs.serialParameters.getPortName()) .isEquals(); } @Override public String toString() { return new ToStringBuilder(this, toStringStyle).append("portName", serialParameters.getPortName()).toString(); } }