On 01/04/2011 11:46 PM, Brian Stansberry wrote:
On 1/4/11 11:02 AM, David M. Lloyd wrote:
> I'd rather do something more dynamic where you can start with a node and
> just build up whatever you want from it:
>
> node = new ModelNode();
> node.get("operation").set("change-bind-port"); // string
> node.get("address").add("base, "domain"); // a list
> node.get("address").add("profile", "web");
> node.get("address").add("subsystem", "web");
> node.get("address").add("connector", "ssl");
> node.get("bind-port").set(8433); // int
> result = connection.execute(node); // goes over remoting
> System.out.println("Result is: " + result);
> // nicely formatted, JSON-style (but with more possible types)
>
> I wipped up a demo of this style of API at:
>
https://github.com/dmlloyd/jboss-dmr
>
> Notice there's only one public class and one type enum. (The Validation
> class isn't anything, just an experiment.)
>
The add(String, String) method isn't there; just set(String, ModelNode).
That would be ok if there were overloaded ModelNode constructors to
match the set() methods, allowing you to create a model node, set it's
value and pass it as a method parameter all in one line:
node.get("address").add().set("base", new
ModelNode("domain"));
A whole bunch of overloaded variants (set(String, String), set(String,
boolean), set(String, int) etc) would accomplish the same thing.
Yeah I knew you'd notice the missing stuff. :-) Well it's all fixed
now. I rounded it out with a bunch of methods that were missing,
including setEmptyList/setEmptyObject, plus some formatting improvements
for toString().
I played at creating a couple "update plans" (pretty much
like the
Alpha1 deployment plans) and it was pretty painless, except for the
minor nit above.
Maybe try again with the most recent version?
--
- DML