From: <gh...@rh...> - 2009-08-08 18:18:17
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head><style type="text/css"><!-- #msg DL { border : 1px #006 solid; background-color : #369; padding : 6px; color : #fff; } #msg DT { float : left; width : 6em; font-weight : bold; } #msg DL, #msg DT, #msg UL, #msg LI { font-family : arial,helvetica,sans-serif; font-size : 10pt; } h3 { font-family : arial,helvetica,sans-serif; font-size : 10pt; font-weight : bold; } #msg PRE { overflow : auto; white-space : normal; background-color : #ffc; border : 1px #fc0 solid; padding : 6px; } #msg UL, PRE, .diff { overflow : auto; } #patch h4 { font-family : arial,helvetica,sans-serif; font-size : 10pt; } #patch h4 { padding: 8px; background : #369; color : #fff; margin : 0; } #patch .propset h4, #patch .binary h4 {margin: 0;} #patch pre {padding:0;line-height:1.2em;margin:0;} #patch .diff {background:#eeeeee;padding: 0 0 10px 0;} #patch .propset .diff, #patch .binary .diff {padding: 10px 0;} #patch span {display:block;padding:0 10px;} #patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;} #patch .add {background:#ddffdd;} #patch .rem {background:#ffdddd;} #patch .lines, .info {color:#888888;background:#ffffff;} .diff { width : 100%; } #msg DL { border : 1px #006 solid; background-color : #369; padding : 6px; color : #fff; } #msg DT { float : left; width : 6em; font-weight : bold; } #msg DL, #msg DT, #msg UL, #msg LI { font-family : arial,helvetica,sans-serif; font-size : 10pt; } h3 { font-family : arial,helvetica,sans-serif; font-size : 10pt; font-weight : bold; } #msg PRE { overflow : auto; white-space : normal; background-color : #ffc; border : 1px #fc0 solid; padding : 6px; } #msg UL, PRE, .diff { overflow : auto; } #patch h4 { font-family : arial,helvetica,sans-serif; font-size : 10pt; } #patch h4 { padding: 8px; background : #369; color : #fff; margin : 0; } #patch .propset h4, #patch .binary h4 {margin: 0;} #patch pre {padding:0;line-height:1.2em;margin:0;} #patch .diff {background:#eeeeee;padding: 0 0 10px 0;} #patch .propset .diff, #patch .binary .diff {padding: 10px 0;} #patch span {display:block;padding:0 10px;} #patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;} #patch .add {background:#ddffdd;} #patch .rem {background:#ffdddd;} #patch .lines, .info {color:#888888;background:#ffffff;} .diff { width : 100%; } --></style> <title>[rhq-project.org rhq] [4822] set console with for script results</title> </head> <body> <div id="msg"> <dl> <dt>Revision</dt> <dd>4822</dd> <dt>Author</dt> <dd>ghinkle</dd> <dt>Date</dt> <dd>2009-08-08 13:18:10 -0500 (Sat, 08 Aug 2009)</dd> </dl> <h3>Log Message</h3> <pre>set console with for script results completion for method result chaining</pre> <h3>Modified Paths</h3> <ul> <li><a href="#rhqtrunkmodulesenterpriseremotingclisrcmainjavaorgrhqenterpriseclientServiceCompletorjava">rhq/trunk/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/ServiceCompletor.java</a></li> <li><a href="#rhqtrunkmodulesenterpriseremotingclisrcmainjavaorgrhqenterpriseclientcommandsScriptCommandjava">rhq/trunk/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/commands/ScriptCommand.java</a></li> </ul> </div> <div id="patch"> <h3>Diff</h3> <a id="rhqtrunkmodulesenterpriseremotingclisrcmainjavaorgrhqenterpriseclientServiceCompletorjava"></a> <div class="modfile"><h4>Modified: rhq/trunk/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/ServiceCompletor.java (4821 => 4822)</h4> <pre class="diff"> <span class="info">--- rhq/trunk/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/ServiceCompletor.java 2009-08-08 16:25:34 UTC (rev 4821) +++ rhq/trunk/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/ServiceCompletor.java 2009-08-08 18:18:10 UTC (rev 4822) </span><span class="lines">@@ -152,6 +152,27 @@ </span><span class="cx"> } </span><span class="add">+ /** + * Base Object can be an object where we're looking for methods on it, or an + * interface. This recursively works off the completions left to right. + * + * Objects can be completed with fields or method calls. + * method parameters are completed with type matching + * method result chainings are completed based on declared return types + * + * e.g. have a Resource in context as myResource. Original string is + * "myResource.name". This method would be called with a baseObject == + * to myResource and the string "name". + * + * Note: this method will not and should not execute methods, but will + * read field properties to continue chained completions. + * + * @param baseObject the context object or class to complete from + * @param s the relative command string to check + * @param i + * @param list + * @return location of relative completion + */ </span><span class="cx"> public int contextComplete(Object baseObject, String s, int i, List list) { if (s.contains(".")) { String[] call = s.split("\\.", 2); </span><span class="lines">@@ -161,9 +182,17 @@ </span><span class="cx"> next = next.substring(0, next.indexOf("(")); } </span><span class="rem">- Map<String, Object> matches = getContextMatches(baseObject.getClass(), next); </span><span class="add">+ Class baseObjectClass = null; + if (baseObject instanceof Class) { + baseObjectClass = (Class) baseObject; + } else { + baseObjectClass = baseObject.getClass(); + } + + + Map<String, Object> matches = getContextMatches(baseObjectClass, next); </span><span class="cx"> Object rootObject = matches.get(next); </span><span class="rem">- if (rootObject instanceof PropertyDescriptor) { </span><span class="add">+ if (rootObject instanceof PropertyDescriptor && !(baseObject instanceof Class)) { </span><span class="cx"> try { rootObject = ((PropertyDescriptor)rootObject).getReadMethod().invoke(baseObject); </span></pre></div> <a id="rhqtrunkmodulesenterpriseremotingclisrcmainjavaorgrhqenterpriseclientcommandsScriptCommandjava"></a> <div class="modfile"><h4>Modified: rhq/trunk/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/commands/ScriptCommand.java (4821 => 4822)</h4> <pre class="diff"> <span class="info">--- rhq/trunk/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/commands/ScriptCommand.java 2009-08-08 16:25:34 UTC (rev 4821) +++ rhq/trunk/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/commands/ScriptCommand.java 2009-08-08 18:18:10 UTC (rev 4822) </span><span class="lines">@@ -166,7 +166,9 @@ </span><span class="cx"> script = new StringBuilder(); if (result != null) { // client.getPrintWriter().print("result: "); </span><span class="rem">- new TabularWriter(client.getPrintWriter()).print(result); </span><span class="add">+ TabularWriter writer = new TabularWriter(client.getPrintWriter()); + writer.setWidth(client.getConsoleWidth()); + writer.print(result); </span><span class="cx"> } } catch (ScriptException e) { </span> </pre> </div> </div> </body> </html> |