You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by we...@apache.org on 2004/08/04 23:22:53 UTC

cvs commit: jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/deployment/impl StandardDeploymentManager.java

weaver      2004/08/04 14:22:53

  Modified:    portal/src/java/org/apache/jetspeed/deployment/impl
                        StandardDeploymentManager.java
  Log:
  Support multiple staging directories.
  
  Revision  Changes    Path
  1.3       +63 -30    jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/deployment/impl/StandardDeploymentManager.java
  
  Index: StandardDeploymentManager.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/deployment/impl/StandardDeploymentManager.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- StandardDeploymentManager.java	21 Jul 2004 00:46:21 -0000	1.2
  +++ StandardDeploymentManager.java	4 Aug 2004 21:22:53 -0000	1.3
  @@ -25,6 +25,7 @@
   import java.util.Iterator;
   import java.util.List;
   import java.util.Map;
  +import java.util.StringTokenizer;
   
   import org.apache.commons.logging.Log;
   import org.apache.commons.logging.LogFactory;
  @@ -43,7 +44,8 @@
    * Implementation of {@link org.apache.jetspeed.deployment.DeploymentManager}
    * 
    * @author <a href="mailto:weaver@apache.org">Scott T. Weaver </a>
  - * @version $Id$
  + * @version $Id: StandardDeploymentManager.java,v 1.2 2004/07/21 00:46:21 taylor
  + *          Exp $
    *  
    */
   public class StandardDeploymentManager implements Startable, DeploymentManager
  @@ -58,26 +60,33 @@
   
       protected long scanningDelay;
   
  -    protected String stagingDirectory;
  +    protected String stagingDirectories;
   
  -    protected File stagingDirectoryAsFile;
  +    protected File[] stagingDirectoriesAsFiles;
   
       protected Map fileDates;
   
       protected List deployedFiles;
   
  -
       /**
        * 
  -     * @param stagingDirectory
  +     * @param stagingDirectories
        * @param scanningDelay
        * @param deploymentListeners
        */
  -    public StandardDeploymentManager( String stagingDirectory, long scanningDelay, Collection deploymentListeners )
  +    public StandardDeploymentManager( String stagingDirectories, long scanningDelay, Collection deploymentListeners )
       {
           this.scanningDelay = scanningDelay;
  -        this.stagingDirectory = stagingDirectory;
  -        this.stagingDirectoryAsFile = new File(stagingDirectory);
  +        this.stagingDirectories = stagingDirectories;
  +        StringTokenizer dirTokenizer = new StringTokenizer(stagingDirectories, ",");
  +        this.stagingDirectoriesAsFiles = new File[dirTokenizer.countTokens()];
  +        int i = 0;
  +        while (dirTokenizer.hasMoreTokens())
  +        {
  +            this.stagingDirectoriesAsFiles[i] = new File((String) dirTokenizer.nextToken());
  +            i++;
  +        }
  +
           this.deploymentListeners = deploymentListeners;
           this.deployedFiles = new ArrayList();
           this.fileDates = new HashMap();
  @@ -99,13 +108,18 @@
   
           log.info("Deployment scanning delay: " + scanningDelay);
   
  -        log.info("Deployment staging directory: " + stagingDirectory);
  +        log.info("Deployment staging directory: " + stagingDirectories);
   
  -        if (!stagingDirectoryAsFile.exists())
  +        for (int i = 0; i < stagingDirectoriesAsFiles.length; i++)
           {
  -            log.error(stagingDirectoryAsFile.getAbsolutePath() + " does not exist, auto deployment disabled.");
  -            stop();
  -            return;
  +            if (!stagingDirectoriesAsFiles[i].exists())
  +            {
  +                log
  +                        .error(stagingDirectoriesAsFiles[i].getAbsolutePath()
  +                                + " does not exist, auto deployment disabled.");
  +                stop();
  +                return;
  +            }
           }
   
           if (scanningDelay > -1)
  @@ -158,12 +172,12 @@
   
       public void fireDeploymentEvent()
       {
  -        String[] stagedFiles = stagingDirectoryAsFile.list();
  +        File[] stagedFiles = getAllStagedFiles();
           for (int i = 0; i < stagedFiles.length; i++)
           {
               // check for new deployment
  -            File aFile = new File(stagingDirectoryAsFile, stagedFiles[i]);
  -            if (!isDeployed(stagedFiles[i]))
  +            File aFile = stagedFiles[i];
  +            if (!isDeployed(aFile.getAbsolutePath()))
               {
                   DeploymentObject deploymentObject = null;
                   try
  @@ -174,7 +188,7 @@
                       }
                       catch (FileNotDeployableException e)
                       {
  -                        // log.info(e.getMessage());                        
  +                        // log.info(e.getMessage());
                           continue;
                       }
   
  @@ -182,11 +196,11 @@
                       dispatch(event);
                       if (event.getStatus() == DeploymentEvent.STATUS_OKAY)
                       {
  -                        deployedFiles.add(stagedFiles[i]);
  +                        deployedFiles.add(aFile.getAbsolutePath());
                           // record the lastModified so we can watch for
                           // re-deployment
                           long lastModified = aFile.lastModified();
  -                        fileDates.put(stagedFiles[i], new Long(lastModified));
  +                        fileDates.put(aFile.getAbsolutePath(), new Long(lastModified));
                       }
                       else
                       {
  @@ -228,21 +242,20 @@
        */
       public void fireUndeploymentEvent()
       {
  -        List fileList = Arrays.asList(StandardDeploymentManager.this.stagingDirectoryAsFile.list());
  +        List stagedFileList= Arrays.asList(getAllStagedFiles());
   
           for (int i = 0; i < deployedFiles.size(); i++)
           {
               // get a current list of all the files in the deploy directory
               String fileName = (String) deployedFiles.get(i);
  -            File aFile = new File(stagingDirectoryAsFile, fileName);
  +            File aFile = new File(fileName);
   
               // File is still on the file system, so skip it
  -            if (fileList.contains(fileName))
  +            if (stagedFileList.contains(aFile))
               {
                   continue;
               }
   
  -       
               try
               {
   
  @@ -264,7 +277,7 @@
               catch (Exception e1)
               {
                   log.error("Error undeploying " + aFile.getAbsolutePath(), e1);
  -            }   
  +            }
   
           }
   
  @@ -324,13 +337,12 @@
        */
       public void fireRedeploymentEvent()
       {
  -        List fileList = Arrays.asList(StandardDeploymentManager.this.stagingDirectoryAsFile.list());
  -        
  +                
           for (int i = 0; i < deployedFiles.size(); i++)
           {
               // get a current list of all the files in the deploy directory
               String fileName = (String) deployedFiles.get(i);
  -            File aFile = new File(stagingDirectoryAsFile, fileName);
  +            File aFile = new File(fileName);
   
               // File is not on the file system, so skip it
               Long longDateObj = ((Long) fileDates.get(fileName));
  @@ -349,12 +361,13 @@
                   try
                   {
                       deploymentObject = new StandardDeploymentObject(aFile);
  -                    DeploymentEvent event = new DeploymentEventImpl(DeploymentEvent.EVENT_TYPE_REDEPLOY, deploymentObject);
  -                    log.info("Re-deploying "+aFile.getAbsolutePath());
  +                    DeploymentEvent event = new DeploymentEventImpl(DeploymentEvent.EVENT_TYPE_REDEPLOY,
  +                            deploymentObject);
  +                    log.info("Re-deploying " + aFile.getAbsolutePath());
                       dispatch(event);
   
                       if (event.getStatus() == DeploymentEvent.STATUS_OKAY)
  -                    {                        
  +                    {
                           fileDates.put(fileName, new Long(currentModifiedDate));
                       }
                       else
  @@ -403,6 +416,25 @@
       {
           return deployedFiles.contains(fileName);
       }
  +    
  +    /**
  +     * 
  +     * <p>
  +     * getAllStagedFiles
  +     * </p>
  +     *
  +     * @return
  +     */
  +    protected File[] getAllStagedFiles()
  +    {
  +        ArrayList fileList = new ArrayList();
  +        for (int i = 0; i < stagingDirectoriesAsFiles.length; i++)
  +        {
  +           fileList.addAll(Arrays.asList(stagingDirectoriesAsFiles[i].listFiles()));
  +        }
  +        
  +        return (File[]) fileList.toArray(new File[fileList.size()]);
  +    }
   
       public class FileSystemScanner extends Thread
       {
  @@ -448,5 +480,6 @@
           }
   
       }
  +    
   
   }
  
  
  

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