svn commit: r933783 - in /ibatis/java/ibatis-3/trunk/src: main/java/org/apache/ibatis/builder/xml/dynamic/DynamicContext.java test/java/org/apache/ibatis/submitted/dynsql/Parameter.java

2010-04-13 Thread jgbutler
Author: jgbutler
Date: Tue Apr 13 21:22:04 2010
New Revision: 933783

URL: http://svn.apache.org/viewvc?rev=933783view=rev
Log:
Fix for IBATIS-777 - Dynamic context should not call every setter

Modified:

ibatis/java/ibatis-3/trunk/src/main/java/org/apache/ibatis/builder/xml/dynamic/DynamicContext.java

ibatis/java/ibatis-3/trunk/src/test/java/org/apache/ibatis/submitted/dynsql/Parameter.java

Modified: 
ibatis/java/ibatis-3/trunk/src/main/java/org/apache/ibatis/builder/xml/dynamic/DynamicContext.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/src/main/java/org/apache/ibatis/builder/xml/dynamic/DynamicContext.java?rev=933783r1=933782r2=933783view=diff
==
--- 
ibatis/java/ibatis-3/trunk/src/main/java/org/apache/ibatis/builder/xml/dynamic/DynamicContext.java
 (original)
+++ 
ibatis/java/ibatis-3/trunk/src/main/java/org/apache/ibatis/builder/xml/dynamic/DynamicContext.java
 Tue Apr 13 21:22:04 2010
@@ -17,17 +17,16 @@ public class DynamicContext {
 OgnlRuntime.setPropertyAccessor(ContextMap.class, new ContextAccessor());
   }
 
-  private final ContextMap bindings = new ContextMap();
+  private final ContextMap bindings;
   private final StringBuilder sqlBuilder = new StringBuilder();
   private int uniqueNumber = 0;
 
   public DynamicContext(Configuration configuration, Object parameterObject) {
 if (parameterObject != null  !(parameterObject instanceof Map)) {
   MetaObject metaObject = configuration.newMetaObject(parameterObject);
-  String[] names = metaObject.getGetterNames();
-  for (String name : names) {
-bindings.put(name, metaObject.getValue(name));
-  }
+  bindings = new ContextMap(metaObject);
+} else {
+  bindings = new ContextMap(null);
 }
 bindings.put(PARAMETER_OBJECT_KEY, parameterObject);
   }
@@ -54,6 +53,28 @@ public class DynamicContext {
   }
 
   static class ContextMap extends HashMapString, Object {
+private MetaObject parameterMetaObject;
+public ContextMap(MetaObject parameterMetaObject) {
+  this.parameterMetaObject = parameterMetaObject;
+}
+
+@Override
+public Object get(Object key) {
+  if (super.containsKey(key)) {
+return super.get(key);
+  }
+
+  if (parameterMetaObject != null) {
+Object object = parameterMetaObject.getValue(key.toString());
+if (object != null) {
+  super.put(key.toString(), object);
+}
+
+return object;
+  }
+
+  return null;
+}
   }
 
   static class ContextAccessor implements PropertyAccessor {
@@ -81,5 +102,4 @@ public class DynamicContext {
   map.put(name, value);
 }
   }
-
 }

Modified: 
ibatis/java/ibatis-3/trunk/src/test/java/org/apache/ibatis/submitted/dynsql/Parameter.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/src/test/java/org/apache/ibatis/submitted/dynsql/Parameter.java?rev=933783r1=933782r2=933783view=diff
==
--- 
ibatis/java/ibatis-3/trunk/src/test/java/org/apache/ibatis/submitted/dynsql/Parameter.java
 (original)
+++ 
ibatis/java/ibatis-3/trunk/src/test/java/org/apache/ibatis/submitted/dynsql/Parameter.java
 Tue Apr 13 21:22:04 2010
@@ -25,6 +25,12 @@ public class Parameter {
   private String schema;
   private ListInteger ids;
   private boolean enabled;
+  
+  public String getFred() {
+// added this method to check for bug with DynamicContext
+// IBATIS-777
+throw new RuntimeException(This method should not be called.);
+  }
 
   public String getSchema() {
 return schema;




svn commit: r933789 - /ibatis/java/ibator/trunk/core/ibator-core/src/main/java/org/apache/ibatis/ibator/api/dom/xml/Document.java

2010-04-13 Thread jgbutler
Author: jgbutler
Date: Tue Apr 13 21:36:27 2010
New Revision: 933789

URL: http://svn.apache.org/viewvc?rev=933789view=rev
Log:
[Ibator] Support XML with no doctype

Modified:

ibatis/java/ibator/trunk/core/ibator-core/src/main/java/org/apache/ibatis/ibator/api/dom/xml/Document.java

Modified: 
ibatis/java/ibator/trunk/core/ibator-core/src/main/java/org/apache/ibatis/ibator/api/dom/xml/Document.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibator/trunk/core/ibator-core/src/main/java/org/apache/ibatis/ibator/api/dom/xml/Document.java?rev=933789r1=933788r2=933789view=diff
==
--- 
ibatis/java/ibator/trunk/core/ibator-core/src/main/java/org/apache/ibatis/ibator/api/dom/xml/Document.java
 (original)
+++ 
ibatis/java/ibator/trunk/core/ibator-core/src/main/java/org/apache/ibatis/ibator/api/dom/xml/Document.java
 Tue Apr 13 21:36:27 2010
@@ -36,6 +36,10 @@ public class Document {
 this.systemId = systemId;
 }
 
+public Document() {
+super();
+}
+
 /**
  * @return Returns the rootElement.
  */
@@ -70,14 +74,16 @@ public class Document {
 
 sb.append(?xml version=\1.0\ encoding=\UTF-8\ ?); //$NON-NLS-1$
 
-OutputUtilities.newLine(sb);
-sb.append(!DOCTYPE ); //$NON-NLS-1$
-sb.append(rootElement.getName());
-sb.append( PUBLIC \); //$NON-NLS-1$
-sb.append(publicId);
-sb.append(\ \); //$NON-NLS-1$
-sb.append(systemId);
-sb.append(\ ); //$NON-NLS-1$
+if (publicId != null  systemId != null) {
+OutputUtilities.newLine(sb);
+sb.append(!DOCTYPE ); //$NON-NLS-1$
+sb.append(rootElement.getName());
+sb.append( PUBLIC \); //$NON-NLS-1$
+sb.append(publicId);
+sb.append(\ \); //$NON-NLS-1$
+sb.append(systemId);
+sb.append(\ ); //$NON-NLS-1$
+}
 
 OutputUtilities.newLine(sb);
 sb.append(rootElement.getFormattedContent(0));