httpsession (phase 1)
diff --git a/src/share/classes/com/sun/net/httpserver/HttpExchange.java b/src/share/classes/com/sun/net/httpserver/HttpExchange.java
--- a/src/share/classes/com/sun/net/httpserver/HttpExchange.java
+++ b/src/share/classes/com/sun/net/httpserver/HttpExchange.java
@@ -263,3 +263,4 @@
*/
public abstract HttpPrincipal getPrincipal ();
}
+ public abstract HttpSession getSession();
diff --git a/src/share/classes/com/sun/net/httpserver/HttpSession.java b/src/share/classes/com/sun/net/httpserver/HttpSession.java
new file mode 100644
--- /dev/null
+++ b/src/share/classes/com/sun/net/httpserver/HttpSession.java
@@ -0,0 +1,7 @@
+package com.sun.net.httpserver;
+
+import java.util.Map;
+
+public abstract class HttpSession {
+ public abstract Map<String,Object> getAttributes() ;
+}
diff --git a/src/share/classes/sun/net/httpserver/HttpExchangeImpl.java b/src/share/classes/sun/net/httpserver/HttpExchangeImpl.java
--- a/src/share/classes/sun/net/httpserver/HttpExchangeImpl.java
+++ b/src/share/classes/sun/net/httpserver/HttpExchangeImpl.java
@@ -118,3 +118,8 @@
return impl;
}
}
+
+ @Override
+ public HttpSession getSession() {
+ return HttpSessionImpl.forExchange(impl);
+ }
diff --git a/src/share/classes/sun/net/httpserver/HttpSessionImpl.java b/src/share/classes/sun/net/httpserver/HttpSessionImpl.java
new file mode 100644
--- /dev/null
+++ b/src/share/classes/sun/net/httpserver/HttpSessionImpl.java
@@ -0,0 +1,31 @@
+package sun.net.httpserver;
+
+import com.sun.net.httpserver.*;
+import java.util.HashMap;
+import java.util.IdentityHashMap;
+import java.util.Map;
+
+class HttpSessionImpl extends HttpSession {
+
+ private static Map<HttpConnection,HttpSessionImpl> map =
+ new IdentityHashMap<HttpConnection,HttpSessionImpl>();
+ static HttpSession forExchange(ExchangeImpl impl) {
+ HttpConnection conn = impl.getConnection();
+ if (map.containsKey(conn)) {
+ return map.get(conn);
+ } else {
+ HttpSessionImpl sess = new HttpSessionImpl();
+ map.put(conn, sess);
+ return sess;
+ }
+ }
+
+ private HttpSessionImpl() { }
+
+ private Map<String,Object> attrs = new HashMap<String,Object>();
+
+ @Override
+ public Map<String, Object> getAttributes() {
+ return attrs;
+ }
+}
diff --git a/src/share/classes/sun/net/httpserver/HttpsExchangeImpl.java b/src/share/classes/sun/net/httpserver/HttpsExchangeImpl.java
--- a/src/share/classes/sun/net/httpserver/HttpsExchangeImpl.java
+++ b/src/share/classes/sun/net/httpserver/HttpsExchangeImpl.java
@@ -122,3 +122,8 @@
return impl;
}
}
+
+ @Override
+ public HttpSession getSession() {
+ return HttpSessionImpl.forExchange(impl);
+ }