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;