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 2004/02/06 08:58:02 UTC

cvs commit: db-ojb/src/java/org/apache/ojb/broker/accesslayer RowReaderDefaultImpl.java

tomdz       2004/02/05 23:58:02

  Modified:    src/java/org/apache/ojb/broker/accesslayer
                        RowReaderDefaultImpl.java
  Log:
  Now checks whether the factory-method is static, and if not, then creates an instance of the factory-class to call the factory-method at.
  
  Revision  Changes    Path
  1.27      +17 -2     db-ojb/src/java/org/apache/ojb/broker/accesslayer/RowReaderDefaultImpl.java
  
  Index: RowReaderDefaultImpl.java
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/accesslayer/RowReaderDefaultImpl.java,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- RowReaderDefaultImpl.java	11 Dec 2003 00:36:41 -0000	1.26
  +++ RowReaderDefaultImpl.java	6 Feb 2004 07:58:02 -0000	1.27
  @@ -64,6 +64,7 @@
   import java.lang.reflect.Constructor;
   import java.lang.reflect.InvocationTargetException;
   import java.lang.reflect.Method;
  +import java.lang.reflect.Modifier;
   import java.sql.ResultSet;
   import java.sql.SQLException;
   import java.util.Map;
  @@ -244,7 +245,21 @@
               try
               {
                   // 1. create an empty Object by calling the no-parms factory method
  -                result = targetClassDescriptor.getFactoryMethod().invoke(null, null);
  +                Method method = targetClassDescriptor.getFactoryMethod();
  +
  +                if (Modifier.isStatic(method.getModifiers()))
  +                {
  +                    // method is static so call it directly
  +                    result = method.invoke(null, null);
  +                }
  +                else
  +                {
  +                    // method is not static, so create an object of the factory first
  +                    // note that this requires a public no-parameter (default) constructor
  +                    Object factoryInstance = targetClassDescriptor.getFactoryClass().newInstance();
  +
  +                    result = method.invoke(factoryInstance, null);
  +                }
               }
               catch (Exception ex)
               {
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org