edu.isi.pegasus.common.credential
Class CredentialHandlerFactory

java.lang.Object
  extended by edu.isi.pegasus.common.credential.CredentialHandlerFactory

public class CredentialHandlerFactory
extends Object

A factory class to load the appropriate type of Condor Style impelementations. This factory class is different from other factories, in the sense that it must be instantiated first and intialized first before calling out to any of the Factory methods.

Version:
$Revision: 4929 $
Author:
Karan Vahi

Field Summary
static String DEFAULT_PACKAGE_NAME
          The default package where the all the implementing classes are supposed to reside.
private static String IRODS_IMPLEMENTING_CLASS
           
private  PegasusBag mBag
          Handle to the PegasusBag
private static Map mImplementingClassNameTable
          A table that maps, Pegasus style keys to the names of the corresponding classes implementing the CondorStyle interface.
private  Map<CredentialHandler.TYPE,CredentialHandler> mImplementingClassTable
          A table that maps, Pegasus style keys to appropriate classes implementing the CredentialHandler interface
private  boolean mInitialized
          A boolean indicating that the factory has been initialized.
private static String S3_IMPLEMENTING_CLASS
           
private static String SSH_IMPLEMENTING_CLASS
           
private static String X509_IMPLEMENTING_CLASS
          The name of the class implementing the x509 credentials
 
Constructor Summary
CredentialHandlerFactory()
          The default constructor.
 
Method Summary
private  Object get(CredentialHandler.TYPE type)
          Returns the implementation from the implementing class table.
private static Map<CredentialHandler.TYPE,String> implementingClassNameTable()
          Returns a table that maps, the credential types to the implementing classes.
 void initialize(PegasusBag bag)
          Initializes the Factory.
 CredentialHandler loadInstance(CredentialHandler.TYPE type)
          This method loads the appropriate implementing CondorStyle as specified by the user at runtime.
private  CredentialHandler loadInstance(PegasusBag bag, String className)
          This method loads the appropriate CredentialHandler using reflection.
private  void put(CredentialHandler.TYPE type, CredentialHandler implementation)
          Inserts an entry into the implementing class table.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_PACKAGE_NAME

public static final String DEFAULT_PACKAGE_NAME
The default package where the all the implementing classes are supposed to reside.

See Also:
Constant Field Values

X509_IMPLEMENTING_CLASS

private static final String X509_IMPLEMENTING_CLASS
The name of the class implementing the x509 credentials

See Also:
Constant Field Values

IRODS_IMPLEMENTING_CLASS

private static final String IRODS_IMPLEMENTING_CLASS
See Also:
Constant Field Values

S3_IMPLEMENTING_CLASS

private static final String S3_IMPLEMENTING_CLASS
See Also:
Constant Field Values

SSH_IMPLEMENTING_CLASS

private static final String SSH_IMPLEMENTING_CLASS
See Also:
Constant Field Values

mImplementingClassNameTable

private static Map mImplementingClassNameTable
A table that maps, Pegasus style keys to the names of the corresponding classes implementing the CondorStyle interface.


mImplementingClassTable

private Map<CredentialHandler.TYPE,CredentialHandler> mImplementingClassTable
A table that maps, Pegasus style keys to appropriate classes implementing the CredentialHandler interface


mInitialized

private boolean mInitialized
A boolean indicating that the factory has been initialized.


mBag

private PegasusBag mBag
Handle to the PegasusBag

Constructor Detail

CredentialHandlerFactory

public CredentialHandlerFactory()
The default constructor.

Method Detail

implementingClassNameTable

private static Map<CredentialHandler.TYPE,String> implementingClassNameTable()
Returns a table that maps, the credential types to the implementing classes.

Returns:
a Map indexed by Pegasus styles, and values as names of implementing classes.

initialize

public void initialize(PegasusBag bag)
                throws CredentialHandlerFactoryException
Initializes the Factory. Loads all the implementations just once.

Parameters:
bag - the bag of initialization objects
Throws:
CredentialHandlerFactoryException - that nests any error that might occur during the instantiation of the implementation.

loadInstance

public CredentialHandler loadInstance(CredentialHandler.TYPE type)
                               throws CredentialHandlerFactoryException
This method loads the appropriate implementing CondorStyle as specified by the user at runtime. The CondorStyle is initialized and returned.

Parameters:
type - the credential type that needs to be loaded.
Throws:
CredentialHandlerFactoryException - that nests any error that might occur during the instantiation of the implementation.

loadInstance

private CredentialHandler loadInstance(PegasusBag bag,
                                       String className)
                                throws CredentialHandlerFactoryException
This method loads the appropriate CredentialHandler using reflection.

Parameters:
bag - the bag of initialization objects
className - the name of the implementing class.
Returns:
the instance of the class implementing this interface.
Throws:
CredentialHandlerFactoryException - that nests any error that might occur during the instantiation of the implementation.
See Also:
DEFAULT_PACKAGE_NAME

get

private Object get(CredentialHandler.TYPE type)
Returns the implementation from the implementing class table.

Parameters:
type - the credential handler type
Returns:
implementation the class implementing that style, else null

put

private void put(CredentialHandler.TYPE type,
                 CredentialHandler implementation)
Inserts an entry into the implementing class table.

Parameters:
type - the credential handler type
implementation - the class implementing that style.


Copyright © 2011 The University of Southern California. All Rights Reserved.