diff options
Diffstat (limited to 'moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFSignatureRequestParser.java')
-rw-r--r-- | moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFSignatureRequestParser.java | 187 |
1 files changed, 90 insertions, 97 deletions
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFSignatureRequestParser.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFSignatureRequestParser.java index c6b2126..e483db8 100644 --- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFSignatureRequestParser.java +++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFSignatureRequestParser.java @@ -37,106 +37,99 @@ import at.gv.egovernment.moaspss.util.XPathUtils; /** * A parser to parse <code>CreateCMSSignatureRequest</code> DOM trees into * <code>CreateCMSSignatureRequest</code> API objects. - * + * * @author Patrick Peck * @version $Id$ */ public class CreatePDFSignatureRequestParser { - // - // XPath expresssions to select elements in the CreateCMSSignatureRequest - // - private static final String MOA = Constants.MOA_PREFIX + ":"; - private static final String KEY_IDENTIFIER_XPATH = "/" + MOA + "CreatePDFSignatureRequest/" + MOA + "KeyIdentifier"; - private static final String SINGLE_SIGNATURE_INFO_XPATH = "/" + MOA + "CreatePDFSignatureRequest/" + MOA - + "SingleSignatureInfo"; - private static final String SIGNATURE_PROFILE_XPATH = MOA + "SignatureProfile"; - private static final String SIGNATURE_POSITION_XPATH = MOA + "SignaturePosition"; - private static final String SIGNATURE_ID_XPATH = MOA + "SignatureID"; - - private static final String PDF_DOCUMENT_XPATH = MOA + "PDFDocument"; - - /** - * Create a new <code>CreateCMSSignatureRequestParser</code>. - */ - public CreatePDFSignatureRequestParser() { - } - - /** - * Parse a <code>CreateCMSSignatureRequest</code> DOM element, as defined by - * the MOA schema. - * - * @param requestElem - * The <code>CreateCMSSignatureRequest</code> to parse. The - * request must have been successfully parsed against the schema - * for this method to succeed. - * @return A <code>CreateCMSSignatureRequest</code> API object containing - * the data from the DOM element. - * @throws MOAApplicationException - * An error occurred parsing the request. - */ - public CreatePDFRequest parse(Element requestElem) throws MOAApplicationException { - - String keyIdentifier = XPathUtils.getElementValue(requestElem, KEY_IDENTIFIER_XPATH, null); - - CreatePDFRequest createPDFRequest = new CreatePDFRequest(keyIdentifier); - parseSingleSignatureInfos(requestElem, createPDFRequest); - - return createPDFRequest; - } - - /** - * Parse all <code>SingleSignatureInfo</code> elements of the - * <code>CreateCMSSignatureRequest</code>. - * - * @param requestElem - * The <code>CreateCMSSignatureRequest</code> to parse. - * @return A <code>List</code> of <code>SingleSignatureInfo</code> API - * objects. - * @throws MOAApplicationException - * An error occurred parsing on of the - * <code>SingleSignatureInfo</code> elements. - */ - private void parseSingleSignatureInfos(Element requestElem, CreatePDFRequest createPDFRequest) - throws MOAApplicationException { - - NodeIterator sigInfoElems = XPathUtils.selectNodeIterator(requestElem, SINGLE_SIGNATURE_INFO_XPATH); - Element sigInfoElem; - - while ((sigInfoElem = (Element) sigInfoElems.nextNode()) != null) { - createPDFRequest.getSignatureInfoList().add(parsePDFSignatureInfo(sigInfoElem)); - } - } - - /** - * Parse a <code>SingleSignatureInfo</code> DOM element. - * - * @param sigInfoElem - * The <code>SingleSignatureInfo</code> DOM element to parse. - * @return A <code>SingleSignatureInfo</code> API object containing the - * information of <code>sigInfoElem</code>. - * @throws MOAApplicationException - * An error occurred parsing the - * <code>SingleSignatureInfo</code>. - */ - private PDFSignatureInfo parsePDFSignatureInfo(Element sigInfoElem) throws MOAApplicationException { - - String signatureProfile = XPathUtils.getElementValue(sigInfoElem, SIGNATURE_PROFILE_XPATH, null); - String signaturePosition = XPathUtils.getElementValue(sigInfoElem, SIGNATURE_POSITION_XPATH, null); - String signatureID = XPathUtils.getElementValue(sigInfoElem, SIGNATURE_ID_XPATH, null); - - - Element base64ContentElem = (Element) XPathUtils.selectSingleNode(sigInfoElem, PDF_DOCUMENT_XPATH); - String base64Str = DOMUtils.getText(base64ContentElem); - try { - byte[] inputPDF = Base64Utils.decode(base64Str, true); - PDFSignatureInfo PDFSignatureInfo = new PDFSignatureInfo(inputPDF, - signatureProfile, signaturePosition, signatureID); - - return PDFSignatureInfo; - } catch (IOException e) { - throw new MOAApplicationException("2244", null, e); - } - - } + // + // XPath expresssions to select elements in the CreateCMSSignatureRequest + // + private static final String MOA = Constants.MOA_PREFIX + ":"; + private static final String KEY_IDENTIFIER_XPATH = "/" + MOA + "CreatePDFSignatureRequest/" + MOA + + "KeyIdentifier"; + private static final String SINGLE_SIGNATURE_INFO_XPATH = "/" + MOA + "CreatePDFSignatureRequest/" + MOA + + "SingleSignatureInfo"; + private static final String SIGNATURE_PROFILE_XPATH = MOA + "SignatureProfile"; + private static final String SIGNATURE_POSITION_XPATH = MOA + "SignaturePosition"; + private static final String SIGNATURE_ID_XPATH = MOA + "SignatureID"; + + private static final String PDF_DOCUMENT_XPATH = MOA + "PDFDocument"; + + /** + * Create a new <code>CreateCMSSignatureRequestParser</code>. + */ + public CreatePDFSignatureRequestParser() { + } + + /** + * Parse a <code>CreateCMSSignatureRequest</code> DOM element, as defined by the + * MOA schema. + * + * @param requestElem The <code>CreateCMSSignatureRequest</code> to parse. The + * request must have been successfully parsed against the + * schema for this method to succeed. + * @return A <code>CreateCMSSignatureRequest</code> API object containing the + * data from the DOM element. + * @throws MOAApplicationException An error occurred parsing the request. + */ + public CreatePDFRequest parse(Element requestElem) throws MOAApplicationException { + + final String keyIdentifier = XPathUtils.getElementValue(requestElem, KEY_IDENTIFIER_XPATH, null); + + final CreatePDFRequest createPDFRequest = new CreatePDFRequest(keyIdentifier); + parseSingleSignatureInfos(requestElem, createPDFRequest); + + return createPDFRequest; + } + + /** + * Parse all <code>SingleSignatureInfo</code> elements of the + * <code>CreateCMSSignatureRequest</code>. + * + * @param requestElem The <code>CreateCMSSignatureRequest</code> to parse. + * @return A <code>List</code> of <code>SingleSignatureInfo</code> API objects. + * @throws MOAApplicationException An error occurred parsing on of the + * <code>SingleSignatureInfo</code> elements. + */ + private void parseSingleSignatureInfos(Element requestElem, CreatePDFRequest createPDFRequest) + throws MOAApplicationException { + + final NodeIterator sigInfoElems = XPathUtils.selectNodeIterator(requestElem, SINGLE_SIGNATURE_INFO_XPATH); + Element sigInfoElem; + + while ((sigInfoElem = (Element) sigInfoElems.nextNode()) != null) { + createPDFRequest.getSignatureInfoList().add(parsePDFSignatureInfo(sigInfoElem)); + } + } + + /** + * Parse a <code>SingleSignatureInfo</code> DOM element. + * + * @param sigInfoElem The <code>SingleSignatureInfo</code> DOM element to parse. + * @return A <code>SingleSignatureInfo</code> API object containing the + * information of <code>sigInfoElem</code>. + * @throws MOAApplicationException An error occurred parsing the + * <code>SingleSignatureInfo</code>. + */ + private PDFSignatureInfo parsePDFSignatureInfo(Element sigInfoElem) throws MOAApplicationException { + + final String signatureProfile = XPathUtils.getElementValue(sigInfoElem, SIGNATURE_PROFILE_XPATH, null); + final String signaturePosition = XPathUtils.getElementValue(sigInfoElem, SIGNATURE_POSITION_XPATH, null); + final String signatureID = XPathUtils.getElementValue(sigInfoElem, SIGNATURE_ID_XPATH, null); + + final Element base64ContentElem = (Element) XPathUtils.selectSingleNode(sigInfoElem, PDF_DOCUMENT_XPATH); + final String base64Str = DOMUtils.getText(base64ContentElem); + try { + final byte[] inputPDF = Base64Utils.decode(base64Str, true); + final PDFSignatureInfo PDFSignatureInfo = new PDFSignatureInfo(inputPDF, + signatureProfile, signaturePosition, signatureID); + + return PDFSignatureInfo; + } catch (final IOException e) { + throw new MOAApplicationException("2244", null, e); + } + + } }
\ No newline at end of file |