package org.cagrid.gaards.dorian.client;
import gov.nih.nci.cagrid.common.FaultHelper;
import gov.nih.nci.cagrid.common.FaultUtil;
import gov.nih.nci.cagrid.common.Utils;
import java.math.BigInteger;
import java.rmi.RemoteException;
import java.security.cert.X509Certificate;
import java.util.List;
import org.apache.axis.types.URI.MalformedURIException;
import org.cagrid.gaards.dorian.common.DorianFault;
import org.cagrid.gaards.dorian.federation.FederationAuditFilter;
import org.cagrid.gaards.dorian.federation.FederationAuditRecord;
import org.cagrid.gaards.dorian.federation.GridUser;
import org.cagrid.gaards.dorian.federation.GridUserFilter;
import org.cagrid.gaards.dorian.federation.GridUserPolicy;
import org.cagrid.gaards.dorian.federation.HostCertificateFilter;
import org.cagrid.gaards.dorian.federation.HostCertificateRecord;
import org.cagrid.gaards.dorian.federation.HostCertificateUpdate;
import org.cagrid.gaards.dorian.federation.TrustedIdP;
import org.cagrid.gaards.dorian.federation.UserCertificateFilter;
import org.cagrid.gaards.dorian.federation.UserCertificateRecord;
import org.cagrid.gaards.dorian.federation.UserCertificateStatus;
import org.cagrid.gaards.dorian.federation.UserCertificateUpdate;
import org.cagrid.gaards.dorian.stubs.types.DorianInternalFault;
import org.cagrid.gaards.dorian.stubs.types.InvalidHostCertificateFault;
import org.cagrid.gaards.dorian.stubs.types.InvalidTrustedIdPFault;
import org.cagrid.gaards.dorian.stubs.types.InvalidUserCertificateFault;
import org.cagrid.gaards.dorian.stubs.types.InvalidUserFault;
import org.cagrid.gaards.dorian.stubs.types.PermissionDeniedFault;
import org.cagrid.gaards.pki.CertUtil;
import org.globus.gsi.GlobusCredential;
/**
* @author <A href="mailto:langella@bmi.osu.edu">Stephen Langella </A>
* @author <A href="mailto:oster@bmi.osu.edu">Scott Oster </A>
* @author <A href="mailto:hastings@bmi.osu.edu">Shannon Hastings </A>
* @version $Id: ArgumentManagerTable.java,v 1.2 2004/10/15 16:35:16 langella
* Exp $
*/
public class GridAdministrationClient extends DorianBaseClient {
public GridAdministrationClient(String serviceURI) throws MalformedURIException, RemoteException {
super(serviceURI);
}
public GridAdministrationClient(String serviceURI, GlobusCredential credential) throws MalformedURIException,
RemoteException {
super(serviceURI, credential);
}
/**
* This method adds an identity provider to Dorian as a trusted identity
* provider.
*
* @param idp
* The identity provider to add as a trusted identity provider.
* @return The identity provider that was added to Dorian as a trusted
* identity provider.
* @throws DorianFault
* @throws PermissionDeniedFault
* @throws InvalidTrustedIdPFault
* @throws DorianInternalFault
*/
public TrustedIdP addTrustedIdP(TrustedIdP idp) throws DorianFault, PermissionDeniedFault, InvalidTrustedIdPFault,
DorianInternalFault {
try {
return getClient().addTrustedIdP(idp);
} catch (DorianInternalFault gie) {
throw gie;
} catch (PermissionDeniedFault f) {
throw f;
} catch (InvalidTrustedIdPFault f) {
throw f;
} catch (Exception e) {
FaultUtil.printFault(e);
DorianFault fault = new DorianFault();
fault.setFaultString(Utils.getExceptionMessage(e));
FaultHelper helper = new FaultHelper(fault);
helper.addFaultCause(e);
fault = (DorianFault) helper.getFault();
throw fault;
}
}
/**
* This method removes an identity provider from Dorian, this identity
* provider is no longer a trusted identity provider. All accounts from this
* identity provider will be removed.
*
* @param idp
* The identity provider to remove.
* @throws DorianFault
* @throws PermissionDeniedFault
* @throws InvalidTrustedIdPFault
* @throws DorianInternalFault
*/
public void removeTrustedIdP(TrustedIdP idp) throws DorianFault, PermissionDeniedFault, InvalidTrustedIdPFault,
DorianInternalFault {
try {
getClient().removeTrustedIdP(idp);
} catch (DorianInternalFault gie) {
throw gie;
} catch (PermissionDeniedFault f) {
throw f;
} catch (InvalidTrustedIdPFault f) {
throw f;
} catch (Exception e) {
FaultUtil.printFault(e);
DorianFault fault = new DorianFault();
fault.setFaultString(Utils.getExceptionMessage(e));
FaultHelper helper = new FaultHelper(fault);
helper.addFaultCause(e);
fault = (DorianFault) helper.getFault();
throw fault;
}
}
/**
* This method allows a client to update a trusted identity provider.
*
* @param idp
* The update trusted identity provider.
* @throws DorianFault
* @throws PermissionDeniedFault
* @throws InvalidTrustedIdPFault
* @throws DorianInternalFault
*/
public void updateTrustedIdP(TrustedIdP idp) throws DorianFault, PermissionDeniedFault, InvalidTrustedIdPFault,
DorianInternalFault {
try {
getClient().updateTrustedIdP(idp);
} catch (DorianInternalFault gie) {
throw gie;
} catch (PermissionDeniedFault f) {
throw f;
} catch (InvalidTrustedIdPFault f) {
throw f;
} catch (Exception e) {
FaultUtil.printFault(e);
DorianFault fault = new DorianFault();
fault.setFaultString(Utils.getExceptionMessage(e));
FaultHelper helper = new FaultHelper(fault);
helper.addFaultCause(e);
fault = (DorianFault) helper.getFault();
throw fault;
}
}
/**
* This method returns the list of IdP user policies supported by Dorian.
*
* @return The list of IdP user policies supported by Dorian.
* @throws DorianFault
* @throws PermissionDeniedFault
* @throws DorianInternalFault
*/
public List<GridUserPolicy> getUserPolicies() throws DorianFault, PermissionDeniedFault, DorianInternalFault {
try {
List<GridUserPolicy> list = Utils.asList(getClient().getGridUserPolicies());
return list;
} catch (DorianInternalFault gie) {
throw gie;
} catch (PermissionDeniedFault f) {
throw f;
} catch (Exception e) {
FaultUtil.printFault(e);
DorianFault fault = new DorianFault();
fault.setFaultString(Utils.getExceptionMessage(e));
FaultHelper helper = new FaultHelper(fault);
helper.addFaultCause(e);
fault = (DorianFault) helper.getFault();
throw fault;
}
}
/**
* This method returns the list of identity providers trusted by Dorian.
*
* @return The list of identity providers trusted by Dorian.
* @throws DorianFault
* @throws PermissionDeniedFault
* @throws InvalidUserFault
* @throws DorianInternalFault
*/
public List<TrustedIdP> getTrustedIdPs() throws DorianFault, PermissionDeniedFault, InvalidUserFault,
DorianInternalFault {
try {
List<TrustedIdP> list = Utils.asList(getClient().getTrustedIdPs());
return list;
} catch (DorianInternalFault gie) {
throw gie;
} catch (PermissionDeniedFault f) {
throw f;
} catch (InvalidUserFault f) {
throw f;
} catch (Exception e) {
FaultUtil.printFault(e);
DorianFault fault = new DorianFault();
fault.setFaultString(Utils.getExceptionMessage(e));
FaultHelper helper = new FaultHelper(fault);
helper.addFaultCause(e);
fault = (DorianFault) helper.getFault();
throw fault;
}
}
/**
* This method returns a list of Grid users with accounts on Dorian that
* meet a specified search criteria.
*
* @param filter
* The search criteria
* @return The list of users that meet the search criteria.
* @throws DorianFault
* @throws PermissionDeniedFault
* @throws DorianInternalFault
*/
public List<GridUser> findUsers(GridUserFilter filter) throws DorianFault, PermissionDeniedFault,
DorianInternalFault {
try {
List<GridUser> list = Utils.asList(getClient().findGridUsers(filter));
return list;
} catch (DorianInternalFault gie) {
throw gie;
} catch (PermissionDeniedFault f) {
throw f;
} catch (Exception e) {
FaultUtil.printFault(e);
DorianFault fault = new DorianFault();
fault.setFaultString(Utils.getExceptionMessage(e));
FaultHelper helper = new FaultHelper(fault);
helper.addFaultCause(e);
fault = (DorianFault) helper.getFault();
throw fault;
}
}
/**
* This method removes a grid user account from Dorian.
*
* @param usr
* The grid user account to remove.
* @throws DorianFault
* @throws PermissionDeniedFault
* @throws InvalidUserFault
* @throws DorianInternalFault
*/
public void removeUser(GridUser usr) throws DorianFault, PermissionDeniedFault, InvalidUserFault,
DorianInternalFault {
try {
getClient().removeGridUser(usr);
} catch (DorianInternalFault gie) {
throw gie;
} catch (PermissionDeniedFault f) {
throw f;
} catch (InvalidUserFault f) {
throw f;
} catch (Exception e) {
FaultUtil.printFault(e);
DorianFault fault = new DorianFault();
fault.setFaultString(Utils.getExceptionMessage(e));
FaultHelper helper = new FaultHelper(fault);
helper.addFaultCause(e);
fault = (DorianFault) helper.getFault();
throw fault;
}
}
/**
* This method allows a client to update a grid user account.
*
* @param usr
* The update grid user.
* @throws DorianFault
* @throws PermissionDeniedFault
* @throws InvalidUserFault
* @throws DorianInternalFault
*/
public void updateUser(GridUser usr) throws DorianFault, PermissionDeniedFault, InvalidUserFault,
DorianInternalFault {
try {
getClient().updateGridUser(usr);
} catch (DorianInternalFault gie) {
throw gie;
} catch (PermissionDeniedFault f) {
throw f;
} catch (InvalidUserFault f) {
throw f;
} catch (Exception e) {
FaultUtil.printFault(e);
DorianFault fault = new DorianFault();
fault.setFaultString(Utils.getExceptionMessage(e));
FaultHelper helper = new FaultHelper(fault);
helper.addFaultCause(e);
fault = (DorianFault) helper.getFault();
throw fault;
}
}
/**
* This method grants a user privileges to Dorian to administrate grid
* accounts.
*
* @param gridIdentity
* The Grid identity of the user to add as an administrator.
* @throws DorianFault
* @throws DorianInternalFault
* @throws PermissionDeniedFault
*/
public void addAdmin(java.lang.String gridIdentity) throws DorianFault, DorianInternalFault, PermissionDeniedFault {
try {
getClient().addAdmin(gridIdentity);
} catch (DorianInternalFault gie) {
throw gie;
} catch (PermissionDeniedFault f) {
throw f;
} catch (Exception e) {
FaultUtil.printFault(e);
DorianFault fault = new DorianFault();
fault.setFaultString(Utils.getExceptionMessage(e));
FaultHelper helper = new FaultHelper(fault);
helper.addFaultCause(e);
fault = (DorianFault) helper.getFault();
throw fault;
}
}
/**
* This method revokes a user's privilege to administrate grid accounts.
*
* @param gridIdentity
* The Grid identity of the user to revoke privileges.
* @throws DorianFault
* @throws DorianInternalFault
* @throws PermissionDeniedFault
*/
public void removeAdmin(java.lang.String gridIdentity) throws DorianFault, DorianInternalFault,
PermissionDeniedFault {
try {
getClient().removeAdmin(gridIdentity);
} catch (DorianInternalFault gie) {
throw gie;
} catch (PermissionDeniedFault f) {
throw f;
} catch (Exception e) {
FaultUtil.printFault(e);
DorianFault fault = new DorianFault();
fault.setFaultString(Utils.getExceptionMessage(e));
FaultHelper helper = new FaultHelper(fault);
helper.addFaultCause(e);
fault = (DorianFault) helper.getFault();
throw fault;
}
}
/**
* This method obtains a list of all the users with privileges to
* administrate Grid accounts.
*
* @return A list containing the grid identities of users whom have the
* privilege to administrate Grid accounts.
* @throws DorianFault
* @throws DorianInternalFault
* @throws PermissionDeniedFault
*/
public List<String> getAdmins() throws DorianFault, DorianInternalFault, PermissionDeniedFault {
try {
List<String> list = Utils.asList(getClient().getAdmins());
return list;
} catch (DorianInternalFault gie) {
throw gie;
} catch (PermissionDeniedFault f) {
throw f;
} catch (Exception e) {
FaultUtil.printFault(e);
DorianFault fault = new DorianFault();
fault.setFaultString(Utils.getExceptionMessage(e));
FaultHelper helper = new FaultHelper(fault);
helper.addFaultCause(e);
fault = (DorianFault) helper.getFault();
throw fault;
}
}
/**
* Returns the list of host certificates meeting the specified search
* criteria.
*
* @param filter
* The search criteria.
* @return The list of host certificates meeting the specified search
* criteria.
* @throws DorianFault
* @throws DorianInternalFault
* @throws PermissionDeniedFault
*/
public List<HostCertificateRecord> findHostCertificates(HostCertificateFilter filter) throws DorianFault,
DorianInternalFault, PermissionDeniedFault {
try {
List<HostCertificateRecord> list = Utils.asList(getClient().findHostCertificates(filter));
return list;
} catch (DorianInternalFault gie) {
throw gie;
} catch (PermissionDeniedFault f) {
throw f;
} catch (Exception e) {
FaultUtil.printFault(e);
DorianFault fault = new DorianFault();
fault.setFaultString(Utils.getExceptionMessage(e));
FaultHelper helper = new FaultHelper(fault);
helper.addFaultCause(e);
fault = (DorianFault) helper.getFault();
throw fault;
}
}
/**
* This method allows a client to approve a host ceritifcate request.
*
* @param recordId
* The id of the host certificate.
* @return The approved host certificate record.
* @throws DorianFault
* @throws DorianInternalFault
* @throws InvalidHostCertificateFault
* @throws PermissionDeniedFault
*/
public HostCertificateRecord approveHostCertificate(long recordId) throws DorianFault, DorianInternalFault,
InvalidHostCertificateFault, PermissionDeniedFault {
try {
return getClient().approveHostCertificate(BigInteger.valueOf(recordId));
} catch (DorianInternalFault gie) {
throw gie;
} catch (InvalidHostCertificateFault gie) {
throw gie;
} catch (PermissionDeniedFault f) {
throw f;
} catch (Exception e) {
FaultUtil.printFault(e);
DorianFault fault = new DorianFault();
fault.setFaultString(Utils.getExceptionMessage(e));
FaultHelper helper = new FaultHelper(fault);
helper.addFaultCause(e);
fault = (DorianFault) helper.getFault();
throw fault;
}
}
/**
* This method allow a client to update a host certificate record.
*
* @param update
* The updated host certificate record.
* @throws DorianFault
* @throws DorianInternalFault
* @throws InvalidHostCertificateFault
* @throws PermissionDeniedFault
*/
public void updateHostCertificateRecord(HostCertificateUpdate update) throws DorianFault, DorianInternalFault,
InvalidHostCertificateFault, PermissionDeniedFault {
try {
getClient().updateHostCertificateRecord(update);
} catch (DorianInternalFault gie) {
throw gie;
} catch (InvalidHostCertificateFault gie) {
throw gie;
} catch (PermissionDeniedFault f) {
throw f;
} catch (Exception e) {
FaultUtil.printFault(e);
DorianFault fault = new DorianFault();
fault.setFaultString(Utils.getExceptionMessage(e));
FaultHelper helper = new FaultHelper(fault);
helper.addFaultCause(e);
fault = (DorianFault) helper.getFault();
throw fault;
}
}
/**
* This method allow a client to renew a host certificate.
*
* @param recordId
* The record id of the host certificate to renew.
* @return The renewed host certificate record.
* @throws DorianFault
* @throws DorianInternalFault
* @throws InvalidHostCertificateFault
* @throws PermissionDeniedFault
*/
public HostCertificateRecord renewHostCertificate(long recordId) throws DorianFault, DorianInternalFault,
InvalidHostCertificateFault, PermissionDeniedFault {
try {
return getClient().renewHostCertificate(BigInteger.valueOf(recordId));
} catch (DorianInternalFault gie) {
throw gie;
} catch (InvalidHostCertificateFault gie) {
throw gie;
} catch (PermissionDeniedFault f) {
throw f;
} catch (Exception e) {
FaultUtil.printFault(e);
DorianFault fault = new DorianFault();
fault.setFaultString(Utils.getExceptionMessage(e));
FaultHelper helper = new FaultHelper(fault);
helper.addFaultCause(e);
fault = (DorianFault) helper.getFault();
throw fault;
}
}
/**
* This method obtains Dorian's CA certificate.
*
* @return This method obtains Dorian's CA certificate.
* @throws DorianFault
* @throws DorianInternalFault
*/
public X509Certificate getCACertificate() throws DorianFault, DorianInternalFault {
try {
return CertUtil.loadCertificate(getClient().getCACertificate().getCertificateAsString());
} catch (DorianInternalFault gie) {
throw gie;
} catch (Exception e) {
FaultUtil.printFault(e);
DorianFault fault = new DorianFault();
fault.setFaultString(Utils.getExceptionMessage(e));
FaultHelper helper = new FaultHelper(fault);
helper.addFaultCause(e);
fault = (DorianFault) helper.getFault();
throw fault;
}
}
/**
* This method allows a Dorian administrator to search for user certificates
* issued by the Dorian CA.
*
* @param f
* The search criteria.
* @return The user certificates issued by the Dorian CA, that meet the
* search criteria.
* @throws DorianFault
* @throws DorianInternalFault
* @throws InvalidUserCertificateFault
* @throws PermissionDeniedFault
*/
public List<UserCertificateRecord> findUserCertificateRecords(UserCertificateFilter f) throws DorianFault,
DorianInternalFault, InvalidUserCertificateFault, PermissionDeniedFault {
try {
List<UserCertificateRecord> list = Utils.asList(getClient().findUserCertificates(f));
return list;
} catch (DorianInternalFault gie) {
throw gie;
} catch (InvalidUserCertificateFault fault) {
throw fault;
} catch (PermissionDeniedFault fault) {
throw fault;
} catch (Exception e) {
FaultUtil.printFault(e);
DorianFault fault = new DorianFault();
fault.setFaultString(Utils.getExceptionMessage(e));
FaultHelper helper = new FaultHelper(fault);
helper.addFaultCause(e);
fault = (DorianFault) helper.getFault();
throw fault;
}
}
/**
* This method allows and administrator to update the status or the notes
* associated with a user certificate.
*
* @param serialNumber
* The serial number of the user certificate to update.
* @param status
* The new status of the user certificate or null if the status
* should remain the same.
* @param notes
* The updated notes associated with the user certificate or null
* if the status should remain the same.
* @throws DorianFault
* @throws DorianInternalFault
* @throws InvalidUserCertificateFault
* @throws PermissionDeniedFault
*/
public void updateUserCertificateRecord(long serialNumber, UserCertificateStatus status, String notes)
throws DorianFault, DorianInternalFault, InvalidUserCertificateFault, PermissionDeniedFault {
try {
UserCertificateUpdate update = new UserCertificateUpdate();
update.setSerialNumber(serialNumber);
update.setStatus(status);
update.setNotes(notes);
getClient().updateUserCertificate(update);
} catch (DorianInternalFault gie) {
throw gie;
} catch (InvalidUserCertificateFault fault) {
throw fault;
} catch (PermissionDeniedFault fault) {
throw fault;
} catch (Exception e) {
FaultUtil.printFault(e);
DorianFault fault = new DorianFault();
fault.setFaultString(Utils.getExceptionMessage(e));
FaultHelper helper = new FaultHelper(fault);
helper.addFaultCause(e);
fault = (DorianFault) helper.getFault();
throw fault;
}
}
/**
* This method allows an administrator to update the status of a user
* certificate.
*
* @param serialNumber
* The serial number of the user certificate to update.
* @param status
* The new status of the user certificate.
* @throws DorianFault
* @throws DorianInternalFault
* @throws InvalidUserCertificateFault
* @throws PermissionDeniedFault
*/
public void updateUserCertificateRecordStatus(long serialNumber, UserCertificateStatus status) throws DorianFault,
DorianInternalFault, InvalidUserCertificateFault, PermissionDeniedFault {
this.updateUserCertificateRecord(serialNumber, status, null);
}
/**
* This method allows and administrator to update the notes associated with
* a user certificate.
*
* @param serialNumber
* The serial number of the user certificate to update.
* @param notes
* The updated notes.
* @throws DorianFault
* @throws DorianInternalFault
* @throws InvalidUserCertificateFault
* @throws PermissionDeniedFault
*/
public void updateUserCertificateRecordNotes(long serialNumber, String notes) throws DorianFault,
DorianInternalFault, InvalidUserCertificateFault, PermissionDeniedFault {
this.updateUserCertificateRecord(serialNumber, null, notes);
}
/**
* This method allows an administrator to remove a user certificate.
*
* @param serialNumber
* The serial number of the user certificate to remove.
* @throws RemoteException
* @throws DorianInternalFault
* @throws InvalidUserCertificateFault
* @throws PermissionDeniedFault
*/
public void removeUserCertificate(long serialNumber) throws RemoteException, DorianInternalFault,
InvalidUserCertificateFault, PermissionDeniedFault {
try {
getClient().removeUserCertificate(String.valueOf(serialNumber));
} catch (DorianInternalFault gie) {
throw gie;
} catch (InvalidUserCertificateFault fault) {
throw fault;
} catch (PermissionDeniedFault fault) {
throw fault;
} catch (Exception e) {
FaultUtil.printFault(e);
DorianFault fault = new DorianFault();
fault.setFaultString(Utils.getExceptionMessage(e));
FaultHelper helper = new FaultHelper(fault);
helper.addFaultCause(e);
fault = (DorianFault) helper.getFault();
throw fault;
}
}
/**
* This method allows an administrator to perform an audit on
* Federation/Grid transactions with Dorian.
*
* @param f
* The audit search criteria
* @return The list of audit records that meet the search criteria
* specified.
* @throws DorianFault
* @throws DorianInternalFault
* @throws PermissionDeniedFault
*/
public List<FederationAuditRecord> performAudit(FederationAuditFilter f) throws DorianFault, DorianInternalFault,
PermissionDeniedFault {
try {
List<FederationAuditRecord> list = Utils.asList(getClient().performFederationAudit(f));
return list;
} catch (DorianInternalFault gie) {
throw gie;
} catch (PermissionDeniedFault fault) {
throw fault;
} catch (Exception e) {
FaultUtil.printFault(e);
DorianFault fault = new DorianFault();
fault.setFaultString(Utils.getExceptionMessage(e));
FaultHelper helper = new FaultHelper(fault);
helper.addFaultCause(e);
fault = (DorianFault) helper.getFault();
throw fault;
}
}
/**
* This method allows a client to update a trusted identity provider's publish status.
*
* @param idp
* @param publish
* @throws DorianFault
* @throws PermissionDeniedFault
* @throws InvalidTrustedIdPFault
* @throws DorianInternalFault
*/
public void setPublish(TrustedIdP idp, boolean publish) throws DorianFault, PermissionDeniedFault, InvalidTrustedIdPFault,
DorianInternalFault {
try {
getClient().setPublish(idp, publish);
} catch (DorianInternalFault gie) {
throw gie;
} catch (PermissionDeniedFault f) {
throw f;
} catch (InvalidTrustedIdPFault f) {
throw f;
} catch (Exception e) {
FaultUtil.printFault(e);
DorianFault fault = new DorianFault();
fault.setFaultString(Utils.getExceptionMessage(e));
FaultHelper helper = new FaultHelper(fault);
helper.addFaultCause(e);
fault = (DorianFault) helper.getFault();
throw fault;
}
}
/**
* This method allows a client to retrieve a trusted identity provider's publish status.
*
* @param idp
* @return the idp's publish status
* @throws DorianFault
* @throws PermissionDeniedFault
* @throws InvalidTrustedIdPFault
* @throws DorianInternalFault
*/
public boolean getPublish(TrustedIdP idp) throws DorianFault, PermissionDeniedFault, InvalidTrustedIdPFault,
DorianInternalFault {
try {
return getClient().getPublish(idp);
} catch (DorianInternalFault gie) {
throw gie;
} catch (PermissionDeniedFault f) {
throw f;
} catch (InvalidTrustedIdPFault f) {
throw f;
} catch (Exception e) {
FaultUtil.printFault(e);
DorianFault fault = new DorianFault();
fault.setFaultString(Utils.getExceptionMessage(e));
FaultHelper helper = new FaultHelper(fault);
helper.addFaultCause(e);
fault = (DorianFault) helper.getFault();
throw fault;
}
}
}