summaryrefslogtreecommitdiff
path: root/BKUOnline/src/main/java/at/gv/egiz/mocca
diff options
context:
space:
mode:
authormcentner <mcentner@8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4>2010-07-14 15:22:56 +0000
committermcentner <mcentner@8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4>2010-07-14 15:22:56 +0000
commit5e10b6b575993c78ac22191849c464b618c4fa8a (patch)
tree55911c2b6d69e787dd408d63c1e641d6db39c5dc /BKUOnline/src/main/java/at/gv/egiz/mocca
parentdc95c76a126b4f3135645d3e20b152134d201244 (diff)
downloadmocca-5e10b6b575993c78ac22191849c464b618c4fa8a.tar.gz
mocca-5e10b6b575993c78ac22191849c464b618c4fa8a.tar.bz2
mocca-5e10b6b575993c78ac22191849c464b618c4fa8a.zip
MOCCA Online HTTP binding refactored.
git-svn-id: https://joinup.ec.europa.eu/svn/mocca/trunk@762 8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4
Diffstat (limited to 'BKUOnline/src/main/java/at/gv/egiz/mocca')
-rw-r--r--BKUOnline/src/main/java/at/gv/egiz/mocca/id/DataURLServerServlet.java63
-rw-r--r--BKUOnline/src/main/java/at/gv/egiz/mocca/id/SAMLBindingProcessorImpl.java2
-rw-r--r--BKUOnline/src/main/java/at/gv/egiz/mocca/id/SAMLRequestHandler.java33
3 files changed, 39 insertions, 59 deletions
diff --git a/BKUOnline/src/main/java/at/gv/egiz/mocca/id/DataURLServerServlet.java b/BKUOnline/src/main/java/at/gv/egiz/mocca/id/DataURLServerServlet.java
index b40fd35f..57140e13 100644
--- a/BKUOnline/src/main/java/at/gv/egiz/mocca/id/DataURLServerServlet.java
+++ b/BKUOnline/src/main/java/at/gv/egiz/mocca/id/DataURLServerServlet.java
@@ -20,8 +20,10 @@ package at.gv.egiz.mocca.id;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
+import java.util.Locale;
import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.XMLConstants;
@@ -38,12 +40,11 @@ import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.xml.sax.SAXException;
-import at.gv.egiz.bku.binding.BindingProcessor;
+import at.gv.egiz.bku.binding.BindingProcessorManager;
import at.gv.egiz.bku.binding.FormParameter;
-import at.gv.egiz.bku.binding.IdFactory;
+import at.gv.egiz.bku.binding.Id;
import at.gv.egiz.bku.binding.InputDecoder;
import at.gv.egiz.bku.binding.InputDecoderFactory;
-import at.gv.egiz.bku.online.webapp.SpringBKUServlet;
import at.gv.egiz.bku.slcommands.SLCommand;
import at.gv.egiz.bku.slcommands.SLMarshallerFactory;
import at.gv.egiz.bku.slcommands.SLResult;
@@ -55,9 +56,10 @@ import at.gv.egiz.bku.slcommands.impl.SLCommandImpl;
import at.gv.egiz.bku.slexceptions.SLCommandException;
import at.gv.egiz.bku.utils.DebugInputStream;
import at.gv.egiz.bku.utils.StreamUtil;
+import at.gv.egiz.org.apache.tomcat.util.http.AcceptLanguage;
import at.gv.egiz.slbinding.SLUnmarshaller;
-public class DataURLServerServlet extends SpringBKUServlet {
+public class DataURLServerServlet extends HttpServlet {
private static Logger log = LoggerFactory.getLogger(DataURLServerServlet.class);
@@ -73,6 +75,26 @@ public class DataURLServerServlet extends SpringBKUServlet {
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
+ BindingProcessorManager bindingProcessorManager = (BindingProcessorManager) getServletContext()
+ .getAttribute("bindingProcessorManager");
+ if (bindingProcessorManager == null) {
+ String msg = "Configuration error: BindingProcessorManager missing!";
+ log.error(msg);
+ resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, msg);
+ return;
+ }
+
+ Id id = (Id) req.getAttribute("id");
+ if (id == null) {
+ String msg = "No request id! Configuration error: ServletFilter missing?";
+ log.error(msg);
+ resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, msg);
+ return;
+ }
+
+ // if binding processor with same id is present: remove
+ bindingProcessorManager.removeBindingProcessor(id);
+
String userAgent = req.getHeader("User-Agent");
String contentType = req.getContentType();
log.debug("Content-Type: " + contentType + " User-Agent: " + userAgent);
@@ -148,12 +170,20 @@ public class DataURLServerServlet extends SpringBKUServlet {
}
}
-
- SAMLBindingProcessorImpl bindingProcessor = null;
- if (sessionId != null) {
- bindingProcessor = getBindingProcessor(sessionId);
+
+ Locale locale = AcceptLanguage.getLocale(req.getHeader("Accept-Language"));
+ if (log.isInfoEnabled()) {
+ log.info("Recieved request (Accept-Language locale: {}).", locale);
}
+ // create new binding processor
+ String protocol = getServletConfig().getInitParameter("protocol");
+ if (protocol == null || protocol.isEmpty()) {
+ protocol = req.getScheme();
+ }
+ SAMLBindingProcessorImpl bindingProcessor = (SAMLBindingProcessorImpl) bindingProcessorManager
+ .createBindingProcessor(protocol, locale);
+
if (bindingProcessor != null && respElement != null) {
SLResult slResult = null;
@@ -203,23 +233,8 @@ public class DataURLServerServlet extends SpringBKUServlet {
}
- resp.sendRedirect("bkuResult");
+ resp.sendRedirect("ui;jsessionid=" + id.toString());
}
- protected SAMLBindingProcessorImpl getBindingProcessor(String sessionId) {
-
- BindingProcessor bp = getBindingProcessorManager().getBindingProcessor(
- IdFactory.getInstance().createId(sessionId));
-
- if (bp instanceof SAMLBindingProcessorImpl) {
- log.debug("Found active BindingProcessor, using this one.");
- return (SAMLBindingProcessorImpl) bp;
- }
-
- return null;
-
- }
-
-
}
diff --git a/BKUOnline/src/main/java/at/gv/egiz/mocca/id/SAMLBindingProcessorImpl.java b/BKUOnline/src/main/java/at/gv/egiz/mocca/id/SAMLBindingProcessorImpl.java
index ce4ac425..56513ee9 100644
--- a/BKUOnline/src/main/java/at/gv/egiz/mocca/id/SAMLBindingProcessorImpl.java
+++ b/BKUOnline/src/main/java/at/gv/egiz/mocca/id/SAMLBindingProcessorImpl.java
@@ -77,8 +77,6 @@ public class SAMLBindingProcessorImpl extends
private String keyBoxIdentifier = "SecureSignatureKeypair";
- private String url = "www.egiz.gv.at";
-
private QESTemplates templates = new QESTemplates();
private IdLink idLink;
diff --git a/BKUOnline/src/main/java/at/gv/egiz/mocca/id/SAMLRequestHandler.java b/BKUOnline/src/main/java/at/gv/egiz/mocca/id/SAMLRequestHandler.java
deleted file mode 100644
index 0209ca79..00000000
--- a/BKUOnline/src/main/java/at/gv/egiz/mocca/id/SAMLRequestHandler.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-* Copyright 2009 Federal Chancellery Austria and
-* Graz University of Technology
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-package at.gv.egiz.mocca.id;
-
-import javax.servlet.http.HttpServletRequest;
-
-import at.gv.egiz.bku.online.webapp.AbstractWebRequestHandler;
-
-public class SAMLRequestHandler extends AbstractWebRequestHandler {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- protected String getRequestProtocol(HttpServletRequest req) {
- return "SAML";
- }
-
-}