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 da...@apache.org on 2008/09/30 00:43:56 UTC

svn commit: r700295 - in /db/derby/code/trunk/java: testing/org/apache/derbyTesting/functionTests/harness/ testing/org/apache/derbyTesting/functionTests/master/ testing/org/apache/derbyTesting/functionTests/master/DerbyNet/ testing/org/apache/derbyTest...

Author: dag
Date: Mon Sep 29 15:43:55 2008
New Revision: 700295

URL: http://svn.apache.org/viewvc?rev=700295&view=rev
Log:
DERBY-3877 SQL roles: build support for dblook

Patch derby-3877-2, which adds basic support for roles in dblook (but
see DERBY-3884), adds test cases, and also enables the old test
harness to shutdown the server using credentials when required due to
authentication being enabled (needed by modified test for dblook).


Added:
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dblook_test_net_derby.properties   (with props)
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dblook_test_net_territory_derby.properties   (with props)
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_test_derby.properties   (with props)
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_test_territory_derby.properties   (with props)
    db/derby/code/trunk/java/tools/org/apache/derby/impl/tools/dblook/DB_Roles.java   (with props)
Modified:
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/NetServer.java
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunTest.java
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/dblook_test_net.out
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/dblook_test_net_territory.out
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/dblook_test_net.out
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/dblook_test_net_territory.out
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/dblook_test.out
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/dblook_test_territory.out
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dblook_test_net_app.properties
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dblook_test_net_territory_app.properties
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_makeDB.sql
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_test.java
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_test_app.properties
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_test_territory_app.properties
    db/derby/code/trunk/java/tools/org/apache/derby/impl/tools/dblook/DB_GrantRevoke.java
    db/derby/code/trunk/java/tools/org/apache/derby/loc/toolsmessages.properties
    db/derby/code/trunk/java/tools/org/apache/derby/tools/dblook.java

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/NetServer.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/NetServer.java?rev=700295&r1=700294&r2=700295&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/NetServer.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/NetServer.java Mon Sep 29 15:43:55 2008
@@ -43,6 +43,7 @@
     String javaCmd;
     String jvmflags;
     String framework;
+	String appsRequiredPassword;
     static String hostName;
     
     Object[] frameworkInfo;
@@ -89,6 +90,7 @@
 	     null});                                        //shutdown2
 
 	url = "jdbc:derby://" + hostName + ":1527/";  
+
 	m.put("DerbyNetClient", new Object[]
 	    {url,                 //prefix
 	     "",                                            // suffix
@@ -120,8 +122,9 @@
 	     null});
     }
 
-    public NetServer(File homeDir, String jvmName, String clPath, String 
-   	     javaCmd, String jvmflags, String framework, boolean startServer)
+    public NetServer(File homeDir, String jvmName, String clPath,
+					 String javaCmd, String jvmflags, String framework,
+					 boolean startServer, String appsRequiredPassword)
 	throws Exception
     {
 	this.homeDir = homeDir;
@@ -130,6 +133,10 @@
         this.javaCmd = javaCmd;
         this.jvmflags = jvmflags;
 	this.framework = framework;
+
+	    // if authentication is required to shutdown server we need password
+	    // for user APP (the dbo).
+    	this.appsRequiredPassword = appsRequiredPassword;
 	frameworkInfo =  (Object[]) m.get(framework);
 	
 	this.port = Integer.parseInt((String) frameworkInfo[PORT_POS]);
@@ -285,7 +292,18 @@
 	String[] stopcmd1 = (String[]) frameworkInfo[STOP_CMD1_POS];
 		if (stopcmd1 == null)
 		    return;
-		
+
+		if (appsRequiredPassword != null) {
+			String[] modifiedStopCmd = new String[stopcmd1.length + 4];
+			System.arraycopy(stopcmd1, 0, modifiedStopCmd, 0, stopcmd1.length);
+			modifiedStopCmd[stopcmd1.length]     = "-user";
+			modifiedStopCmd[stopcmd1.length + 1] = "app";
+			modifiedStopCmd[stopcmd1.length + 2] = "-password";
+			modifiedStopCmd[stopcmd1.length + 3] = appsRequiredPassword;
+			stopcmd1 = modifiedStopCmd;
+		}
+
+
 		for (int i = 0; i < stopcmd1.length; i++)
 		    connV.addElement(stopcmd1[i]);
 		
@@ -301,6 +319,7 @@
 		{
 		    stopV.addElement((String)jvmCmd.elementAt(i));
 		}
+
 		Process prconn = Runtime.getRuntime().exec(connCmd);
 		// Give the server sixty seconds to shutdown.
 		TimedProcess tp = new TimedProcess(prconn);

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunTest.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunTest.java?rev=700295&r1=700294&r2=700295&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunTest.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunTest.java Mon Sep 29 15:43:55 2008
@@ -271,7 +271,9 @@
 
         // Check for properties files, including derby.properties
         // and if needed, build the -p string to pass to the test
-        String propString = createPropString();
+        AppsRequiredPassword creds = new AppsRequiredPassword();
+        String propString = createPropString(creds);
+
         if ( (isSuiteRun == false) && (useprocess) )
         {
             SysInfoLog sysLog = new SysInfoLog();
@@ -314,11 +316,13 @@
                 }
 
                 ns = new NetServer(baseDir, jvmnetjvm, classpathServer, null,
-                                     spacedJvmFlags,framework, startServer);
+                                   spacedJvmFlags,framework, startServer,
+                                   creds.password);
             }
             else
                 ns = new NetServer(baseDir, jvmName, classpathServer, 
-                                     javaCmd, spacedJvmFlags,framework, startServer);
+                                   javaCmd, spacedJvmFlags,framework,
+                                   startServer, creds.password);
 
             //  With useprocess=true, we have a new dir for each test, and all files for
             // the test, including a clean database, go in that directory. So, network server
