//______________________________________________________________________________ // // $Id$ // $Author$ // // // created 04/08 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.Date; import org.dcache.srm.client.SRMClientV2; import org.dcache.srm.util.RequestStatusTool; import org.dcache.srm.v2_2.ISRM; import org.dcache.srm.v2_2.SrmAbortRequestRequest; import org.dcache.srm.v2_2.SrmAbortRequestResponse; import org.dcache.srm.v2_2.TReturnStatus; public class SRMAbortRequestClientV2 extends SRMClient { private ISRM isrm; private URI srmURL; private X509Credential credential; public SRMAbortRequestClientV2(Configuration configuration, URI url) { super(configuration); srmURL = url; } @Override public void connect() throws Exception { credential= getCredential(); isrm = new SRMClientV2(srmURL, credential, 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"); } for (String requestToken : configuration.getArrayOfRequestTokens()) { try { SrmAbortRequestRequest request = new SrmAbortRequestRequest(); request.setRequestToken(requestToken); SrmAbortRequestResponse response = isrm.srmAbortRequest(request); if (response==null) { throw new IOException(" null SrmAbortRequestResponse for request token "+requestToken); } TReturnStatus rs = response.getReturnStatus(); if ( rs == null) { throw new IOException(" null TReturnStatus for request token "+requestToken); } if (RequestStatusTool.isFailedRequestStatus(rs)) { throw new IOException("SrmAbortRequest failed for "+ requestToken + ", : "+ rs.getStatusCode()+" explanation="+rs.getExplanation()); } } catch (Exception e) { throw e; } } } }