summaryrefslogtreecommitdiff
path: root/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/SigningState.java
diff options
context:
space:
mode:
authortkellner <tkellner@3a0b52a2-8410-0410-bc02-ff6273a87459>2012-08-24 17:04:54 +0000
committertkellner <tkellner@3a0b52a2-8410-0410-bc02-ff6273a87459>2012-08-24 17:04:54 +0000
commit969617f6557c559b173a8cc267c7cd37c6e2e088 (patch)
treea2fd8841f7f10ed0945e9d1fd7430da808f8aaf0 /trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/SigningState.java
parente24c0e89cdd46006fc33ca565e0b3cc6639f2cb6 (diff)
downloadpdf-over-969617f6557c559b173a8cc267c7cd37c6e2e088.tar.gz
pdf-over-969617f6557c559b173a8cc267c7cd37c6e2e088.tar.bz2
pdf-over-969617f6557c559b173a8cc267c7cd37c6e2e088.zip
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
Diffstat (limited to 'trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/SigningState.java')
-rw-r--r--trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/SigningState.java55
1 files changed, 52 insertions, 3 deletions
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,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));
}