You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-dev@db.apache.org by to...@apache.org on 2005/10/01 11:20:27 UTC
cvs commit: db-ojb/src/java/org/apache/ojb/broker/metadata CreationDescriptor.java EnclosingClassReferenceDescriptor.java
tomdz 2005/10/01 02:20:27
Modified: src/java/org/apache/ojb/broker/core
PersistenceBrokerImpl.java
src/java/org/apache/ojb/broker/util ClassHelper.java
src/java/org/apache/ojb/broker/metadata
CreationDescriptor.java
EnclosingClassReferenceDescriptor.java
Log:
Replaced usages of Class#getEnclosingClass with Class#getDeclaringClass as the former is Java 5-only
Revision Changes Path
1.122 +29 -24 db-ojb/src/java/org/apache/ojb/broker/core/PersistenceBrokerImpl.java
Index: PersistenceBrokerImpl.java
===================================================================
RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/core/PersistenceBrokerImpl.java,v
retrieving revision 1.121
retrieving revision 1.122
diff -u -r1.121 -r1.122
--- PersistenceBrokerImpl.java 30 Sep 2005 21:45:14 -0000 1.121
+++ PersistenceBrokerImpl.java 1 Oct 2005 09:20:26 -0000 1.122
@@ -1468,39 +1468,44 @@
*/
private Object createDirectEnclosingObject(Class targetClass, Class directPersistentOuterClass, Object directPersistentOuterObject)
{
- Class directEnclosingClass = targetClass.getEnclosingClass();
+ Class directEnclosingClass = ClassHelper.getEnclosingClass(targetClass);
if ((directPersistentOuterClass != null) && directPersistentOuterClass.equals(directEnclosingClass))
{
return directPersistentOuterObject;
}
- else if (directEnclosingClass.getEnclosingClass() != null)
- {
- // recursively create the direct enclosing object of the direct enclosing class
- Object oneLevelAboveOuterObj = createDirectEnclosingObject(directEnclosingClass, directPersistentOuterClass, directPersistentOuterObject);
-
- try
- {
- return ClassHelper.newInstance(directEnclosingClass,
- new Class[] { directEnclosingClass.getEnclosingClass() },
- new Object[] { oneLevelAboveOuterObj },
- true);
- }
- catch (Exception ex)
- {
- throw new MetadataException("Cannot create instance of class "+directEnclosingClass.getName()+" because there is no no-arg constructor", ex);
- }
- }
else
{
- // the direct enclosing class is no inner class itself -> create with no-arg constructor
- try
+ Class outerEnclosingClass = ClassHelper.getEnclosingClass(directEnclosingClass);
+
+ if (outerEnclosingClass != null)
{
- return ClassHelper.newInstance(directEnclosingClass, true);
+ // recursively create the direct enclosing object of the direct enclosing class
+ Object oneLevelAboveOuterObj = createDirectEnclosingObject(directEnclosingClass, directPersistentOuterClass, directPersistentOuterObject);
+
+ try
+ {
+ return ClassHelper.newInstance(directEnclosingClass,
+ new Class[] { outerEnclosingClass },
+ new Object[] { oneLevelAboveOuterObj },
+ true);
+ }
+ catch (Exception ex)
+ {
+ throw new MetadataException("Cannot create instance of class "+directEnclosingClass.getName()+" because there is no no-arg constructor", ex);
+ }
}
- catch (Exception ex)
+ else
{
- throw new MetadataException("Cannot create instance of class "+directEnclosingClass.getName()+" because there is no no-arg constructor", ex);
+ // the direct enclosing class is no inner class itself -> create with no-arg constructor
+ try
+ {
+ return ClassHelper.newInstance(directEnclosingClass, true);
+ }
+ catch (Exception ex)
+ {
+ throw new MetadataException("Cannot create instance of class "+directEnclosingClass.getName()+" because there is no no-arg constructor", ex);
+ }
}
}
}
1.17 +14 -3 db-ojb/src/java/org/apache/ojb/broker/util/ClassHelper.java
Index: ClassHelper.java
===================================================================
RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/util/ClassHelper.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- ClassHelper.java 30 Sep 2005 21:45:14 -0000 1.16
+++ ClassHelper.java 1 Oct 2005 09:20:26 -0000 1.17
@@ -150,6 +150,17 @@
}
/**
+ * Determines the encllsing class for static and non-static inner classes.
+ *
+ * @param clazz The class
+ * @return The enclosing class or <code>null</code> if the given class is not an inner class
+ */
+ public static Class getEnclosingClass(Class clazz)
+ {
+ return clazz.getDeclaringClass();
+ }
+
+ /**
* Determines whether the given class is a non-static inner class.
*
* @param clazz The class
@@ -157,9 +168,9 @@
*/
public static boolean isNonStaticInnerClass(Class clazz)
{
- return (clazz.getEnclosingClass() != null) && !Modifier.isStatic(clazz.getModifiers());
+ return (getEnclosingClass(clazz) != null) && !Modifier.isStatic(clazz.getModifiers());
}
-
+
/**
* Returns a new instance of the given class, using the default or a no-arg constructor.
*
1.4 +2 -1 db-ojb/src/java/org/apache/ojb/broker/metadata/CreationDescriptor.java
Index: CreationDescriptor.java
===================================================================
RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/metadata/CreationDescriptor.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- CreationDescriptor.java 30 Sep 2005 21:45:15 -0000 1.3
+++ CreationDescriptor.java 1 Oct 2005 09:20:27 -0000 1.4
@@ -178,7 +178,8 @@
for (int idx = 0; idx < constructors.length; idx++)
{
- if (fitsCreationParameters(constructors[idx].getParameterTypes(), getTargetClass().getEnclosingClass()))
+ if (fitsCreationParameters(constructors[idx].getParameterTypes(),
+ ClassHelper.getEnclosingClass(getTargetClass())))
{
constructor = constructors[idx];
break;
1.2 +5 -4 db-ojb/src/java/org/apache/ojb/broker/metadata/EnclosingClassReferenceDescriptor.java
Index: EnclosingClassReferenceDescriptor.java
===================================================================
RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/metadata/EnclosingClassReferenceDescriptor.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- EnclosingClassReferenceDescriptor.java 30 Sep 2005 21:45:15 -0000 1.1
+++ EnclosingClassReferenceDescriptor.java 1 Oct 2005 09:20:27 -0000 1.2
@@ -19,6 +19,7 @@
import org.apache.ojb.broker.metadata.fieldaccess.AnonymousPersistentField;
import org.apache.ojb.broker.metadata.fieldaccess.PersistentField;
+import org.apache.ojb.broker.util.ClassHelper;
import org.apache.ojb.broker.util.logging.Logger;
import org.apache.ojb.broker.util.logging.LoggerFactory;
@@ -52,7 +53,7 @@
*/
public void setItemClass(Class c)
{
- Class curClass = getClassDescriptor().getClassOfObject().getEnclosingClass();
+ Class curClass = ClassHelper.getEnclosingClass(getClassDescriptor().getClassOfObject());
while (curClass != null)
{
@@ -62,7 +63,7 @@
}
else
{
- curClass = curClass.getEnclosingClass();
+ curClass = ClassHelper.getEnclosingClass(curClass);
}
}
if (curClass == null)
@@ -207,7 +208,7 @@
enclosingThisField.setAccessible(true);
curObject = enclosingThisField.get(curObject);
- curClass = curClass.getEnclosingClass();
+ curClass = ClassHelper.getEnclosingClass(curClass);
}
while ((curClass != null) && !curClass.equals(targetClass));
}
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org