pgoldstein    2002/09/25 18:25:36

  Modified:    src/java/org/apache/james/transport MailetLoader.java
                        MatchLoader.java
               src/java/org/apache/james/core AvalonUsersStore.java
  Log:
  Minor class loader caching enhancement.  Thanks to Noel Bergman for the suggestion.
  
  
  Revision  Changes    Path
  1.6       +6 -1      
jakarta-james/src/java/org/apache/james/transport/MailetLoader.java
  
  Index: MailetLoader.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-james/src/java/org/apache/james/transport/MailetLoader.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- MailetLoader.java 25 Sep 2002 23:29:39 -0000      1.5
  +++ MailetLoader.java 26 Sep 2002 01:25:36 -0000      1.6
  @@ -67,13 +67,18 @@
           try {
               for (int i = 0; i < mailetPackages.size(); i++) {
                   String className = (String)mailetPackages.elementAt(i) + mailetName;
  +                ClassLoader theClassLoader = null;
                   try {
                       MailetConfigImpl configImpl = new MailetConfigImpl();
                       configImpl.setMailetName(mailetName);
                       configImpl.setConfiguration(configuration);
                       configImpl.setMailetContext(context);
   
  -                    Mailet mailet = (Mailet) 
this.getClass().getClassLoader().loadClass(className).newInstance();
  +                    if (theClassLoader == null) {
  +                        theClassLoader = this.getClass().getClassLoader();
  +                    }
  +
  +                    Mailet mailet = (Mailet) 
theClassLoader.loadClass(className).newInstance();
                       mailet.init(configImpl);
                       return mailet;
                   } catch (ClassNotFoundException cnfe) {
  
  
  
  1.7       +6 -1      
jakarta-james/src/java/org/apache/james/transport/MatchLoader.java
  
  Index: MatchLoader.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-james/src/java/org/apache/james/transport/MatchLoader.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- MatchLoader.java  25 Sep 2002 23:29:39 -0000      1.6
  +++ MatchLoader.java  26 Sep 2002 01:25:36 -0000      1.7
  @@ -71,6 +71,7 @@
                   condition = matchName.substring(i + 1);
                   matchName = matchName.substring(0, i);
               }
  +            ClassLoader theClassLoader = null;
               for (i = 0; i < matcherPackages.size(); i++) {
                   String className = (String)matcherPackages.elementAt(i) + matchName;
                   try {
  @@ -79,7 +80,11 @@
                       configImpl.setCondition(condition);
                       configImpl.setMailetContext(context);
   
  -                    Matcher matcher = (Matcher) 
this.getClass().getClassLoader().loadClass(className).newInstance();
  +                    if (theClassLoader == null) {
  +                        theClassLoader = this.getClass().getClassLoader();
  +                    }
  +
  +                    Matcher matcher = (Matcher) 
theClassLoader.loadClass(className).newInstance();
                       matcher.init(configImpl);
                       return matcher;
                   } catch (ClassNotFoundException cnfe) {
  
  
  
  1.12      +7 -1      
jakarta-james/src/java/org/apache/james/core/AvalonUsersStore.java
  
  Index: AvalonUsersStore.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-james/src/java/org/apache/james/core/AvalonUsersStore.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- AvalonUsersStore.java     25 Sep 2002 23:29:39 -0000      1.11
  +++ AvalonUsersStore.java     26 Sep 2002 01:25:36 -0000      1.12
  @@ -107,6 +107,7 @@
           repositories = new HashMap();
   
           Configuration[] repConfs = configuration.getChildren("repository");
  +        ClassLoader theClassLoader = null;
           for ( int i = 0; i < repConfs.length; i++ )
           {
               Configuration repConf = repConfs[i];
  @@ -116,7 +117,12 @@
               if (getLogger().isDebugEnabled()) {
                   getLogger().debug("Starting " + repClass);
               }
  -            UsersRepository rep = (UsersRepository) 
this.getClass().getClassLoader().loadClass(repClass).newInstance();
  +
  +            if (theClassLoader == null) {
  +                theClassLoader = this.getClass().getClassLoader();
  +            }
  +
  +            UsersRepository rep = (UsersRepository) 
theClassLoader.loadClass(repClass).newInstance();
   
               setupLogger((Component)rep);
   
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to