summaryrefslogtreecommitdiff
path: root/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/PostSLRequestThread.java
diff options
context:
space:
mode:
authortkellner <tkellner@174cde9d-5d70-4d2a-aa98-46368bc2aaf7>2013-04-10 19:32:14 +0000
committertkellner <tkellner@174cde9d-5d70-4d2a-aa98-46368bc2aaf7>2013-04-10 19:32:14 +0000
commit33c49abc111f184ac87076fa735e75877dfbeab3 (patch)
tree75269ef14ce27ab49613d47c0fc6b8c5d6978926 /pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/PostSLRequestThread.java
parente497e79c707d335ebb0610e9bc993a180098db55 (diff)
downloadpdf-over-33c49abc111f184ac87076fa735e75877dfbeab3.tar.gz
pdf-over-33c49abc111f184ac87076fa735e75877dfbeab3.tar.bz2
pdf-over-33c49abc111f184ac87076fa735e75877dfbeab3.zip
Rework mobile BKU handling
git-svn-id: https://joinup.ec.europa.eu/svn/pdf-over/trunk@371 174cde9d-5d70-4d2a-aa98-46368bc2aaf7
Diffstat (limited to 'pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/PostSLRequestThread.java')
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/PostSLRequestThread.java164
1 files changed, 10 insertions, 154 deletions
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/PostSLRequestThread.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/PostSLRequestThread.java
index 4de8f6fc..09944acf 100644
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/PostSLRequestThread.java
+++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/PostSLRequestThread.java
@@ -16,66 +16,16 @@
package at.asit.pdfover.gui.workflow.states.mobilebku;
// Imports
-import java.io.IOException;
-import java.io.InputStream;
-
-import org.apache.commons.httpclient.Header;
-import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.HttpException;
-import org.apache.commons.httpclient.HttpStatus;
-import org.apache.commons.httpclient.methods.GetMethod;
-import org.apache.commons.httpclient.methods.PostMethod;
-import org.apache.commons.httpclient.methods.multipart.FilePart;
-import org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity;
-import org.apache.commons.httpclient.methods.multipart.Part;
-import org.apache.commons.httpclient.methods.multipart.PartSource;
-import org.apache.commons.httpclient.methods.multipart.StringPart;
-import org.apache.commons.httpclient.protocol.Protocol;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import at.asit.pdfover.gui.workflow.states.LocalBKUState;
import at.asit.pdfover.gui.workflow.states.MobileBKUState;
-import at.asit.pdfover.signator.DocumentSource;
/**
*
*/
public class PostSLRequestThread implements Runnable {
/**
- *
- */
- private final class FileUploadSource implements PartSource {
-
- private DocumentSource source;
-
- /**
- * Constructor
- *
- * @param source
- * the source
- */
- public FileUploadSource(DocumentSource source) {
- this.source = source;
- }
-
- @Override
- public long getLength() {
- return this.source.getLength();
- }
-
- @Override
- public String getFileName() {
- return "sign.pdf"; //$NON-NLS-1$
- }
-
- @Override
- public InputStream createInputStream() throws IOException {
- return this.source.getInputStream();
- }
- }
-
- /**
* SLF4J Logger instance
**/
private static final Logger log = LoggerFactory
@@ -85,15 +35,17 @@ public class PostSLRequestThread implements Runnable {
private String mobileBKUUrl;
+ private MobileBKUHandler mobileBKUHandler;
+
/**
* Constructor
*
- * @param state
- * @param mobileBKUUrl
+ * @param state the MobileBKUState
*/
- public PostSLRequestThread(MobileBKUState state, String mobileBKUUrl) {
+ public PostSLRequestThread(MobileBKUState state) {
this.state = state;
- this.mobileBKUUrl = mobileBKUUrl;
+ this.mobileBKUUrl = state.getURL();
+ this.mobileBKUHandler = state.getHandler();
}
/*
@@ -104,115 +56,19 @@ public class PostSLRequestThread implements Runnable {
@Override
public void run() {
try {
- /*
- * String sl_request = this.state.getSigningState()
- * .getSignatureRequest().getBase64Request();
- */
- String sl_request = this.state.getSigningState()
- .getSignatureRequest().getFileUploadRequest();
-
- log.debug("SL Request: " + sl_request); //$NON-NLS-1$
-
- Protocol.registerProtocol("https", //$NON-NLS-1$
- new Protocol("https", new TrustedSocketFactory(), 443)); //$NON-NLS-1$
-
- HttpClient client = new HttpClient();
- client.getParams().setParameter("http.useragent", //$NON-NLS-1$
- LocalBKUState.PDF_OVER_USER_AGENT_STRING);
-
- String url = this.mobileBKUUrl;
- PostMethod method = new PostMethod(url);
-
- //method.addParameter("XMLRequest", sl_request); //$NON-NLS-1$
-
- StringPart xmlpart = new StringPart(
- "XMLRequest", sl_request, "UTF-8"); //$NON-NLS-1$ //$NON-NLS-2$
-
- FilePart filepart = new FilePart("fileupload", //$NON-NLS-1$
- new FileUploadSource(this.state.getSigningState()
- .getSignatureRequest().getSignatureData()));
-
- Part[] parts = { xmlpart, filepart };
-
- method.setRequestEntity(new MultipartRequestEntity(parts, method
- .getParams()));
- int returnCode = client.executeMethod(method);
-
- String redirectLocation = null;
-
- GetMethod gmethod = null;
-
- String responseData = null;
-
- this.state.getStatus().setBaseURL(
- MobileBKUHelper.stripQueryString(url));
-
- // Follow redirects
- do {
- // check return code
- if (returnCode == HttpStatus.SC_MOVED_TEMPORARILY
- || returnCode == HttpStatus.SC_MOVED_PERMANENTLY) {
-
- Header locationHeader = method
- .getResponseHeader("location"); //$NON-NLS-1$
- if (locationHeader != null) {
- redirectLocation = locationHeader.getValue();
- } else {
- throw new IOException(
- "Got HTTP 302 but no location to follow!"); //$NON-NLS-1$
- }
- } else if (returnCode == HttpStatus.SC_OK) {
- if (gmethod != null) {
- responseData = gmethod.getResponseBodyAsString();
- } else {
- responseData = method.getResponseBodyAsString();
- }
- redirectLocation = null;
- } else {
- throw new HttpException(
- HttpStatus.getStatusText(returnCode));
- }
-
- if (redirectLocation != null) {
- gmethod = new GetMethod(redirectLocation);
- gmethod.setFollowRedirects(true);
- returnCode = client.executeMethod(gmethod);
- }
-
- } while (redirectLocation != null);
+ String responseData = this.mobileBKUHandler.postSLRequest(this.mobileBKUUrl);
// Now we have received some data lets check it:
+ log.debug("Response from mobile BKU: " + responseData); //$NON-NLS-1$
- log.debug("Response from A-Trust: " + responseData); //$NON-NLS-1$
-
- // Extract infos:
-
- String sessionID = MobileBKUHelper.extractTag(responseData,
- "identification.aspx?sid=", "\""); //$NON-NLS-1$ //$NON-NLS-2$
-
- String viewState = MobileBKUHelper.extractTag(responseData,
- "id=\"__VIEWSTATE\" value=\"", "\""); //$NON-NLS-1$ //$NON-NLS-2$
-
- String eventValidation = MobileBKUHelper.extractTag(responseData,
- "id=\"__EVENTVALIDATION\" value=\"", "\""); //$NON-NLS-1$ //$NON-NLS-2$
-
- log.info("sessionID: " + sessionID); //$NON-NLS-1$
- log.info("viewState: " + viewState); //$NON-NLS-1$
- log.info("eventValidation: " + eventValidation); //$NON-NLS-1$
-
- this.state.getStatus().setSessionID(sessionID);
-
- this.state.getStatus().setViewstate(viewState);
-
- this.state.getStatus().setEventvalidation(eventValidation);
+ this.mobileBKUHandler.handleSLRequestResponse(responseData);
/*
* If all went well we can set the communication state to the new
* state
*/
- this.state
- .setCommunicationState(MobileBKUCommunicationState.POST_NUMBER);
+ this.state.setCommunicationState(MobileBKUCommunicationState.POST_NUMBER);
} catch (Exception ex) {
log.error("Error in PostSLRequestThread", ex); //$NON-NLS-1$
this.state.setThreadException(ex);