diff options
author | Andreas Fitzek <andreas.fitzek@iaik.tugraz.at> | 2015-11-27 14:02:29 +0100 |
---|---|---|
committer | Andreas Fitzek <andreas.fitzek@iaik.tugraz.at> | 2015-11-27 14:02:29 +0100 |
commit | f26449517c01e456f677d3e47edf9cafad6e70e0 (patch) | |
tree | 501b920ada68e641fd128e113663bf248752ac21 /moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/XMLCreateSignatureBindingImpl.java | |
parent | 6c09d652d6317d1514924518c3186470498247a9 (diff) | |
download | moa-sig-f26449517c01e456f677d3e47edf9cafad6e70e0.tar.gz moa-sig-f26449517c01e456f677d3e47edf9cafad6e70e0.tar.bz2 moa-sig-f26449517c01e456f677d3e47edf9cafad6e70e0.zip |
CXF Webservice adapter
Diffstat (limited to 'moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/XMLCreateSignatureBindingImpl.java')
-rw-r--r-- | moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/XMLCreateSignatureBindingImpl.java | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/XMLCreateSignatureBindingImpl.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/XMLCreateSignatureBindingImpl.java new file mode 100644 index 0000000..d5d50cd --- /dev/null +++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/XMLCreateSignatureBindingImpl.java @@ -0,0 +1,101 @@ +package at.gv.egovernment.moa.spss.server.webservice.binding; + +import java.io.IOException; +import java.math.BigInteger; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import javax.xml.transform.TransformerException; + +import at.gv.egiz.moasig.CreateXMLSignatureRequest; +import at.gv.egiz.moasig.CreateXMLSignatureResponseType; +import at.gv.egovernment.moa.spss.MOAApplicationException; +import at.gv.egovernment.moa.spss.api.SPSSFactory; +import at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureResponse; +import at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureResponseElement; +import at.gv.egovernment.moa.spss.api.xmlsign.ErrorResponse; +import at.gv.egovernment.moa.spss.api.xmlsign.SignatureEnvironmentResponse; +import at.gv.egovernment.moa.spss.server.webservice.XMLCreateSignatureBinding; +import at.gv.egovernment.moa.util.DOMUtils; + +public class XMLCreateSignatureBindingImpl implements XMLCreateSignatureBinding { + + /** The factory to create API objects. */ + private SPSSFactory factory; + + /** + * Create a new <code>CreateXMLSignatureRequestParser</code>. + */ + public XMLCreateSignatureBindingImpl() { + this.factory = SPSSFactory.getInstance(); + } + + @Override + public at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureRequest buildXMLRequest( + CreateXMLSignatureRequest createXMLSignatureRequest) throws MOAApplicationException { + + String keyIdentifier = createXMLSignatureRequest.getKeyIdentifier(); + + TransformerUtils transformerUtils = new TransformerUtils(); + + List singleSignatureInfos = new ArrayList(); + + Iterator<at.gv.egiz.moasig.CreateXMLSignatureRequestType.SingleSignatureInfo> singleSignatureInfoIterator = createXMLSignatureRequest + .getSingleSignatureInfo().iterator(); + + while (singleSignatureInfoIterator.hasNext()) { + at.gv.egiz.moasig.CreateXMLSignatureRequestType.SingleSignatureInfo singleSignatureInfo = singleSignatureInfoIterator + .next(); + singleSignatureInfos.add(transformerUtils.buildSingleSignatureInfo(singleSignatureInfo)); + } + + return factory.createCreateXMLSignatureRequest(keyIdentifier, singleSignatureInfos); + } + + + + @Override + public CreateXMLSignatureResponseType buildXMLResponse(CreateXMLSignatureResponse response) throws MOAApplicationException { + CreateXMLSignatureResponseType createXMLSignatureResponseType = new CreateXMLSignatureResponseType(); + List responseObjects = response.getResponseElements(); + + Iterator responseIterator = responseObjects.iterator(); + + while(responseIterator.hasNext()) { + Object responseObject = responseIterator.next(); + + CreateXMLSignatureResponseElement responseElement = + (CreateXMLSignatureResponseElement) responseObject; + + switch (responseElement.getResponseType()) { + case CreateXMLSignatureResponseElement.SIGNATURE_ENVIRONMENT_RESPONSE : + SignatureEnvironmentResponse envResponse = + (SignatureEnvironmentResponse) responseElement; + byte[] signature; + try { + signature = DOMUtils.serializeNode(envResponse.getSignatureEnvironment(), "UTF-8"); + } catch (TransformerException e) { + throw new MOAApplicationException("Failed to write xml signature to response", null, e); + } catch (IOException e) { + throw new MOAApplicationException("Failed to write xml signature to response", null, e); + } + createXMLSignatureResponseType.getSignatureEnvironmentOrErrorResponse().add(signature); + break; + + case CreateXMLSignatureResponseElement.ERROR_RESPONSE : + ErrorResponse errorResponse = (ErrorResponse) responseElement; + + at.gv.egiz.moasig.ErrorResponseType errorResponseType = new at.gv.egiz.moasig.ErrorResponseType(); + errorResponseType.setErrorCode(BigInteger.valueOf(errorResponse.getErrorCode())); + errorResponseType.setInfo(errorResponse.getInfo()); + + createXMLSignatureResponseType.getSignatureEnvironmentOrErrorResponse().add(errorResponseType); + break; + } + } + + return createXMLSignatureResponseType; + } + +} |