You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ibatis.apache.org by cb...@apache.org on 2010/01/09 21:02:43 UTC
svn commit: r897529 -
/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/DynamicContext.java
Author: cbegin
Date: Sat Jan 9 20:02:43 2010
New Revision: 897529
URL: http://svn.apache.org/viewvc?rev=897529&view=rev
Log:
applied ibatis-3beta7-mapfix3.patch provided by Martin Ellis and Joe Gooch as per email thread: Using Map as a parameter object 12-Dec-2009
Modified:
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/DynamicContext.java
Modified: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/DynamicContext.java
URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/DynamicContext.java?rev=897529&r1=897528&r2=897529&view=diff
==============================================================================
--- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/DynamicContext.java (original)
+++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/DynamicContext.java Sat Jan 9 20:02:43 2010
@@ -10,6 +10,8 @@
public class DynamicContext {
+ public static final String PARAMETER_OBJECT_KEY = "_parameter";
+
static {
OgnlRuntime.setPropertyAccessor(ContextMap.class, new ContextAccessor());
}
@@ -19,16 +21,14 @@
private int uniqueNumber = 0;
public DynamicContext(Object parameterObject) {
- if (parameterObject instanceof Map) {
- bindings.putAll((Map<String, Object>) parameterObject);
- } else if (parameterObject != null) {
+ if (parameterObject != null && !(parameterObject instanceof Map)) {
MetaObject metaObject = MetaObject.forObject(parameterObject);
String[] names = metaObject.getGetterNames();
for (String name : names) {
bindings.put(name, metaObject.getValue(name));
}
}
- bindings.put("_parameter", parameterObject);
+ bindings.put(PARAMETER_OBJECT_KEY, parameterObject);
}
public Map<String, Object> getBindings() {
@@ -56,10 +56,22 @@
}
static class ContextAccessor implements PropertyAccessor {
+
public Object getProperty(Map context, Object target, Object name)
throws OgnlException {
Map map = (Map) target;
- return map.get(name);
+
+ Object result = map.get(name);
+ if (result != null) {
+ return result;
+ }
+
+ Object parameterObject = map.get(PARAMETER_OBJECT_KEY);
+ if (parameterObject instanceof Map) {
+ return ((Map)parameterObject).get(name);
+ }
+
+ return null;
}
public void setProperty(Map context, Object target, Object name, Object value)