You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by si...@apache.org on 2008/09/30 15:24:58 UTC
svn commit: r700458 - in
/labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website:
HandlerSetup.aj utils/Binder.java
Author: simoneg
Date: Tue Sep 30 06:24:58 2008
New Revision: 700458
URL: http://svn.apache.org/viewvc?rev=700458&view=rev
Log:
Support for "reserved" attributes
Modified:
labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/HandlerSetup.aj
labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/Binder.java
Modified: labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/HandlerSetup.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/HandlerSetup.aj?rev=700458&r1=700457&r2=700458&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/HandlerSetup.aj (original)
+++ labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/HandlerSetup.aj Tue Sep 30 06:24:58 2008
@@ -54,15 +54,16 @@
Object around (WebHandler h) : (doMethod(h) || subHandle(h) || hiddenMethod(h)) {
Object retObj = null;
if (!h.inited) {
+ String unique = Integer.toString(h.getRelativePath().hashCode());
try {
- Binder.bind(h, request);
+ Binder.bind(h, request, unique);
h.inited = true;
} catch (Throwable e) {
throw new MagmaException(e, "Error while setting up {0}", h.getClass());
}
retObj = proceed(h);
try {
- Binder.flush(h, request, response);
+ Binder.flush(h, request, response, unique);
h.inited = false;
} catch (Throwable e) {
throw new MagmaException(e, "Error while reading attributes from {0}", h.getClass());
Modified: labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/Binder.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/Binder.java?rev=700458&r1=700457&r2=700458&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/Binder.java (original)
+++ labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/Binder.java Tue Sep 30 06:24:58 2008
@@ -38,7 +38,7 @@
public class Binder {
- public static void bind(MagmaBeanSupport h, HttpServletRequest request) {
+ public static void bind(MagmaBeanSupport h, HttpServletRequest request, String unique) {
BeanHandler handler = h.handler();
BeanData data = h.beanData();
Cookie[] cookies = null;
@@ -48,7 +48,7 @@
PropertyInfo property = data.getProperty(name);
if (!property.isWriteable()) continue;
if (name.startsWith("session")) {
- name = fromJavaName(name, 7);
+ name =fromJavaName(name, 7, unique);
HttpSession session = request.getSession();
Object attribute = session.getAttribute(name);
if (attribute != null && attribute instanceof String) {
@@ -59,25 +59,29 @@
}
handler.setValue(property.getName(), attribute);
} else if (name.startsWith("header")) {
- name = fromJavaName(name, 6);
+ name = fromJavaName(name, 6, unique);
String val = request.getHeader(name);
handler.setStringValue(property.getName(), val);
} else if (name.startsWith("cookie")) {
- name = fromJavaName(name, 6);
+ name = fromJavaName(name, 6, unique);
if (cookies == null)
cookies = request.getCookies();
+ if (cookies == null) continue;
+
for (Cookie cookie : cookies) {
if (cookie.getName().equals(name)) {
- handler.setStringValue(property.getName(), cookie.getValue());
- break;
+ if (request.getAttribute("cookieInvalid" + name) == null) {
+ handler.setStringValue(property.getName(), cookie.getValue());
+ break;
+ }
}
}
} else if (name.startsWith("param")) {
- name = fromJavaName(name, 5);
+ name = fromJavaName(name, 5, unique);
String val = request.getParameter(name);
handler.setStringValue(property.getName(), val);
} else if (name.startsWith("request")) {
- name = fromJavaName(name, 7);
+ name = fromJavaName(name, 7, unique);
Object attribute = request.getAttribute(name);
handler.setValue(property.getName(), attribute);
} else if (name.startsWith("all")) {
@@ -91,7 +95,7 @@
handler.commit();
}
- public static void flush(MagmaBeanSupport h, HttpServletRequest request, HttpServletResponse resp) {
+ public static void flush(MagmaBeanSupport h, HttpServletRequest request, HttpServletResponse resp, String unique) {
BeanData data = h.beanData();
BeanHandler handler = h.handler();
handler.rollback();
@@ -104,7 +108,7 @@
if (name.equals("class")) continue;
Object value = handler.getValue(name);
if (name.startsWith("session")) {
- name = fromJavaName(name, 7);
+ name = fromJavaName(name, 7, unique);
HttpSession session = request.getSession();
if (value == null) {
session.removeAttribute(name);
@@ -118,38 +122,38 @@
session.setAttribute(name, value);
}
} else if (name.startsWith("header")) {
- name = fromJavaName(name, 6);
+ name = fromJavaName(name, 6, unique);
String strval = handler.getStringValue(property.getName());
if (strval != null) {
resp.setHeader(name, strval);
}
} else if (name.startsWith("cookie")) {
- name = fromJavaName(name, 6);
+ name = fromJavaName(name, 6, unique);
if (cookies == null)
cookies = request.getCookies();
if (cookies == null) continue;
boolean found = false;
for (Cookie cookie : cookies) {
if (cookie.getName().equals(name)) {
- cookie.setValue(handler.getStringValue(property.getName()));
- if (value == null) {
- cookie.setMaxAge(0);
- } else {
- cookie.setPath("/");
- }
- resp.addCookie(cookie);
found = true;
break;
}
}
- if (!found) {
+ if (value != null) {
Cookie ncookie = new Cookie(name,handler.getStringValue(property.getName()));
+ ncookie.setMaxAge(2592000);
ncookie.setPath("/");
resp.addCookie(ncookie);
+ } else if (found && value == null) {
+ Cookie ncookie = new Cookie(name,"");
+ ncookie.setMaxAge(0);
+ ncookie.setPath("/");
+ request.setAttribute("cookieInvalid" + name, true);
+ resp.addCookie(ncookie);
}
} else if (name.startsWith("param")) {
} else if (name.startsWith("request")) {
- name = fromJavaName(name, 7);
+ name = fromJavaName(name, 7, unique);
if (value != null) {
request.setAttribute(name, value);
} else {
@@ -159,8 +163,12 @@
}
}
- public static String fromJavaName(String jn, int prefix) {
+ public static String fromJavaName(String jn, int prefix, String unique) {
jn = jn.substring(prefix);
+ if (unique != null && jn.startsWith("Reserved")) {
+ jn = jn.substring(8);
+ jn = unique + jn;
+ }
if (!jn.startsWith("_")) {
jn = Introspector.decapitalize(jn);
} else {
@@ -169,4 +177,5 @@
jn = jn.replaceAll("__", "-");
return jn;
}
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org