[jboss-jira] [JBoss JIRA] (WFCORE-508) Remove need to maintain discovery-option ordering separately from the option
Brian Stansberry (JIRA)
issues at jboss.org
Fri Jan 16 12:21:49 EST 2015
Brian Stansberry created WFCORE-508:
---------------------------------------
Summary: Remove need to maintain discovery-option ordering separately from the option
Key: WFCORE-508
URL: https://issues.jboss.org/browse/WFCORE-508
Project: WildFly Core
Issue Type: Enhancement
Components: Domain Management
Reporter: Brian Stansberry
Assignee: Alexey Loubyansky
Fix For: 1.0.0.Beta1
The various discovery-option (including the static-discovery variant) are represented as resources, with the ordering between them maintained in the parent /host=*/core-service=discovery-options resources.
This is too troublesome for the non-xml filesystem-based persistence stuff Alexey Loubyansky is working on, and is non-standard in general, as we are striving toward using lists instead of child resources.
I propose the following:
1) The /host=*/core-service=discovery-options "discovery-options" attribute should be converted into LIST of OBJECT from the current LIST of STRING.
If we can come up with a good name for an attribute, we can just add a new one and deprecate the old one, preserving compatibility. But if we do that the old "discovery-options" attribute can't be writable any longer.
2) The elements in the list can be of varied types. This reflects the fact that there are varied types of child resources (discovery-option and static-discovery). In the metadata this will be handled as if a general "discovery-option" type were a complex object with alternative top level fields. For example in the r-r-d output
{code}
"discovery-options" => {
"type" => LIST,
"value-type" => {
"static-discovery" => {
"alternatives" => ["custom-discovery"],
"type" => OBJECT,
"value-type" => {
"protocol" => {...},
"host" => {...}
"port" => {...}
}
},
"custom-discovery" => {
"alternatives" => ["static-discovery"]
"type" => OBJECT,
"value-type" => {
"code" => {...},
"module" => {...},
"properties" => {...}
}
}
}
}
{code}
3) We should continue to support the existing child resources as a sort of runtime-only (i.e. not directly persisted) alias into an item in the list. The Resource implementation for /host=*/core-service=discovery-options dynamically generates these. The persistence logic completely ignores them.
The problem is the child resource needs a name, while the list elements above really don't. We could require a superfluous "alias" attribute in the list elements, and probably we could generate one if one isn't provided. If an alias isn't provided, the name of the child resource becomes "unaliased-X" where X is the current index in the list. For a given element this could change though if the list changes. If people want a consistent name, provide an alias.
With these non-persistent child resources, we can still support the "add" operation. Invoking it has the result of adding a new element to the list.
The child resources could include an attribute indicating their current list position. This would be read-only (i.e. no trying to reorder the list by changing this) but perhaps the "add" op could accept it as a param to indicate the initial position in the list.
--
This message was sent by Atlassian JIRA
(v6.3.11#6341)
More information about the jboss-jira
mailing list