Hi,

I am trying to migrate to commons configuration for all the usual reasons, but have run into the following problem which I would appreciate if a more knowledgeable person than me would glance at. I want to migrate a set of property files into a single XML-file to have a more maintainable system, while keeping the code as similar as possible.


The following code gives me an incorrect result:

SubnodeConfiguration c2 = configuration.configurationAt("environments/[EMAIL PROTECTED]'dvl9']");

The keys appear to be correct of c2, but the values are all empty.
This is against SVN of today, as the 1.3 release hits a JIRA.

-- output --

1 configurations:
environments/environment/env/@name = [server.name, server.type, server.program.lib] environments/environment/env/@value = [server, AS/400, /QSYS.LIB/DVEROBJ.LIB/]
environments/environment/@name = [dvl9]
-----
env/@name = []
env/@value = []
@name = []


--  configuration file --

<?xml version="1.0" encoding="ISO-8859-1" ?>

<configuration>
   <header>
       <result>
           <expressionEngine
config-class="org.apache.commons.configuration.tree.xpath.XPathExpressionEngine" />
       </result>
   </header>
   <override>
       <xml config-name="s" fileName="environments.xml"
           config-at="environments">
       </xml>
   </override>
   <additional>

       <!-- Configuration declarations that form a union configuration -->
   </additional>
</configuration>

-- environments.xml ----

<!-- four soft default environments -->
<environments>
   <environment name="dvl9">
       <env name="server.name" value="server" />
       <env name="server.type" value="AS/400" />
       <env name="server.program.lib" value="/QSYS.LIB/DVEROBJ.LIB/" />
   </environment>
</environments>

-- code --

package bad;


import java.util.Iterator;

import org.apache.commons.configuration.CombinedConfiguration;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.DefaultConfigurationBuilder;
import org.apache.commons.configuration.SubnodeConfiguration;

public class ConfigurationUtils {
public CombinedConfiguration getConfiguration() {
       try {
           return getConfiguration_();
       } catch (ConfigurationException e) {
           throw new RuntimeException("bad configuration", e);
       }
   }
public CombinedConfiguration getConfiguration_() throws ConfigurationException { DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
       builder.setFileName("config.xml");
       return builder.getConfiguration(true);
   }
public static void main(String[] args) { CombinedConfiguration configuration = new ConfigurationUtils().getConfiguration(); System.out.println(configuration.getNumberOfConfigurations() + " configurations:");
       Iterator keys = configuration.getKeys();
       while(keys.hasNext()) {
           String next = (String) keys.next();
           System.out.println(next + " = " + configuration.getList(next));
       }
       System.out.println("-----");
SubnodeConfiguration c2 = configuration.configurationAt("environments/[EMAIL PROTECTED]'dvl9']");
       Iterator keys2 = c2.getKeys();
       while(keys2.hasNext()) {
           String next = (String) keys2.next();
           System.out.println(next + " = " + configuration.getList(next));
       }
   }
}

==
I would appreciate any pointers and hints helping me figuring out what I have misunderstood.

--
 Thorbjørn Ravn Andersen

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to