You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by pg...@apache.org on 2002/09/30 09:35:09 UTC
cvs commit: jakarta-james/src/java/org/apache/james/core AvalonMailStore.java
pgoldstein 2002/09/30 00:35:09
Modified: src/java/org/apache/james/core AvalonMailStore.java
Log:
Fixed a major bug that was exposed by a recent change to JDBCMailRepository to restore dbfile capability.
This bug caused configurations of one repository to be used by another differently configured
repository of the same class. For some configurations, this means that a formerly db repository
behaved as if it were a dbfile repository.
Before using this code make sure that you don't need anything in var/dbmail.
Revision Changes Path
1.15 +13 -8 jakarta-james/src/java/org/apache/james/core/AvalonMailStore.java
Index: AvalonMailStore.java
===================================================================
RCS file: /home/cvs/jakarta-james/src/java/org/apache/james/core/AvalonMailStore.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- AvalonMailStore.java 25 Sep 2002 23:29:39 -0000 1.14
+++ AvalonMailStore.java 30 Sep 2002 07:35:09 -0000 1.15
@@ -51,7 +51,7 @@
// map of [protocol(destinationURL) + type ]->classname of repository;
private HashMap classes;
- // map of [Repository Class]->default config for repository.
+ // map of [protocol(destinationURL) + type ]->default config for repository.
private HashMap defaultConfigs;
/**
@@ -175,11 +175,20 @@
{
String protocol = protocols[i].getValue();
+ // Get the default configuration for these protocol/type combinations.
+ Configuration defConf = repConf.getChild("config");
+
for ( int j = 0; j < types.length; j++ )
{
String type = types[j].getValue();
String key = protocol + type ;
+ if (classes.get(key) != null) {
+ throw new ConfigurationException("The combination of protocol and type comprise a unique key for repositories. This constraint has been violated. Please check your repository configuration.");
+ }
classes.put(key, className);
+ if (defConf != null) {
+ defaultConfigs.put(key, defConf);
+ }
if (infoEnabled) {
StringBuffer logBuffer =
new StringBuffer(128)
@@ -192,11 +201,6 @@
}
}
- // Get the default configuration for this Repository class.
- Configuration defConf = repConf.getChild("config");
- if ( defConf != null ) {
- defaultConfigs.put(className, defConf);
- }
}
/**
@@ -258,7 +262,8 @@
}
return (Component)reply;
} else {
- String repClass = (String) classes.get( protocol + type );
+ String key = protocol + type;
+ String repClass = (String) classes.get( key );
if (getLogger().isDebugEnabled()) {
logBuffer =
@@ -277,7 +282,7 @@
// and the values in the selector.
// If no default values, just use the selector.
Configuration config;
- Configuration defConf = (Configuration)defaultConfigs.get(repClass);
+ Configuration defConf = (Configuration)defaultConfigs.get(key);
if ( defConf == null) {
config = repConf;
}
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>