001    package org.nanocontainer.deployer;
002    
003    import org.apache.commons.vfs.FileObject;
004    import org.apache.commons.vfs.FileSystemException;
005    import org.picocontainer.Startable;
006    
007    /**
008     * @author Aslak Hellesøy
009     * @version $Revision: 2343 $
010     */
011    public class DeployingFolderListener implements FolderListener, Startable {
012        private final Deployer deployer;
013        private final DifferenceAnalysingFolderContentHandler handler;
014    
015        public DeployingFolderListener(Deployer deployer, DifferenceAnalysingFolderContentHandler handler) {
016            this.deployer = deployer;
017            this.handler = handler;
018        }
019    
020        public void folderAdded(FileObject folder) {
021            try {
022                deployer.deploy(folder, getClass().getClassLoader(), null);
023            } catch (FileSystemException e) {
024                throw new DeploymentException(e);
025            } catch (ClassNotFoundException e) {
026                throw new DeploymentException(e);
027            }
028        }
029    
030        public void folderRemoved(FileObject fileObject) {
031    
032        }
033    
034        public void start() {
035            handler.addFolderListener(this);
036        }
037    
038        public void stop() {
039            handler.removeFolderListener(this);
040        }
041    }