From 969617f6557c559b173a8cc267c7cd37c6e2e088 Mon Sep 17 00:00:00 2001 From: tkellner Date: Fri, 24 Aug 2012 17:04:54 +0000 Subject: PDF-AS signature working with local BKU git-svn-id: https://svn.iaik.tugraz.at/svn/egiz/prj/current/12PDF-OVER-4.0@12391 3a0b52a2-8410-0410-bc02-ff6273a87459 --- .../pdfover/gui/workflow/states/SigningState.java | 55 ++++++++++++++++++++-- 1 file changed, 52 insertions(+), 3 deletions(-) (limited to 'trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/SigningState.java') diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/SigningState.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/SigningState.java index 6b453d33..524fc868 100644 --- a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/SigningState.java +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/SigningState.java @@ -20,12 +20,44 @@ 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. */ 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 */ @@ -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)); } -- cgit v1.2.3