You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@abdera.apache.org by jm...@apache.org on 2008/05/16 07:16:37 UTC
svn commit: r656935 - in
/incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server:
RequestContext.java servlet/AbderaServlet.java
servlet/ServletRequestContext.java
Author: jmsnell
Date: Thu May 15 22:16:37 2008
New Revision: 656935
URL: http://svn.apache.org/viewvc?rev=656935&view=rev
Log:
https://issues.apache.org/jira/browse/ABDERA-158 - Make ServletContext available in ServletRequestContext
I modified the patch so that the existing RequestContext.getAttribute and setAttribute methods can be used. There is a new value for the Scope enum called CONTAINER that, when using the ServletRequestContext, will use the ServletContext.
e.g. context.setAttribute(Scope.CONTAINER, "foo", "bar");
Modified:
incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/RequestContext.java
incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/servlet/AbderaServlet.java
incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/servlet/ServletRequestContext.java
Modified: incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/RequestContext.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/RequestContext.java?rev=656935&r1=656934&r2=656935&view=diff
==============================================================================
--- incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/RequestContext.java (original)
+++ incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/RequestContext.java Thu May 15 22:16:37 2008
@@ -45,9 +45,10 @@
* RequestContext attributes can either have Session or Request scope.
* Request scope attributes are only valid within the context of the current
* request. Session scope attributes, however, will remain valid as long
- * as the Session is active
+ * as the Session is active. Container scope attributes are set on the
+ * Web container (e.g. the ServletContext)
*/
- public enum Scope { REQUEST, SESSION };
+ public enum Scope { REQUEST, SESSION, CONTAINER };
/**
* Special properties provided by the server
Modified: incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/servlet/AbderaServlet.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/servlet/AbderaServlet.java?rev=656935&r1=656934&r2=656935&view=diff
==============================================================================
--- incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/servlet/AbderaServlet.java (original)
+++ incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/servlet/AbderaServlet.java Thu May 15 22:16:37 2008
@@ -84,7 +84,7 @@
HttpServletResponse response)
throws ServletException, IOException {
RequestContext reqcontext =
- new ServletRequestContext(provider, request);
+ new ServletRequestContext(provider, request, getServletContext());
FilterChain chain = new FilterChain(provider,reqcontext);
try {
output(
@@ -159,7 +159,7 @@
Map<String,String> properties = new HashMap<String,String>();
Enumeration<String> e = config.getInitParameterNames();
while(e.hasMoreElements()) {
- String key = (String) e.nextElement();
+ String key = e.nextElement();
String val = config.getInitParameter(key);
properties.put(key, val);
}
Modified: incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/servlet/ServletRequestContext.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/servlet/ServletRequestContext.java?rev=656935&r1=656934&r2=656935&view=diff
==============================================================================
--- incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/servlet/ServletRequestContext.java (original)
+++ incubator/abdera/java/trunk/server/src/main/java/org/apache/abdera/protocol/server/servlet/ServletRequestContext.java Thu May 15 22:16:37 2008
@@ -26,6 +26,7 @@
import java.util.List;
import java.util.Locale;
+import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
@@ -41,17 +42,20 @@
implements RequestContext {
private final HttpServletRequest request;
+ private final ServletContext servletContext;
private HttpSession session;
public ServletRequestContext(
Provider provider,
- HttpServletRequest request) {
+ HttpServletRequest request,
+ ServletContext servletContext) {
super(
provider,
request.getMethod(),
initRequestUri(request),
initBaseUri(provider,request));
this.request = request;
+ this.servletContext = servletContext;
this.session = request.getSession(false);
this.principal = request.getUserPrincipal();
this.subject = provider.resolveSubject(this);
@@ -97,6 +101,10 @@
public HttpServletRequest getRequest() {
return request;
}
+
+ public ServletContext getServletContext() {
+ return servletContext;
+ }
public synchronized HttpSession getSession() {
return getSession(false);
@@ -111,6 +119,11 @@
switch(scope) {
case REQUEST: request.setAttribute(name, value); break;
case SESSION: getSession(true).setAttribute(name, value); break;
+ case CONTAINER: {
+ ServletContext scontext = getServletContext();
+ if (scontext != null)
+ scontext.setAttribute(name, value);
+ }
}
return this;
}
@@ -119,6 +132,10 @@
switch(scope) {
case REQUEST: return request.getAttribute(name);
case SESSION: return (session != null) ? session.getAttribute(name) : null;
+ case CONTAINER: {
+ ServletContext scontext = getServletContext();
+ return scontext != null ? scontext.getAttribute(name) : null;
+ }
}
return null;
}
@@ -128,6 +145,10 @@
switch(scope) {
case REQUEST: return enum2array(request.getAttributeNames());
case SESSION: return (session != null) ? enum2array(session.getAttributeNames()) : null;
+ case CONTAINER: {
+ ServletContext scontext = getServletContext();
+ return scontext != null ? enum2array(scontext.getAttributeNames()) : null;
+ }
}
return null;
}
@@ -216,13 +237,13 @@
}
private static IRI initRequestUri(HttpServletRequest request) {
- IRI uri = null;
+ IRI uri;
StringBuilder buf =
new StringBuilder(
request.getRequestURI());
String qs = request.getQueryString();
if (qs != null && qs.length() != 0)
- buf.append("?" + request.getQueryString());
+ buf.append("?").append(request.getQueryString());
uri = new IRI(buf.toString());
return uri;
}