[
https://issues.jboss.org/browse/WFLY-3705?page=com.atlassian.jira.plugin....
]
Brian Stansberry commented on WFLY-3705:
----------------------------------------
Agreed, it should be
{code}
T | 0 | No recursion
{code}
The GlobalOperationAttributes.RECURSIVE_DEPTH field should be fixed to remove the
".setDefaultValue(new ModelNode(0))" call to the builder. There really is no
default value here if '0' behaves differently from 'U'.
That requires changes to how GlobalOperationAttributes.RECURSIVE_DEPTH is used though. If
an attribute has no default value, you can't do this as it is done in
ReadResourceDescriptionHandler:
{code}
final int recursiveDepth = RECURSIVE_DEPTH.resolveModelAttribute(context,
operation).asInt();
{code}
It needs to be more like
{code}
ModelNode depthNode = RECURSIVE_DEPTH.resolveModelAttribute(context, operation);
final Integer recursiveDepth = depthNode.isDefined() ? depthNode.asInt(): null;
{code}
And then null checks wherever recursiveDepth is used. Or the code could use an int with -1
representing undefined. That would be simpler:
{code}
final int recursiveDepth = RECURSIVE_DEPTH.resolveModelAttribute(context,
operation).asInt(-1);
{code}
ReadResourceHandler uses an older idiom to read the data from the operation that isn't
affected by removing the default value from the RECURSIVE_DEPTH definition.
read-resource recursive-depth has no effect when recursive=true
---------------------------------------------------------------
Key: WFLY-3705
URL:
https://issues.jboss.org/browse/WFLY-3705
Project: WildFly
Issue Type: Bug
Security Level: Public(Everyone can see)
Components: Documentation, Domain Management
Affects Versions: 8.1.0.Final
Environment: Linux
aimobile-sm.servicemesh.com 3.15.7-200.fc20.x86_64 #1 SMP Mon
Jul 28 18:50:26 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
Reporter: Arcadiy Ivanov
Assignee: Brian Stansberry
The code inside ReadResourceHandler.doExecuteInternal(OperationContext context, ModelNode
operation) goes as follows:
{noformat}
final int recursiveDepth =
operation.get(ModelDescriptionConstants.RECURSIVE_DEPTH).asInt(0);
final boolean recursive = recursiveDepth > 0 ||
operation.get(ModelDescriptionConstants.RECURSIVE).asBoolean(false);
{noformat}
The [
documentation|https://docs.jboss.org/author/display/WFLY8/Global+operations]
states:
recursive-depth – (int) – The depth to which information about child resources should be
included *if recursive is {{true}*. If not set, the depth will be unlimited; i.e. all
descendant resources will be included.
The logic, however, as implemented goes - either recursive-depth is greater than zero OR
recursive is true.
The proper implementation should be:
{noformat}
final int recursiveDepth =
operation.get(ModelDescriptionConstants.RECURSIVE_DEPTH).asInt(0);
final boolean recursive =
operation.get(ModelDescriptionConstants.RECURSIVE).asBoolean(false) &&
(!operation.get(ModelDescriptionConstants.RECURSIVE_DEPTH).isDefined() ||
recursiveDepth > 0);
{noformat}
The above snippet works as follows: recurs IF recursive is set AND (either
recursive-depth is not defined OR recursive-depth is greater than 0).
--
This message was sent by Atlassian JIRA
(v6.2.6#6264)