@@ -1297,7 +1301,7 @@
 		return jvhs;
     }
 
-    private static String createPropString()
+    private static String createPropString(AppsRequiredPassword creds)
         throws ClassNotFoundException, FileNotFoundException, IOException
     {
         // Check for existence of app properties and/or derby.properties files
@@ -1428,6 +1432,20 @@
             bos = new BufferedOutputStream(new FileOutputStream(clPropFile));
             clp.store(bos, "Derby Properties");
         	bos.close();
+
+            String auth = clp.getProperty(
+                "derby.connection.requireAuthentication");
+
+            if (auth != null && auth.equals("true")) {
+                // Look for password for user APP is supplied; useful for
+                // shutting down server in network mode. We only look for APP,
+                // since this will be the database owner.
+                String appPw = clp.getProperty("derby.user.app");
+
+                if (appPw != null) {
+                    creds.password = appPw;
+                }
+            }
         }
 
 		// --------------------------------- 
@@ -2987,6 +3005,9 @@
         }
     }
 
+    static private class AppsRequiredPassword {
+        public String password;
+    }
 }
 
 

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/dblook_test_net.out
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/dblook_test_net.out?rev=700295&r1=700294&r2=700295&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/dblook_test_net.out (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/dblook_test_net.out Mon Sep 29 15:43:55 2008
@@ -1950,5 +1950,42 @@
 N
 APP
 -----
+========== SYSROLES ==========
+"eve"
+APP
+_SYSTEM
+Y
+Y
+-----
+"eve"
+B
+APP
+N
+N
+-----
+A
+APP
+_SYSTEM
+Y
+Y
+-----
+A
+B
+APP
+N
+N
+-----
+B
+APP
+_SYSTEM
+Y
+Y
+-----
+B
+WHOMEVER
+APP
+N
+N
+-----
 Database 'wombat_new' deleted.
 [ Done. ]

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/dblook_test_net_territory.out
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/dblook_test_net_territory.out?rev=700295&r1=700294&r2=700295&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/dblook_test_net_territory.out (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/dblook_test_net_territory.out Mon Sep 29 15:43:55 2008
@@ -1950,5 +1950,42 @@
 N
 APP
 -----
+========== SYSROLES ==========
+"eve"
+APP
+_SYSTEM
+Y
+Y
+-----
+"eve"
+B
+APP
+N
+N
+-----
+A
+APP
+_SYSTEM
+Y
+Y
+-----
+A
+B
+APP
+N
+N
+-----
+B
+APP
+_SYSTEM
+Y
+Y
+-----
+B
+WHOMEVER
+APP
+N
+N
+-----
 Database 'wombat_new' deleted.
 [ Done. ]

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/dblook_test_net.out
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/dblook_test_net.out?rev=700295&r1=700294&r2=700295&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/dblook_test_net.out (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/dblook_test_net.out Mon Sep 29 15:43:55 2008
@@ -1950,5 +1950,42 @@
 N
 APP
 -----
+========== SYSROLES ==========
+"eve"
+APP
+_SYSTEM
+Y
+Y
+-----
+"eve"
+B
+APP
+N
+N
+-----
+A
+APP
+_SYSTEM
+Y
+Y
+-----
+A
+B
+APP
+N
+N
+-----
+B
+APP
+_SYSTEM
+Y
+Y
+-----
+B
+WHOMEVER
+APP
+N
+N
+-----
 Database 'wombat_new' deleted.
 [ Done. ]

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/dblook_test_net_territory.out
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/dblook_test_net_territory.out?rev=700295&r1=700294&r2=700295&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/dblook_test_net_territory.out (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/dblook_test_net_territory.out Mon Sep 29 15:43:55 2008
@@ -1950,5 +1950,42 @@
 N
 APP
 -----
+========== SYSROLES ==========
+"eve"
+APP
+_SYSTEM
+Y
+Y
+-----
+"eve"
+B
+APP
+N
+N
+-----
+A
+APP
+_SYSTEM
+Y
+Y
+-----
+A
+B
+APP
+N
+N
+-----
+B
+APP
+_SYSTEM
+Y
+Y
+-----
+B
+WHOMEVER
+APP
+N
+N
+-----
 Database 'wombat_new' deleted.
 [ Done. ]

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/dblook_test.out
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/dblook_test.out?rev=700295&r1=700294&r2=700295&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/dblook_test.out (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/dblook_test.out Mon Sep 29 15:43:55 2008
@@ -1943,6 +1943,43 @@
 N
 APP
 ----
+========== SYSROLES ==========
+"eve"
+APP
+_SYSTEM
+Y
+Y
+----
+"eve"
+B
+APP
+N
+N
+----
+A
+APP
+_SYSTEM
+Y
+Y
+----
+A
+B
+APP
+N
+N
+----
+B
+APP
+_SYSTEM
+Y
+Y
+----
+B
+WHOMEVER
+APP
+N
+N
+----
 --
 *******************************************
 Dumping full schema for 'wombat'
@@ -3893,6 +3930,43 @@
 N
 APP
 ----
+========== SYSROLES ==========
+"eve"
+APP
+_SYSTEM
+Y
+Y
+----
+"eve"
+B
+APP
+N
+N
+----
+A
+APP
+_SYSTEM
+Y
+Y
+----
+A
+B
+APP
+N
+N
+----
+B
+APP
+_SYSTEM
+Y
+Y
+----
+B
+WHOMEVER
+APP
+N
+N
+----
 Database 'wombat_new' deleted.
 --
 *******************************************
@@ -4477,6 +4551,43 @@
 null
 ----
 ========== SYSVIEWS ==========
+========== SYSROLES ==========
+"eve"
+APP
+_SYSTEM
+Y
+Y
+----
+"eve"
+B
+APP
+N
+N
+----
+A
+APP
+_SYSTEM
+Y
+Y
+----
+A
+B
+APP
+N
+N
+----
+B
+APP
+_SYSTEM
+Y
+Y
+----
+B
+WHOMEVER
+APP
+N
+N
+----
 Database 'wombat_new' deleted.
 --
 *******************************************
@@ -4723,6 +4834,43 @@
 ----
 ========== SYSTRIGGERS ==========
 ========== SYSVIEWS ==========
+========== SYSROLES ==========
+"eve"
+APP
+_SYSTEM
+Y
+Y
+----
+"eve"
+B
+APP
+N
+N
+----
+A
+APP
+_SYSTEM
+Y
+Y
+----
+A
+B
+APP
+N
+N
+----
+B
+APP
+_SYSTEM
+Y
+Y
+----
+B
+WHOMEVER
+APP
+N
+N
+----
 Database 'wombat_new' deleted.
 --
 *******************************************
@@ -5016,6 +5164,43 @@
 N
 APP
 ----
+========== SYSROLES ==========
+"eve"
+APP
+_SYSTEM
+Y
+Y
+----
+"eve"
+B
+APP
+N
+N
+----
+A
+APP
+_SYSTEM
+Y
+Y
+----
+A
+B
+APP
+N
+N
+----
+B
+APP
+_SYSTEM
+Y
+Y
+----
+B
+WHOMEVER
+APP
+N
+N
+----
 Database 'wombat_new' deleted.
 --
 *******************************************
@@ -5152,6 +5337,43 @@
 null
 ----
 ========== SYSVIEWS ==========
+========== SYSROLES ==========
+"eve"
+APP
+_SYSTEM
+Y
+Y
+----
+"eve"
+B
+APP
+N
+N
+----
+A
+APP
+_SYSTEM
+Y
+Y
+----
+A
+B
+APP
+N
+N
+----
+B
+APP
+_SYSTEM
+Y
+Y
+----
+B
+WHOMEVER
+APP
+N
+N
+----
 Database 'wombat_new' deleted.
 --
 *******************************************
@@ -5188,6 +5410,7 @@
 ========== SYSTABLES ==========
 ========== SYSTRIGGERS ==========
 ========== SYSVIEWS ==========
+========== SYSROLES ==========
 Database 'wombat_new' deleted.
 -= Start dblook Message Tests =-
 Database 'wombat' deleted.

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/dblook_test_territory.out
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/dblook_test_territory.out?rev=700295&r1=700294&r2=700295&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/dblook_test_territory.out (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/dblook_test_territory.out Mon Sep 29 15:43:55 2008
@@ -1943,6 +1943,43 @@
 N
 APP
 ----
+========== SYSROLES ==========
+"eve"
+APP
+_SYSTEM
+Y
+Y
+----
+"eve"
+B
+APP
+N
+N
+----
+A
+APP
+_SYSTEM
+Y
+Y
+----
+A
+B
+APP
+N
+N
+----
+B
+APP
+_SYSTEM
+Y
+Y
+----
+B
+WHOMEVER
+APP
+N
+N
+----
 --
 *******************************************
 Dumping full schema for 'wombat'
@@ -3893,6 +3930,43 @@
 N
 APP
 ----
+========== SYSROLES ==========
+"eve"
+APP
+_SYSTEM
+Y
+Y
+----
+"eve"
+B
+APP
+N
+N
+----
+A
+APP
+_SYSTEM
+Y
+Y
+----
+A
+B
+APP
+N
+N
+----
+B
+APP
+_SYSTEM
+Y
+Y
+----
+B
+WHOMEVER
+APP
+N
+N
+----
 Database 'wombat_new' deleted.
 --
 *******************************************
@@ -4477,6 +4551,43 @@
 null
 ----
 ========== SYSVIEWS ==========
+========== SYSROLES ==========
+"eve"
+APP
+_SYSTEM
+Y
+Y
+----
+"eve"
+B
+APP
+N
+N
+----
+A
+APP
+_SYSTEM
+Y
+Y
+----
+A
+B
+APP
+N
+N
+----
+B
+APP
+_SYSTEM
+Y
+Y
+----
+B
+WHOMEVER
+APP
+N
+N
+----
 Database 'wombat_new' deleted.
 --
 *******************************************
@@ -4723,6 +4834,43 @@
 ----
 ========== SYSTRIGGERS ==========
 ========== SYSVIEWS ==========
+========== SYSROLES ==========
+"eve"
+APP
+_SYSTEM
+Y
+Y
+----
+"eve"
+B
+APP
+N
+N
+----
+A
+APP
+_SYSTEM
+Y
+Y
+----
+A
+B
+APP
+N
+N
+----
+B
+APP
+_SYSTEM
+Y
+Y
+----
+B
+WHOMEVER
+APP
+N
+N
+----
 Database 'wombat_new' deleted.
 --
 *******************************************
@@ -5016,6 +5164,43 @@
 N
 APP
 ----
+========== SYSROLES ==========
+"eve"
+APP
+_SYSTEM
+Y
+Y
+----
+"eve"
+B
+APP
+N
+N
+----
+A
+APP
+_SYSTEM
+Y
+Y
+----
+A
+B
+APP
+N
+N
+----
+B
+APP
+_SYSTEM
+Y
+Y
+----
+B
+WHOMEVER
+APP
+N
+N
+----
 Database 'wombat_new' deleted.
 --
 *******************************************
@@ -5152,6 +5337,43 @@
 null
 ----
 ========== SYSVIEWS ==========
+========== SYSROLES ==========
+"eve"
+APP
+_SYSTEM
+Y
+Y
+----
+"eve"
+B
+APP
+N
+N
+----
+A
+APP
+_SYSTEM
+Y
+Y
+----
+A
+B
+APP
+N
+N
+----
+B
+APP
+_SYSTEM
+Y
+Y
+----
+B
+WHOMEVER
+APP
+N
+N
+----
 Database 'wombat_new' deleted.
 --
 *******************************************
@@ -5188,6 +5410,7 @@
 ========== SYSTABLES ==========
 ========== SYSTRIGGERS ==========
 ========== SYSVIEWS ==========
+========== SYSROLES ==========
 Database 'wombat_new' deleted.
 -= Start dblook Message Tests =-
 Database 'wombat' deleted.

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dblook_test_net_app.properties
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dblook_test_net_app.properties?rev=700295&r1=700294&r2=700295&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dblook_test_net_app.properties (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dblook_test_net_app.properties Mon Sep 29 15:43:55 2008
@@ -13,6 +13,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+ij.user=app
+ij.password=apppw
 supportfiles=tests/tools/dblook_makeDB.sql,tests/tools/dblook_test.jar
 
 # disable security manager for now - due to DERBY-537

Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dblook_test_net_derby.properties
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dblook_test_net_derby.properties?rev=700295&view=auto
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dblook_test_net_derby.properties (added)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dblook_test_net_derby.properties Mon Sep 29 15:43:55 2008
@@ -0,0 +1,39 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+#
+# This is the default derby properties file for SQL and JAVA tests.
+#
+# *** DO NOT PUT PROPERTIES FOR THE JAVA ENVIRONMENT IN THIS FILE.
+# *** THEY BELONG IN default_app.properties.
+#
+# This file will get renamed to be derby.properties for all
+# tests without a <testname>_derby.properties file defined.
+#
+# If you want to alter these to use other settings,
+# or to not be used, override this file by creating
+# a file <testname>_derby.properties to be used instead of this file.
+#
+
+# statement cache size of 20 is the default, do not add this property
+# to this file.  If your test wants to do consistency checking that
+# requires an empty cache, add a special test_derby.properties file, see
+# inbetween_derby.properties for an example.
+#
+# derby.language.statementCacheSize=20
+derby.infolog.append=true
+derby.connection.requireAuthentication=true
+derby.database.sqlAuthorization=true
+derby.user.app=apppw

Propchange: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dblook_test_net_derby.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dblook_test_net_territory_app.properties
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dblook_test_net_territory_app.properties?rev=700295&r1=700294&r2=700295&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dblook_test_net_territory_app.properties (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dblook_test_net_territory_app.properties Mon Sep 29 15:43:55 2008
@@ -13,6 +13,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+ij.user=app
+ij.password=apppw
 supportfiles=tests/tools/dblook_makeDB.sql,tests/tools/dblook_test.jar
 
 # disable security manager for now - due to DERBY-537

Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dblook_test_net_territory_derby.properties
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dblook_test_net_territory_derby.properties?rev=700295&view=auto
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dblook_test_net_territory_derby.properties (added)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dblook_test_net_territory_derby.properties Mon Sep 29 15:43:55 2008
@@ -0,0 +1,39 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+#
+# This is the default derby properties file for SQL and JAVA tests.
+#
+# *** DO NOT PUT PROPERTIES FOR THE JAVA ENVIRONMENT IN THIS FILE.
+# *** THEY BELONG IN default_app.properties.
+#
+# This file will get renamed to be derby.properties for all
+# tests without a <testname>_derby.properties file defined.
+#
+# If you want to alter these to use other settings,
+# or to not be used, override this file by creating
+# a file <testname>_derby.properties to be used instead of this file.
+#
+
+# statement cache size of 20 is the default, do not add this property
+# to this file.  If your test wants to do consistency checking that
+# requires an empty cache, add a special test_derby.properties file, see
+# inbetween_derby.properties for an example.
+#
+# derby.language.statementCacheSize=20
+derby.infolog.append=true
+derby.connection.requireAuthentication=true
+derby.database.sqlAuthorization=true
+derby.user.app=apppw

Propchange: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dblook_test_net_territory_derby.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_makeDB.sql
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_makeDB.sql?rev=700295&r1=700294&r2=700295&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_makeDB.sql (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_makeDB.sql Mon Sep 29 15:43:55 2008
@@ -166,3 +166,14 @@
 create table x (x int);
 create table removed (x int);
 create trigger trigFour after update of x on x referencing old_table as old new_table as new for each statement insert into removed select * from old where x not in (select x from new where x < 10);
+
+-- ----------------------------------------------
+-- Roles
+-- ----------------------------------------------
+create role a;
+create role b;
+create role """eve""";
+grant a to b;
+grant """eve""" to b;
+grant b to whomever;
+

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_test.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_test.java?rev=700295&r1=700294&r2=700295&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_test.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_test.java Mon Sep 29 15:43:55 2008
@@ -397,17 +397,18 @@
 		String sourceDBUrl;
 		if (TestUtil.isJCCFramework())
 			sourceDBUrl = jdbcProtocol + "\"" + dbPath +
-				separator + dbName + "\":user=someusr;password=somepwd;";
+				separator + dbName + "\":user=app;password=apppw;";
 		else
 			sourceDBUrl = jdbcProtocol + dbPath +
-			separator + dbName + ";user=someusr;password=somepwd";
+			separator + dbName + ";user=app;password=apppw";
 
 		// Make sure we're not connected to the database
 		// (we connected to it in embedded mode when we
 		// created it, so we have to shut it down).
 		try {
 			DriverManager.getConnection(
-				"jdbc:derby:" + dbName + ";shutdown=true");
+				"jdbc:derby:" + dbName +
+				";shutdown=true;user=app;password=apppw");
 		} catch (SQLException e) {}
 
 		// Run the test.
@@ -561,7 +562,7 @@
 
 		jdbcProtocol = "jdbc:derby:";
 		String sourceDBUrl = jdbcProtocol + dbPath +
-			separator + dbName;
+			separator + dbName + ";user=app;password=apppw";
 
 		String [] fullArgs = new String[args.length+2];
 		fullArgs[0] = "-d";
@@ -664,7 +665,7 @@
 		try {
 			Connection conn =
 				DriverManager.getConnection("jdbc:derby:" + 
-					jarPath + ";shutdown=true");
+					jarPath + ";shutdown=true,user=app;password=apppw");
 			conn.close();
 		} catch (SQLException se) {
 		// shutdown exception.
@@ -721,7 +722,7 @@
 
 		// Connect to the database.
 		Connection conn = DriverManager.getConnection(
-				"jdbc:derby:" + dbName);
+				"jdbc:derby:" + dbName + ";user=app;password=apppw");
 		conn.setAutoCommit(false);
 
 		// Set the system schema to ensure that UCS_BASIC collation is used.
@@ -828,6 +829,14 @@
 		rs = stmt.executeQuery("select compilationschemaid, sys.sysviews.* from sys.sysviews");
 		dumpResultSet(rs, idToNameMap, null);
 
+		writeOut("\n========== SYSROLES ==========\n");
+		rs = stmt.executeQuery
+			("select 'dummyFirstCol', " +
+			 "roleid || '_' || grantee || '_' || grantor as rgd, " +
+			 "roleid, grantee, grantor, withadminoption, isdef " +
+			 "from sys.sysroles");
+		dumpResultSet(rs, idToNameMap, null);
+
 		stmt.close();
 		rs.close();
 		conn.commit();
@@ -915,7 +924,6 @@
 		TreeMap orderedRows = new TreeMap();
 		ArrayList rowValues = new ArrayList();
 		ArrayList duplicateRowIds = new ArrayList();
-
 		ResultSetMetaData rsmd = rs.getMetaData();
 		int cols = rsmd.getColumnCount();
 		while (rs.next()) {
@@ -957,8 +965,18 @@
 				// it in the results.
 					continue;
 
-				String uniquePiece = dumpColumnData(colName,
-					value, mappedName, rowValues);
+
+				String uniquePiece;
+
+				if (colName.equals("RGD")) {
+					// Role Grant Descriptor: synthetic unique column, see query
+					// from SYS.SYSROLES.
+					uniquePiece = value;
+				} else {
+					uniquePiece = dumpColumnData(colName,
+												 value, mappedName, rowValues);
+				}
+
 
 				if (colName.equals("DEPENDENTID")) {
 				// Special case: rows in the "DEPENDS" table
@@ -1212,7 +1230,8 @@
 			"' from ddl script '" + scriptName + "'");
 
 		Connection conn = DriverManager.getConnection(
-				"jdbc:derby:" + newDBName + ";create=true" + territoryBased);
+				"jdbc:derby:" + newDBName +
+				";create=true;user=app;password=apppw" + territoryBased);
 
 		Statement stmt = conn.createStatement();
 		BufferedReader ddlScript =
@@ -1458,7 +1477,7 @@
 		try {
 			Connection conn =
 				DriverManager.getConnection("jdbc:derby:" + 
-					deletePath + ";shutdown=true");
+					deletePath + ";shutdown=true;user=app;password=apppw");
 			conn.close();
 		} catch (SQLException se) {
 		// shutdown exception.

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_test_app.properties
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_test_app.properties?rev=700295&r1=700294&r2=700295&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_test_app.properties (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_test_app.properties Mon Sep 29 15:43:55 2008
@@ -12,7 +12,8 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
-
+ij.user=app
+ij.password=apppw
 supportfiles=tests/tools/dblook_makeDB.sql,tests/tools/dblook_makeDB_2.sql,tests/tools/dblook_test.jar
 
 #Exclude for J2ME/Foundation - test requires java.sql.DriverManager

Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_test_derby.properties
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_test_derby.properties?rev=700295&view=auto
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_test_derby.properties (added)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_test_derby.properties Mon Sep 29 15:43:55 2008
@@ -0,0 +1,39 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+#
+# This is the default derby properties file for SQL and JAVA tests.
+#
+# *** DO NOT PUT PROPERTIES FOR THE JAVA ENVIRONMENT IN THIS FILE.
+# *** THEY BELONG IN default_app.properties.
+#
+# This file will get renamed to be derby.properties for all
+# tests without a <testname>_derby.properties file defined.
+#
+# If you want to alter these to use other settings,
+# or to not be used, override this file by creating
+# a file <testname>_derby.properties to be used instead of this file.
+#
+
+# statement cache size of 20 is the default, do not add this property
+# to this file.  If your test wants to do consistency checking that
+# requires an empty cache, add a special test_derby.properties file, see
+# inbetween_derby.properties for an example.
+#
+# derby.language.statementCacheSize=20
+derby.infolog.append=true
+derby.connection.requireAuthentication=true
+derby.database.sqlAuthorization=true
+derby.user.app=apppw

Propchange: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_test_derby.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_test_territory_app.properties
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_test_territory_app.properties?rev=700295&r1=700294&r2=700295&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_test_territory_app.properties (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_test_territory_app.properties Mon Sep 29 15:43:55 2008
@@ -13,6 +13,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+ij.user=app
+ij.password=apppw
 supportfiles=tests/tools/dblook_makeDB.sql,tests/tools/dblook_makeDB_2.sql,tests/tools/dblook_test.jar
 
 #Exclude for J2ME/Foundation - test requires java.sql.DriverManager

Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_test_territory_derby.properties
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_test_territory_derby.properties?rev=700295&view=auto
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_test_territory_derby.properties (added)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_test_territory_derby.properties Mon Sep 29 15:43:55 2008
@@ -0,0 +1,39 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+#
+# This is the default derby properties file for SQL and JAVA tests.
+#
+# *** DO NOT PUT PROPERTIES FOR THE JAVA ENVIRONMENT IN THIS FILE.
+# *** THEY BELONG IN default_app.properties.
+#
+# This file will get renamed to be derby.properties for all
+# tests without a <testname>_derby.properties file defined.
+#
+# If you want to alter these to use other settings,
+# or to not be used, override this file by creating
+# a file <testname>_derby.properties to be used instead of this file.
+#
+
+# statement cache size of 20 is the default, do not add this property
+# to this file.  If your test wants to do consistency checking that
+# requires an empty cache, add a special test_derby.properties file, see
+# inbetween_derby.properties for an example.
+#
+# derby.language.statementCacheSize=20
+derby.infolog.append=true
+derby.connection.requireAuthentication=true
+derby.database.sqlAuthorization=true
+derby.user.app=apppw

Propchange: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_test_territory_derby.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: db/derby/code/trunk/java/tools/org/apache/derby/impl/tools/dblook/DB_GrantRevoke.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/tools/org/apache/derby/impl/tools/dblook/DB_GrantRevoke.java?rev=700295&r1=700294&r2=700295&view=diff
==============================================================================
--- db/derby/code/trunk/java/tools/org/apache/derby/impl/tools/dblook/DB_GrantRevoke.java (original)
+++ db/derby/code/trunk/java/tools/org/apache/derby/impl/tools/dblook/DB_GrantRevoke.java Mon Sep 29 15:43:55 2008
@@ -1,6 +1,6 @@
 /*
 
-   Derby - Class org.apache.derby.impl.tools.dblook.DB_Alias
+   Derby - Class org.apache.derby.impl.tools.dblook.DB_GrantRevoke
 
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
@@ -83,9 +83,12 @@
 				Logs.reportString("----------------------------------------------\n");
 			}
 
-			String authName = rs.getString(1);
-			String schemaName = dblook.addQuotes(dblook.expandDoubleQuotes(rs.getString(2)));
-			String tableName = dblook.addQuotes(dblook.expandDoubleQuotes(rs.getString(3)));
+			String authName = dblook.addQuotes
+				(dblook.expandDoubleQuotes(rs.getString(1)));
+			String schemaName = dblook.addQuotes
+				(dblook.expandDoubleQuotes(rs.getString(2)));
+			String tableName = dblook.addQuotes
+				(dblook.expandDoubleQuotes(rs.getString(3)));
 			String fullName = schemaName + "." + tableName;
 
 			if (dblook.isIgnorableSchema(schemaName))
@@ -175,7 +178,8 @@
 				Logs.reportString("----------------------------------------------\n");
 			}
 
-			String authName = rs.getString(1);
+			String authName = dblook.addQuotes
+				(dblook.expandDoubleQuotes(rs.getString(1)));
 			String schemaName = dblook.expandDoubleQuotes(rs.getString(2));
 			String tableName = dblook.expandDoubleQuotes(rs.getString(3));
 
@@ -280,9 +284,12 @@
 	{
 		boolean firstTime = true;
 		while (rs.next()) {
-			String authName = rs.getString(1);
-			String schemaName = dblook.addQuotes(dblook.expandDoubleQuotes(rs.getString(2)));
-			String aliasName = dblook.addQuotes(dblook.expandDoubleQuotes(rs.getString(3)));
+			String authName = dblook.addQuotes
+				(dblook.expandDoubleQuotes(rs.getString(1)));
+			String schemaName = dblook.addQuotes
+				(dblook.expandDoubleQuotes(rs.getString(2)));
+			String aliasName = dblook.addQuotes
+				(dblook.expandDoubleQuotes(rs.getString(3)));
 			String fullName = schemaName + "." + aliasName;
 			String aliasType = rs.getString(4);
 

Added: db/derby/code/trunk/java/tools/org/apache/derby/impl/tools/dblook/DB_Roles.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/tools/org/apache/derby/impl/tools/dblook/DB_Roles.java?rev=700295&view=auto
==============================================================================
--- db/derby/code/trunk/java/tools/org/apache/derby/impl/tools/dblook/DB_Roles.java (added)
+++ db/derby/code/trunk/java/tools/org/apache/derby/impl/tools/dblook/DB_Roles.java Mon Sep 29 15:43:55 2008
@@ -0,0 +1,176 @@
+/*
+
+   Derby - Class org.apache.derby.impl.tools.dblook.DB_Roles
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to you under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+ */
+
+package org.apache.derby.impl.tools.dblook;
+
+import java.sql.Connection;
+import java.sql.Statement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+import java.util.StringTokenizer;
+
+import org.apache.derby.tools.dblook;
+
+public class DB_Roles {
+
+    /**
+     * Generate role definition statements and role grant statements. Note that
+     * privileges granted to roles are handled by DB_GrantRevoke, similar to
+     * privileges granted to users.
+     *
+     * @param conn Connection to use
+     */
+    public static void doRoles(Connection conn)
+        throws SQLException {
+
+        // First generate role definition statements
+        Statement stmt = conn.createStatement();
+        ResultSet rs = stmt.executeQuery
+            ("SELECT ROLEID, GRANTEE, GRANTOR, " +
+             "WITHADMINOPTION FROM SYS.SYSROLES WHERE ISDEF = 'Y'");
+        generateRoleDefinitions(rs);
+        rs.close();
+
+        // Generate role grant statements
+        rs = stmt.executeQuery
+            ("SELECT ROLEID, GRANTEE, GRANTOR, WITHADMINOPTION" +
+             " FROM SYS.SYSROLES WHERE ISDEF = 'N'");
+        generateRoleGrants(rs);
+
+        rs.close();
+        stmt.close();
+        return;
+
+    }
+
+    /**
+     * Generate role definition statements
+     *
+     * @param rs Result set holding required information
+     */
+    private static void generateRoleDefinitions(ResultSet rs)
+        throws SQLException
+    {
+        boolean firstTime = true;
+        while (rs.next()) {
+
+            if (firstTime) {
+                Logs.reportString
+                    ("----------------------------------------------");
+                Logs.reportMessage( "DBLOOK_Role_definitions_header");
+                Logs.reportString
+                    ("----------------------------------------------\n");
+            }
+
+            String roleName = dblook.addQuotes
+                (dblook.expandDoubleQuotes(rs.getString(1)));
+            // String grantee = dblook.addQuotes
+            //     (dblook.expandDoubleQuotes(rs.getString(2))); // always DBO
+            // String grantor = dblook.addQuotes
+            //   (dblook.expandDoubleQuotes(rs.getString(3))); // always _SYSTEM
+            // boolean isWithAdminOption = rs.getString
+            //   (4).equals("Y") ? true : false; // always true for a definition
+
+            Logs.writeToNewDDL(roleDefinitionStatement(rs, roleName));
+            Logs.writeStmtEndToNewDDL();
+            Logs.writeNewlineToNewDDL();
+            firstTime = false;
+        }
+    }
+
+    /**
+     * Generate a role definition statement for the current row
+     *
+     * @param rs        @{code ResultSet} holding role definition information
+     * @param roleName  The role defined, already quoted
+     */
+    private static String roleDefinitionStatement(ResultSet rs, String roleName)
+        throws SQLException
+    {
+        StringBuffer createStmt = new StringBuffer("CREATE ROLE ");
+
+        createStmt.append(roleName);
+        return createStmt.toString();
+    }
+
+    private static void generateRoleGrants(ResultSet rs)
+        throws SQLException
+    {
+        boolean firstTime = true;
+        while (rs.next()) {
+
+            if (firstTime) {
+                firstTime = false;
+
+                Logs.reportString
+                    ("----------------------------------------------");
+                Logs.reportMessage( "DBLOOK_Role_grants_header");
+                Logs.reportString
+                    ("----------------------------------------------\n");
+            }
+
+            String roleName = dblook.addQuotes
+                (dblook.expandDoubleQuotes(rs.getString(1)));
+            String grantee = dblook.addQuotes
+                (dblook.expandDoubleQuotes(rs.getString(2)));
+            String grantor = dblook.addQuotes
+                (dblook.expandDoubleQuotes(rs.getString(3))); // always DBO
+            boolean isWithAdminOption =
+                rs.getString(4).equals("Y") ? true : false;
+
+            Logs.writeToNewDDL
+                (roleGrantStatement(rs, roleName, grantee, isWithAdminOption));
+            Logs.writeStmtEndToNewDDL();
+            Logs.writeNewlineToNewDDL();
+        }
+    }
+
+    /**
+     * Generate role grant statement for the current row
+     *
+     * @param rs        @{ResultSet} holding role grant information
+     * @param roleName  The role granted, already quoted
+     * @param graentee The authorization id to whom the role is granted (a role
+     *                  or a user), already quoted
+     * @param isWithAdminOption @{code true} if ADMIN OPTION was used for the
+     *         grant
+     */
+    private static String roleGrantStatement(ResultSet rs,
+                                             String roleName,
+                                             String grantee,
+                                             boolean isWithAdminOption)
+        throws SQLException
+    {
+        StringBuffer createStmt = new StringBuffer("GRANT ");
+
+        createStmt.append(roleName);
+        createStmt.append(" TO ");
+        createStmt.append(grantee);
+
+        if (isWithAdminOption) {
+            createStmt.append(" WITH ADMIN OPTION");
+        }
+
+        return createStmt.toString();
+    }
+
+}

Propchange: db/derby/code/trunk/java/tools/org/apache/derby/impl/tools/dblook/DB_Roles.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: db/derby/code/trunk/java/tools/org/apache/derby/loc/toolsmessages.properties
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/tools/org/apache/derby/loc/toolsmessages.properties?rev=700295&r1=700294&r2=700295&view=diff
==============================================================================
--- db/derby/code/trunk/java/tools/org/apache/derby/loc/toolsmessages.properties (original)
+++ db/derby/code/trunk/java/tools/org/apache/derby/loc/toolsmessages.properties Mon Sep 29 15:43:55 2008
@@ -242,6 +242,8 @@
 DBLOOK_TablePrivHeader=GRANT statements for tables
 DBLOOK_ColumnPrivHeader=GRANT statements for columns
 DBLOOK_RoutinePrivHeader=GRANT statements for routines
+DBLOOK_Role_definitions_header=CREATE statements for roles
+DBLOOK_Role_grants_header=GRANT statements for roles
 DBLOOK_Jar_Note=\
 **** NOTE **** In order for jar files to be loaded correctly,\n\
 -- you must either 1) ensure that the DBJARS directory (created\n\

Modified: db/derby/code/trunk/java/tools/org/apache/derby/tools/dblook.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/tools/org/apache/derby/tools/dblook.java?rev=700295&r1=700294&r2=700295&view=diff
==============================================================================
--- db/derby/code/trunk/java/tools/org/apache/derby/tools/dblook.java (original)
+++ db/derby/code/trunk/java/tools/org/apache/derby/tools/dblook.java Mon Sep 29 15:43:55 2008
@@ -48,6 +48,7 @@
 import org.apache.derby.impl.tools.dblook.DB_Alias;
 import org.apache.derby.impl.tools.dblook.DB_Trigger;
 import org.apache.derby.impl.tools.dblook.DB_View;
+import org.apache.derby.impl.tools.dblook.DB_Roles;
 import org.apache.derby.impl.tools.dblook.DB_GrantRevoke;
 import org.apache.derby.impl.tools.dblook.Logs;
 
@@ -539,6 +540,7 @@
 
 			DB_Trigger.doTriggers(this.conn);
 
+			DB_Roles.doRoles(this.conn);
 			DB_GrantRevoke.doAuthorizations(this.conn);
 
 			// That's it; we're done.