aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/exceptions/PdfAsMOAException.java32
-rw-r--r--pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/ErrorExtractor.java31
-rw-r--r--pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/PdfAsImpl.java6
3 files changed, 62 insertions, 7 deletions
diff --git a/pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/exceptions/PdfAsMOAException.java b/pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/exceptions/PdfAsMOAException.java
index 1e602388..e9ab5a9d 100644
--- a/pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/exceptions/PdfAsMOAException.java
+++ b/pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/exceptions/PdfAsMOAException.java
@@ -49,4 +49,36 @@ public class PdfAsMOAException extends PdfAsException {
protected String localizeMessage(String msgId) {
return String.format(MessageResolver.resolveMessage(msgId), errorResponse, errorCode, faultCode, faultString);
}
+
+ public String getFaultCode() {
+ return faultCode;
+ }
+
+ public void setFaultCode(String faultCode) {
+ this.faultCode = faultCode;
+ }
+
+ public String getFaultString() {
+ return faultString;
+ }
+
+ public void setFaultString(String faultString) {
+ this.faultString = faultString;
+ }
+
+ public String getErrorResponse() {
+ return errorResponse;
+ }
+
+ public void setErrorResponse(String errorResponse) {
+ this.errorResponse = errorResponse;
+ }
+
+ public String getErrorCode() {
+ return errorCode;
+ }
+
+ public void setErrorCode(String errorCode) {
+ this.errorCode = errorCode;
+ }
}
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/ErrorExtractor.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/ErrorExtractor.java
index 90a4e9e8..8c2451e3 100644
--- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/ErrorExtractor.java
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/ErrorExtractor.java
@@ -1,11 +1,18 @@
package at.gv.egiz.pdfas.lib.impl;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import at.gv.egiz.pdfas.common.exceptions.ErrorConstants;
import at.gv.egiz.pdfas.common.exceptions.PDFASError;
+import at.gv.egiz.pdfas.common.exceptions.PdfAsMOAException;
import at.gv.egiz.pdfas.common.exceptions.SLPdfAsException;
public class ErrorExtractor implements ErrorConstants {
+ private static final Logger logger = LoggerFactory
+ .getLogger(ErrorExtractor.class);
+
private static final int MAX_CAUSE_DEPTH = 30;
private static PDFASError convertPdfAsError(Throwable e) {
@@ -16,7 +23,27 @@ public class ErrorExtractor implements ErrorConstants {
} else {
return new PDFASError(ex.getCode(), e);
}
- } // TODO: Handle more exceptions
+ } else if(e instanceof PdfAsMOAException) {
+ PdfAsMOAException ex = (PdfAsMOAException) e;
+ int code = -1;
+ String errorInfo = ex.getErrorResponse();
+
+ if(ex.getErrorCode() != null && !ex.getErrorCode().isEmpty()) {
+ try {
+ code = Integer.parseInt(ex.getErrorCode());
+ } catch(NumberFormatException numfo) {
+ logger.warn("Failed to convert MOA ErrorCode: " + ex.getErrorCode(), e);
+ }
+ }
+
+ if (errorInfo != null) {
+ return new PDFASError(code, errorInfo, e);
+ } else {
+ return new PDFASError(code, e);
+ }
+ }
+
+ // TODO: Handle more exceptions
return null;
}
@@ -60,6 +87,8 @@ public class ErrorExtractor implements ErrorConstants {
return err;
}
+ logger.info("Cannot extract correct failure code from: ", e);
+
return new PDFASError(ERROR_GENERIC, e);
}
}
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/PdfAsImpl.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/PdfAsImpl.java
index 3d9725a7..387a6c31 100644
--- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/PdfAsImpl.java
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/PdfAsImpl.java
@@ -27,15 +27,12 @@ import iaik.x509.X509Certificate;
import java.awt.Image;
import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
-import java.util.ArrayList;
import java.util.Calendar;
import java.util.Iterator;
import java.util.List;
-import org.apache.commons.io.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -64,9 +61,6 @@ import at.gv.egiz.pdfas.lib.impl.signing.IPdfSigner;
import at.gv.egiz.pdfas.lib.impl.signing.PDFASSignatureExtractor;
import at.gv.egiz.pdfas.lib.impl.status.OperationStatus;
import at.gv.egiz.pdfas.lib.impl.status.RequestedSignature;
-import at.gv.egiz.pdfas.lib.impl.verify.IVerifier;
-import at.gv.egiz.pdfas.lib.impl.verify.IVerifyFilter;
-import at.gv.egiz.pdfas.lib.impl.verify.VerifierDispatcher;
import at.gv.egiz.pdfas.lib.util.SignatureUtils;
public class PdfAsImpl implements PdfAs, IConfigurationConstants,