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 se...@apache.org on 2001/09/13 14:17:45 UTC

cvs commit: jakarta-james/src/java/org/apache/james/nntpserver/repository NNTPRepositoryImpl.java NNTPSpooler.java NNTPUtil.java

serge       01/09/13 05:17:45

  Modified:    src/java/org/apache/james/nntpserver/repository
                        NNTPRepositoryImpl.java NNTPSpooler.java
                        NNTPUtil.java
  Log:
  Buchi's patch: fixes the dir context for the NNTP repositories.
  
  Revision  Changes    Path
  1.2       +16 -5     jakarta-james/src/java/org/apache/james/nntpserver/repository/NNTPRepositoryImpl.java
  
  Index: NNTPRepositoryImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-james/src/java/org/apache/james/nntpserver/repository/NNTPRepositoryImpl.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- NNTPRepositoryImpl.java	2001/05/15 14:41:40	1.1
  +++ NNTPRepositoryImpl.java	2001/09/13 12:17:45	1.2
  @@ -14,6 +14,9 @@
   import org.apache.avalon.framework.configuration.Configurable;
   import org.apache.avalon.framework.configuration.Configuration;
   import org.apache.avalon.framework.configuration.ConfigurationException;
  +import org.apache.avalon.framework.context.Context;
  +import org.apache.avalon.framework.context.ContextException;
  +import org.apache.avalon.framework.context.Contextualizable;
   import org.apache.avalon.framework.logger.AbstractLoggable;
   import org.apache.avalon.excalibur.io.AndFileFilter;
   import org.apache.avalon.excalibur.io.DirectoryFileFilter;
  @@ -23,8 +26,9 @@
   import org.apache.avalon.phoenix.Block;
   
   public class NNTPRepositoryImpl extends AbstractLoggable 
  -    implements NNTPRepository, Configurable, Initializable, Block
  +    implements NNTPRepository, Contextualizable, Configurable, Initializable, Block
   {
  +    private Context context;
       private boolean readOnly;
       // the groups are located under this path.
       private File rootPath;
  @@ -33,18 +37,25 @@
       private NNTPSpooler spool;
       private ArticleIDRepository articleIDRepo;
       private String[] addGroups = null;
  +
  +
  +    public void contextualize(Context context)
  +            throws ContextException {
  +        this.context = context;
  +    }
  +
       public void configure( Configuration configuration ) throws ConfigurationException {
           //System.out.println(getClass().getName()+": configure");
           //NNTPUtil.show(configuration,System.out);
           readOnly = configuration.getChild("readOnly").getValueAsBoolean(false);
  -        rootPath = NNTPUtil.getDirectory(configuration,"rootPath");
  -        tempPath = NNTPUtil.getDirectory(configuration,"tempPath");
  -        File articleIDPath = NNTPUtil.getDirectory(configuration,"articleIDPath");
  +        rootPath = NNTPUtil.getDirectory(context, configuration, "rootPath");
  +        tempPath = NNTPUtil.getDirectory(context, configuration, "tempPath");
  +        File articleIDPath = NNTPUtil.getDirectory(context, configuration, "articleIDPath");
           String articleIDDomainSuffix = configuration.getChild("articleIDDomainSuffix")
               .getValue("foo.bar.sho.boo");
           articleIDRepo = new ArticleIDRepository(articleIDPath,articleIDDomainSuffix);
           spool = (NNTPSpooler)NNTPUtil.createInstance
  -            (configuration.getChild("spool"),getLogger(),
  +            (context,configuration.getChild("spool"),getLogger(),
                "org.apache.james.nntpserver.repository.NNTPSpooler");
           spool.setRepository(this);
           spool.setArticleIDRepository(articleIDRepo);
  
  
  
  1.2       +14 -2     jakarta-james/src/java/org/apache/james/nntpserver/repository/NNTPSpooler.java
  
  Index: NNTPSpooler.java
  ===================================================================
  RCS file: /home/cvs/jakarta-james/src/java/org/apache/james/nntpserver/repository/NNTPSpooler.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- NNTPSpooler.java	2001/05/15 14:41:40	1.1
  +++ NNTPSpooler.java	2001/09/13 12:17:45	1.2
  @@ -14,6 +14,9 @@
   import org.apache.avalon.framework.configuration.Configurable;
   import org.apache.avalon.framework.configuration.Configuration;
   import org.apache.avalon.framework.configuration.ConfigurationException;
  +import org.apache.avalon.framework.context.Context;
  +import org.apache.avalon.framework.context.ContextException;
  +import org.apache.avalon.framework.context.Contextualizable;
   import org.apache.avalon.framework.logger.AbstractLoggable;
   import org.apache.avalon.framework.logger.Loggable;
   import org.apache.avalon.excalibur.io.IOUtil;
  @@ -21,13 +24,22 @@
   
   // processes entries and sends to appropriate groups.
   // eats up inappropriate entries.
  -class NNTPSpooler extends AbstractLoggable implements Configurable, Initializable {
  +class NNTPSpooler extends AbstractLoggable 
  +        implements Contextualizable, Configurable, Initializable {
  +
  +    private Context context;
       private Worker[] worker;
       private File spoolPath;
  +
  +    public void contextualize(final Context context) 
  +            throws ContextException {
  +        this.context = context;
  +    }
  +
       public void configure( Configuration configuration ) throws ConfigurationException {
           //System.out.println(getClass().getName()+": configure");
           //NNTPUtil.show(configuration,System.out);
  -        spoolPath = NNTPUtil.getDirectory(configuration,"spoolPath");
  +        spoolPath = NNTPUtil.getDirectory(context, configuration, "spoolPath");
           int threadCount = configuration.getChild("threadCount").getValueAsInteger(1);
           int threadIdleTime = configuration.getChild("threadIdleTime").getValueAsInteger(1000);
           //String tgName=configuration.getChild("threadGroupName").getValue("NNTPSpooler");
  
  
  
  1.2       +18 -5     jakarta-james/src/java/org/apache/james/nntpserver/repository/NNTPUtil.java
  
  Index: NNTPUtil.java
  ===================================================================
  RCS file: /home/cvs/jakarta-james/src/java/org/apache/james/nntpserver/repository/NNTPUtil.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- NNTPUtil.java	2001/05/15 14:41:40	1.1
  +++ NNTPUtil.java	2001/09/13 12:17:45	1.2
  @@ -12,19 +12,27 @@
   import org.apache.avalon.framework.configuration.Configurable;
   import org.apache.avalon.framework.configuration.Configuration;
   import org.apache.avalon.framework.configuration.ConfigurationException;
  +import org.apache.avalon.framework.context.Context;
  +import org.apache.avalon.framework.context.Contextualizable;
   import org.apache.avalon.framework.logger.Loggable;
  +import org.apache.avalon.phoenix.BlockContext;
   import org.apache.james.nntpserver.NNTPException;
   import org.apache.log.Logger;
   
   // processes entries and sends to appropriate groups.
   // eats up inappropriate entries.
   public class NNTPUtil {
  -    static File getDirectory(Configuration configuration,String child)
  +    static File getDirectory(Context context, Configuration configuration, String child)
           throws ConfigurationException
       {
           String str = configuration.getChild(child).getValue();
  -        if ( str.toLowerCase().startsWith("file://") )
  -            str = str.substring("file://".length());
  +        if (!str.toLowerCase().startsWith("file://") ) {
  +            throw new ConfigurationException
  +                ("Malformed " + child + " - Must be of the format \"file://<filename>\".");
  +        }
  +        str = str.substring("file://".length());
  +        str = ((BlockContext)context).getBaseDirectory() +
  +                File.separator + str;
           File f = new File(str);
           if ( f.exists() && f.isFile() )
               throw new NNTPException("Expecting '"+f.getAbsolutePath()+"' directory");
  @@ -32,8 +40,11 @@
               f.mkdirs();
           return f;
       }
  -    public static Object createInstance(Configuration configuration,Logger logger,
  -                                        String clsName) throws ConfigurationException
  +    public static Object createInstance(Context context, 
  +                                        Configuration configuration,
  +                                        Logger logger,
  +                                        String clsName) 
  +            throws ConfigurationException
       {
           try { clsName = configuration.getAttribute("class");
           } catch(ConfigurationException ce) { }
  @@ -41,6 +52,8 @@
               Object obj = Class.forName(clsName).newInstance();
               if ( obj instanceof Loggable )
                   ((Loggable)obj).setLogger( logger );
  +            if (obj instanceof Contextualizable) 
  +                ((Contextualizable)obj).contextualize(context);
               if ( obj instanceof Configurable )
                   ((Configurable)obj).configure(configuration.getChild("configuration"));
               return obj;
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: james-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: james-dev-help@jakarta.apache.org