ate 2005/03/02 05:51:41 Modified: portal/src/java/org/apache/jetspeed/deployment/impl Tag: deployment-refactoring DeployDecoratorEventListener.java StandardDeploymentManager.java StandardDeploymentObject.java JarExpander.java DeployPortletAppEventListener.java Log: (Re)implementation of decorators deployment Furthermore, code cleanup and reformat (I made a mess out of it) Revision Changes Path No revision No revision 1.7.2.2 +156 -164 jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/deployment/impl/DeployDecoratorEventListener.java Index: DeployDecoratorEventListener.java =================================================================== RCS file: /home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/deployment/impl/DeployDecoratorEventListener.java,v retrieving revision 1.7.2.1 retrieving revision 1.7.2.2 diff -u -r1.7.2.1 -r1.7.2.2 --- DeployDecoratorEventListener.java 2 Mar 2005 02:48:58 -0000 1.7.2.1 +++ DeployDecoratorEventListener.java 2 Mar 2005 13:51:41 -0000 1.7.2.2 @@ -1,8 +1,17 @@ -/** - * Created on Jan 13, 2004 - * +/* + * Copyright 2000-2001,2004 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 * - * @author + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package org.apache.jetspeed.deployment.impl; @@ -12,6 +21,7 @@ import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; import org.apache.commons.configuration.PropertiesConfiguration; @@ -20,6 +30,7 @@ import org.apache.jetspeed.deployment.DeploymentEvent; import org.apache.jetspeed.deployment.DeploymentEventListener; import org.apache.jetspeed.deployment.DeploymentException; +import org.apache.jetspeed.util.DirectoryHelper; /** * <p> @@ -27,33 +38,34 @@ * </p> * * @author <a href="mailto:[EMAIL PROTECTED]">Scott T. Weaver </a> - * @version $Id: DeployDecoratorEventListener.java,v 1.3 2004/03/25 21:39:22 - * jford Exp $ - * + * @version $Id$ */ public class DeployDecoratorEventListener implements DeploymentEventListener { protected static final Log log = LogFactory.getLog("deployment"); + protected String deployToDir; - protected String deployToDir; - - public DeployDecoratorEventListener(String deployToDir) throws IOException + public DeployDecoratorEventListener(String deployToDir) throws FileNotFoundException { File checkFile = new File(deployToDir); if (checkFile.exists()) { - this.deployToDir = deployToDir; + try + { + this.deployToDir = checkFile.getCanonicalPath(); + } + catch (IOException e) {} } else { throw new FileNotFoundException("The deployment directory, " + checkFile.getAbsolutePath() - + ", does not exist"); + + ", does not exist"); } } public void initialize() { - // nothing to do + // nothing to do } /** @@ -67,7 +79,12 @@ */ public void invokeDeploy(DeploymentEvent event) throws DeploymentException { -/* + String fileName = event.getName(); + if (!fileName.endsWith(".jar") && !fileName.endsWith(".zip")) + { + return; + } + // get decorator configuration if available PropertiesConfiguration conf = getDecoratorConfiguration(event); // silently return if configuration not available, (assumes @@ -79,113 +96,92 @@ // process decorator by id String id = conf.getString("id"); - if (id != null) + if (id == null) { - log.info("Found decorator deployment archive " + id); + throw new DeploymentException("Unable to deploy decorator, \"id\" attribute not defined in configuration"); + } + + log.info("Found decorator deployment archive " + id); - FileSystemHelper sourceObject = null; - FileSystemHelper deployObject = null; - try + try + { + // construct decorator deploy path + String baseDeployPath = getBaseDeployPath(conf); + String deployPath = baseDeployPath + File.separator + id; + File deployPathFile = new File(deployPath); + + // undeploy decorator if it already exists and is a redeploy or + // skip deployment if initial deployment + if (deployPathFile.exists()) { - // construct decorator deploy path - String baseDeployPath = getBaseDeployPath(conf); - String deployPath = baseDeployPath + File.separator + id; - File deployPathFile = new File(deployPath); - - // undeploy decorator if it already exists and is a redeploy or - // skip deployment if initial deployment - if (deployPathFile.exists()) - { - invokeUndeploy(baseDeployPath, id); - } - - // redeploy/deploy decorator w/o META_INF jar metadata - log.info("Deploying decorator " + id + " to " + deployPath); - deployPathFile.mkdirs(); - deployObject = new DirectoryHelper(deployPathFile); - sourceObject = event.getDeploymentObject().getFileObject(); - deployObject.copyFrom(sourceObject.getRootDirectory()); - File metaInf = new File(deployPathFile, "META-INF"); - if (metaInf.exists()) - { - DirectoryHelper cleanup = new DirectoryHelper(metaInf); - cleanup.remove(); - cleanup.close(); - } - - // detect language/country localized decorator components - final List localeSpecificDeployPathsList = getLocaleSpecificDeployPaths(deployPathFile); - - // deploy individual locale specific decorator components - Iterator deployPathsIter = localeSpecificDeployPathsList.iterator(); - while (deployPathsIter.hasNext()) + invokeUndeploy(deployPathFile); + } + + // redeploy/deploy decorator w/o META_INF jar metadata + log.info("Deploying decorator " + id + " to " + deployPath); + JarExpander.expand(event.getDeploymentObject().getFile(), deployPathFile); + File metaInf = new File(deployPathFile, "META-INF"); + if (metaInf.exists()) + { + DirectoryHelper cleanup = new DirectoryHelper(metaInf); + cleanup.remove(); + cleanup.close(); + } + + // detect language/country localized decorator components + final List localeSpecificDeployPathsList = getLocaleSpecificDeployPaths(deployPathFile); + + // deploy individual locale specific decorator components + Iterator deployPathsIter = localeSpecificDeployPathsList.iterator(); + while (deployPathsIter.hasNext()) + { + File localeDeployPathFile = (File) deployPathsIter.next(); + + // deploy to locale specific location + File deployToPathFile = new File(baseDeployPath + + localeDeployPathFile.getPath().substring(deployPath.length()) + + File.separator + id); + log.info("Deploying locale specific decorator component to " + deployToPathFile.getPath()); + deployToPathFile.mkdirs(); + + // deploy decorator components by moving from deployed decorator + File[] filesToDeploy = localeDeployPathFile.listFiles(new FileFilter() { - File localeDeployPathFile = (File) deployPathsIter.next(); - - // deploy to locale specific location - File deployToPathFile = new File(baseDeployPath + localeDeployPathFile.getPath().substring(deployPath.length()) + File.separator + id); - log.info("Deploying decorator " + id + " to " + deployToPathFile.getPath()); - deployToPathFile.mkdirs(); - - // deploy decorator components by moving from deployed decorator - File [] filesToDeploy = localeDeployPathFile.listFiles(new FileFilter() - { - public boolean accept(File pathname) - { - return !localeSpecificDeployPathsList.contains(pathname); - } - }); - for (int i = 0; (i < filesToDeploy.length); i++) + public boolean accept(File pathname) { - filesToDeploy[i].renameTo(new File(deployToPathFile, filesToDeploy[i].getName())); + return !localeSpecificDeployPathsList.contains(pathname); } - } - - // cleanup locale specific deployment directories - Iterator cleanupDeployPathsIter = localeSpecificDeployPathsList.iterator(); - while (cleanupDeployPathsIter.hasNext()) + }); + for (int i = 0; (i < filesToDeploy.length); i++) { - File cleanupLocaleDeployPathFile = (File) cleanupDeployPathsIter.next(); - if (cleanupLocaleDeployPathFile.exists()) - { - DirectoryHelper cleanup = new DirectoryHelper(cleanupLocaleDeployPathFile); - cleanup.remove(); - cleanup.close(); - } + filesToDeploy[i].renameTo(new File(deployToPathFile, filesToDeploy[i].getName())); } - - log.info("Decorator " + id + " deployed successfuly."); - event.setStatus(DeploymentEvent.STATUS_OKAY); } - catch (Exception e) - { - log.error("Error deploying decorator " + id + ": " + e.toString(), e); - event.setStatus(DeploymentEvent.STATUS_FAILED); - } - finally + + // cleanup locale specific deployment directories + Iterator cleanupDeployPathsIter = localeSpecificDeployPathsList.iterator(); + while (cleanupDeployPathsIter.hasNext()) { - try - { - if (sourceObject != null) - { - sourceObject.close(); - } - if (deployObject != null) - { - deployObject.close(); - } - } - catch (IOException e2) + File cleanupLocaleDeployPathFile = (File) cleanupDeployPathsIter.next(); + if (cleanupLocaleDeployPathFile.exists()) { + DirectoryHelper cleanup = new DirectoryHelper(cleanupLocaleDeployPathFile); + cleanup.remove(); + cleanup.close(); } } + + log.info("Decorator " + id + " deployed successfuly."); + event.setStatus(DeploymentEvent.STATUS_OKAY); } - else + catch (DeploymentException de) { - log.error("Unable to deploy decorator, \"id\" attribute not defined in configuration"); - event.setStatus(DeploymentEvent.STATUS_FAILED); + throw de; + } + catch (Exception e) + { + throw new DeploymentException("Error deploying decorator " + id, e); } -*/ } /** @@ -193,56 +189,53 @@ * invokeUndeploy * </p> * - * @see org.apache.jetspeed.deployment.DeploymentEventListener#invokeUndeploy(org.apache.jetspeed.deployment.DeploymentEvent) - * @param event * @throws DeploymentException */ - public void invokeUndeploy(String baseDeployPath, String id) throws DeploymentException + public void invokeUndeploy(File deployPathFile) throws DeploymentException { -/* - if (baseDeployPath != null && id != null) - { - try + + if (deployPathFile == null || !deployPathFile.exists() || !deployPathFile.isDirectory() + || deployPathFile.getParentFile() == null || deployPathFile.getParentFile().getParentFile() == null + || !deployToDir.equals(deployPathFile.getParentFile().getParentFile().getParent())) + { + throw new DeploymentException("Cannot undeploy decorator at " + deployPathFile + ": invalid decorator path"); + } + + String id = deployPathFile.getName(); + + try + { + // undeploy decorator + log.info("Undeploying decorator " + id + " at " + deployPathFile.getAbsolutePath()); + + // detect language/country localized decorator components + final List localeSpecificDeployPathsList = getLocaleSpecificDeployPaths(deployPathFile.getParentFile()); + + // undeploy individual locale specific decorator components depth first + for (int i = localeSpecificDeployPathsList.size() - 1; i > -1; i--) { - // find and construct decorator deploy path - String deployPath = baseDeployPath + File.separator + id; - - // undeploy decorator - File deployPathFile = new File(deployPath); - if (deployPathFile.exists()) + File localeDeployPathFile = new File((File) localeSpecificDeployPathsList.get(i), id); + if (localeDeployPathFile.exists()) { - log.info("Undeploying decorator " + id + " at " + deployPath); - DirectoryHelper cleanup = new DirectoryHelper(deployPathFile); + log.info("Undeploying locale specific decorator component at " + localeDeployPathFile.getPath()); + DirectoryHelper cleanup = new DirectoryHelper(localeDeployPathFile); cleanup.remove(); cleanup.close(); + localeDeployPathFile.getParentFile().delete(); } - - // detect language/country localized decorator components - final List localeSpecificDeployPathsList = getLocaleSpecificDeployPaths(new File(baseDeployPath)); - - // undeploy individual locale specific decorator components - Iterator deployPathsIter = localeSpecificDeployPathsList.iterator(); - while (deployPathsIter.hasNext()) - { - File localeDeployPathFile = new File((File) deployPathsIter.next(), id); - if (localeDeployPathFile.exists()) - { - log.info("Undeploying decorator " + id + " at " + localeDeployPathFile.getPath()); - DirectoryHelper cleanup = new DirectoryHelper(localeDeployPathFile); - cleanup.remove(); - cleanup.close(); - localeDeployPathFile.getParentFile().delete(); - } - } - - log.info("Decorator " + id + " undeployed and deregistered successfuly."); - } - catch (Exception e) - { - log.error("Error undeploying or deregistering decorator " + id + ": " + e.toString(), e); } + + // now undeploy the decorator root itself + DirectoryHelper cleanup = new DirectoryHelper(deployPathFile); + cleanup.remove(); + cleanup.close(); + + log.info("Decorator " + id + " undeployed successfuly."); + } + catch (Exception e) + { + throw new DeploymentException("Error undeploying decorator " + id, e); } - */ } /** @@ -250,8 +243,8 @@ * getDecorationConfiguration * </p> * - * @param event - @ @return configuration + * @param event @ + * @return configuration * @throws DeploymentException */ private PropertiesConfiguration getDecoratorConfiguration(DeploymentEvent event) throws DeploymentException @@ -277,7 +270,7 @@ } catch (Exception e1) { - throw new DeploymentException("Error reading configuration from jar: " + e1.toString(), e1); + throw new DeploymentException("Error reading decorator.properties from " + event.getPath(), e1); } finally { @@ -306,8 +299,7 @@ private String getBaseDeployPath(PropertiesConfiguration configuration) { // construct decorator deploy base path - String decorates = configuration.getString("decorates", "generic"); - String layoutType = decorates; + String layoutType = configuration.getString("decorates", "generic"); if (layoutType.equalsIgnoreCase("any")) { layoutType = "generic"; @@ -328,25 +320,25 @@ { // detect language/country localized deploy paths List localeSpecificDeployPathsList = new ArrayList(); - File [] localeLanguageSpecificRoots = rootPath.listFiles(new FileFilter() + File[] localeLanguageSpecificRoots = rootPath.listFiles(new FileFilter() + { + public boolean accept(File pathname) + { + // filter language code dirs, (assume length test is accurate enough) + return (pathname.isDirectory() && (pathname.getName().length() == 2)); + } + }); + for (int i = 0; (i < localeLanguageSpecificRoots.length); i++) + { + localeSpecificDeployPathsList.add(localeLanguageSpecificRoots[i]); + File[] localeCountrySpecificPaths = localeLanguageSpecificRoots[i].listFiles(new FileFilter() { public boolean accept(File pathname) { - // filter language code dirs, (assume length test is accurate enough) + // filter country code dirs, (assume length test is accurate enough) return (pathname.isDirectory() && (pathname.getName().length() == 2)); } }); - for (int i = 0; (i < localeLanguageSpecificRoots.length); i++) - { - localeSpecificDeployPathsList.add(localeLanguageSpecificRoots[i]); - File [] localeCountrySpecificPaths = localeLanguageSpecificRoots[i].listFiles(new FileFilter() - { - public boolean accept(File pathname) - { - // filter country code dirs, (assume length test is accurate enough) - return (pathname.isDirectory() && (pathname.getName().length() == 2)); - } - }); for (int j = 0; (j < localeCountrySpecificPaths.length); j++) { localeSpecificDeployPathsList.add(localeCountrySpecificPaths[j]); @@ -354,4 +346,4 @@ } return localeSpecificDeployPathsList; } -} +} \ No newline at end of file 1.5.2.2 +92 -111 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.5.2.1 retrieving revision 1.5.2.2 diff -u -r1.5.2.1 -r1.5.2.2 --- StandardDeploymentManager.java 2 Mar 2005 02:48:58 -0000 1.5.2.1 +++ StandardDeploymentManager.java 2 Mar 2005 13:51:41 -0000 1.5.2.2 @@ -1,5 +1,5 @@ /* - * Copyright 2000-2004 The Apache Software Foundation. + * Copyright 2000-2001,2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -36,40 +36,30 @@ /** * <p> - * AutoDeploymentManager + * StandardDeploymentManager * </p> * Implementation of [EMAIL PROTECTED] org.apache.jetspeed.deployment.DeploymentManager} * * @author <a href="mailto:[EMAIL PROTECTED]">Scott T. Weaver </a> - * @version $Id: StandardDeploymentManager.java,v 1.2 2004/07/21 00:46:21 taylor - * Exp $ - * + * @version $Id$ */ public class StandardDeploymentManager implements DeploymentManager { - protected Log log = LogFactory.getLog("deployment"); - + protected Log log = LogFactory.getLog("deployment"); protected FileSystemScanner scanner; - - protected PortletRegistry registry; - - protected Collection deploymentListeners; - - protected long scanningDelay; - - protected String stagingDirectories; - - protected File[] stagingDirectoriesAsFiles; - - protected HashMap ignoredFiles; + protected PortletRegistry registry; + protected Collection deploymentListeners; + protected long scanningDelay; + protected String stagingDirectories; + protected File[] stagingDirectoriesAsFiles; + protected HashMap ignoredFiles; /** - * * @param stagingDirectories * @param scanningDelay * @param deploymentListeners */ - public StandardDeploymentManager( String stagingDirectories, long scanningDelay, Collection deploymentListeners ) + public StandardDeploymentManager(String stagingDirectories, long scanningDelay, Collection deploymentListeners) { this.scanningDelay = scanningDelay; this.stagingDirectories = stagingDirectories; @@ -87,13 +77,11 @@ } /** - * * <p> * start * </p> * * @see org.picocontainer.Startable#start() - * */ public void start() { @@ -109,8 +97,8 @@ if (!stagingDirectoriesAsFiles[i].exists()) { log - .error(stagingDirectoriesAsFiles[i].getAbsolutePath() - + " does not exist, auto deployment disabled."); + .error(stagingDirectoriesAsFiles[i].getAbsolutePath() + + " does not exist, auto deployment disabled."); stop(); return; } @@ -120,7 +108,7 @@ Iterator itr = deploymentListeners.iterator(); while (itr.hasNext()) { - ((DeploymentEventListener)itr.next()).initialize(); + ((DeploymentEventListener) itr.next()).initialize(); } if (scanningDelay > -1) @@ -128,7 +116,7 @@ try { scanner = new FileSystemScanner(Thread.currentThread().getThreadGroup(), - "Autodeployment File Scanner Thread"); + "Autodeployment File Scanner Thread"); scanner.setDaemon(true); // scanner.setContextClassLoader(Thread.currentThread().getContextClassLoader()); @@ -139,8 +127,8 @@ catch (Exception e) { log.warn( - "Unable to intialize Catalina Portlet Application Manager. Auto deployment will be disabled: " - + e.toString(), e); + "Unable to intialize Catalina Portlet Application Manager. Auto deployment will be disabled: " + + e.toString(), e); stop(); return; @@ -149,19 +137,17 @@ else { log.info("Scanning delay set to " + scanningDelay - + " has disabled automatic scanning of staging directory."); + + " has disabled automatic scanning of staging directory."); } } /** - * * <p> * stop * </p> * * @see org.picocontainer.Startable#stop() - * */ public void stop() { @@ -182,7 +168,7 @@ { boolean failed = false; boolean unknown = false; - + DeploymentObject deploymentObject = null; try { @@ -192,45 +178,46 @@ } catch (FileNotDeployableException e) { - unknown = true; + unknown = true; } - if ( deploymentObject != null ) - { - DeploymentEvent event = new DeploymentEventImpl(deploymentObject); - dispatch(event); - if (event.getStatus() == DeploymentEvent.STATUS_OKAY) + if (deploymentObject != null) { - if ( aFile.exists() ) + DeploymentEvent event = new DeploymentEventImpl(deploymentObject); + dispatch(event); + deploymentObject.close(); + if (event.getStatus() == DeploymentEvent.STATUS_OKAY) { - System.err.println("File: "+aFile.getAbsolutePath()+" deployed"); - boolean result = aFile.delete(); - if ( !result ) - { - System.err.println("Failed to remove aFile: "+aFile); - } - } - } - else if ( event.getStatus() == DeploymentEvent.STATUS_EVAL ) - { - unknown = true; - } - else - { - failed = true; - } + if (aFile.exists()) + { + System.err.println("File: " + aFile.getAbsolutePath() + " deployed"); + boolean result = aFile.delete(); + if (!result) + { + System.err.println("Failed to remove: " + aFile); + } + } + } + else if (event.getStatus() == DeploymentEvent.STATUS_EVAL) + { + unknown = true; + } + else + { + failed = true; + } } if (failed || unknown) { - if ( unknown ) + if (unknown) { - log.warn("Unrecognized file " + aFile.getAbsolutePath()); + log.warn("Unrecognized file " + aFile.getAbsolutePath()); } - else + else { - log.error("Failure deploying " + aFile.getAbsolutePath()); + log.error("Failure deploying " + aFile.getAbsolutePath()); } - ignoredFiles.put(aFile.getAbsolutePath(), new Long(aFile.lastModified())); + ignoredFiles.put(aFile.getAbsolutePath(), new Long(aFile.lastModified())); } } @@ -238,28 +225,27 @@ { log.error("Failure deploying " + aFile.getAbsolutePath(), e1); ignoredFiles.put(aFile.getAbsolutePath(), new Long(aFile.lastModified())); - } + } finally - { + { if (deploymentObject != null) - { + { try - { + { deploymentObject.close(); - } + } catch (IOException e) - { + { - } - } + } + } - } + } } } } /** - * * <p> * dispatch * </p> @@ -267,30 +253,29 @@ * @see org.apache.jetspeed.deployment.DeploymentManager#dispatch(org.apache.jetspeed.deployment.DeploymentEvent) * @param event */ - public void dispatch( DeploymentEvent event ) + public void dispatch(DeploymentEvent event) { - try - { - Iterator itr = deploymentListeners.iterator(); - while (itr.hasNext()) + try { - DeploymentEventListener listener = (DeploymentEventListener) itr.next(); - listener.invokeDeploy(event); - if ( event.getStatus() != DeploymentEvent.STATUS_EVAL ) + Iterator itr = deploymentListeners.iterator(); + while (itr.hasNext()) + { + DeploymentEventListener listener = (DeploymentEventListener) itr.next(); + listener.invokeDeploy(event); + if (event.getStatus() != DeploymentEvent.STATUS_EVAL) { - break; + break; } - } - } - catch (DeploymentException e) - { - log.error(e.toString(), e); - event.setStatus(DeploymentEvent.STATUS_FAILED); } } + catch (DeploymentException e) + { + log.error(e.getMessage(), e); + event.setStatus(DeploymentEvent.STATUS_FAILED); + } + } /** - * * <p> * ignoreFile * </p> @@ -298,29 +283,28 @@ * @param fileName * @return */ - protected boolean ignoreFile( File aFile ) + protected boolean ignoreFile(File aFile) { - Long previousModified = (Long)ignoredFiles.get(aFile.getAbsolutePath()); - if ( previousModified != null ) + Long previousModified = (Long) ignoredFiles.get(aFile.getAbsolutePath()); + if (previousModified != null) { - if ( previousModified.longValue() != aFile.lastModified() ) - { - ignoredFiles.remove(aFile.getAbsolutePath()); - } - else - { - return true; - } - } - return false; + if (previousModified.longValue() != aFile.lastModified()) + { + ignoredFiles.remove(aFile.getAbsolutePath()); + } + else + { + return true; + } + } + return false; } - + /** - * * <p> * getAllStagedFiles * </p> - * + * * @return */ protected File[] getAllStagedFiles() @@ -328,9 +312,9 @@ ArrayList fileList = new ArrayList(); for (int i = 0; i < stagingDirectoriesAsFiles.length; i++) { - fileList.addAll(Arrays.asList(stagingDirectoriesAsFiles[i].listFiles())); + fileList.addAll(Arrays.asList(stagingDirectoriesAsFiles[i].listFiles())); } - + return (File[]) fileList.toArray(new File[fileList.size()]); } @@ -339,7 +323,7 @@ private boolean started = true; - public FileSystemScanner( ThreadGroup threadGroup, String name ) throws FileNotFoundException, IOException + public FileSystemScanner(ThreadGroup threadGroup, String name) throws FileNotFoundException, IOException { super(threadGroup, name); setPriority(MIN_PRIORITY); @@ -366,9 +350,7 @@ } /** - * notifies a switch variable that exits the watcher's montior loop - * started in the <code>run()</code> method. - * + * notifies a switch variable that exits the watcher's montior loop started in the <code>run()</code> method. */ public void safeStop() { @@ -376,6 +358,5 @@ } } - -} +} \ No newline at end of file 1.1.2.2 +39 -35 jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/deployment/impl/StandardDeploymentObject.java Index: StandardDeploymentObject.java =================================================================== RCS file: /home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/deployment/impl/StandardDeploymentObject.java,v retrieving revision 1.1.2.1 retrieving revision 1.1.2.2 diff -u -r1.1.2.1 -r1.1.2.2 --- StandardDeploymentObject.java 2 Mar 2005 02:48:58 -0000 1.1.2.1 +++ StandardDeploymentObject.java 2 Mar 2005 13:51:41 -0000 1.1.2.2 @@ -24,79 +24,83 @@ import org.apache.jetspeed.deployment.DeploymentObject; /** - * @author scott - * + * <p> + * DeploymentObject + * </p> + * + * @author <a href="mailto:[EMAIL PROTECTED]">Scott T. Weaver </a> + * @version $Id$ */ public class StandardDeploymentObject implements DeploymentObject { protected File deploymentObject; protected ZipFile zipFile; - + /** * @throws IOException - * */ public StandardDeploymentObject(File deploymentObject) throws IOException, FileNotDeployableException { - if(verifyExtension(deploymentObject)) + if (verifyExtension(deploymentObject)) { - this.deploymentObject = deploymentObject; + this.deploymentObject = deploymentObject; } else { - throw new FileNotDeployableException("File type for "+deploymentObject.getName()+" is not supported by StandardDeploymentObject."); + throw new FileNotDeployableException("File type for " + deploymentObject.getName() + + " is not supported by StandardDeploymentObject."); } - + } /** * <p> * close * </p> - * + * * @see org.apache.jetspeed.deployment.DeploymentObject#close() * @throws IOException */ public void close() throws IOException { - if ( zipFile != null ) - { - zipFile.close(); - zipFile = null; - } + if (zipFile != null) + { + zipFile.close(); + zipFile = null; + } } /** * <p> * getConfiguration * </p> - * + * * @see org.apache.jetspeed.deployment.DeploymentObject#getConfiguration(java.lang.String) * @param configPath * @return * @throws IOException */ - public InputStream getConfiguration( String configPath ) throws IOException - { - ZipFile zipFile = getZipFile(); - ZipEntry entry = zipFile.getEntry(configPath); - if ( entry != null ) + public InputStream getConfiguration(String configPath) throws IOException + { + ZipFile zipFile = getZipFile(); + ZipEntry entry = zipFile.getEntry(configPath); + if (entry != null) { - return zipFile.getInputStream(entry); - } - return null; + return zipFile.getInputStream(entry); } + return null; + } /** * <p> * getName * </p> - * + * * @see org.apache.jetspeed.deployment.DeploymentObject#getName() * @return */ public String getName() - { + { return deploymentObject.getName(); } @@ -104,7 +108,7 @@ * <p> * getPath * </p> - * + * * @see org.apache.jetspeed.deployment.DeploymentObject#getPath() * @return */ @@ -115,23 +119,23 @@ public ZipFile getZipFile() throws IOException { - if ( zipFile == null ) - { - zipFile = new ZipFile(deploymentObject); - } - return zipFile; + if (zipFile == null) + { + zipFile = new ZipFile(deploymentObject); + } + return zipFile; } public File getFile() { - return deploymentObject; + return deploymentObject; } - + protected boolean verifyExtension(File file) { String fileName = file.getName(); int dot = fileName.lastIndexOf('.'); - if(dot != -1) + if (dot != -1) { String ext = fileName.substring(dot); return ext.equals(".war") || ext.equals(".jar") || ext.equals(".zip"); @@ -142,4 +146,4 @@ } } -} +} \ No newline at end of file 1.1.2.2 +66 -67 jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/deployment/impl/Attic/JarExpander.java Index: JarExpander.java =================================================================== RCS file: /home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/deployment/impl/Attic/JarExpander.java,v retrieving revision 1.1.2.1 retrieving revision 1.1.2.2 diff -u -r1.1.2.1 -r1.1.2.2 --- JarExpander.java 2 Mar 2005 02:48:58 -0000 1.1.2.1 +++ JarExpander.java 2 Mar 2005 13:51:41 -0000 1.1.2.2 @@ -30,84 +30,83 @@ /** * JarExpander * - * @author <a href="mailto:[EMAIL PROTECTED]">Ate Douma</a> + * @author <a href="mailto:[EMAIL PROTECTED]">Ate Douma </a> * @version $Id$ - * */ public class JarExpander { - public static void expand(File srcFile, File targetDir) - throws IOException - { - if (targetDir.exists()) - { - DirectoryHelper cleanup = new DirectoryHelper(targetDir); - cleanup.remove(); - cleanup.close(); - } - - targetDir.mkdirs(); - JarFile jarFile = new JarFile(srcFile); - try + public static void expand(File srcFile, File targetDir) throws IOException { - Enumeration entries = jarFile.entries(); - - InputStream is = null; - OutputStream os = null; - - byte[] buf = new byte[1024]; - int len; - - while (entries.hasMoreElements()) - { - JarEntry jarEntry = (JarEntry) entries.nextElement(); - String name = jarEntry.getName(); - File entryFile = new File(targetDir, name); - - if (jarEntry.isDirectory()) + if (targetDir.exists()) { - entryFile.mkdir(); + DirectoryHelper cleanup = new DirectoryHelper(targetDir); + cleanup.remove(); + cleanup.close(); } - else + + targetDir.mkdirs(); + JarFile jarFile = new JarFile(srcFile); + + try { - if (!entryFile.getParentFile().exists()) - { - entryFile.getParentFile().mkdirs(); - } - - entryFile.createNewFile(); - - try - { - is = jarFile.getInputStream(jarEntry); - os = new FileOutputStream(entryFile); + Enumeration entries = jarFile.entries(); - while ((len = is.read(buf)) > 0) - { - os.write(buf, 0, len); - } - } - finally - { - if (is != null) + InputStream is = null; + OutputStream os = null; + + byte[] buf = new byte[1024]; + int len; + + while (entries.hasMoreElements()) { - is.close(); + JarEntry jarEntry = (JarEntry) entries.nextElement(); + String name = jarEntry.getName(); + File entryFile = new File(targetDir, name); + + if (jarEntry.isDirectory()) + { + entryFile.mkdir(); + } + else + { + if (!entryFile.getParentFile().exists()) + { + entryFile.getParentFile().mkdirs(); + } + + entryFile.createNewFile(); + + try + { + is = jarFile.getInputStream(jarEntry); + os = new FileOutputStream(entryFile); + + while ((len = is.read(buf)) > 0) + { + os.write(buf, 0, len); + } + } + finally + { + if (is != null) + { + is.close(); + } + + if (os != null) + { + os.close(); + } + } + } } - - if (os != null) + } + finally + { + if (jarFile != null) { - os.close(); + jarFile.close(); } - } } - } - } - finally - { - if ( jarFile != null ) - { - jarFile.close(); - } } - } -} +} \ No newline at end of file 1.22.2.2 +88 -72 jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/deployment/impl/DeployPortletAppEventListener.java Index: DeployPortletAppEventListener.java =================================================================== RCS file: /home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/deployment/impl/DeployPortletAppEventListener.java,v retrieving revision 1.22.2.1 retrieving revision 1.22.2.2 diff -u -r1.22.2.1 -r1.22.2.2 --- DeployPortletAppEventListener.java 2 Mar 2005 02:48:58 -0000 1.22.2.1 +++ DeployPortletAppEventListener.java 2 Mar 2005 13:51:41 -0000 1.22.2.2 @@ -1,8 +1,17 @@ -/** - * Created on Jan 14, 2004 - * +/* + * Copyright 2000-2001,2004 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 * - * @author + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package org.apache.jetspeed.deployment.impl; @@ -30,27 +39,26 @@ * </p> * * @author <a href="mailto:[EMAIL PROTECTED]">Scott T. Weaver </a> - * @version $Id: DeployPortletAppEventListener.java,v 1.13 2004/06/23 18:41:26 - * weaver Exp $ - * + * @version $Id$ */ public class DeployPortletAppEventListener implements DeploymentEventListener { - protected static final Log log = LogFactory.getLog("deployment"); - private String webAppDir; - private String localAppDir; + protected static final Log log = LogFactory.getLog("deployment"); + private String webAppDir; + private String localAppDir; private PortletApplicationManagement pam; - private PortletRegistry registry; + private PortletRegistry registry; /** * @param pam * @param webAppDir * @param localAppDir - * @throws FileNotFoundException - * the <code>webAppDir</code> or <code>localAppDir</code> directory does not exist. + * @throws FileNotFoundException the <code>webAppDir</code> or <code>localAppDir</code> directory does not + * exist. */ - public DeployPortletAppEventListener(PortletApplicationManagement pam, PortletRegistry registry, String webAppDir, String localAppDir) throws FileNotFoundException + public DeployPortletAppEventListener(PortletApplicationManagement pam, PortletRegistry registry, String webAppDir, + String localAppDir) throws FileNotFoundException { this.pam = pam; this.registry = registry; @@ -59,7 +67,11 @@ if (webAppDirFile.exists()) { - this.webAppDir = webAppDir; + try + { + this.webAppDir = webAppDirFile.getCanonicalPath(); + } + catch (IOException e) {} } else { @@ -77,30 +89,34 @@ throw new FileNotFoundException("Invalid depoyment directory for local portlet applications: \"" + localAppDirFile.getAbsolutePath()); } - this.localAppDir = localAppDir; + try + { + this.localAppDir = localAppDirFile.getCanonicalPath(); + } + catch (IOException e) {} } - + public void initialize() - { + { // start deployed local pa - File[] localApps = new File(localAppDir).listFiles( - new FileFilter() - { - public boolean accept(File pathname) + File[] localApps = new File(localAppDir).listFiles(new FileFilter() + { + public boolean accept(File pathname) { - return pathname.isDirectory() && registry.getPortletApplication(pathname.getName()) != null; + return pathname.isDirectory() && registry.getPortletApplication(pathname.getName()) != null; } - }); - for ( int i = 0; i < localApps.length; i++ ) + }); + for (int i = 0; i < localApps.length; i++) { DirectoryHelper paDirHelper = new DirectoryHelper(localApps[i]); try { - pam.startLocalPortletApplication(localApps[i].getName(), paDirHelper, createLocalPAClassLoader(localApps[i])); + pam.startLocalPortletApplication(localApps[i].getName(), paDirHelper, + createLocalPAClassLoader(localApps[i])); } catch (Exception e) { - log.error("Failed to start Local Portlet Application "+localApps[i],e); + log.error("Failed to start Local Portlet Application " + localApps[i], e); } } } @@ -113,56 +129,56 @@ * @param event * @throws DeploymentException */ - public void invokeDeploy( DeploymentEvent event ) throws DeploymentException - { - String fileName = event.getName(); - if (fileName.endsWith(".war")) + public void invokeDeploy(DeploymentEvent event) throws DeploymentException { - int prefixLength = PortletApplicationManagement.LOCAL_PA_PREFIX.length(); - if (fileName.length() > prefixLength && - fileName.substring(0,prefixLength).equalsIgnoreCase(PortletApplicationManagement.LOCAL_PA_PREFIX)) + String fileName = event.getName(); + if (fileName.endsWith(".war")) { - deployLocalPortletApplication(event); - } - else + int prefixLength = PortletApplicationManagement.LOCAL_PA_PREFIX.length(); + if (fileName.length() > prefixLength + && fileName.substring(0, prefixLength).equalsIgnoreCase(PortletApplicationManagement.LOCAL_PA_PREFIX)) { - deployPortletApplication(event); - } + deployLocalPortletApplication(event); } + else + { + deployPortletApplication(event); } + } + } protected void deployPortletApplication(DeploymentEvent event) throws DeploymentException - { - try - { - File toFile = new File(webAppDir, event.getName()); - new JetspeedDeploy(event.getPath(),toFile.getAbsolutePath()); - event.setStatus(DeploymentEvent.STATUS_OKAY); - } - catch (Exception e) - { - throw new DeploymentException(e); - } - } + { + try + { + File toFile = new File(webAppDir, event.getName()); + new JetspeedDeploy(event.getPath(), toFile.getAbsolutePath()); + event.setStatus(DeploymentEvent.STATUS_OKAY); + } + catch (Exception e) + { + throw new DeploymentException(e); + } + } protected void deployLocalPortletApplication(DeploymentEvent event) throws DeploymentException - { - try - { - String fileName = event.getName(); - String appName = fileName.substring(0,fileName.length()-4); - pam.stopLocalPortletApplication(appName); - File targetDir = new File(localAppDir, appName); - JarExpander.expand(event.getDeploymentObject().getFile(), targetDir); - DirectoryHelper paDirHelper = new DirectoryHelper(targetDir); - pam.startLocalPortletApplication(appName, paDirHelper, createLocalPAClassLoader(targetDir)); - event.setStatus(DeploymentEvent.STATUS_OKAY); - } - catch (Exception e) - { - throw new DeploymentException(e); - } - } + { + try + { + String fileName = event.getName(); + String appName = fileName.substring(0, fileName.length() - 4); + pam.stopLocalPortletApplication(appName); + File targetDir = new File(localAppDir, appName); + JarExpander.expand(event.getDeploymentObject().getFile(), targetDir); + DirectoryHelper paDirHelper = new DirectoryHelper(targetDir); + pam.startLocalPortletApplication(appName, paDirHelper, createLocalPAClassLoader(targetDir)); + event.setStatus(DeploymentEvent.STATUS_OKAY); + } + catch (Exception e) + { + throw new DeploymentException(e); + } + } protected ClassLoader createLocalPAClassLoader(File paDir) throws IOException { @@ -172,7 +188,7 @@ webInfClasses = new File(paDir, ("WEB-INF/classes/")); if (webInfClasses.exists()) { - log.info("Adding " + webInfClasses.toURL() + " to class path for Local PA "+paDir.getName()); + log.info("Adding " + webInfClasses.toURL() + " to class path for Local PA " + paDir.getName()); urls.add(webInfClasses.toURL()); } @@ -183,13 +199,13 @@ File[] jars = webInfLib.listFiles(); for (int i = 0; i < jars.length; i++) - { + { File jar = jars[i]; - log.info("Adding " + jar.toURL() + " to class path for Local PA "+paDir.getName()); + log.info("Adding " + jar.toURL() + " to class path for Local PA " + paDir.getName()); urls.add(jar.toURL()); } } return new URLClassLoader((URL[]) urls.toArray(new URL[urls.size()]), getClass().getClassLoader()); } -} +} \ No newline at end of file
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]