/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.communication.api; import java.io.PrintStream; import de.rcenvironment.core.communication.common.CommonIdBase; import de.rcenvironment.core.communication.common.IdType; import de.rcenvironment.core.communication.common.IdentifierException; import de.rcenvironment.core.communication.common.InstanceNodeId; import de.rcenvironment.core.communication.common.InstanceNodeSessionId; import de.rcenvironment.core.communication.common.LogicalNodeId; import de.rcenvironment.core.communication.common.LogicalNodeSessionId; /** * A service for creating, parsing, and converting instance, instance session, and logical node ids. * * @author Robert Mischke */ public interface NodeIdentifierService { /** * Creates a new random {@link InstanceNodeId}. * * @return the new instance */ InstanceNodeId generateInstanceNodeId(); /** * Creates a new {@link InstanceNodeSessionId} based on the provided {@link InstanceNodeId}, adding a random session id part. * * @param instanceId the {@link InstanceNodeId} to create the session id for * @return the new instance */ InstanceNodeSessionId generateInstanceNodeSessionId(InstanceNodeId instanceId); /** * Constructs an new {@link InstanceNodeId} from the string returned by either {@link InstanceNodeId#getFullIdString()} or a custom * method of a subinterface of {@link CommonIdBase}. * * @param instanceIdString the full string representation of an {@link InstanceNodeId}; see the main JavaDoc for the methods to acquire * it * @param targetIdType the id type to parse the given string as * @return the new instance * * @throws IdentifierException on invalid input */ CommonIdBase parseSelectableTypeIdString(String instanceIdString, IdType targetIdType) throws IdentifierException; /** * Recreates a {@link InstanceNodeId} from the string representation returned by {@link InstanceNodeSessionId#getInstanceNodeIdString()} * . * * @param input the string representation to reconstruct the object from * @return the reconstructed object, if successful * @throws IdentifierException on failure, typically because of a null or malformed string representation */ InstanceNodeId parseInstanceNodeIdString(String input) throws IdentifierException; /** * Recreates a {@link InstanceNodeSessionId} from the string returned by {@link InstanceNodeSessionId#getInstanceNodeSessionIdString()}. * * @param instanceSessionIdString the full string representation of an {@link InstanceNodeId}; see the main JavaDoc for the methods to * acquire it * @return the new instance * * @throws IdentifierException on invalid input */ InstanceNodeSessionId parseInstanceNodeSessionIdString(String instanceSessionIdString) throws IdentifierException; /** * Recreates a {@link LogicalNodeId} from the string representation returned by {@link LogicalNodeSessionId#getLogicalNodeIdString()}. * * @param input the string representation to reconstruct the object from * @return the reconstructed object, if successful * @throws IdentifierException on failure, typically because of a null or malformed string representation */ LogicalNodeId parseLogicalNodeIdString(String input) throws IdentifierException; /** * Recreates a {@link LogicalNodeSessionId} from the string representation returned by * {@link LogicalNodeSessionId#getLogicalNodeSessionIdString()}. * * @param input the string representation to reconstruct the object from * @return the reconstructed object, if successful * @throws IdentifierException on failure, typically because of a null or malformed string representation */ LogicalNodeSessionId parseLogicalNodeSessionIdString(String input) throws IdentifierException; /** * Sets the display name to associate with the given id, which can be of any subtype of {@link CommonIdBase}; note that certain subtypes * may cause the same display name to be implicitly associated for other ids as well. The given display name is shared between all * instances with the same internal canonical string representation. * * @param id the id to set the display name for * @param displayName the display name to set */ void associateDisplayName(CommonIdBase id, String displayName); /** * Debug method; prints all registered id-to-displayName associations. * * @param output the output to write to * @param introText an optional line to be printered before the output; set to null to disable */ void printAllNameAssociations(PrintStream output, String introText); }