Am 04.01.2011 um 18:02 schrieb David M. Lloyd:
========
MetaValues
I agree with some of these types but not others:
* SimpleValue
+ String - yes
I am not sure if wrapping simple objects brings a lot of benefits.
Wrapping/unwrapping adds typing, complexity and cpu usage.
Composing like in the example of SimpleValue<String,int> socket;
makes sense though.
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 like this - if there is a way to introspect the node in order
to know what it would expect (i.E. is it 'bind-port' or 'port' or
'bindPort' ?)
Now add this to a versioned rest endpoint
/1/setFoobar/#44
and the api can partially be updated later with new versions of the endpoint
/2/setFooBar++/#44
MetaTypes
I gotta be honest, I'm not liking this API. I don't see this as
I am lucky it is not only me :-)
something users will consider to be a huge advantage over JMX. I
know
there are notes in here about improving user-friendliness but I do not
A big issue in previous AS versions is/was that most information exposed via
JMX (in standard MBeans) was without any semantic
- operation foo(String, String, String)
- operation foo(String, int, Float)
What are the expected arguments?
The registry of operations should be external to the model itself; it
would be a map with a key that corresponds to the operation name plus a
"path" specification to the applicable node type.
Did I understand you correctly that the path is not in the key?
I think it is also important to be able to navigate to model elements
over this path (think xpath expresssion) and to be able to directly
address an element /domain1/server14/hornetq/queue1/queue_lenght
{
"operation-name" => "change-bind-port",
"address" => [
("base"=>"domain"),
("profile"=>"*"),
("subsystem"=>"web"),
("connector"=>"*"),
],
"request-properties" => {
"bind-port" => {
type => INTEGER,
required => true,
min-value => 0,
max-value => 65535,
}
},
"reply-properties" => {}
}
Yep
Heiko
--
Reg. Adresse: Red Hat GmbH, Otto-Hahn-Strasse 20, 85609 Dornach bei München
Handelsregister: Amtsgericht München HRB 153243
Geschaeftsführer: Brendan Lane, Charlie Peters, Michael Cunningham, Charles Cachera