You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by dj...@apache.org on 2006/04/10 19:57:37 UTC

svn commit: r393003 - in /db/derby/code/trunk/java: client/org/apache/derby/client/am/LogWriter.java client/org/apache/derby/jdbc/ClientBaseDataSource.java shared/org/apache/derby/shared/common/reference/Attribute.java

Author: djd
Date: Mon Apr 10 10:57:35 2006
New Revision: 393003

URL: http://svn.apache.org/viewcvs?rev=393003&view=rev
Log:
DERBY-446 Remove propertyKey_ constants from ClientbaseDataSOurce that were in place for
the old scheme to get the list of attributes.

Modified:
    db/derby/code/trunk/java/client/org/apache/derby/client/am/LogWriter.java
    db/derby/code/trunk/java/client/org/apache/derby/jdbc/ClientBaseDataSource.java
    db/derby/code/trunk/java/shared/org/apache/derby/shared/common/reference/Attribute.java

Modified: db/derby/code/trunk/java/client/org/apache/derby/client/am/LogWriter.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/client/org/apache/derby/client/am/LogWriter.java?rev=393003&r1=393002&r2=393003&view=diff
==============================================================================
--- db/derby/code/trunk/java/client/org/apache/derby/client/am/LogWriter.java (original)
+++ db/derby/code/trunk/java/client/org/apache/derby/client/am/LogWriter.java Mon Apr 10 10:57:35 2006
@@ -21,8 +21,15 @@
 package org.apache.derby.client.am;
 
 import java.sql.SQLException;
+import java.util.Enumeration;
+import java.util.Properties;
+
+import javax.naming.NamingException;
+import javax.naming.RefAddr;
+import javax.naming.Reference;
 
 import org.apache.derby.jdbc.ClientDataSource;
+import org.apache.derby.shared.common.reference.Attribute;
 import org.apache.derby.shared.common.reference.SQLState;
 
 public class LogWriter {
@@ -1046,7 +1053,7 @@
             traceConnectsResetEntry(dataSource.getServerName(),
                     dataSource.getPortNumber(),
                     dataSource.getDatabaseName(),
-                    dataSource.getProperties());
+                    getProperties(dataSource));
         } catch ( SqlException se ) {
             dncprintln("Encountered an SQL exception while trying to trace connection reset entry");
         }
@@ -1060,7 +1067,7 @@
             traceConnectsEntry(dataSource.getServerName(),
                     dataSource.getPortNumber(),
                     dataSource.getDatabaseName(),
-                    dataSource.getProperties());
+                    getProperties(dataSource));
         } catch ( SqlException se ) {
             dncprintln("Encountered an SQL exception while trying to trace connection entry");
         }
@@ -1213,6 +1220,38 @@
                 new Object[] { fileName, e.getMessage() },
                 e);
         }
+    }
+    
+    /**
+     * Obtain a set of Properties for the ClientDataSource
+     */
+    private Properties getProperties(ClientDataSource cds)
+    throws SqlException {
+        
+        Properties properties = new Properties();
+        
+        try {
+            Reference ref = cds.getReference();
+            
+            for (Enumeration e = ref.getAll(); e.hasMoreElements();) {
+
+                RefAddr attribute = (RefAddr) e.nextElement();
+
+                String propertyKey = attribute.getType();
+                String value = (String) attribute.getContent();
+                
+                // Don't display the password or even its length
+                if (Attribute.PASSWORD_ATTR.equals(propertyKey)) {
+                    value = "********";
+                }
+                
+                properties.setProperty(propertyKey, value);
+            }
+        } catch (NamingException e) {
+            throw new SqlException(this, e.toString());
+        }
+        
+        return properties;
     }
 
 }

Modified: db/derby/code/trunk/java/client/org/apache/derby/jdbc/ClientBaseDataSource.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/client/org/apache/derby/jdbc/ClientBaseDataSource.java?rev=393003&r1=393002&r2=393003&view=diff
==============================================================================
--- db/derby/code/trunk/java/client/org/apache/derby/jdbc/ClientBaseDataSource.java (original)
+++ db/derby/code/trunk/java/client/org/apache/derby/jdbc/ClientBaseDataSource.java Mon Apr 10 10:57:35 2006
@@ -22,6 +22,7 @@
 
 import java.io.Serializable;
 import java.io.PrintWriter;
