/******************************************************************************* * Copyright (c) 1998, 2015 Oracle and/or its affiliates. All rights reserved. * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 * which accompanies this distribution. * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html * and the Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.php. * * Contributors: * Oracle - initial API and implementation from Oracle TopLink * dminsky - changed id to use a String UUID instead of String hashcode() ******************************************************************************/ package org.eclipse.persistence.sessions.coordination; import java.io.Serializable; import java.util.UUID; /** * <p> * <b>Purpose</b>: Encapsulate the information that uniquely identifies a specific * remote command service instance. * <p> * <b>Description</b>: A service instance consists primarily of a CommandManager * and its associated components including its CommandProcessor, CommandConverter, * DiscoveryManager and TransportManager. Whenever a service instance sends out an * announcement or remote command to the cluster the service id is included in the * message. * * @see org.eclipse.persistence.internal.sessions.coordination.ServiceAnnouncement * @author Steven Vo * @since OracleAS TopLink 10<i>g</i> (9.0.4) */ public class ServiceId implements Serializable { /** Generated unique id to distinguish the service instance from all others */ private String id; /** The logical channel that the service instance subscribes to */ private String channel; /** Url of the service instance */ private String url; /* Cached display string to prevent rebuilding */ private transient String displayString; /** This $HOST token indicate that the host ip of the URL should be replaced at runtime by user input */ public final static String HOST_TOKEN = "$HOST"; /** This $HOST token indicate that the host ip of the URL should be replaced at runtime by user input */ public final static String PORT_TOKEN = "$PORT"; public ServiceId() { super(); // Use UUID value instead of hashcode value for id id = String.valueOf(UUID.randomUUID()); } public ServiceId(String channel, String id, String url) { this.channel = channel; this.id = id; this.url = url; } /** * INTERNAL: * Return the URL for the service */ public String getURL() { return url; } /** * INTERNAL: * Set the URL for the service */ public void setURL(String newUrl) { url = newUrl; displayString = null; } /** * INTERNAL: * Get the unique identifier for the service */ public String getId() { return this.id; } /** * INTERNAL: * Set the unique identifier for the service */ public void setId(String newId) { this.id = newId; displayString = null; } /** * INTERNAL: * Return the logical channel that this service subscribes to */ public String getChannel() { return channel; } /** * INTERNAL: * Set the logical channel that this service subscribes to */ public void setChannel(String newChannel) { channel = newChannel; displayString = null; } public String toString() { if (displayString == null) { displayString = "Service[" + channel + ", " + id + ", " + url + "]"; } return displayString; } }