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 km...@apache.org on 2010/06/09 18:00:57 UTC

svn commit: r953058 - in /db/derby/code/trunk/java/drda/org/apache/derby/impl/drda: DRDAConnThread.java Database.java Session.java XADatabase.java

Author: kmarsden
Date: Wed Jun  9 16:00:57 2010
New Revision: 953058

URL: http://svn.apache.org/viewvc?rev=953058&view=rev
Log:
DERBY-728 Unable to create databases whose name containg Chinese characters through the client driver

Small cleanup patch to add getters for short and regular datbase name.


Modified:
    db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/DRDAConnThread.java
    db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/Database.java
    db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/Session.java
    db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/XADatabase.java

Modified: db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/DRDAConnThread.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/DRDAConnThread.java?rev=953058&r1=953057&r2=953058&view=diff
==============================================================================
--- db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/DRDAConnThread.java (original)
+++ db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/DRDAConnThread.java Wed Jun  9 16:00:57 2010
@@ -421,7 +421,7 @@ class DRDAConnThread extends Thread {
 	protected String getDbName()
 	{
 		if (database != null)
-			return database.dbName;
+			return database.getDatabaseName();
 		return null;
 	}
 	/**
@@ -493,7 +493,7 @@ class DRDAConnThread extends Thread {
    
             if (database != null)
             {
-                dbname = database.dbName;
+                dbname = database.getDatabaseName();
             }
             if (e != null) {
                 println2Log(dbname,session.drdaID, e.getMessage());
@@ -533,7 +533,7 @@ class DRDAConnThread extends Thread {
 
 		String dbname = null;
 		if (database != null)
-			dbname = database.dbName;
+			dbname = database.getDatabaseName();
 		throw DRDAProtocolException.newAgentError(this, CodePoint.SVRCOD_PRMDMG, 
 			dbname, msg);
 	}
@@ -1214,7 +1214,7 @@ class DRDAConnThread extends Thread {
 		writer.createDssReply();
 		writer.startDdm(codePoint);
 		writer.writeScalar2Bytes(CodePoint.SVRCOD, CodePoint.SVRCOD_ERROR);
-		writeRDBNAM(database.dbName);
+		writeRDBNAM(database.getDatabaseName());
     	writer.endDdmAndDss();
     	
     	switch(codePoint){
@@ -1345,7 +1345,7 @@ class DRDAConnThread extends Thread {
 		databaseAccessException = null;
 		int retSecChkCode = 0;
 
-		String realName = database.dbName; //first strip off properties
+		String realName = database.getDatabaseName(); //first strip off properties
 		int endOfName = realName.indexOf(';');
 		if (endOfName != -1)
 			realName = realName.substring(0, endOfName);
@@ -1386,7 +1386,7 @@ class DRDAConnThread extends Thread {
         // a password defined as part of the connection URL attributes cannot
         // be substituted (single-hashed) as it is not recoverable.
         if ((database.securityMechanism == CodePoint.SECMEC_USRSSBPWD) &&
-            (database.dbName.indexOf(Attribute.PASSWORD_ATTR) == -1))
+            (database.getDatabaseName().indexOf(Attribute.PASSWORD_ATTR) == -1))
         {
             p.put(Attribute.DRDA_SECMEC,
                   String.valueOf(database.securityMechanism));
@@ -1408,7 +1408,7 @@ class DRDAConnThread extends Thread {
 			{
 				if (SanityManager.DEBUG)
 					trace(se.getMessage());
-	 			println2Log(database.dbName, session.drdaID, se.getMessage());
+	 			println2Log(database.getDatabaseName(), session.drdaID, se.getMessage());
 			}
 
 			if (isAuthenticationException(databaseAccessException)) {
@@ -1428,7 +1428,7 @@ class DRDAConnThread extends Thread {
 			// get the driver loaded again.  We have to get
 			// rid of the client first in case they are holding
 			// the DriverManager lock.
-			println2Log(database.dbName, session.drdaID, 
+			println2Log(database.getDatabaseName(), session.drdaID, 
 						"Driver not loaded"
 						+ e.getMessage());
 				try {
@@ -1442,7 +1442,7 @@ class DRDAConnThread extends Thread {
 					try {
 						server.startNetworkServer();
 					} catch (Exception re) {
-						println2Log(database.dbName, session.drdaID, "Failed attempt to reload driver " +re.getMessage()  );
+						println2Log(database.getDatabaseName(), session.drdaID, "Failed attempt to reload driver " +re.getMessage()  );
 					}
 					throw dpe;
 				}
@@ -1451,9 +1451,9 @@ class DRDAConnThread extends Thread {
 	
 		// Everything worked so log connection to the database.
 		if (getLogConnections())
-	 		println2Log(database.dbName, session.drdaID,
+	 		println2Log(database.getDatabaseName(), session.drdaID,
 				"Apache Derby Network Server connected to database " +
-						database.dbName);
+						database.getDatabaseName());
 		return 0;
 	}
 
@@ -2262,7 +2262,7 @@ class DRDAConnThread extends Thread {
 		writer.createDssReply();
 		writer.startDdm(CodePoint.QRYPOPRM);
 		writer.writeScalar2Bytes(CodePoint.SVRCOD, CodePoint.SVRCOD_ERROR);
-		writeRDBNAM(database.dbName);
+		writeRDBNAM(database.getDatabaseName());
 		writePKGNAMCSN();
 		writer.endDdmAndDss();
 	}
@@ -2281,7 +2281,7 @@ class DRDAConnThread extends Thread {
 		writer.createDssReply();
 		writer.startDdm(CodePoint.QRYNOPRM);
 		writer.writeScalar2Bytes(CodePoint.SVRCOD, svrCod);
-		writeRDBNAM(database.dbName);
+		writeRDBNAM(database.getDatabaseName());
 		writePKGNAMCSN();
 		writer.endDdmAndDss();
 	}
@@ -2300,7 +2300,7 @@ class DRDAConnThread extends Thread {
 		writer.createDssReply();
 		writer.startDdm(CodePoint.OPNQFLRM);
 		writer.writeScalar2Bytes(CodePoint.SVRCOD, CodePoint.SVRCOD_ERROR);
-		writeRDBNAM(database.dbName);
+		writeRDBNAM(database.getDatabaseName());
 		writer.endDdm();
 		writer.startDdm(CodePoint.SQLCARD);
 		writeSQLCAGRP(e, getSqlCode(getExceptionSeverity(e)), 0, 0);
@@ -2849,7 +2849,7 @@ class DRDAConnThread extends Thread {
 		writer.createDssReply();
 		writer.startDdm(CodePoint.ABNUOWRM);
 		writer.writeScalar2Bytes(CodePoint.SVRCOD,CodePoint.SVRCOD_ERROR);
-		writeRDBNAM(database.dbName);
+		writeRDBNAM(database.getDatabaseName());
 		writer.endDdmAndDss();
 	}
 	/**
@@ -3039,7 +3039,7 @@ class DRDAConnThread extends Thread {
                                                 myPublicKey,
                                                 database.secTokenIn);
 						    } catch (SQLException se) {
-							    println2Log(database.dbName, session.drdaID,
+							    println2Log(database.getDatabaseName(), session.drdaID,
                                             se.getMessage());
 							    if (securityCheckCode == 0)
                                     //userid invalid
@@ -3059,7 +3059,7 @@ class DRDAConnThread extends Thread {
                                             myPublicKey,
                                             database.secTokenIn);
 						    } catch (SQLException se) {	
-                                println2Log(database.dbName, session.drdaID,
+                                println2Log(database.getDatabaseName(), session.drdaID,
                                             se.getMessage());
                                 if (securityCheckCode == 0)
                                     //password invalid
@@ -3113,13 +3113,13 @@ class DRDAConnThread extends Thread {
 					String dbname = parseRDBNAM();
 					if (database != null) 
 					{
-						if (database.dbName == null) {
+						if (database.getDatabaseName() == null) {
 							// we didn't get the RDBNAM on ACCSEC. Set it here
 							database.setDatabaseName(dbname);
 							session.addDatabase(database);
 							session.database = database;
 						}
-						else if (!database.dbName.equals(dbname))
+						else if (!database.getDatabaseName().equals(dbname))
 							rdbnamMismatch(CodePoint.SECCHK);
 					}
 					else
@@ -3141,7 +3141,7 @@ class DRDAConnThread extends Thread {
 			missingCodePoint(CodePoint.SECMEC);
 
 		// Check that we have a database name.
-		if (database == null  || database.dbName == null)
+		if (database == null  || database.getDatabaseName() == null)
 			missingCodePoint(CodePoint.RDBNAM);
 
 		//check if we have a userid and password when we need it
@@ -3329,7 +3329,7 @@ class DRDAConnThread extends Thread {
 					String dbname = parseRDBNAM();
 					if (database != null)
 					{ 
-						if (!database.dbName.equals(dbname))
+						if (!database.getDatabaseName().equals(dbname))
 							rdbnamMismatch(CodePoint.ACCRDB);
 					}
 					else
@@ -5389,7 +5389,7 @@ class DRDAConnThread extends Thread {
 		writer.createDssReply();
 		writer.startDdm(CodePoint.RDBUPDRM);
 		writer.writeScalar2Bytes(CodePoint.SVRCOD, CodePoint.SVRCOD_INFO);
-		writeRDBNAM(database.dbName);
+		writeRDBNAM(database.getDatabaseName());
 		writer.endDdmAndDss();
 	}
 
@@ -5435,7 +5435,7 @@ class DRDAConnThread extends Thread {
             if ( appRequester.getClientType() != AppRequester.DNC_CLIENT
                  || appRequester.greaterThanOrEqualTo(10,3,0) ) {
                 // check the database name
-                if (!rdbnam.toString().equals(database.dbName))
+                if (!rdbnam.toString().equals(database.getDatabaseName()))
                     rdbnamMismatch(CodePoint.PKGNAMCSN);
             }
 
@@ -5480,7 +5480,7 @@ class DRDAConnThread extends Thread {
             if ( appRequester.getClientType() != AppRequester.DNC_CLIENT
                  || appRequester.greaterThanOrEqualTo(10,3,0) ) {
                 // check the database name
-                if (!rdbnam.toString().equals(database.dbName))
+                if (!rdbnam.toString().equals(database.getDatabaseName()))
                     rdbnamMismatch(CodePoint.PKGNAMCSN);
             }
 
@@ -6266,7 +6266,7 @@ class DRDAConnThread extends Thread {
 		writer.writeByte(0);		// SQLCAXGRP INDICATOR
 		if (sqlamLevel < 7)
 		{
-			writeRDBNAM(database.dbName);
+			writeRDBNAM(database.getDatabaseName());
 			writeSQLCAERRWARN(updateCount, rowCount);
 		}
 		else
@@ -6388,7 +6388,7 @@ class DRDAConnThread extends Thread {
 
 			String dbname = null;
 			if (database != null)
-				dbname = database.dbName;
+				dbname = database.getDatabaseName();
 
 			writeSQLDCROW(rowNum++, sqlCode, sqlState, dbname, sqlerrmc);
 
@@ -8302,7 +8302,7 @@ class DRDAConnThread extends Thread {
 	private void sendProtocolException(DRDAProtocolException de) {
 		String dbname = null;
 		if (database != null) {
-			dbname = database.dbName;
+			dbname = database.getDatabaseName();
 		}
 
 		try {
@@ -8329,7 +8329,7 @@ class DRDAConnThread extends Thread {
 		String dbname = null;
 		try {
 			if (database != null)
-				dbname = database.dbName;
+				dbname = database.getDatabaseName();
 			println2Log(dbname,session.drdaID, e.getMessage());
 			server.consoleExceptionPrintTrace(e);
 			unExpDe = DRDAProtocolException.newAgentError(this,
@@ -8563,7 +8563,7 @@ class DRDAConnThread extends Thread {
 	{
 		String rdbnam = parseRDBNAM();
 		// using same database so we are done
-		if (database != null && database.dbName.equals(rdbnam))
+		if (database != null && database.getDatabaseName().equals(rdbnam))
 			return;
 		Database d = session.getDatabase(rdbnam);
 		if (d == null)
@@ -8803,7 +8803,7 @@ class DRDAConnThread extends Thread {
         if (appRequester.supportsSecMecUSRSSBPWD() == false)
             return CodePoint.SECCHKCD_NOTSUPPORTED; // Not Supported
 
-        dbName = database.shortDbName;
+        dbName = database.getShortDbName();
         // Check if the database is available (booted)
         // 
         // First we need to have the database name available and it should

Modified: db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/Database.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/Database.java?rev=953058&r1=953057&r2=953058&view=diff
==============================================================================
--- db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/Database.java (original)
+++ db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/Database.java Wed Jun  9 16:00:57 2010
@@ -42,9 +42,13 @@ import org.apache.derby.iapi.services.sa
 */
 class Database
 {
-
-	protected String dbName;			// database name 
-	protected String shortDbName;       // database name without attributes
+    /*
+     * Considering that we are now doing some fiddling with the db name
+     * it is probably wise to keep dbName and shortDbName private and have 
+     * accessors for them.
+     */
+	private String dbName;			// database name 
+	private String shortDbName;       // database name without attributes
 	String attrString="";               // attribute string
 	protected int securityMechanism;	// Security mechanism
 	protected String userId;			// User Id
@@ -115,6 +119,14 @@ class Database
 
 	}
 	
+	public String getDatabaseName() {
+	    return this.dbName;
+	}
+	
+	public String getShortDbName() {
+	    return this.shortDbName;
+	}
+	
 	private void initializeDefaultStatement()
 	{
 		this.defaultStatement = new DRDAStatement(this);

Modified: db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/Session.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/Session.java?rev=953058&r1=953057&r2=953058&view=diff
==============================================================================
--- db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/Session.java (original)
+++ db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/Session.java Wed Jun  9 16:00:57 2010
@@ -209,7 +209,7 @@ class Session
 	 */
 	protected void addDatabase(Database d)
 	{
-		dbtable.put(d.dbName, d);
+		dbtable.put(d.getDatabaseName(), d);
 	}
 
 	/**

Modified: db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/XADatabase.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/XADatabase.java?rev=953058&r1=953057&r2=953058&view=diff
==============================================================================
--- db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/XADatabase.java (original)
+++ db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/XADatabase.java Wed Jun  9 16:00:57 2010
@@ -71,7 +71,7 @@ class XADatabase extends Database {
 			xaDataSource = new EmbeddedXADataSource();
 		}
 
-		xaDataSource.setDatabaseName(shortDbName);
+		xaDataSource.setDatabaseName(getShortDbName());
 		appendAttrString(p);
 		if (attrString != null)
 			xaDataSource.setConnectionAttributes(attrString);