+import java.util.Enumeration;
 import java.util.Properties;
 import java.util.StringTokenizer;
 import java.util.NoSuchElementException;
@@ -29,6 +30,8 @@
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
+
+import javax.naming.RefAddr;
 import javax.naming.Referenceable;
 import javax.naming.Reference;
 import javax.naming.NamingException;
@@ -101,9 +104,7 @@
      *
      * @serial
      */
-    private int loginTimeout = propertyDefault_loginTimeout;
-    public final static String propertyKey_loginTimeout = "loginTimeout";
-    public static final int propertyDefault_loginTimeout = 0;
+    private int loginTimeout;
 
     public synchronized void setLoginTimeout(int seconds) {
         this.loginTimeout = seconds;
@@ -138,16 +139,14 @@
     //
     //
     private String databaseName;
-    public final static String propertyKey_databaseName = "databaseName";
-
+    
     // databaseName is not permitted in a properties object
 
 
     // ---------------------------- description ------------------------------
     // A description of this data source.
     private String description;
-    public final static String propertyKey_description = "description";
-
+    
     // ---------------------------- dataSourceName -----------------------------------
     //
     // A data source name;
@@ -155,21 +154,18 @@
     // or ConnectionPoolDataSource when pooling of connections is done.
     //
     private String dataSourceName;
-    public final static String propertyKey_dataSourceName = "dataSourceName";
-
+    
     // ---------------------------- portNumber -----------------------------------
     //
     private int portNumber = propertyDefault_portNumber;
     public final static int propertyDefault_portNumber = 1527;
-    public final static String propertyKey_portNumber = "portNumber";
-
+    
     // ---------------------------- serverName -----------------------------------
     //
     // Derby-410 fix.
     private String serverName = propertyDefault_serverName;
     public final static String propertyDefault_serverName = "localhost";
-    public final static String propertyKey_serverName = "serverName";
-
+   
     // serverName is not permitted in a properties object
 
     // ---------------------------- user -----------------------------------
@@ -185,7 +181,6 @@
     // to a file in clear-text, care must taken by the user to prevent security breaches.
     // Derby-406 fix
     private String user = propertyDefault_user;
-    public final static String propertyKey_user = "user";
     public final static String propertyDefault_user = "APP";
 
     public static String getUser(Properties properties) {
@@ -238,8 +233,6 @@
     //  public final static short propertyDefault_securityMechanism = (short)
     //  org.apache.derby.client.net.NetConfiguration.SECMEC_USRIDONL;
     public final static short propertyDefault_securityMechanism = (short) NetConfiguration.SECMEC_USRIDONL;
-    public final static String propertyKey_securityMechanism = "securityMechanism";
-
 
     
     // We use the NET layer constants to avoid a mapping for the NET driver.
@@ -310,8 +303,6 @@
     //
     private boolean retrieveMessageText = propertyDefault_retrieveMessageText;
     public final static boolean propertyDefault_retrieveMessageText = true;
-    public final static String propertyKey_retrieveMessageText = "retrieveMessageText";
-
 
     public static boolean getRetrieveMessageText(Properties properties) {
         String retrieveMessageTextString = properties.getProperty(Attribute.CLIENT_RETIEVE_MESSAGE_TEXT);
@@ -321,8 +312,7 @@
     // ---------------------------- traceFile -----------------------------------
     //
     private String traceFile;
-    public final static String propertyKey_traceFile = "traceFile";
-
+    
     public static String getTraceFile(Properties properties) {
         return properties.getProperty(Attribute.CLIENT_TRACE_FILE);
     }
@@ -332,8 +322,7 @@
     private transient int traceFileSuffixIndex_ = 0;
     //
     private String traceDirectory;
-    public final static String propertyKey_traceDirectory = "traceDirectory";
-
+    
     public static String getTraceDirectory(Properties properties) {
         return properties.getProperty(Attribute.CLIENT_TRACE_DIRECTORY);
     }
@@ -342,8 +331,7 @@
     //
     private boolean traceFileAppend = propertyDefault_traceFileAppend;
     public final static boolean propertyDefault_traceFileAppend = false;
-    public final static String propertyKey_traceFileAppend = "traceFileAppend";
-
+    
     public static boolean getTraceFileAppend(Properties properties) {
         String traceFileAppendString = properties.getProperty(Attribute.CLIENT_TRACE_APPEND);
         return parseBoolean(traceFileAppendString, propertyDefault_traceFileAppend);
@@ -354,7 +342,6 @@
     // The password property is defined in subclasses, but the method
     // getPassword (java.util.Properties properties) is in this class to eliminate
     // dependencies on j2ee for connections that go thru the driver manager.
-    public final static String propertyKey_password = "password";
 
     public static String getPassword(Properties properties) {
         return properties.getProperty("password");
@@ -456,63 +443,7 @@
     }
 
     // ----------------------supplemental methods---------------------------------
-    /**
-     * Not an external.  Do not document in pubs. Returns all non-transient properties of a ClientBaseDataSource.
-     */
-    public Properties getProperties() throws SqlException {
-        Properties properties = new Properties();
-
-        Class clz = getClass();
-        Field[] fields = clz.getFields();
-        for (int i = 0; i < fields.length; i++) {
-            String name = fields[i].getName();
-            if (name.startsWith("propertyKey_")) {
-                if (Modifier.isTransient(fields[i].getModifiers())) {
-                    continue; // if it is transient, then skip this propertyKey.
-                }
-                try {
-                    String propertyKey = fields[i].get(this).toString();
-                    // search for property field.
-                    Field propertyField;
-                    clz = getClass(); // start from current class.
-                    while (true) {
-                        try {
-                            propertyField = clz.getDeclaredField(name.substring(12));
-                            break; // found the property field, so break the while loop.
-                        } catch (NoSuchFieldException nsfe) {
-                            // property field is not found at current level of class, so continue to super class.
-                            clz = clz.getSuperclass();
-                            if (clz == Object.class) {
-                                throw new SqlException(new LogWriter(logWriter, traceLevel), "bug check: corresponding property field does not exist");
-                            }
-                            continue;
-                        }
-                    }
-
-                    if (!Modifier.isTransient(propertyField.getModifiers())) {
-                        // if the property is not transient:
-                        // get the property.
-                        propertyField.setAccessible(true);
-                        Object propertyObj = propertyField.get(this);
-                        String property = String.valueOf(propertyObj); // don't use toString becuase it may be null.
-                        if ("password".equals(propertyKey)) {
-                            StringBuffer sb = new StringBuffer(property);
-                            for (int j = 0; j < property.length(); j++) {
-                                sb.setCharAt(j, '*');
-                            }
-                            property = sb.toString();
-                        }
-                        // add into prperties.
-                        properties.setProperty(propertyKey, property);
-                    }
-                } catch (IllegalAccessException e) {
-                    throw new SqlException(new LogWriter(this.logWriter, this.traceLevel), "bug check: property cannot be accessed");
-                }
-            }
-        }
 
-        return properties;
-    }
 
     //---------------------- helper methods --------------------------------------
 
@@ -835,7 +766,6 @@
     }
 
     protected String connectionAttributes = null;
-    public final static String propertyKey_connectionAttributes = "connectionAttributes";
 
     /**
      * Set this property to pass in more Derby specific connection URL attributes.
@@ -879,12 +809,11 @@
     public final static int TRACE_ALL = 0xFFFFFFFF;
 
     public final static int propertyDefault_traceLevel = TRACE_ALL;
-    public final static String propertyKey_traceLevel = "traceLevel";
-
+    
     protected int traceLevel = propertyDefault_traceLevel;
 
     public static int getTraceLevel(Properties properties) {
-        String traceLevelString = properties.getProperty(propertyKey_traceLevel);
+        String traceLevelString = properties.getProperty(Attribute.CLIENT_TRACE_LEVEL);
         return parseInt(traceLevelString, propertyDefault_traceLevel);
     }
 

Modified: db/derby/code/trunk/java/shared/org/apache/derby/shared/common/reference/Attribute.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/shared/org/apache/derby/shared/common/reference/Attribute.java?rev=393003&r1=393002&r2=393003&view=diff
==============================================================================
--- db/derby/code/trunk/java/shared/org/apache/derby/shared/common/reference/Attribute.java (original)
+++ db/derby/code/trunk/java/shared/org/apache/derby/shared/common/reference/Attribute.java Mon Apr 10 10:57:35 2006
@@ -201,6 +201,12 @@
     String CLIENT_TRACE_APPEND = "traceFileAppend";
     
     /**
+     * traceLevel.
+     * Client driver attribute.
+     */
+    String CLIENT_TRACE_LEVEL = "traceLevel";
+    
+    /**
      * retrieveMessageText.
      * Client driver attribute.
      */