aboutsummaryrefslogtreecommitdiff
path: root/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/XMLCreateSignatureBindingImpl.java
diff options
context:
space:
mode:
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.java101
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;
+ }
+
+}