Am 30.05.2012 16:53, schrieb Alexander Selg:
Hi,

I'm using a different implementation of the DefaultExpressionEngine. I
use attributes in our applications conf.xml to filter the result of
DefaultExpressionEngine.query().
So I have a config file like

<configuration>
        <someStrings environment="test">str1,str2,str3</someStrings>
        <someStrings environment="prod">str4,str5,str6</someStrings>
</configuration>

In the query() methode of MyExpressionEngine I want to access these attributes

        List<ConfigurationNode>  queryResults = super.query(root, key);
        for (ConfigurationNode queryResult : queryResults) {
            attributes = queryResult.getAttributes();
            ...
        }

The problem is that I only get the attributes for the first node - the
subsequent nodes don't have any attributes set.
So for "str1" I'll get the attribute environment="test", for "str2"
and "str3" I'll get no attributes.

Is that a bug?
Am I doing something wrong?

I'm using commons-configuration 1.8 with jdk1.6

Any help would be appreciated,
Alex

Not sure whether this behavior is somewhere documented, but it is indeed intended. There are unit tests for XMLConfiguration which test that attributes are only assigned to the first node of a list.

I guess, there are different use cases. When the code was developed a decision had to be taken. At that time assigning attributes only to the first node seemed to be straightforward.

If you have any control over your XML, I would recommend to avoid comma-separated properties with multiple values. In XML lists can be defined in a natural way by just repeating tags. Then the association between attributes and values nodes is obvious.

HTH
Oliver


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to