Author: simoneg
Date: Fri Dec 11 15:26:10 2009
New Revision: 889651
URL: http://svn.apache.org/viewvc?rev=889651&view=rev
Log:
LABS-235 : Better checks for data types now that there is a bean converter
Modified:
labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/OnDemandBinder.java
Modified:
labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/OnDemandBinder.java
URL:
http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/OnDemandBinder.java?rev=889651&r1=889650&r2=889651&view=diff
==============================================================================
---
labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/OnDemandBinder.java
(original)
+++
labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/OnDemandBinder.java
Fri Dec 11 15:26:10 2009
@@ -151,7 +151,7 @@
for (Cookie cookie : cookies) {
if (cookie.getName().equals(rawname)) {
- return convertFetch(cookie.getValue(), type);
+ return convertFetch(cookie.getValue(), type,
true);
}
}
return null;
@@ -164,7 +164,7 @@
if (session == null) return null;
Object ret = unconvertedSession.get(rawname);
if (ret != null) return ret;
- ret = convertFetch(session.getAttribute(rawname), type);
+ ret = convertFetch(session.getAttribute(rawname), type, true);
unconvertedSession.put(rawname, ret);
return ret;
}
@@ -185,6 +185,23 @@
}
return value;
}
+
+ private Object convertFetch(Object value, Class type, boolean
parseType) {
+ if (value != null && value instanceof String) {
+ String strval = (String) value;
+ int iop = strval.indexOf(':');
+ if (iop == -1) return convertFetch(value, type);
+ String classname = strval.substring(0, iop);
+ try {
+ Class ntype = Class.forName(classname);
+ String nvalue = strval.substring(iop + 1);
+ return convertFetch(nvalue, ntype);
+ } catch (Exception e) {
+ return convertFetch(value, type);
+ }
+ }
+ return convertFetch(value, type);
+ }
public String fromJavaName(String jn, int prefix, String unique) {
jn = jn.substring(prefix);
@@ -254,7 +271,7 @@
}
if (newCookies == null) newCookies = new HashMap<String,
String>();
if (value != null) {
- String nval = (String) convertStore(value);
+ String nval = (String) convertStore(value, true);
Cookie ncookie = new Cookie(rawname, nval);
ncookie.setMaxAge(2592000);
ncookie.setPath("/");
@@ -280,7 +297,7 @@
session.removeAttribute(rawname);
} else {
unconvertedSession.put(rawname, value);
- session.setAttribute(rawname, convertStore(value));
+ session.setAttribute(rawname, convertStore(value,
true));
}
}
@@ -294,6 +311,13 @@
return value;
}
+ private Object convertStore(Object value, boolean withtype) {
+ Object ret = convertStore(value);
+ if (ret != null && ret instanceof String) {
+ ret = value.getClass().getName() + ":" + ret;
+ }
+ return ret;
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]