Author: cbegin
Date: Mon Aug 14 00:45:08 2006
New Revision: 431306
URL: http://svn.apache.org/viewvc?rev=431306view=rev
Log:
Added support for private properties.
Added:
ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/PrivateMethodAccessTest.java
ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/maps/PrivateBook.xml
ibatis/trunk/java/mapper/mapper2/test/testdomain/PrivateBook.java
Modified:
ibatis/trunk/java/mapper/mapper2/build/version.properties
ibatis/trunk/java/mapper/mapper2/doc/release.txt
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/common/beans/ClassInfo.java
ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/NestedIterateTest.java
ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/ResultObjectFactoryTest.java
ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/maps/SqlMapConfig.xml
Modified: ibatis/trunk/java/mapper/mapper2/build/version.properties
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/build/version.properties?rev=431306r1=431305r2=431306view=diff
==
--- ibatis/trunk/java/mapper/mapper2/build/version.properties (original)
+++ ibatis/trunk/java/mapper/mapper2/build/version.properties Mon Aug 14
00:45:08 2006
@@ -1,5 +1,5 @@
#Build version info
-#Mon Aug 14 00:07:17 MDT 2006
+#Mon Aug 14 01:41:36 MDT 2006
version=2.1.7
-buildDate=2006/08/14 00\:07
-buildNum=627
+buildDate=2006/08/14 01\:41
+buildNum=628
Modified: ibatis/trunk/java/mapper/mapper2/doc/release.txt
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/doc/release.txt?rev=431306r1=431305r2=431306view=diff
==
--- ibatis/trunk/java/mapper/mapper2/doc/release.txt (original)
+++ ibatis/trunk/java/mapper/mapper2/doc/release.txt Mon Aug 14 00:45:08 2006
@@ -10,6 +10,7 @@
o Removed custom nested transactions (JDBC 1.4 now required)
o Added support for ResultSet OUT params from stored procs (e.g. Oracle Ref
Cursor)
o Added support for Multiple ResultSets mapped to corresponding ResultMaps or
ResultClasses.
+ o Added support for private properties.
o Fixed IBATIS-320 - openSession() returns same object
o Fixed IBATIS-325 - DateTypeHandler uses static SimpleDateFormat instance.
Not thread-safe.
Modified:
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/common/beans/ClassInfo.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/common/beans/ClassInfo.java?rev=431306r1=431305r2=431306view=diff
==
--- ibatis/trunk/java/mapper/mapper2/src/com/ibatis/common/beans/ClassInfo.java
(original)
+++ ibatis/trunk/java/mapper/mapper2/src/com/ibatis/common/beans/ClassInfo.java
Mon Aug 14 00:45:08 2006
@@ -15,16 +15,17 @@
*/
package com.ibatis.common.beans;
+import com.ibatis.common.logging.Log;
+import com.ibatis.common.logging.LogFactory;
+
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.UndeclaredThrowableException;
+import java.lang.reflect.ReflectPermission;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.*;
-import com.ibatis.common.logging.Log;
-import com.ibatis.common.logging.LogFactory;
-
/**
* This class represents a cached set of class definition information that
* allows for easy mapping between property names and getter/setter methods.
@@ -84,7 +85,7 @@
}
private void addMethods(Class cls) {
-Method[] methods = cls.getMethods();
+Method[] methods = getAllMethodsForClass(cls);
for (int i = 0; i methods.length; i++) {
String name = methods[i].getName();
if (name.startsWith(set) name.length() 3) {
@@ -112,6 +113,51 @@
}
}
name = null;
+}
+ }
+
+ private Method[] getAllMethodsForClass(Class cls) {
+Set uniqueMethodNames = new HashSet();
+List allMethods = new ArrayList();
+Class currentClass = cls;
+while (currentClass != null) {
+ addMethods(currentClass, uniqueMethodNames, allMethods);
+ Class[] interfaces = currentClass.getInterfaces();
+ for (int i=0; iinterfaces.length; i++) {
+addMethods(interfaces[i], uniqueMethodNames, allMethods);
+ }
+ currentClass = currentClass.getSuperclass();
+}
+return (Method[]) allMethods.toArray(new Method[allMethods.size()]);
+ }
+
+ private void addMethods(Class currentClass, Set uniqueMethodNames, List
allMethods) {
+Method[] methods = currentClass.getDeclaredMethods();
+for (int i=0; i methods.length; i++) {
+ Method currentMethod = methods[i];
+ String methodName = currentMethod.getName() +
currentMethod.getParameterTypes().length;
+ if (!uniqueMethodNames.contains(methodName)) {
+uniqueMethodNames.add(methodName);
+if (canAccessPrivateMethods()) {