You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Oliver Heger (JIRA)" <ji...@apache.org> on 2009/01/23 21:47:59 UTC
[jira] Commented: (CONFIGURATION-360)
java.lang.IllegalArgumentException: Passed in key must select exactly one
node:
[ https://issues.apache.org/jira/browse/CONFIGURATION-360?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12666696#action_12666696 ]
Oliver Heger commented on CONFIGURATION-360:
--------------------------------------------
If I understand you correctly, you would like the beans defined by the {{styleDefinition}} elements to be collected into a list and then passed to a {{setStyleDefinitions()}} method of the window manager bean, correct?
However, {{XMLBeanDeclaration}} does not support list properties. There is currently no simple way to achieve this I am aware of. You could create your own bean declaration class derived from {{XMLBeanDeclaration}} and override the {{getNestedBeanDeclarations()}} method to deal with multiple occurrences of nested elements, but this is certainly not trivial.
As is mentioned in the user guide (http://commons.apache.org/configuration/userguide/howto_beans.html, especially refer to the paragraph in italics), the mechanisms to define beans provided by Commons Configuration are limited. If your requirements are more complex, you should think about using a real IoC container.
> java.lang.IllegalArgumentException: Passed in key must select exactly one node:
> -------------------------------------------------------------------------------
>
> Key: CONFIGURATION-360
> URL: https://issues.apache.org/jira/browse/CONFIGURATION-360
> Project: Commons Configuration
> Issue Type: Improvement
> Affects Versions: 1.5
> Reporter: kog
> Priority: Blocker
>
> I am trying to pass a list of values as parameters(Key,Vaue) in a XML file. I am trying to pass the XML file to the XMLBeanDeclaration. It throws an error as noted below. Please note Key is the same but values are different in the list below.
> <?xml version="1.0" encoding="ISO-8859-1" ?>
> <config>
> <gui>
> <windowManager config-class="examples.windows.DefaultWindowManager"
> closable="false" resizable="true" defaultWidth="400"
> defaultHeight="250">
> <styleDefinition config-class="examples.windows.WindowStyleDefinition"
> backColor="#ffffff" foreColor="0080ff" iconName="myicon" />
> <styleDefinition config-class="examples.windows.WindowStyleDefinition"
> backColor="#00000" foreColor="8888ff" iconName="youricon" />
> </windowManager>
> </gui>
> </config>
> I have a test configuration like this:
> private TestConfiguration(String configFile) {
> try {
> URL configURL = getClass().getResource("windowconfig.xml");
> XMLConfiguration config = new XMLConfiguration(configURL);
> BeanDeclaration decl = new XMLBeanDeclaration(config, "gui.windowManager");
> WindowManager wm = (WindowManager) BeanHelper.createBean(decl);
> } catch (Exception exc) {
> throw new RuntimeException("Initialization failed", exc);
> }
> }
> This is the exception I am getting from the above test:
> java.lang.IllegalArgumentException: Passed in key must select exactly one node: styleDefinition
> at org.apache.commons.configuration.HierarchicalConfiguration.configurationAt(HierarchicalConfiguration.java:581)
> at org.apache.commons.configuration.HierarchicalConfiguration.configurationAt(HierarchicalConfiguration.java:601)
> at org.apache.commons.configuration.beanutils.XMLBeanDeclaration.getNestedBeanDeclarations(XMLBeanDeclaration.java:313)
> The HeirarchialConfiguration.configurationAt method only takes one value but not the list of values during XMLBeanDeclaration.
> Is there an alternative mechanism to pass a list of values? I would greatly appreciate any help with this.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.