aboutsummaryrefslogtreecommitdiff
path: root/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/filters/SL2MOAFilter.java
diff options
context:
space:
mode:
Diffstat (limited to 'spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/filters/SL2MOAFilter.java')
-rw-r--r--spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/filters/SL2MOAFilter.java110
1 files changed, 77 insertions, 33 deletions
diff --git a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/filters/SL2MOAFilter.java b/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/filters/SL2MOAFilter.java
index 4632c80f5..77c1b9c0e 100644
--- a/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/filters/SL2MOAFilter.java
+++ b/spss.slinterface/WEB-INF/src/at/gv/egovernment/moa/spss/slinterface/filters/SL2MOAFilter.java
@@ -37,12 +37,17 @@ import org.apache.commons.fileupload.DiskFileUpload;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUpload;
import org.apache.commons.fileupload.FileUploadException;
+import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.xerces.parsers.DOMParser;
import org.w3c.dom.Document;
import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
import at.gv.egovernment.moa.spss.slinterface.Constants;
+import at.gv.egovernment.moa.spss.slinterface.moainvoker.MOAInvoker;
+import at.gv.egovernment.moa.spss.slinterface.transformers.MOA2SL;
+import at.gv.egovernment.moa.spss.slinterface.transformers.SL2MOA;
/**
* @author Gregor Karlinger (mailto:gregor.karlinger@cio.gv.at)
@@ -67,19 +72,19 @@ public class SL2MOAFilter implements Filter
slRequest_ = new SLRequest();
// Initialize stylesheet transform SL2MOA
- ServletContext context = config_.getServletContext();
- Transformer sl2MoaTransformer = (Transformer) context.getAttribute(Constants.WSCP_SL2MOA_TRANSFORMER_);
- if (sl2MoaTransformer == null)
- {
- initTransformer(context, Constants.IP_SL2MOA_STYLESHEET_);
- }
+// ServletContext context = config_.getServletContext();
+// Transformer sl2MoaTransformer = (Transformer) context.getAttribute(Constants.WSCP_SL2MOA_TRANSFORMER_);
+// if (sl2MoaTransformer == null)
+// {
+// initTransformer(context, Constants.IP_SL2MOA_STYLESHEET_);
+// }
// Initialize stylesheet transform MOA2SL
- Transformer moa2SlTransformer = (Transformer) context.getAttribute(Constants.WSCP_MOA2SL_TRANSFORMER_);
- if (moa2SlTransformer == null)
- {
- initTransformer(context, Constants.IP_MOA2SL_STYLESHEET_);
- }
+// Transformer moa2SlTransformer = (Transformer) context.getAttribute(Constants.WSCP_MOA2SL_TRANSFORMER_);
+// if (moa2SlTransformer == null)
+// {
+// initTransformer(context, Constants.IP_MOA2SL_STYLESHEET_);
+// }
}
@@ -103,22 +108,29 @@ public class SL2MOAFilter implements Filter
Document slXMLRequestDoc = parseSlXmlRequest(slXmlRequestCAR);
// Transform SL request into a MOA SPSS request
- Transformer sl2MoaTransformer =
- (Transformer) config_.getServletContext().getAttribute(Constants.WSCP_SL2MOA_TRANSFORMER_);
- DOMSource slXMLRequestDS = new DOMSource(slXMLRequestDoc);
+// Transformer sl2MoaTransformer =
+// (Transformer) config_.getServletContext().getAttribute(Constants.WSCP_SL2MOA_TRANSFORMER_);
+// DOMSource slXMLRequestDS = new DOMSource(slXMLRequestDoc);
+// ByteArrayOutputStream moaRequestBOS = new ByteArrayOutputStream();
+// StreamResult moaRequestResult = new StreamResult(moaRequestBOS);
+// try
+// {
+// sl2MoaTransformer.transform(slXMLRequestDS, moaRequestResult);
+// }
+// catch (TransformerException e)
+// {
+// String message = "Transforming SL XML request into MOA XML request failed.";
+// logger_.error(message, e);
+// throw new ServletException(message, e);
+// }
+// logger_.debug("MOA XML Request:\n" + moaRequestBOS.toString());
+// ByteArrayInputStream moaRequestIS = new ByteArrayInputStream(moaRequestBOS.toByteArray());
+ Properties initProps = (Properties)config_.getServletContext().getAttribute(Constants.WSCP_INIT_PROPS_);
+ String trustProfileId = initProps.getProperty(Constants.IP_SP_TRUSTPROFILEID_);
+ Document moaXMLRequestDoc = SL2MOA.toMoaVerifyXMLSignatureRequest(slXMLRequestDoc, trustProfileId);
ByteArrayOutputStream moaRequestBOS = new ByteArrayOutputStream();
- StreamResult moaRequestResult = new StreamResult(moaRequestBOS);
- try
- {
- sl2MoaTransformer.transform(slXMLRequestDS, moaRequestResult);
- }
- catch (TransformerException e)
- {
- String message = "Transforming SL XML request into MOA XML request failed.";
- logger_.error(message, e);
- throw new ServletException(message, e);
- }
- logger_.debug("MOA XML Request:\n" + moaRequestBOS.toString());
+ MOAInvoker.serializeDocument(moaXMLRequestDoc, moaRequestBOS);
+ logger_.debug("SL request transformed into MOA request:\n" + moaRequestBOS);
ByteArrayInputStream moaRequestIS = new ByteArrayInputStream(moaRequestBOS.toByteArray());
// Invoke MOA SPSS
@@ -130,22 +142,40 @@ public class SL2MOAFilter implements Filter
response.setContentType("text/xml");
// Transform MOA response into a SL response and send SL response back to client
- Transformer moa2SlTransformer =
- (Transformer) config_.getServletContext().getAttribute(Constants.WSCP_MOA2SL_TRANSFORMER_);
+// Transformer moa2SlTransformer =
+// (Transformer) config_.getServletContext().getAttribute(Constants.WSCP_MOA2SL_TRANSFORMER_);
+// ServletOutputStream moaResponseSOS = (ServletOutputStream) responseWrapper.getOutputStream();
+// ByteArrayInputStream moaResponseBIS = new ByteArrayInputStream(moaResponseSOS.toByteArray());
+// StreamSource moaResponseSource = new StreamSource(moaResponseBIS);
+// StreamResult slResponseResult = new StreamResult(response.getOutputStream());
+// try
+// {
+// moa2SlTransformer.transform(moaResponseSource, slResponseResult);
+// }
+// catch (TransformerException e)
+// {
+// String message = "Transforming MOA XML response into SL XML response failed.";
+// logger_.error(message, e);
+// throw new ServletException(message, e);
+// }
+ DOMParser xmlParser = (DOMParser) config_.getServletContext().getAttribute(Constants.WSCP_XMLPARSER_);
ServletOutputStream moaResponseSOS = (ServletOutputStream) responseWrapper.getOutputStream();
ByteArrayInputStream moaResponseBIS = new ByteArrayInputStream(moaResponseSOS.toByteArray());
- StreamSource moaResponseSource = new StreamSource(moaResponseBIS);
- StreamResult slResponseResult = new StreamResult(response.getOutputStream());
+ InputSource responseSource = new InputSource(moaResponseBIS);
try
{
- moa2SlTransformer.transform(moaResponseSource, slResponseResult);
+ xmlParser.parse(responseSource);
+ Document moaResponseDoc = xmlParser.getDocument();
+ Document slResponseDoc = MOA2SL.toSlVerifyXMLSignatureResponse(moaResponseDoc);
+ MOAInvoker.serializeDocument(slResponseDoc, response.getOutputStream());
}
- catch (TransformerException e)
+ catch (SAXException e)
{
String message = "Transforming MOA XML response into SL XML response failed.";
logger_.error(message, e);
throw new ServletException(message, e);
- }
+ }
+
}
/* ---------------------------------------------------------------------------------------------------- */
@@ -197,6 +227,7 @@ public class SL2MOAFilter implements Filter
}
context.setAttribute(contextAttrName, transformer);
}
+
/* ---------------------------------------------------------------------------------------------------- */
/**
@@ -298,6 +329,19 @@ public class SL2MOAFilter implements Filter
logger_.error(message, e);
throw new ServletException(message, e);
}
+ if (logger_.getEffectiveLevel().isGreaterOrEqual(Level.DEBUG))
+ {
+ ByteArrayOutputStream debugOutputStream = new ByteArrayOutputStream();
+ try
+ {
+ MOAInvoker.serializeDocument(slXmlRequestDoc, debugOutputStream);
+ logger_.debug("XML-Request received:\n" + debugOutputStream);
+ }
+ catch (IOException e)
+ {
+ // No debug output if this fails
+ }
+ }
// Check if namespace is correct
String namespaceURI = slXmlRequestDoc.getDocumentElement().getNamespaceURI();