Thanks for reporting . Could you please Open a bugreport and attach a diff there ?
Bye, Norman 2010/11/14, Toël Hartmann <[email protected]>: > fetchmail configure function does not handle multiple accounts properly > > (as described in > http://james.apache.org/server/3/configuration_fetchmail.html, under > "One Account, One User") > > Here is an updated code allowing the parsing of the configuration with > multiple accounts: > > > /** > * Method configure parses and validates the Configuration data and > creates > * a new<code>ParsedConfiguration</code>, an<code>Account</code> for > each > * configured static account and > a<code>ParsedDynamicAccountParameters</code> > * for each dynamic account. > * > * @see > org.apache.avalon.framework.configuration.Configurable#configure(Configuration) > */ > @SuppressWarnings("unchecked") > public void configure(HierarchicalConfiguration configuration) throws > ConfigurationException { > > // Set any Session parameters passed in the Configuration > setSessionParameters(configuration); > > // Create the ParsedConfiguration used in the delegation chain > ParsedConfiguration parsedConfiguration = > new ParsedConfiguration( > configuration, > logger, > getServer(), > getLocalUsers(), > getDNSService()); > setParsedConfiguration(parsedConfiguration); > > // Setup the Accounts > List<HierarchicalConfiguration> allAccounts = > configuration.configurationsAt("accounts"); > if (allAccounts.size()< 1) > throw new ConfigurationException("Missing<accounts> > section."); > > if (allAccounts.size()> 1) > throw new ConfigurationException("Too many<accounts> sections, > there must be exactly one"); > > HierarchicalConfiguration accounts = allAccounts.get(0); > > > if (accounts.getKeys().hasNext() == false) > throw new ConfigurationException("Missing<account> section."); > > List<Node> accountsChildren = accounts.getRoot().getChildren(); > int i = 0; > > // Create an Account for every configured account > for (Node accountsChild: accountsChildren) { > > String accountsChildName = accountsChild.getName(); > > if ("alllocal".equals(accountsChildName)) { > HierarchicalConfiguration accountsChildConfig = > accounts.configurationAt(accountsChildName); > //<allLocal> is dynamic, save the parameters for accounts > to > // be created when the task is triggered > getParsedDynamicAccountParameters().add(new > ParsedDynamicAccountParameters(i, accountsChildConfig)); > continue; > } > > if ("account".equals(accountsChildName)) { > // Create an Account for the named user and > // add it to the list of static accounts > > List<HierarchicalConfiguration> accountsChildsConfig = > accounts.configurationsAt(accountsChildName); > Account account = new Account( > i, > parsedConfiguration, > accountsChildsConfig.get(i).getString("[...@user]"), > > accountsChildsConfig.get(i).getString("[...@password]"), > > accountsChildsConfig.get(i).getString("[...@recipient]"), > > accountsChildsConfig.get(i).getBoolean("[...@ignorercpt-header]"), > > accountsChildsConfig.get(i).getString("[...@customrcpt-header]",""), > getSession()); > getStaticAccounts().add(account); > i++; > > continue; > } > > throw new ConfigurationException( > "Illegal token:<" > + accountsChildName > + "> in<accounts>"); > } > } > > > --------------------------------------------------------------------- > 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]
