📄 membershipservice.java
字号:
/*
* Copyright (c) 2001 Sun Microsystems, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Sun Microsystems, Inc. for Project JXTA."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Sun", "Sun Microsystems, Inc.", "JXTA" and "Project JXTA" must
* not be used to endorse or promote products derived from this
* software without prior written permission. For written
* permission, please contact Project JXTA at http://www.jxta.org.
*
* 5. Products derived from this software may not be called "JXTA",
* nor may "JXTA" appear in their name, without prior written
* permission of Sun.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL SUN MICROSYSTEMS OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of Project JXTA. For more
* information on Project JXTA, please see
* <http://www.jxta.org/>.
*
* This license is based on the BSD license adopted by the Apache Foundation.
*
* $Id: MembershipService.java,v 1.2 2002/03/04 20:19:20 echtcherbina Exp $
*/
package net.jxta.membership;
import java.util.Enumeration;
import net.jxta.credential.AuthenticationCredential;
import net.jxta.credential.Credential;
import net.jxta.document.Element;
import net.jxta.service.Service;
import net.jxta.exception.PeerGroupException;
import net.jxta.exception.ProtocolNotSupportedException;
/**
* The membership service allows a peer to establish an identity within a peer
* group. Once an identity has been a established a credential is available
* which allows the peer to prove that it rightfully has that identity.
* Identities are used by services to determine the capabilities which should
* be offered to peers.
* <P>
* When a peer group is instantiated on a peer the membership service for that
* peer group establishes a default temporary identity for the peer within the
* peergroup. This identity, by convention, only allows the peer to establish
* their true identity.
* <P>
* The sequence for establishing an indentity for a peer within a peer group
* is as follows:
* <P>
* <table>
* <tr><td valign="top">Apply</td><td>The peer provides the membership service
* an initial credential which may be used by the service to determine
* which method of authentication is to be used to establish the
* identity of this peer. If the service allows authentication using
* the requested mechanism then an appropriate authenticator object is
* returned.
* <P/>The peer group instance is assumsed to know how to interact with
* the authentication object (remember that it requested the
* authentication method earlier in the apply process).
* <P/></td></tr>
* <tr><td valign="top">Join</td><td>The completed authenticator is returned to
* the Membership service and the identity of this peer is adjusted
* based on the new credential available from the authenticator. Until
* the "Join" is completed the identity of the peer remains as it was.
* <P/></td></tr>
* <tr><td valign="top">Resign</td><td>Whatever existing identity that is
* established for this peer is discarded and the current identity
* reverts to the "nobody" identity.
* <P/></td></tr>
* </table>
*
* There is also the question of the duration of validity of the Credential
* objects returned.
*
* @version $Revision: 1.2 $
* @since JXTA 1.0
**/
public abstract class MembershipService implements Service {
/**
* Returns the name of the associated service. Each service has a unique
* name.
*
* @return String the name of this service.
*/
final public String getName() {
return "MembershipService";
}
/**
* service objects are not manipulated directly to protect usage
* of the service. A service interface is returned to access the service
* methods.
*
* @return service public interface of the service
*/
public Service getInterface() {
return this;
}
/**
* Request the necessary credentials to join the group with which this
* service is associated.
*
* @return PeerGroupCredential the desired credential
* @param application The authenticationCredential associated with this
* membership application. See
* {@link net.jxta.credential.AuthenticationCredential AuthenticationCredential}
* for more information.
*
* @throws PeerGroupException Thrown in the event of errors. This exception spec is currently a placeholder
* and needs to be narrowed.
* @throws ProtocolNotSupportedException if the authentication method requested
* in the application is not supported by this service.
*/
public abstract Authenticator apply( AuthenticationCredential application )
throws PeerGroupException, ProtocolNotSupportedException;
/**
* Join the group by virtue of the completed authentication provided.
*
* @return Credential the credential for this completed authentication.
* @param authenticated the completed authentication.
* @throws PeerGroupException Thrown in the event of errors. This exception spec is currently a placeholder
* and needs to be narrowed.
*/
public abstract Credential join(Authenticator authenticated )
throws PeerGroupException;
/**
* Leave the group to which this service is attached.
* @throws PeerGroupException Thrown in the event of errors. This exception spec is currently a placeholder
* and needs to be narrowed.
*/
public abstract void resign()
throws PeerGroupException;
/**
* Returns the current credentials for this peer. The elements of the
* enumeration are all of types derived from "Credential"
* @throws PeerGroupException Thrown in the event of errors. This exception spec is currently a placeholder
* and needs to be narrowed.
* @return Enumeration of the Credentials currently associated with this peer for this peergroup
*/
public abstract Enumeration getCurrentCredentials()
throws PeerGroupException;
/**
* Returns the current credentials for this peer. The elements of the
* enumeration are all of types derived from "AuthenticationCredential"
* @throws PeerGroupException Thrown in the event of errors. This exception spec is currently a placeholder
* and needs to be narrowed.
* @return Enumeration of the AuthenticatioCredentials which were used to establish the current
* identities.
*/
public abstract Enumeration getAuthCredentials()
throws PeerGroupException;
/**
* Given a fragment of a StructuredDocument, reconstruct a Credential object
* from that fragment.
*
* @return Credential The created credential
* @param element The StructuredDocument fragment to use for building the
* credential.
* @throws PeerGroupException Thrown in the event of errors. This exception spec is currently a placeholder
* and needs to be narrowed.
* @throws Exception Thrown in the event of errors. This exception spec is currently a placeholder
* and needs to be narrowed.
*/
public abstract Credential makeCredential( Element element )
throws PeerGroupException, Exception;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -