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