summaryrefslogtreecommitdiff
path: root/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/opensaml/HttpPostEncoderWithOwnTemplate.java
diff options
context:
space:
mode:
Diffstat (limited to 'eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/opensaml/HttpPostEncoderWithOwnTemplate.java')
-rw-r--r--eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/opensaml/HttpPostEncoderWithOwnTemplate.java56
1 files changed, 28 insertions, 28 deletions
diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/opensaml/HttpPostEncoderWithOwnTemplate.java b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/opensaml/HttpPostEncoderWithOwnTemplate.java
index 404b4e8e..3650e617 100644
--- a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/opensaml/HttpPostEncoderWithOwnTemplate.java
+++ b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/opensaml/HttpPostEncoderWithOwnTemplate.java
@@ -19,6 +19,7 @@
package at.gv.egiz.eaaf.modules.pvp2.impl.opensaml;
+
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
@@ -26,18 +27,21 @@ import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Writer;
-import org.apache.velocity.VelocityContext;
-import org.apache.velocity.app.VelocityEngine;
-import org.opensaml.common.binding.SAMLMessageContext;
-import org.opensaml.saml2.binding.encoding.HTTPPostEncoder;
-import org.opensaml.ws.message.encoder.MessageEncodingException;
-import org.opensaml.ws.transport.http.HTTPOutTransport;
-import org.opensaml.ws.transport.http.HTTPTransportUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import javax.servlet.http.HttpServletResponse;
import at.gv.egiz.eaaf.core.api.gui.IVelocityGuiBuilderConfiguration;
import at.gv.egiz.eaaf.core.api.gui.IVelocityGuiFormBuilder;
+import at.gv.egiz.eaaf.core.impl.gui.velocity.VelocityProvider;
+
+import org.apache.velocity.VelocityContext;
+import org.apache.velocity.app.Velocity;
+import org.opensaml.messaging.context.MessageContext;
+import org.opensaml.messaging.encoder.MessageEncodingException;
+import org.opensaml.saml.common.SAMLObject;
+import org.opensaml.saml.saml2.binding.encoding.impl.HTTPPostEncoder;
+
+import lombok.extern.slf4j.Slf4j;
+import net.shibboleth.utilities.java.support.net.HttpServletSupport;
/**
* OpenSAML2 Post-Binding encoder that uses dynamic loaded templates.
@@ -45,10 +49,9 @@ import at.gv.egiz.eaaf.core.api.gui.IVelocityGuiFormBuilder;
* @author tlenz
*
*/
+@Slf4j
public class HttpPostEncoderWithOwnTemplate extends HTTPPostEncoder {
- private static final Logger log = LoggerFactory.getLogger(HttpPostEncoderWithOwnTemplate.class);
- private final VelocityEngine velocityEngine;
private final IVelocityGuiBuilderConfiguration guiConfig;
private final IVelocityGuiFormBuilder guiBuilder;
@@ -57,29 +60,28 @@ public class HttpPostEncoderWithOwnTemplate extends HTTPPostEncoder {
*
* @param guiConfig GUI configuration
* @param guiBuilder GUI builder implementation
- * @param engine velocity engine
+ * @throws Exception In case of a {@link Velocity} initialization error
*/
public HttpPostEncoderWithOwnTemplate(final IVelocityGuiBuilderConfiguration guiConfig,
- final IVelocityGuiFormBuilder guiBuilder, final VelocityEngine engine) {
- super(engine, null);
- this.velocityEngine = engine;
+ final IVelocityGuiFormBuilder guiBuilder) throws Exception {
this.guiConfig = guiConfig;
this.guiBuilder = guiBuilder;
+ setVelocityEngine(VelocityProvider.getClassPathVelocityEngine());
+
}
/**
- * Base64 and POST encodes the outbound message and writes it to the outbound
+ * Base64 and POST encodes the out-bound message and writes it to the out-bound
* transport.
*
* @param messageContext current message context
- * @param endpointUrl endpoint URL to which to encode message
*
* @throws MessageEncodingException thrown if there is a problem encoding the
* message
*/
@Override
- protected void postEncode(final SAMLMessageContext messageContext, final String endpointUrl)
+ protected void postEncode(final MessageContext<SAMLObject> messageContext, final String endpointUrl)
throws MessageEncodingException {
log.debug("Invoking Velocity template to create POST body");
InputStream is = null;
@@ -91,19 +93,16 @@ public class HttpPostEncoderWithOwnTemplate extends HTTPPostEncoder {
// load template
is = guiBuilder.getTemplateInputStream(guiConfig);
- // populate velocity context with SAML2 parameters
populateVelocityContext(context, messageContext, endpointUrl);
- // populate transport parameter
- final HTTPOutTransport outTransport =
- (HTTPOutTransport) messageContext.getOutboundMessageTransport();
- HTTPTransportUtils.addNoCacheHeaders(outTransport);
- HTTPTransportUtils.setUTF8Encoding(outTransport);
- HTTPTransportUtils.setContentType(outTransport, "text/html");
+ final HttpServletResponse response = getHttpServletResponse();
- // evaluate template and write content to response
- final Writer out = new OutputStreamWriter(outTransport.getOutgoingStream(), "UTF-8");
- velocityEngine.evaluate(context, out, "SAML2_POST_BINDING",
+ HttpServletSupport.addNoCacheHeaders(response);
+ HttpServletSupport.setUTF8Encoding(response);
+ HttpServletSupport.setContentType(response, "text/html");
+
+ final Writer out = new OutputStreamWriter(response.getOutputStream(), "UTF-8");
+ getVelocityEngine().evaluate(context, out, "SAML2_POST_BINDING",
new BufferedReader(new InputStreamReader(is, "UTF-8")));
out.flush();
@@ -123,4 +122,5 @@ public class HttpPostEncoderWithOwnTemplate extends HTTPPostEncoder {
}
}
+
}