/** * Loads configuration from the specified input stream, using the specified configuration reader. * @param in where to read the configuration from. * @param reader reader that will be used to interpret the content of <code>in</code>. * @throws IOException if an I/O error occurs. * @throws ConfigurationException if a configuration error occurs. * @throws ConfigurationFormatException if a syntax error occurs in the configuration data. * @throws ConfigurationStructureException if the configuration data doesn't describe a valid configuration tree. * @see #read(InputStream) * @see #read(ConfigurationReader) * @see #read() */ synchronized void read(Reader in, ConfigurationReader reader) throws IOException, ConfigurationException { reader.read(in, new ConfigurationLoader(root)); }