Author: cbegin
Date: Sun Jun 21 22:01:12 2009
New Revision: 787104

URL: http://svn.apache.org/viewvc?rev=787104&view=rev
Log:
minor package refactorings

Added:
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/reflection/HybridDynamicObject.java
      - copied, changed from r786846, 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/DynamicParameter.java
Removed:
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/DynamicParameter.java
Modified:
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/reflection/BaseDynamicObject.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/reflection/BeanDynamicObject.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/reflection/MapDynamicObject.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/reflection/MetaObject.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/reflection/PropertyTokenizer.java

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/reflection/BaseDynamicObject.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/reflection/BaseDynamicObject.java?rev=787104&r1=787103&r2=787104&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/reflection/BaseDynamicObject.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/reflection/BaseDynamicObject.java
 Sun Jun 21 22:01:12 2009
@@ -2,7 +2,7 @@
 
 import java.util.*;
 
-public abstract class BaseDynamicObject implements DynamicObject {
+abstract class BaseDynamicObject implements DynamicObject {
 
   protected static final Object[] NO_ARGUMENTS = new Object[0];
   protected MetaObject metaObject;

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/reflection/BeanDynamicObject.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/reflection/BeanDynamicObject.java?rev=787104&r1=787103&r2=787104&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/reflection/BeanDynamicObject.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/reflection/BeanDynamicObject.java
 Sun Jun 21 22:01:12 2009
@@ -1,6 +1,6 @@
 package org.apache.ibatis.reflection;
 
-public class BeanDynamicObject extends BaseDynamicObject {
+class BeanDynamicObject extends BaseDynamicObject {
 
   private Object object;
   private MetaClass metaClass;

Copied: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/reflection/HybridDynamicObject.java
 (from r786846, 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/DynamicParameter.java)
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/reflection/HybridDynamicObject.java?p2=ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/reflection/HybridDynamicObject.java&p1=ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/DynamicParameter.java&r1=786846&r2=787104&rev=787104&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/DynamicParameter.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/reflection/HybridDynamicObject.java
 Sun Jun 21 22:01:12 2009
@@ -1,37 +1,89 @@
-package org.apache.ibatis.executor;
-
-import org.apache.ibatis.reflection.MetaObject;
+package org.apache.ibatis.reflection;
 
 import java.util.*;
 
-public class DynamicParameter {
+public class HybridDynamicObject implements DynamicObject {
 
-  private MetaObject metaObject;
-  private DynamicParameter parameterObject;
-  private Map<String, Object> dynamicProperties;
+  private Object object;
+  private HashMap dynamicProperties;
+  private DynamicObject dynamicMap;
+  private DynamicObject dynamicBean;
+
+  public HybridDynamicObject(Object object) {
+    this.object = object;
+    this.dynamicBean = MetaObject.forObject(object).getDynamicObject();
+    this.dynamicProperties = new HashMap();
+    this.dynamicMap = 
MetaObject.forObject(dynamicProperties).getDynamicObject();
+  }
 
-  public DynamicParameter(DynamicParameter parameterObject) {
-    this.metaObject = MetaObject.forObject(parameterObject);
-    this.parameterObject = parameterObject;
-    this.dynamicProperties = new HashMap<String,Object>();
+  public Object getObject() {
+    return object;
   }
 
-  public Object getParameterObject() {
-    return parameterObject;
+  public Object get(PropertyTokenizer prop) {
+    if (dynamicBean.hasGetter(prop.getName())) {
+      return dynamicBean.get(prop);
+    } else {
+      return dynamicMap.get(prop);
+    }
   }
 
-  public void setValue(String name, Object value) {
-    dynamicProperties.put(name,value);
+  public void set(PropertyTokenizer prop, Object value) {
+    if (dynamicBean.hasSetter(prop.getName())) {
+      dynamicBean.set(prop,value);
+    } else {
+      dynamicMap.set(prop,value);
+    }
   }
-  
-  public Object getValue(String name) {
-    if (dynamicProperties.containsKey(name)) {
-      return dynamicProperties.get(name);
+
+  public String findProperty(String name) {
+    if (dynamicBean.hasGetter(name)) {
+      return dynamicBean.findProperty(name);
     } else {
-      return metaObject.getValue(name);
+      return dynamicMap.findProperty(name);
     }
   }
 
+  public String[] getGetterNames() {
+    String[] beanGetters = dynamicBean.getGetterNames();
+    String[] mapGetters = dynamicMap.getGetterNames();
+    String []result = new String[beanGetters.length+mapGetters.length];
+    System.arraycopy(beanGetters, 0, result, 0, beanGetters.length);
+    System.arraycopy(mapGetters, 0, result, beanGetters.length, 
mapGetters.length);
+    return result;
+  }
 
+  public String[] getSetterNames() {
+    String[] beanSetters = dynamicBean.getSetterNames();
+    String[] mapSetters = dynamicMap.getSetterNames();
+    String []result = new String[beanSetters.length+mapSetters.length];
+    System.arraycopy(beanSetters, 0, result, 0, beanSetters.length);
+    System.arraycopy(mapSetters, 0, result, beanSetters.length, 
mapSetters.length);
+    return result;
+  }
+
+  public Class getSetterType(String name) {
+    if (dynamicBean.hasGetter(name)) {
+      return dynamicBean.getSetterType(name);
+    } else {
+      return dynamicMap.getSetterType(name);
+    }
+  }
+
+  public Class getGetterType(String name) {
+    if (dynamicBean.hasGetter(name)) {
+      return dynamicBean.getGetterType(name);
+    } else {
+      return dynamicMap.getGetterType(name);
+    }
+  }
+
+  public boolean hasSetter(String name) {
+    return true;
+  }
+
+  public boolean hasGetter(String name) {
+    return true;
+  }
 
 }

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/reflection/MapDynamicObject.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/reflection/MapDynamicObject.java?rev=787104&r1=787103&r2=787104&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/reflection/MapDynamicObject.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/reflection/MapDynamicObject.java
 Sun Jun 21 22:01:12 2009
@@ -2,7 +2,7 @@
 
 import java.util.Map;
 
-public class MapDynamicObject extends BaseDynamicObject {
+class MapDynamicObject extends BaseDynamicObject {
 
   private Map map;
 

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/reflection/MetaObject.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/reflection/MetaObject.java?rev=787104&r1=787103&r2=787104&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/reflection/MetaObject.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/reflection/MetaObject.java
 Sun Jun 21 22:01:12 2009
@@ -104,6 +104,10 @@
     return MetaObject.forObject(value);
   }
 
+  public DynamicObject getDynamicObject() {
+    return dynamicObject;
+  }
+
   private static class NullObject {
   }
 

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/reflection/PropertyTokenizer.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/reflection/PropertyTokenizer.java?rev=787104&r1=787103&r2=787104&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/reflection/PropertyTokenizer.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/reflection/PropertyTokenizer.java
 Sun Jun 21 22:01:12 2009
@@ -2,7 +2,7 @@
 
 import java.util.Iterator;
 
-class PropertyTokenizer implements Iterable<PropertyTokenizer>, 
Iterator<PropertyTokenizer> {
+public class PropertyTokenizer implements Iterable<PropertyTokenizer>, 
Iterator<PropertyTokenizer> {
   private String name;
   private String indexedName;
   private String index;


Reply via email to