diff options
author | tkellner <tkellner@174cde9d-5d70-4d2a-aa98-46368bc2aaf7> | 2013-04-10 18:53:41 +0000 |
---|---|---|
committer | tkellner <tkellner@174cde9d-5d70-4d2a-aa98-46368bc2aaf7> | 2013-04-10 18:53:41 +0000 |
commit | 23ae1caefcf0cc99c2b90327afaff6376ecc552a (patch) | |
tree | 644167228a6b721760b1f024b3ddd94ede77c14e /pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/SigningState.java | |
parent | 7d6879d2f2ad32b79878567438bdb231cbc798d5 (diff) | |
download | pdf-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.java | 55 |
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)); } |