/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.communication.model.impl; import java.io.Serializable; import java.util.Collections; import java.util.HashMap; import java.util.Map; import de.rcenvironment.core.communication.model.NetworkContactPoint; import de.rcenvironment.core.utils.common.StringUtils; /** * Default {@link NetworkContactPoint} implementation. * * @author Robert Mischke */ public class NetworkContactPointImpl implements NetworkContactPoint, Serializable { private static final long serialVersionUID = 2534982536387750871L; private String host; private int port; private String transportId; private Map<String, String> attributes = Collections.unmodifiableMap(new HashMap<String, String>()); /** * Default constructor for bean-style initialization. */ protected NetworkContactPointImpl() {} /** * Standard constructor. * * @param host the host string * @param port the port number * @param transportId the transport id */ public NetworkContactPointImpl(String host, int port, String transportId) { this.host = host; this.port = port; this.transportId = transportId; } @Override public String getHost() { return host; } public void setHost(String host) { this.host = host; } @Override public int getPort() { return port; } public void setPort(int port) { this.port = port; } @Override public String getTransportId() { return transportId; } public void setTransportId(String transportId) { this.transportId = transportId; } @Override public Map<String, String> getAttributes() { return attributes; // read-only map } public void setAttributes(Map<String, String> attributes) { this.attributes = Collections.unmodifiableMap(attributes); } @Override public int hashCode() { return host.hashCode() ^ port ^ transportId.hashCode(); } @Override public boolean equals(Object obj) { // FIXME make safer (compare class type and fields); improve performance return this.toString().equals(obj.toString()); } @Override public String toString() { return StringUtils.format("%s:%d (%s)", host, port, transportId); } }