diff options
Diffstat (limited to 'moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFSignatureResponseBuilder.java')
-rw-r--r-- | moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFSignatureResponseBuilder.java | 215 |
1 files changed, 106 insertions, 109 deletions
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFSignatureResponseBuilder.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFSignatureResponseBuilder.java index bdb9a71..6f9880f 100644 --- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFSignatureResponseBuilder.java +++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFSignatureResponseBuilder.java @@ -39,117 +39,114 @@ import at.gv.egovernment.moaspss.util.Constants; /** * Convert a <code>CreateCMSSignatureResponse</code> API object into its XML * representation, according to the MOA XML schema. - * + * * @version $Id$ */ public class CreatePDFSignatureResponseBuilder { - private static final String MOA_NS_URI = Constants.MOA_NS_URI; - - private static final Logger logger = LoggerFactory.getLogger(CreatePDFSignatureResponseBuilder.class); - - /** The XML document containing the response element. */ - private Document responseDoc; - /** The response <code>CreateCMSSignatureResponse</code> DOM element. */ - private Element responseElem; - - /** - * Create a new <code>CreateCMSSignatureResponseBuilder</code>: - * - * @throws MOASystemException - * An error occurred setting up the resulting XML document. - */ - public CreatePDFSignatureResponseBuilder() throws MOASystemException { - responseDoc = ResponseBuilderUtils.createResponse("CreatePDFSignatureResponse"); - responseElem = responseDoc.getDocumentElement(); - } - - /** - * Build a document containing a <code>CreateCMSSignatureResponse</code> DOM - * element being the XML representation of the given - * <code>CreateCMSSignatureResponse</code> API object. - * - * @param response - * The <code>CreateCMSSignatureResponse</code> to convert to XML. - * @return A document containing the <code>CreateCMSSignatureResponse</code> - * DOM element. - */ - public Document build(CreatePDFRespone response) { - Iterator<SignedPDFInfo> iter = response.getSignatureInfoList().iterator(); - - while (iter.hasNext()) { - SignedPDFInfo signedPDFInfo = iter.next(); - addPDFSignature(signedPDFInfo); - } - - return responseDoc; - } - - /** - * Add a <code>CMSSignature</code> element to the response. - * - * @param cmsSignatureResponse - * The content to put under the <code>CMSSignature</code> - * element. - */ - private void addPDFSignature(SignedPDFInfo signedPDFInfo) { - Element pdfSignature = responseDoc.createElementNS(MOA_NS_URI, "PDFSignature"); - - if(signedPDFInfo.getSignatureID() != null) { - Element signatureID = responseDoc.createElementNS(MOA_NS_URI, "SignatureID"); - signatureID.setTextContent(signedPDFInfo.getSignatureID()); - pdfSignature.appendChild(signatureID); - } - - switch (signedPDFInfo.getResponseType()) { - case SignedPDFInfo.SUCCESS_SIGNATURE: - pdfSignature.appendChild(addSuccessSignature(signedPDFInfo)); - break; - - default: - pdfSignature.appendChild(addErrorResponse(signedPDFInfo)); - break; - } - - responseElem.appendChild(pdfSignature); - } - - private Element addSuccessSignature(SignedPDFInfo signedPDFInfo) { - try { - String base64Value = Base64Utils.encode(signedPDFInfo.getPdfDocument()); - Element cmsSignature = responseDoc.createElementNS(MOA_NS_URI, "PDFSignature"); - cmsSignature.setTextContent(base64Value); - - return cmsSignature; - } catch (IOException e) { - logger.error("Failed to encode pdf signature", e); - signedPDFInfo.setErrorCode(2300); - signedPDFInfo.setErrorInfo("Failed to encode the signed document"); - return addErrorResponse(signedPDFInfo); - } - - - } - - /** - * Add a <code>ErrorResponse</code> element to the response. - * - * @param errorResponse - * The API object containing the information to put into the - * <code>ErrorResponse</code> DOM element. - */ - private Element addErrorResponse(SignedPDFInfo signedPDFInfo) { - Element errorElem = responseDoc.createElementNS(MOA_NS_URI, "ErrorResponse"); - Element errorCodeElem = responseDoc.createElementNS(MOA_NS_URI, "ErrorCode"); - Element infoElem = responseDoc.createElementNS(MOA_NS_URI, "Info"); - String errorCodeStr = Integer.toString(signedPDFInfo.getErrorCode()); - - errorCodeElem.appendChild(responseDoc.createTextNode(errorCodeStr)); - errorElem.appendChild(errorCodeElem); - infoElem.appendChild(responseDoc.createTextNode(signedPDFInfo.getErrorInfo())); - errorElem.appendChild(errorCodeElem); - errorElem.appendChild(infoElem); - - return errorElem; - } + private static final String MOA_NS_URI = Constants.MOA_NS_URI; + + private static final Logger logger = LoggerFactory.getLogger(CreatePDFSignatureResponseBuilder.class); + + /** The XML document containing the response element. */ + private final Document responseDoc; + /** The response <code>CreateCMSSignatureResponse</code> DOM element. */ + private final Element responseElem; + + /** + * Create a new <code>CreateCMSSignatureResponseBuilder</code>: + * + * @throws MOASystemException An error occurred setting up the resulting XML + * document. + */ + public CreatePDFSignatureResponseBuilder() throws MOASystemException { + responseDoc = ResponseBuilderUtils.createResponse("CreatePDFSignatureResponse"); + responseElem = responseDoc.getDocumentElement(); + } + + /** + * Build a document containing a <code>CreateCMSSignatureResponse</code> DOM + * element being the XML representation of the given + * <code>CreateCMSSignatureResponse</code> API object. + * + * @param response The <code>CreateCMSSignatureResponse</code> to convert to + * XML. + * @return A document containing the <code>CreateCMSSignatureResponse</code> DOM + * element. + */ + public Document build(CreatePDFRespone response) { + final Iterator<SignedPDFInfo> iter = response.getSignatureInfoList().iterator(); + + while (iter.hasNext()) { + final SignedPDFInfo signedPDFInfo = iter.next(); + addPDFSignature(signedPDFInfo); + } + + return responseDoc; + } + + /** + * Add a <code>CMSSignature</code> element to the response. + * + * @param cmsSignatureResponse The content to put under the + * <code>CMSSignature</code> element. + */ + private void addPDFSignature(SignedPDFInfo signedPDFInfo) { + final Element pdfSignature = responseDoc.createElementNS(MOA_NS_URI, "PDFSignature"); + + if (signedPDFInfo.getSignatureID() != null) { + final Element signatureID = responseDoc.createElementNS(MOA_NS_URI, "SignatureID"); + signatureID.setTextContent(signedPDFInfo.getSignatureID()); + pdfSignature.appendChild(signatureID); + } + + switch (signedPDFInfo.getResponseType()) { + case SignedPDFInfo.SUCCESS_SIGNATURE: + pdfSignature.appendChild(addSuccessSignature(signedPDFInfo)); + break; + + default: + pdfSignature.appendChild(addErrorResponse(signedPDFInfo)); + break; + } + + responseElem.appendChild(pdfSignature); + } + + private Element addSuccessSignature(SignedPDFInfo signedPDFInfo) { + try { + final String base64Value = Base64Utils.encode(signedPDFInfo.getPdfDocument()); + final Element cmsSignature = responseDoc.createElementNS(MOA_NS_URI, "PDFSignature"); + cmsSignature.setTextContent(base64Value); + + return cmsSignature; + } catch (final IOException e) { + logger.error("Failed to encode pdf signature", e); + signedPDFInfo.setErrorCode(2300); + signedPDFInfo.setErrorInfo("Failed to encode the signed document"); + return addErrorResponse(signedPDFInfo); + } + + } + + /** + * Add a <code>ErrorResponse</code> element to the response. + * + * @param errorResponse The API object containing the information to put into + * the <code>ErrorResponse</code> DOM element. + */ + private Element addErrorResponse(SignedPDFInfo signedPDFInfo) { + final Element errorElem = responseDoc.createElementNS(MOA_NS_URI, "ErrorResponse"); + final Element errorCodeElem = responseDoc.createElementNS(MOA_NS_URI, "ErrorCode"); + final Element infoElem = responseDoc.createElementNS(MOA_NS_URI, "Info"); + final String errorCodeStr = Integer.toString(signedPDFInfo.getErrorCode()); + + errorCodeElem.appendChild(responseDoc.createTextNode(errorCodeStr)); + errorElem.appendChild(errorCodeElem); + infoElem.appendChild(responseDoc.createTextNode(signedPDFInfo.getErrorInfo())); + errorElem.appendChild(errorCodeElem); + errorElem.appendChild(infoElem); + + return errorElem; + } } |