summaryrefslogtreecommitdiff
path: root/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/SigningState.java
diff options
context:
space:
mode:
authortkellner <tkellner@174cde9d-5d70-4d2a-aa98-46368bc2aaf7>2013-04-10 18:53:41 +0000
committertkellner <tkellner@174cde9d-5d70-4d2a-aa98-46368bc2aaf7>2013-04-10 18:53:41 +0000
commit23ae1caefcf0cc99c2b90327afaff6376ecc552a (patch)
tree644167228a6b721760b1f024b3ddd94ede77c14e /pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/SigningState.java
parent7d6879d2f2ad32b79878567438bdb231cbc798d5 (diff)
downloadpdf-over-23ae1caefcf0cc99c2b90327afaff6376ecc552a.tar.gz
pdf-over-23ae1caefcf0cc99c2b90327afaff6376ecc552a.tar.bz2
pdf-over-23ae1caefcf0cc99c2b90327afaff6376ecc552a.zip
PDF-AS signature working with local BKU
git-svn-id: https://joinup.ec.europa.eu/svn/pdf-over/trunk@26 174cde9d-5d70-4d2a-aa98-46368bc2aaf7
Diffstat (limited to 'pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/SigningState.java')
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/SigningState.java55
1 files changed, 52 insertions, 3 deletions
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/SigningState.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/SigningState.java
index 6b453d33..524fc868 100644
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/SigningState.java
+++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/SigningState.java
@@ -20,6 +20,8 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import at.asit.pdfover.gui.workflow.StateMachine;
+import at.asit.pdfover.gui.workflow.Status;
+import at.asit.pdfover.signator.Signer;
/**
* Logical state for signing process, usually show BKU Dialog during this state.
@@ -27,6 +29,36 @@ import at.asit.pdfover.gui.workflow.StateMachine;
public class SigningState extends State {
/**
+ *
+ */
+ private final class FinishSignThread implements Runnable {
+
+ private SigningState state;
+
+ /**
+ * @param signingState
+ */
+ public FinishSignThread(SigningState signingState) {
+ this.state = signingState;
+ }
+
+ @Override
+ public void run() {
+ try {
+ Signer signer = this.state.stateMachine.getPDFSigner().getPDFSigner();
+ Status status = this.state.stateMachine.getStatus();
+
+ status.setSignResult(signer.sign(status.getSigningState()));
+ } catch(Exception e) {
+ log.error("FinishSignThread: ", e); //$NON-NLS-1$
+ this.state.threadException = e;
+ } finally {
+ this.state.stateMachine.invokeUpdate();
+ }
+ }
+ }
+
+ /**
* @param stateMachine
*/
public SigningState(StateMachine stateMachine) {
@@ -36,12 +68,29 @@ public class SigningState extends State {
/**
* SFL4J Logger instance
**/
- @SuppressWarnings("unused")
- private static final Logger log = LoggerFactory.getLogger(SigningState.class);
+ static final Logger log = LoggerFactory.getLogger(SigningState.class);
+
+ Exception threadException = null;
@Override
public void run() {
- // TODO Wait until output ready and set output
+ Status status = this.stateMachine.getStatus();
+
+ if(status.getSignResult() == null &&
+ this.threadException == null) {
+ Thread t = new Thread(new FinishSignThread(this));
+ t.start();
+ return;
+ }
+
+ if(this.threadException != null) {
+ // TODO: Jump to error state
+ }
+
+ if(status.getSignResult() == null) {
+ // The thread should set the threadException or create a valid signResult
+ // TODO: Jump to error state
+ }
this.setNextState(new OutputState(this.stateMachine));
}