/**************************************************************************** * Copyright (c) 2008 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.storage; import org.eclipse.ecf.core.identity.*; import org.eclipse.equinox.security.storage.ISecurePreferences; /** * Representation of an ID instance inside of an {@link IIDStore}. */ public interface IIDEntry { /** * Get the underlying {@link ISecurePreferences} node that represents this IDEntry * in the storage. * * @return {@link ISecurePreferences} that represents this IIDEntry in the underlying storage. Will * not return <code>null</code>. */ public ISecurePreferences getPreferences(); /** * Create an ID from this IDEntry. This method may be used to create new ID instance from this * {@link IIDEntry}. The created ID will be equivalent (via ID.equals(other)) to the ID previously * stored via {@link IIDStore#store(ID)}. * * @return {@link ID} that corresponds to this previously stored {@link IIDEntry}. * @throws IDCreateException if the ID cannot be created in this environment...e.g. due to missing * {@link Namespace}. */ public ID createID() throws IDCreateException; /** * Get any {@link IIDEntry}s that have previously been associated with this IIDEntry via {@link #putAssociate(java.lang.String,IIDEntry,boolean)}. * @param key the String key for retrieving associates. Must not be <code>null</code>. * * @return IIDEntry[] of associated IIDEntry instances that have previously been successfully stored via {@link #putAssociate(java.lang.String,IIDEntry,boolean)}. * If no IIDEntries have been previously stored with the given key, an empty array will be returned. Will not return <code>null</code>. Note * that the order of the returned IIDEntrys will not necessarily correspond to the order added via {@link #putAssociate(String, IIDEntry, boolean)}. */ public IIDEntry[] getAssociates(String key); /** * Associate an IIDEntry instance with a String key in this IIDEntry. The association is one-way (i.e. if successful, future calls to * this {@link #getAssociates(java.lang.String)} with the same key will include the new entry. * * @param key the String key for storing associates. Must not be <code>null</code>.. * @param entry the {@link IIDEntry} to associated with this {@link IIDEntry}. Must not be <code>null</code>. * @param encrypt if <code>true</code> associate IIDEntry will be encrypted, <code>false</code> and it will * not be encrypted. * @throws IDStoreException thrown if the given {@link IIDEntry} cannot be stored. */ public void putAssociate(String key, IIDEntry entry, boolean encrypt) throws IDStoreException; /** * Delete this IIDEntry from the {@link IIDStore}. This will <b>not</be> delete any associated {@link IIDEntry}s. It is * up to the client to explicitly remove any such associated entries. */ public void delete(); }