//______________________________________________________________________________ // // $Id$ // $Author$ // // created 10/07 by Dmitry Litvintsev (litvinse@fnal.gov) // //______________________________________________________________________________ package gov.fnal.srm.util; import eu.emi.security.authn.x509.X509Credential; import java.io.IOException; import java.net.URI; import java.util.Calendar; import java.util.Date; import org.dcache.srm.client.SRMClientV2; import org.dcache.srm.util.RequestStatusTool; import org.dcache.srm.v2_2.ArrayOfTRequestTokenReturn; import org.dcache.srm.v2_2.ISRM; import org.dcache.srm.v2_2.SrmGetRequestTokensRequest; import org.dcache.srm.v2_2.SrmGetRequestTokensResponse; import org.dcache.srm.v2_2.TRequestTokenReturn; import org.dcache.srm.v2_2.TReturnStatus; public class SRMGetRequestTokensClientV2 extends SRMClient { private URI srmURL; private X509Credential credential; private ISRM srmv2; public SRMGetRequestTokensClientV2(Configuration configuration, URI url) { super(configuration); srmURL=url; try { credential = getCredential(); } catch (Exception e) { credential = null; System.err.println("Couldn't getGssCredential."); } } @Override public void connect() throws Exception { srmv2 = new SRMClientV2(srmURL, getCredential(), configuration.getRetry_timeout(), configuration.getRetry_num(), doDelegation, fullDelegation, gss_expected_name, configuration.getWebservice_path(), configuration.getX509_user_trusted_certificates(), configuration.getTransport()); } @Override public void start() throws Exception { if (credential.getCertificate().getNotAfter().before(new Date())) { throw new RuntimeException("credentials have expired"); } try { SrmGetRequestTokensRequest request = new SrmGetRequestTokensRequest(); request.setUserRequestDescription(configuration.getUserRequestDescription()); SrmGetRequestTokensResponse response = srmv2.srmGetRequestTokens(request); if ( response == null ) { throw new IOException(" null SrmGetRequestTokensResponse "); } TReturnStatus rs = response.getReturnStatus(); if ( rs == null) { throw new IOException(" null TReturnStatus "); } if (RequestStatusTool.isFailedRequestStatus(rs)) { throw new IOException("srmGetRequestTokens failed, unexpected or failed return status : "+ rs.getStatusCode()+" explanation="+rs.getExplanation()); } if (response.getArrayOfRequestTokens()!=null) { ArrayOfTRequestTokenReturn tokens = response.getArrayOfRequestTokens(); if (tokens.getTokenArray()!=null) { TRequestTokenReturn tokenArray[] = tokens.getTokenArray(); for (TRequestTokenReturn aTokenArray : tokenArray) { String token = aTokenArray.getRequestToken(); Calendar date = aTokenArray.getCreatedAtTime(); System.out .println("Request token=" + ((token != null ? token : "null")) + " Created=" + ((date != null) ? date : "null")); } } else { System.err.println("Couldn't get list of request tokens"); } } else { System.err.println("No request tokens found"); } } catch(Exception e) { say(e.toString()); } } }