Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorafinkbein2008-12-01 16:53:20 +0000
committerafinkbein2008-12-01 16:53:20 +0000
commit5c98813a4e44c5dc8b896b5e0f2681ec497c7329 (patch)
treeb0defaea9c372b3fc2e24b9ad9a17bb80082377d
parent9ae18ff9b85fe4faa0fdb65f90f94202cab43d97 (diff)
downloadorg.eclipse.osee-5c98813a4e44c5dc8b896b5e0f2681ec497c7329.tar.gz
org.eclipse.osee-5c98813a4e44c5dc8b896b5e0f2681ec497c7329.tar.xz
org.eclipse.osee-5c98813a4e44c5dc8b896b5e0f2681ec497c7329.zip
-rw-r--r--0.5.0_20081201/org.eclipse.osee.framework.session.management.servlet/.classpath7
-rw-r--r--0.5.0_20081201/org.eclipse.osee.framework.session.management.servlet/.project28
-rw-r--r--0.5.0_20081201/org.eclipse.osee.framework.session.management.servlet/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--0.5.0_20081201/org.eclipse.osee.framework.session.management.servlet/.settings/org.eclipse.pde.core.prefs5
-rw-r--r--0.5.0_20081201/org.eclipse.osee.framework.session.management.servlet/META-INF/MANIFEST.MF18
-rw-r--r--0.5.0_20081201/org.eclipse.osee.framework.session.management.servlet/build.properties4
-rw-r--r--0.5.0_20081201/org.eclipse.osee.framework.session.management.servlet/src/org/eclipse/osee/framework/session/management/servlet/SessionManagementServlet.java162
-rw-r--r--0.5.0_20081201/org.eclipse.osee.framework.session.management.servlet/src/org/eclipse/osee/framework/session/management/servlet/SessionManagementServletActivator.java81
8 files changed, 312 insertions, 0 deletions
diff --git a/0.5.0_20081201/org.eclipse.osee.framework.session.management.servlet/.classpath b/0.5.0_20081201/org.eclipse.osee.framework.session.management.servlet/.classpath
new file mode 100644
index 00000000000..8a8f1668cdc
--- /dev/null
+++ b/0.5.0_20081201/org.eclipse.osee.framework.session.management.servlet/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/0.5.0_20081201/org.eclipse.osee.framework.session.management.servlet/.project b/0.5.0_20081201/org.eclipse.osee.framework.session.management.servlet/.project
new file mode 100644
index 00000000000..59050366e5a
--- /dev/null
+++ b/0.5.0_20081201/org.eclipse.osee.framework.session.management.servlet/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.osee.framework.session.management.servlet</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/0.5.0_20081201/org.eclipse.osee.framework.session.management.servlet/.settings/org.eclipse.jdt.core.prefs b/0.5.0_20081201/org.eclipse.osee.framework.session.management.servlet/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..174f2c07578
--- /dev/null
+++ b/0.5.0_20081201/org.eclipse.osee.framework.session.management.servlet/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+#Wed Oct 01 10:10:42 MST 2008
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/0.5.0_20081201/org.eclipse.osee.framework.session.management.servlet/.settings/org.eclipse.pde.core.prefs b/0.5.0_20081201/org.eclipse.osee.framework.session.management.servlet/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 00000000000..4e5a8c0f79a
--- /dev/null
+++ b/0.5.0_20081201/org.eclipse.osee.framework.session.management.servlet/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,5 @@
+#Wed Oct 01 10:10:42 MST 2008
+eclipse.preferences.version=1
+pluginProject.equinox=false
+pluginProject.extensions=false
+resolve.requirebundle=false
diff --git a/0.5.0_20081201/org.eclipse.osee.framework.session.management.servlet/META-INF/MANIFEST.MF b/0.5.0_20081201/org.eclipse.osee.framework.session.management.servlet/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..ddd70d258c7
--- /dev/null
+++ b/0.5.0_20081201/org.eclipse.osee.framework.session.management.servlet/META-INF/MANIFEST.MF
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Session Management Servlet Plug-in
+Bundle-SymbolicName: org.eclipse.osee.framework.session.management.servlet
+Bundle-Version: 0.4.0.qualifier
+Bundle-Activator: org.eclipse.osee.framework.session.management.servlet.SessionManagementServletActivator
+Bundle-Vendor: Boeing
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Import-Package: javax.servlet;version="2.4.0",
+ javax.servlet.http;version="2.4.0",
+ org.eclipse.osee.framework.core.data,
+ org.eclipse.osee.framework.core.exception,
+ org.eclipse.osee.framework.core.server,
+ org.eclipse.osee.framework.db.connection.exception,
+ org.eclipse.osee.framework.jdk.core.util,
+ org.eclipse.osee.framework.logging,
+ org.osgi.framework;version="1.3.0",
+ org.osgi.util.tracker;version="1.3.3"
diff --git a/0.5.0_20081201/org.eclipse.osee.framework.session.management.servlet/build.properties b/0.5.0_20081201/org.eclipse.osee.framework.session.management.servlet/build.properties
new file mode 100644
index 00000000000..41eb6ade2b4
--- /dev/null
+++ b/0.5.0_20081201/org.eclipse.osee.framework.session.management.servlet/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .
diff --git a/0.5.0_20081201/org.eclipse.osee.framework.session.management.servlet/src/org/eclipse/osee/framework/session/management/servlet/SessionManagementServlet.java b/0.5.0_20081201/org.eclipse.osee.framework.session.management.servlet/src/org/eclipse/osee/framework/session/management/servlet/SessionManagementServlet.java
new file mode 100644
index 00000000000..907b2c1d81a
--- /dev/null
+++ b/0.5.0_20081201/org.eclipse.osee.framework.session.management.servlet/src/org/eclipse/osee/framework/session/management/servlet/SessionManagementServlet.java
@@ -0,0 +1,162 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.session.management.servlet;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.logging.Level;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.eclipse.osee.framework.core.data.OseeCredential;
+import org.eclipse.osee.framework.core.data.OseeSessionGrant;
+import org.eclipse.osee.framework.core.server.ISessionManager;
+import org.eclipse.osee.framework.core.server.OseeHttpServlet;
+import org.eclipse.osee.framework.db.connection.exception.OseeCoreException;
+import org.eclipse.osee.framework.db.connection.exception.OseeWrappedException;
+import org.eclipse.osee.framework.jdk.core.util.Lib;
+import org.eclipse.osee.framework.logging.OseeLog;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public class SessionManagementServlet extends OseeHttpServlet {
+
+ private static final long serialVersionUID = 3334123351267606890L;
+
+ private static enum OperationType {
+ CREATE, RELEASE, INVALID;
+
+ public static OperationType fromString(String value) {
+ OperationType toReturn = OperationType.INVALID;
+ for (OperationType operType : OperationType.values()) {
+ if (operType.name().equalsIgnoreCase(value)) {
+ toReturn = operType;
+ break;
+ }
+ }
+ return toReturn;
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.core.server.OseeHttpServlet#checkAccessControl(javax.servlet.http.HttpServletRequest)
+ */
+ @Override
+ protected void checkAccessControl(HttpServletRequest request) throws OseeCoreException {
+ // Allow access to all
+ }
+
+ /* (non-Javadoc)
+ * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
+ */
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+ try {
+ String[] protocols = SessionManagementServletActivator.getInstance().getAuthenticationManager().getProtocols();
+ response.setStatus(HttpServletResponse.SC_OK);
+ response.setContentType("text/plain");
+ response.setCharacterEncoding("UTF-8");
+ response.getWriter().write(Arrays.deepToString(protocols));
+ } catch (Exception ex) {
+ OseeLog.log(SessionManagementServletActivator.class, Level.SEVERE, String.format(
+ "Error processing request for protocols [%s]", request.toString()), ex);
+ response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
+ response.setContentType("text/plain");
+ response.getWriter().write(Lib.exceptionToString(ex));
+ } finally {
+ response.getWriter().flush();
+ response.getWriter().close();
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
+ */
+ @Override
+ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+ String operation = request.getParameter("operation");
+ try {
+ OperationType operationType = OperationType.fromString(operation);
+ switch (operationType) {
+ case CREATE:
+ createSession(request, response);
+ break;
+ case RELEASE:
+ releaseSession(request, response);
+ break;
+ default:
+ break;
+ }
+ } catch (Exception ex) {
+ OseeLog.log(SessionManagementServletActivator.class, Level.SEVERE, String.format(
+ "Error processing session request [%s]", request.toString()), ex);
+ response.getWriter().write(Lib.exceptionToString(ex));
+ response.getWriter().flush();
+ response.getWriter().close();
+ }
+ }
+
+ private void createSession(HttpServletRequest request, HttpServletResponse response) throws OseeCoreException {
+ try {
+ ISessionManager manager = SessionManagementServletActivator.getInstance().getSessionManager();
+ ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+ Lib.inputStreamToOutputStream(request.getInputStream(), outputStream);
+ byte[] bytes = outputStream.toByteArray();
+ // TODO Decrypt credential info
+
+ OseeCredential credential = OseeCredential.fromXml(new ByteArrayInputStream(bytes));
+ OseeSessionGrant oseeSessionGrant = manager.createSession(credential);
+
+ response.setStatus(HttpServletResponse.SC_ACCEPTED);
+ ByteArrayOutputStream byteOutputStream = new ByteArrayOutputStream();
+ oseeSessionGrant.write(byteOutputStream);
+
+ // TODO after encrypted these will need to change
+ response.setContentType("application/xml");
+ response.setCharacterEncoding("UTF-8");
+ response.setContentLength(byteOutputStream.size());
+ Lib.inputStreamToOutputStream(new ByteArrayInputStream(byteOutputStream.toByteArray()),
+ response.getOutputStream());
+
+ } catch (IOException ex) {
+ throw new OseeWrappedException(ex);
+ } finally {
+ try {
+ response.getOutputStream().flush();
+ } catch (IOException ex) {
+ throw new OseeWrappedException(ex);
+ }
+ }
+ }
+
+ private void releaseSession(HttpServletRequest request, HttpServletResponse response) throws OseeCoreException {
+ try {
+ ISessionManager manager = SessionManagementServletActivator.getInstance().getSessionManager();
+ String sessionId = request.getParameter("sessionId");
+ manager.releaseSession(sessionId);
+ response.setStatus(HttpServletResponse.SC_ACCEPTED);
+ response.setContentType("text/plain");
+ response.getWriter().write(String.format("Session [%s] released.", sessionId));
+ } catch (IOException ex) {
+ throw new OseeWrappedException(ex);
+ } finally {
+ try {
+ response.getWriter().flush();
+ response.getWriter().close();
+ } catch (IOException ex) {
+ throw new OseeWrappedException(ex);
+ }
+ }
+ }
+}
diff --git a/0.5.0_20081201/org.eclipse.osee.framework.session.management.servlet/src/org/eclipse/osee/framework/session/management/servlet/SessionManagementServletActivator.java b/0.5.0_20081201/org.eclipse.osee.framework.session.management.servlet/src/org/eclipse/osee/framework/session/management/servlet/SessionManagementServletActivator.java
new file mode 100644
index 00000000000..7f8e926bc6b
--- /dev/null
+++ b/0.5.0_20081201/org.eclipse.osee.framework.session.management.servlet/src/org/eclipse/osee/framework/session/management/servlet/SessionManagementServletActivator.java
@@ -0,0 +1,81 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.session.management.servlet;
+
+import org.eclipse.osee.framework.core.data.OseeServerContext;
+import org.eclipse.osee.framework.core.server.IAuthenticationManager;
+import org.eclipse.osee.framework.core.server.ISessionManager;
+import org.eclipse.osee.framework.core.server.OseeHttpServiceTracker;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.util.tracker.ServiceTracker;
+
+public class SessionManagementServletActivator implements BundleActivator {
+
+ private static SessionManagementServletActivator instance;
+ private OseeHttpServiceTracker httpServiceTracker;
+ private ServiceTracker serviceTracker;
+ private ServiceTracker authenticationServiceTracker;
+
+ /*
+ * (non-Javadoc)
+ * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ instance = this;
+
+ serviceTracker = new ServiceTracker(context, ISessionManager.class.getName(), null);
+ serviceTracker.open();
+
+ authenticationServiceTracker = new ServiceTracker(context, IAuthenticationManager.class.getName(), null);
+ authenticationServiceTracker.open();
+
+ httpServiceTracker =
+ new OseeHttpServiceTracker(context, OseeServerContext.SESSION_CONTEXT, SessionManagementServlet.class);
+ httpServiceTracker.open();
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ if (httpServiceTracker != null) {
+ httpServiceTracker.close();
+ httpServiceTracker = null;
+ }
+
+ if (serviceTracker != null) {
+ serviceTracker.close();
+ serviceTracker = null;
+ }
+
+ if (authenticationServiceTracker != null) {
+ authenticationServiceTracker.close();
+ authenticationServiceTracker = null;
+ }
+
+ instance = null;
+ }
+
+ public static SessionManagementServletActivator getInstance() {
+ return instance;
+ }
+
+ public ISessionManager getSessionManager() {
+ return (ISessionManager) serviceTracker.getService();
+ }
+
+ public IAuthenticationManager getAuthenticationManager() {
+ return (IAuthenticationManager) authenticationServiceTracker.getService();
+ }
+
+}

Back to the top