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