* ===========================================================================
* Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
*
- * Modifications Copyright (C) 2018 IBM.
+ * Modifications Copyright (C) 2019 IBM.
* ===========================================================================
* Licensed 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.
private static int globalDelay=0;
// Create when only have Access
- public AAFcli(Access access, Writer wtr, HMangr hman, SecurityInfoC<HttpURLConnection> si, SecuritySetter<HttpURLConnection> ss) throws APIException, CadiException {
+ public AAFcli(Access access, Writer wtr, HMangr hman, SecurityInfoC<HttpURLConnection> si, SecuritySetter<HttpURLConnection> ss) throws APIException {
this(access,new AuthzEnv(access.getProperties()),wtr,hman, si,ss);
}
- public AuthzEnv env() {
- return env;
- }
-
public AAFcli(Access access, AuthzEnv env, Writer wtr, HMangr hman, SecurityInfoC<HttpURLConnection> si, SecuritySetter<HttpURLConnection> ss) throws APIException {
this.env = env;
this.access = access;
cmds.add(new Mgmt(this));
}
+ public AuthzEnv env() {
+ return env;
+ }
+
public static int timeout() {
return TIMEOUT;
}
}
} else if ("expect".equalsIgnoreCase(largs[idx])) {
expect.clear();
- if (largs.length > idx++) {
- if (!"nothing".equals(largs[idx])) {
+ if ((largs.length > idx++)&&(!"nothing".equals(largs[idx]))) {
for (String str : largs[idx].split(",")) {
try {
if ("Exception".equalsIgnoreCase(str)) {
}
}
++idx;
- }
- }
+ }
continue;
// Sleep, typically for reports, to allow DB to update
// Milliseconds
-
+
} else if ("sleep".equalsIgnoreCase(largs[idx])) {
Integer t = Integer.parseInt(largs[++idx]);
pw.println("sleep " + t);
pw.println("Press <Return> to continue...");
++idx;
// Sonar insists we do something with the string, though it's only a pause. Not very helpful...
- String sonar = new BufferedReader(new InputStreamReader(System.in)).readLine();
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ String sonar;
+ try {
+ sonar = br.readLine();
+ } finally {
+ br.close();
+ }
sonar=""; // this useless code brought to you by Sonar.
pw.print(sonar);
continue;
// Allow Script to indicate if Failure is what is expected
}
- }
-
+ }
+
if ("REQUEST".equalsIgnoreCase(largs[idx])) {
request=true;
++idx;
Thread.sleep((long)(delay+globalDelay));
}
} catch (Exception e) {
- if (expect.contains(-1)) {
+ if (expect.contains(-1)) {
pw.println(e.getMessage());
ret = -1;
} else {
} finally {
clearSingleLineProperties();
}
- rv = expect.isEmpty() ? true : expect.contains(ret);
+ rv = expect.isEmpty() || expect.contains(ret);
if (verbose) {
if (rv) {
pw.println();
char last = 0;
for (int i = 0; i < line.length(); ++i) {
char ch;
- if (Character.isWhitespace(ch = line.charAt(i))) {
+ ch = line.charAt(i);
+ if (Character.isWhitespace(ch)) {
if (start || last==',') {
continue; // trim
} else if (quote != 0) {
System.out.println("For instance, C-b means hold ctrl key and press b, M-b means hold alt and press b\n");
System.out.println("Basic Keybindings:");
- System.out.println("\tC-l - clear screen");
+ System.out.println("\tC-l - clear screen");
System.out.println("\tC-a - beginning of line");
System.out.println("\tC-e - end of line");
System.out.println("\tC-b - backward character (left arrow also works)");
*/
public static void main(String[] args) {
int rv = 0;
-
+
try {
AAFSSO aafsso = new AAFSSO(args);
String noexit = aafsso.access().getProperty("no_exit");
if (aafsso.ok()) {
Define.set(access);
AuthzEnv env = new AuthzEnv(access);
-
+
Reader rdr = null;
boolean exitOnFailure = true;
/*
sb.append(args[i]);
}
}
-
+
AAFConHttp aafcon = new AAFConHttp(access);
-//
+//
// SecurityInfoC<?> si = aafcon.securityInfo();
// Locator<URI> loc;
-
+
aafsso.setLogDefault();
aafsso.setStdErrDefault();
-
+
// Note, with AAF Locator, this may not longer be necessary 3/2018 Jonathan
if (!aafsso.loginOnly()) {
// try {
// // Other Access is done writing to StdOut and StdErr, reset Std out
// aafsso.setLogDefault();
// }
-
+
TIMEOUT = Integer.parseInt(access.getProperty(Config.AAF_CONN_TIMEOUT, Config.AAF_CONN_TIMEOUT_DEF));
// HMangr hman = new HMangr(access, loc).readTimeout(TIMEOUT).apiVersion(Config.AAF_DEFAULT_API_VERSION);
-
+
if (access.getProperty(Config.AAF_DEFAULT_REALM)==null) {
access.setProperty(Config.AAF_DEFAULT_REALM, "people.osaaf.org");
aafsso.addProp(Config.AAF_DEFAULT_REALM, "people.osaaf.org");
}
-
- AAFcli aafcli = new AAFcli(access,env, new OutputStreamWriter(System.out),
+
+ AAFcli aafcli = new AAFcli(access,env, new OutputStreamWriter(System.out),
aafcon.hman(), aafcon.securityInfo(), aafcon.securityInfo().defSS);
// new HBasicAuthSS(si,aafsso.user(), access.decrypt(aafsso.enc_pass(),false)));
// }
System.out.println("Type 'help' for short help or 'help -d' for detailed help with aafcli commands");
System.out.println("Type '?' for help with command line editing");
System.out.println("Type 'q', 'quit', or 'exit' to quit aafcli\n");
-
+
ConsoleReader reader = new ConsoleReader();
try {
reader.setPrompt("aafcli > ");
-
+
String line;
while ((line = reader.readLine()) != null) {
showDetails = (line.contains("-d"));
-
+
if (line.equalsIgnoreCase("quit") || line.equalsIgnoreCase("q") || line.equalsIgnoreCase("exit")) {
break;
- } else if (line.equalsIgnoreCase("--help -d") || line.equalsIgnoreCase("help -d")
+ } else if (line.equalsIgnoreCase("--help -d") || line.equalsIgnoreCase("help -d")
|| line.equalsIgnoreCase("help")) {
line = "--help";
} else if (line.equalsIgnoreCase("cls")) {
}
} else if (rdr != null) {
BufferedReader br = new BufferedReader(rdr);
- String line;
- while ((line = br.readLine()) != null) {
- if (!aafcli.eval(line) && exitOnFailure) {
- rv = 1;
- break;
+ try {
+ String line;
+ while ((line = br.readLine()) != null) {
+ if (!aafcli.eval(line) && exitOnFailure) {
+ rv = 1;
+ break;
+ }
}
+ } finally {
+ br.close();
}
} else { // just run the command line
aafcli.verbose(false);
}
rv = aafcli.eval(sb.toString()) ? 0 : 1;
}
-
+
} finally {
aafcli.close();
-
+
// Don't close if No Reader, or it's a Reader of Standard In
if (rdr != null && !(rdr instanceof InputStreamReader)) {
rdr.close();
public boolean isTest() {
return AAFcli.isTest;
}
-
+
public boolean isDetailed() {
return AAFcli.showDetails;
}