Index: src/main/java/com/sun/enterprise/admin/cli/optional/LocalStrings.properties =================================================================== --- src/main/java/com/sun/enterprise/admin/cli/optional/LocalStrings.properties (revision 35914) +++ src/main/java/com/sun/enterprise/admin/cli/optional/LocalStrings.properties (working copy) @@ -29,6 +29,7 @@ StartDatabaseStatus=Database already started on host {0}, port {1}. StopDatabaseStatus=Unable to stop database on host {0}, port {1}. UnableToStartDatabase=Unable to start database. Please check log in {0}. +UnableToStopDatabase=Unable to stop database. Please check log in {0}. UnableToAccessDatabaseLog=Unable to access derby.log in {0}. UnableToConnectToDatabase=Unable to connect to database. database.info.msg=Starting database in Network Server mode on host {0} and port {1}. Index: src/main/java/com/sun/enterprise/admin/cli/optional/StartDatabaseCommand.java =================================================================== --- src/main/java/com/sun/enterprise/admin/cli/optional/StartDatabaseCommand.java (revision 35914) +++ src/main/java/com/sun/enterprise/admin/cli/optional/StartDatabaseCommand.java (working copy) @@ -78,6 +78,8 @@ addOption(opts, DB_HOST, '\0', "STRING", false, DB_HOST_DEFAULT); addOption(opts, DB_PORT, '\0', "STRING", false, DB_PORT_DEFAULT); addOption(opts, DB_HOME, '\0', "FILE", false, null); + //addOption(opts, DB_USER, '\0', "STRING", false, null); + //addOption(opts, DB_PASSWORD, '\0', "STRING", false, null); // not a remote command so have to process --terse and --echo ourselves addOption(opts, "terse", '\0', "BOOLEAN", false, "false"); addOption(opts, "echo", '\0', "BOOLEAN", false, "false"); @@ -113,29 +115,56 @@ * "-Dderby.storage.fileSyncTransactionLog=True" is defined. */ public String[] startDatabaseCmd() throws Exception { - if (OS.isDarwin()) { - return new String [] { - sJavaHome+File.separator+"bin"+File.separator+"java", - "-Djava.library.path="+sInstallRoot+File.separator+"lib", - "-Dderby.storage.fileSyncTransactionLog=True", - "-cp", - sClasspath + File.pathSeparator + sDatabaseClasspath, - "com.sun.enterprise.admin.cli.optional.DerbyControl", - "start", - dbHost, dbPort, "true", dbHome - }; - } - else { - return new String [] { - sJavaHome+File.separator+"bin"+File.separator+"java", - "-Djava.library.path="+sInstallRoot+File.separator+"lib", - "-cp", - sClasspath + File.pathSeparator + sDatabaseClasspath, - "com.sun.enterprise.admin.cli.optional.DerbyControl", - "start", - dbHost, dbPort, "true", dbHome - }; - } + //dbUser = getOption(DB_USER); + //dbPassword = getOption(DB_PASSWORD); + //if (dbUser == null && dbPassword == null) { + if (OS.isDarwin()) { + return new String[]{ + sJavaHome + File.separator + "bin" + File.separator + "java", + "-Djava.library.path=" + sInstallRoot + File.separator + "lib", + "-Dderby.storage.fileSyncTransactionLog=True", + "-cp", + sClasspath + File.pathSeparator + sDatabaseClasspath, + "com.sun.enterprise.admin.cli.optional.DerbyControl", + "start", + dbHost, dbPort, "true", dbHome + }; + } else { + return new String[]{ + sJavaHome + File.separator + "bin" + File.separator + "java", + "-Djava.library.path=" + sInstallRoot + File.separator + "lib", + "-cp", + sClasspath + File.pathSeparator + sDatabaseClasspath, + "com.sun.enterprise.admin.cli.optional.DerbyControl", + "start", + dbHost, dbPort, "true", dbHome + }; + } + + /*} else { + if (OS.isDarwin()) { + return new String[]{ + sJavaHome + File.separator + "bin" + File.separator + "java", + "-Djava.library.path=" + sInstallRoot + File.separator + "lib", + "-Dderby.storage.fileSyncTransactionLog=True", + "-cp", + sClasspath + File.pathSeparator + sDatabaseClasspath, + "com.sun.enterprise.admin.cli.optional.DerbyControl", + "start", + dbHost, dbPort, "true", dbHome, dbUser, dbPassword + }; + } else { + return new String[]{ + sJavaHome + File.separator + "bin" + File.separator + "java", + "-Djava.library.path=" + sInstallRoot + File.separator + "lib", + "-cp", + sClasspath + File.pathSeparator + sDatabaseClasspath, + "com.sun.enterprise.admin.cli.optional.DerbyControl", + "start", + dbHost, dbPort, "true", dbHome, dbUser, dbPassword + }; + } + }*/ } @@ -169,7 +198,6 @@ } } - /** * This method returns dbhome. * If dbhome option is specified, then the option value is returned. @@ -195,7 +223,7 @@ // The reason for this behavior is so that it is // compatible with 8.2PE and 9.0 release. // In 8.2PE and 9.0, the current directory is the - // default dbhome. + // default dbhome. final String currentDir = System.getProperty("user.dir"); if ((new File(currentDir, DerbyControl.DB_LOG_FILENAME)).exists()) return currentDir; Index: src/main/java/com/sun/enterprise/admin/cli/optional/DatabaseCommand.java =================================================================== --- src/main/java/com/sun/enterprise/admin/cli/optional/DatabaseCommand.java (revision 35914) +++ src/main/java/com/sun/enterprise/admin/cli/optional/DatabaseCommand.java (working copy) @@ -62,12 +62,16 @@ protected static final String DB_HOST_DEFAULT = "0.0.0.0"; protected static final String DB_PORT = "dbport"; protected static final String DB_PORT_DEFAULT = "1527"; + protected final static String DB_USER = "dbuser"; + protected final static String DB_PASSWORD = "dbpassword"; private static final String[] MODULES_IN_CLASSPATH = { "glassfish", "admin-cli", "cli-framework", "common-util" }; protected String dbHost; protected String dbPort; + protected String dbUser; + protected String dbPassword; protected File dbLocation; protected File sJavaHome; protected File sInstallRoot; Index: src/main/java/com/sun/enterprise/admin/cli/optional/DerbyControl.java =================================================================== --- src/main/java/com/sun/enterprise/admin/cli/optional/DerbyControl.java (revision 35914) +++ src/main/java/com/sun/enterprise/admin/cli/optional/DerbyControl.java (working copy) @@ -63,16 +63,22 @@ final private String derbyPort; final private String derbyHome; final private boolean redirect; + final private String derbyUser; + final private String derbyPassword; + //constructor public DerbyControl(final String dc, final String dht, final String dp, - final String redirect, final String dhe) + final String redirect, final String dhe, final String duser, final String dpwd) { this.derbyCommand = dc; this.derbyHost = dht; this.derbyPort = dp; this.derbyHome = dhe; - this.redirect = Boolean.valueOf(redirect).booleanValue(); + this.redirect = Boolean.valueOf(redirect).booleanValue(); + this.derbyUser = duser; + this.derbyPassword = dpwd; + if (this.redirect) { try { @@ -108,15 +114,26 @@ //constructor public DerbyControl(final String dc, final String dht, final String dp) { - this(dc,dht,dp,"true", null); + this(dc,dht,dp,"true", null, null, null); } //constructor public DerbyControl(final String dc, final String dht, final String dp, final String redirect) { - this(dc,dht,dp,redirect,null); + this(dc,dht,dp,redirect,null, null, null); } - + + //constructor + public DerbyControl(final String dc, final String dht, final String dp, final String redirect, final String dhe) + { + this(dc,dht,dp,redirect,dhe, null, null); + } + + public DerbyControl(final String dc, final String dht, final String dp, final String redirect, final String duser, final String dpassword) + { + this(dc,dht,dp,redirect,null, duser, dpassword); + } + /** * This methos invokes the Derby's NetworkServerControl to start/stop/ping * the database. @@ -127,7 +144,12 @@ Class networkServer = Class.forName("org.apache.derby.drda.NetworkServerControl"); Method networkServerMethod = networkServer.getDeclaredMethod("main", new Class[]{String[].class}); - Object [] paramObj = new Object[]{new String[]{derbyCommand, "-h", derbyHost, "-p", derbyPort}}; + Object [] paramObj = null; + if (derbyUser == null && derbyPassword == null) { + paramObj = new Object[]{new String[]{derbyCommand, "-h", derbyHost, "-p", derbyPort}}; + } else { + paramObj = new Object[]{new String[]{derbyCommand, "-h", derbyHost, "-p", derbyPort, "-user", derbyUser, "-password", derbyPassword}}; + } networkServerMethod.invoke(networkServer, paramObj); } @@ -209,8 +231,10 @@ derbyControl = new DerbyControl(args[0], args[1], args[2]); else if (args.length == 4 ) derbyControl = new DerbyControl(args[0], args[1], args[2], args[3]); - else if (args.length > 4) - derbyControl = new DerbyControl(args[0], args[1], args[2], args[3], args[4]); + else if (args.length == 5) + derbyControl = new DerbyControl(args[0], args[1], args[2], args[3], args[4]); + else if (args.length > 5) + derbyControl = new DerbyControl(args[0], args[1], args[2], args[3], args[4], args[5]); if (derbyControl != null) derbyControl.invokeNetworkServerControl(); } Index: src/main/java/com/sun/enterprise/admin/cli/optional/StopDatabaseCommand.java =================================================================== --- src/main/java/com/sun/enterprise/admin/cli/optional/StopDatabaseCommand.java (revision 35914) +++ src/main/java/com/sun/enterprise/admin/cli/optional/StopDatabaseCommand.java (working copy) @@ -69,6 +69,8 @@ Set opts = new LinkedHashSet(); addOption(opts, DB_HOST, '\0', "STRING", false, DB_HOST_DEFAULT); addOption(opts, DB_PORT, '\0', "STRING", false, DB_PORT_DEFAULT); + addOption(opts, DB_USER, '\0', "STRING", false, null); + addOption(opts, DB_PASSWORD, '\0', "STRING", false, null); addOption(opts, "help", '?', "BOOLEAN", false, "false"); commandOpts = Collections.unmodifiableSet(opts); operandType = "STRING"; @@ -84,27 +86,53 @@ * "-Dderby.storage.fileSyncTransactionLog=True" is defined. */ public String[] stopDatabaseCmd() throws Exception { - if (OS.isDarwin()) { - return new String [] { - sJavaHome+File.separator+"bin"+File.separator+"java", - "-Djava.library.path="+sInstallRoot+File.separator+"lib", - "-Dderby.storage.fileSyncTransactionLog=True", - "-cp", - sClasspath + File.pathSeparator + sDatabaseClasspath, - "com.sun.enterprise.admin.cli.optional.DerbyControl", - "shutdown", - dbHost, dbPort, "false" - }; + dbUser = getOption(DB_USER); + dbPassword = getOption(DB_PASSWORD); + if (dbUser == null && dbPassword == null) { + if (OS.isDarwin()) { + return new String[]{ + sJavaHome + File.separator + "bin" + File.separator + "java", + "-Djava.library.path=" + sInstallRoot + File.separator + "lib", + "-Dderby.storage.fileSyncTransactionLog=True", + "-cp", + sClasspath + File.pathSeparator + sDatabaseClasspath, + "com.sun.enterprise.admin.cli.optional.DerbyControl", + "shutdown", + dbHost, dbPort, "false" + }; + } + return new String[]{ + sJavaHome + File.separator + "bin" + File.separator + "java", + "-Djava.library.path=" + sInstallRoot + File.separator + "lib", + "-cp", + sClasspath + File.pathSeparator + sDatabaseClasspath, + "com.sun.enterprise.admin.cli.optional.DerbyControl", + "shutdown", + dbHost, dbPort, "false" + }; + } else { + if (OS.isDarwin()) { + return new String[]{ + sJavaHome + File.separator + "bin" + File.separator + "java", + "-Djava.library.path=" + sInstallRoot + File.separator + "lib", + "-Dderby.storage.fileSyncTransactionLog=True", + "-cp", + sClasspath + File.pathSeparator + sDatabaseClasspath, + "com.sun.enterprise.admin.cli.optional.DerbyControl", + "shutdown", + dbHost, dbPort, "false", dbUser, dbPassword + }; + } + return new String[]{ + sJavaHome + File.separator + "bin" + File.separator + "java", + "-Djava.library.path=" + sInstallRoot + File.separator + "lib", + "-cp", + sClasspath + File.pathSeparator + sDatabaseClasspath, + "com.sun.enterprise.admin.cli.optional.DerbyControl", + "shutdown", + dbHost, dbPort, "false", dbUser, dbPassword + }; } - return new String [] { - sJavaHome+File.separator+"bin"+File.separator+"java", - "-Djava.library.path="+sInstallRoot+File.separator+"lib", - "-cp", - sClasspath + File.pathSeparator + sDatabaseClasspath, - "com.sun.enterprise.admin.cli.optional.DerbyControl", - "shutdown", - dbHost, dbPort, "false" - }; } /** @@ -125,18 +153,18 @@ } else if (cpe.exitValue() < 0) { // Something terribly wrong! throw new CommandException( - strings.get("CommandUnSuccessful", name)); + strings.get("UnableToStopDatabase", "derby.log")); } else { // database is running so go ahead and stop the database cpe.execute("stopDatabaseCmd", stopDatabaseCmd(), true); if (cpe.exitValue() > 0) { throw new CommandException( - strings.get("CommandUnSuccessful", name)); + strings.get("UnableToStopDatabase", "derby.log")); } } } catch (Exception e) { throw new CommandException( - strings.get("CommandUnSuccessful", name), e); + strings.get("UnableToStopDatabase", "derby.log"), e); } return 0; }