jmcnally    02/03/17 22:33:01

  Modified:    jdbc2pool/src/java/org/apache/commons/jdbc2pool/adapter
                        DriverAdapterCPDS.java
  Log:
  added the properties related to the PreparedStatement pool to the Referenceable
  and ObjectFactory implementations.
  
  unsynchronized some setters.  These setters are meant to be called by a
  single thread, but even if they are not, synchronization is not necessary.
  
  Revision  Changes    Path
  1.4       +102 -21   
jakarta-commons-sandbox/jdbc2pool/src/java/org/apache/commons/jdbc2pool/adapter/DriverAdapterCPDS.java
  
  Index: DriverAdapterCPDS.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons-sandbox/jdbc2pool/src/java/org/apache/commons/jdbc2pool/adapter/DriverAdapterCPDS.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- DriverAdapterCPDS.java    4 Mar 2002 07:50:15 -0000       1.3
  +++ DriverAdapterCPDS.java    18 Mar 2002 06:33:01 -0000      1.4
  @@ -70,6 +70,7 @@
   import javax.naming.Referenceable;
   import javax.naming.spi.ObjectFactory;
   import javax.naming.Reference;
  +import javax.naming.RefAddr;
   import javax.naming.StringRefAddr;
   import javax.naming.NamingException;
   
  @@ -82,7 +83,7 @@
    * DriverManager implementation
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>John D. McNally</a>
  - * @version $Id: DriverAdapterCPDS.java,v 1.3 2002/03/04 07:50:15 jmcnally Exp $
  + * @version $Id: DriverAdapterCPDS.java,v 1.4 2002/03/18 06:33:01 jmcnally Exp $
    */
   public class DriverAdapterCPDS
       implements ConnectionPoolDataSource, Referenceable, Serializable, 
  @@ -149,6 +150,8 @@
           }
       }
   
  +    // ----------------------------------------------------------------------
  +    // Referenceable implementation 
   
       /**
        * <CODE>Referenceable</CODE> implementation.
  @@ -156,19 +159,37 @@
       public Reference getReference() 
           throws NamingException 
       {
  +        // this class implements its own factory
           String factory = getClass().getName();
           
           Reference ref = new Reference(getClass().getName(), factory, null);
   
           ref.add(new StringRefAddr("description", getDescription()));
  +        ref.add(new StringRefAddr("driver", getDriver()));
  +        ref.add(new StringRefAddr("loginTimeout", 
  +                                  String.valueOf(getLoginTimeout())));
           ref.add(new StringRefAddr("password", getPassword()));
           ref.add(new StringRefAddr("user", getUser()));
           ref.add(new StringRefAddr("url", getUrl()));
   
  +        ref.add(new StringRefAddr("maxActive", 
  +                                  String.valueOf(getMaxActive())));
  +        ref.add(new StringRefAddr("maxIdle", 
  +                                  String.valueOf(getMaxIdle())));
  +        ref.add(new StringRefAddr("timeBetweenEvictionRunsMillis", 
  +            String.valueOf(getTimeBetweenEvictionRunsMillis())));
  +        ref.add(new StringRefAddr("numTestsPerEvictionRun", 
  +            String.valueOf(getNumTestsPerEvictionRun())));
  +        ref.add(new StringRefAddr("minEvictableIdleTimeMillis", 
  +            String.valueOf(getMinEvictableIdleTimeMillis())));
  +
           return ref;
       }
   
   
  +    // ----------------------------------------------------------------------
  +    // ObjectFactory implementation 
  +
       /**
        * implements ObjectFactory to create an instance of this class
        */ 
  @@ -176,21 +197,80 @@
                                       Context context, Hashtable env) 
           throws Exception 
       {
  -        Reference ref = (Reference)refObj;
  -     
  -        if (ref.getClassName().equals(getClass().getName())) 
  -        {   
  -            setDescription((String)ref.get("description").getContent());
  -            setUrl((String)ref.get("url").getContent());
  -            setUser((String)ref.get("user").getContent());
  -            setPassword((String)ref.get("password").getContent());
  -            return this;
  -        }
  -        else 
  -        { 
  -            // We can't create an instance of the reference
  -            return null;
  +        // The spec says to return null if we can't create an instance 
  +        // of the reference
  +        DriverAdapterCPDS cpds = null;
  +        if (refObj instanceof Reference) 
  +        {
  +            Reference ref = (Reference)refObj;
  +            if (ref.getClassName().equals(getClass().getName())) 
  +            {
  +                RefAddr ra = ref.get("description");
  +                if (ra != null && ra.getContent() != null) 
  +                {
  +                    setDescription(ra.getContent().toString());
  +                }
  +
  +                ra = ref.get("driver");
  +                if (ra != null && ra.getContent() != null) 
  +                {
  +                    setDriver(ra.getContent().toString());
  +                }
  +                ra = ref.get("url");
  +                if (ra != null && ra.getContent() != null) 
  +                {
  +                    setUrl(ra.getContent().toString());
  +                }
  +                ra = ref.get("user");
  +                if (ra != null && ra.getContent() != null) 
  +                {
  +                    setUser(ra.getContent().toString());
  +                }
  +                ra = ref.get("password");
  +                if (ra != null && ra.getContent() != null) 
  +                {
  +                    setPassword(ra.getContent().toString());
  +                }
  +
  +                ra = ref.get("maxActive");
  +                if (ra != null && ra.getContent() != null) 
  +                {
  +                    setMaxActive(
  +                        Integer.parseInt(ra.getContent().toString()));
  +                }
  +
  +                ra = ref.get("maxIdle");
  +                if (ra != null && ra.getContent() != null) 
  +                {
  +                    setMaxIdle(
  +                        Integer.parseInt(ra.getContent().toString()));
  +                }
  +
  +                ra = ref.get("timeBetweenEvictionRunsMillis");
  +                if (ra != null && ra.getContent() != null) 
  +                {
  +                    setTimeBetweenEvictionRunsMillis(
  +                        Integer.parseInt(ra.getContent().toString()));
  +                }
  +
  +                ra = ref.get("numTestsPerEvictionRun");
  +                if (ra != null && ra.getContent() != null) 
  +                {
  +                    setNumTestsPerEvictionRun(
  +                        Integer.parseInt(ra.getContent().toString()));
  +                }
  +
  +                ra = ref.get("minEvictableIdleTimeMillis");
  +                if (ra != null && ra.getContent() != null) 
  +                {
  +                    setMinEvictableIdleTimeMillis(
  +                        Integer.parseInt(ra.getContent().toString()));
  +                }
  +
  +                cpds = this;
  +            }
           }
  +            return cpds;
       }
   
       /**
  @@ -206,6 +286,7 @@
           }
       }
   
  +    // ----------------------------------------------------------------------
       // Properties
       
       /**
  @@ -392,7 +473,7 @@
        *
        * *see #setTimeBetweenEvictionRunsMillis
        */
  -    public synchronized long getTimeBetweenEvictionRunsMillis() {
  +    public int getTimeBetweenEvictionRunsMillis() {
           return _timeBetweenEvictionRunsMillis;
       }
   
  @@ -404,8 +485,8 @@
        *
        * *see #getTimeBetweenEvictionRunsMillis
        */
  -    public synchronized void 
  -        setTimeBetweenEvictionRunsMillis(long timeBetweenEvictionRunsMillis) {
  +    public void 
  +        setTimeBetweenEvictionRunsMillis(int timeBetweenEvictionRunsMillis) {
           assertInitializationAllowed();
               _timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis;
       }
  @@ -445,7 +526,7 @@
        * *see #setMinEvictableIdleTimeMillis
        * *see #setTimeBetweenEvictionRunsMillis
        */
  -    public synchronized int getMinEvictableIdleTimeMillis() {
  +    public int getMinEvictableIdleTimeMillis() {
           return _minEvictableIdleTimeMillis;
       }
   
  @@ -459,7 +540,7 @@
        * *see #getMinEvictableIdleTimeMillis
        * *see #setTimeBetweenEvictionRunsMillis
        */
  -    public synchronized void 
  +    public void 
           setMinEvictableIdleTimeMillis(int minEvictableIdleTimeMillis) {
           assertInitializationAllowed();
           _minEvictableIdleTimeMillis = minEvictableIdleTimeMillis;
  @@ -484,7 +565,7 @@
       // PreparedStatement pool properties
       private int maxActive = 10;
       private int maxIdle = 10;
  -    private long _timeBetweenEvictionRunsMillis = -1L;
  +    private int _timeBetweenEvictionRunsMillis = -1;
       private int _numTestsPerEvictionRun = -1;
       private int _minEvictableIdleTimeMillis = -1;
   
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to