/******************************************************************************* * Copyright (c) 2004 Composent, Inc. and others. 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 * * Contributors: Composent, Inc. - initial API and implementation ******************************************************************************/ package org.eclipse.ecf.core.identity; import java.net.URI; import java.util.List; import java.util.UUID; /** * Contract for {@link IDFactory} * * @noimplement This interface is not intended to be implemented by clients. */ public interface IIDFactory { /** * Add the given Namespace to our table of available Namespaces * * @param n * the Namespace to add * @return Namespace the namespace already in table (null if Namespace not * previously in table) * @exception SecurityException * thrown if caller does not have appropriate * NamespacePermission for given namespace */ public Namespace addNamespace(Namespace n) throws SecurityException; /** * Check whether table contains given Namespace instance * * @param n * the Namespace to look for * @return true if table does contain given Namespace, false otherwise * @exception SecurityException * thrown if caller does not have appropriate * NamespacePermission for given namespace */ public boolean containsNamespace(Namespace n) throws SecurityException; /** * Get a list of the current Namespace instances exposed by this factory. * * @return List<Namespace> of Namespace instances * @exception SecurityException * thrown if caller does not have appropriate * NamespacePermission for given namespace */ public List<Namespace> getNamespaces() throws SecurityException; /** * Get the given Namespace instance from table * * @param n * the Namespace to look for * @return Namespace * @exception SecurityException * thrown if caller does not have appropriate * NamespacePermission for given namespace */ public Namespace getNamespace(Namespace n) throws SecurityException; /** * Get a Namespace instance by its string name. * * @param name * the name to use for lookup * @return Namespace instance. Null if not found. * @exception SecurityException * thrown if caller does not have appropriate * NamespacePermission for given namespace */ public Namespace getNamespaceByName(String name) throws SecurityException; /** * Make a GUID using SHA-1 hash algorithm and a default of 16bits of data * length. The value is Base64 encoded to allow for easy display. * * @return new ID instance * @throws IDCreateException * if ID cannot be constructed */ public ID createGUID() throws IDCreateException; /** * Make a GUID using SHA-1 hash algorithm and a default of 16bits of data * length. The value is Base64 encoded to allow for easy display. * * @param length * the byte-length of data used to create a GUID * @return new ID instance * @throws IDCreateException * if ID cannot be constructed */ public ID createGUID(int length) throws IDCreateException; /** * Make a new identity. Given a Namespace, and an array of instance * constructor parameters, return a new instance of an ID belonging to the * given Namespace * * @param n * the Namespace to which the ID will belong * @param args * an Object [] of the parameters for the ID instance constructor * @exception IDCreateException * thrown if class for instantiator or instance can't be * loaded, if something goes wrong during instance * construction */ public ID createID(Namespace n, Object[] args) throws IDCreateException; /** * Make a new identity. Given a Namespace name, and an array of instance * constructor parameters, return a new instance of an ID belonging to the * given Namespace * * @param namespaceName * the name of the Namespace to which the ID will belong * @param args * an Object [] of the parameters for the ID instance constructor * @exception IDCreateException * thrown if class for instantiator or ID instance can't be * loaded, if something goes wrong during instance * construction */ public ID createID(String namespaceName, Object[] args) throws IDCreateException; /** * Make a new identity instance from a namespace and String. * * @param namespace * the namespace to use to create the ID * @param uri * the String uri to use to create the ID * @exception IDCreateException * thrown if class for instantiator or ID instance can't be * loaded, if something goes wrong during instance * construction */ public ID createID(Namespace namespace, String uri) throws IDCreateException; /** * Make a new identity instance from a namespaceName and idValue. The * namespaceName is first used to lookup the namespace with * {@link #getNamespaceByName(String)}, and then the result is passed into * {@link #createID(Namespace,String)}. * * @param namespaceName * the name of the namespace that should be used to create the ID * @param idValue * the String value to use to create the ID * @exception IDCreateException * thrown if class for instantiator or ID instance can't be * loaded, if something goes wrong during instance * construction */ public ID createID(String namespaceName, String idValue) throws IDCreateException; /** * Make a an ID from a String * * @param idString * the String to use as this ID's unique value. Note: It is * incumbent upon the caller of this method to be sure that the * given string allows the resulting ID to satisfy the ID * contract for global uniqueness within the associated * Namespace. * * @return valid ID instance * @throws IDCreateException * thrown if class for instantiator or ID instance can't be * loaded, if something goes wrong during instance construction */ public ID createStringID(String idString) throws IDCreateException; /** * Make a an ID from a long * * @param l * the long to use as this ID's unique value. Note: It is * incumbent upon the caller of this method to be sure that the * given long allows the resulting ID to satisfy the ID contract * for global uniqueness within the associated Namespace. * * @return valid ID instance * @throws IDCreateException * thrown if class for instantiator or ID instance can't be * loaded, if something goes wrong during instance construction */ public ID createLongID(long l) throws IDCreateException; /** * Create a UuID from String * * @param uuid * the String to use. Must be in UUID format as returned from * UUID.toString(). Must not be null. * @return valid ID instance * * @since 3.5 */ public ID createUuID(String uuid) throws IDCreateException; /** * Create a UuID from UUID * * @param uuid * the UUID to use. Must not be null. * @return valid ID instance * * @since 3.5 */ public ID createUuID(UUID uuid) throws IDCreateException; /** * Create a random UuID * * @return valid ID instance from UUID.randomUUID() * * @since 3.5 */ public ID createUuID() throws IDCreateException; /** * Create a UuID from URI. * * @param uuidURI * the URI. Must not be null and must be in valid uuid syntax * form as specified by rfc4122 see * http://tools.ietf.org/html/rfc4122. Example: * 'uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6' * * @return valid ID instance * * @since 3.5 */ public ID createUuID(URI uuidURI) throws IDCreateException; /** * Create a URIID from URI. * * @param uri * the URI to use for the URIID. Must not be null. * * @return valid ID instance * * @since 3.5 */ public ID createURIID(URI uri) throws IDCreateException; /** * Create a URIID from String. * * @param uri * the String to use for the URIID. Must not be null, and must be * valid URI format as per URI.toString(). * * @return valid ID instance * * @since 3.5 */ public ID createURIID(String uri) throws IDCreateException; /** * Remove the given Namespace from our table of available Namespaces * * @param n * the Namespace to remove * @return Namespace the namespace already in table (null if Namespace not * previously in table) * @exception SecurityException * thrown if caller does not have appropriate * NamespacePermission for given namespace */ public Namespace removeNamespace(Namespace n) throws SecurityException; }