Example usage for org.apache.commons.jci.monitor FilesystemAlterationMonitor FilesystemAlterationMonitor

List of usage examples for org.apache.commons.jci.monitor FilesystemAlterationMonitor FilesystemAlterationMonitor

Introduction

In this page you can find the example usage for org.apache.commons.jci.monitor FilesystemAlterationMonitor FilesystemAlterationMonitor.

Prototype

public FilesystemAlterationMonitor() 

Source Link

Usage

From source file:dk.cubing.liveresults.uploader.engine.ResultsEngine.java

public ResultsEngine() {
    config = new Configuration(this);
    fam = new FilesystemAlterationMonitor();
    factory = new JaxWsProxyFactoryBean();
    parser = new ResultsFileParser();
}

From source file:nz.net.catalyst.mobile.dds.WurflCapabilityServiceImpl.java

/**
 * create listeners and monitors for wurfl and its patches
 *///from w  w  w .ja v  a  2 s  . co  m
protected synchronized void startWatchingFiles() {
    famList.clear();

    FilesystemAlterationMonitor fam = new FilesystemAlterationMonitor();
    FileChangeListener wurflListener = new WurflFileListener();
    fam.addListener(wurflFile, wurflListener);
    fam.start();
    famList.add(fam);
    logger.debug("watching " + wurflFile.getAbsolutePath());

    for (File patchFile : wurflPatchFiles) {
        fam = new FilesystemAlterationMonitor();
        FileChangeListener wurflPatchListener = new WurflFileListener();
        fam.addListener(patchFile, wurflPatchListener);
        fam.start();
        famList.add(fam);
        logger.debug("watching " + patchFile.getAbsolutePath());
    }

}

From source file:org.apache.commons.jci.examples.serverpages.ServerPageServlet.java

public void init() throws ServletException {
    super.init();

    final File serverpagesDir = new File(
            getServletContext().getRealPath("/") + getInitParameter("serverpagesDir"));

    log("Monitoring serverpages in " + serverpagesDir);

    final TransactionalResourceStore store = new TransactionalResourceStore(new MemoryResourceStore()) {

        private Set<String> newClasses;
        private Map<String, HttpServlet> newServletsByClassname;

        public void onStart() {
            super.onStart();

            newClasses = new HashSet<String>();
            newServletsByClassname = new HashMap<String, HttpServlet>(servletsByClassname);
        }/*from   w ww. j av a2  s.com*/

        public void onStop() {
            super.onStop();

            boolean reload = false;
            for (String clazzName : newClasses) {
                try {
                    final Class clazz = classloader.loadClass(clazzName);

                    if (!HttpServlet.class.isAssignableFrom(clazz)) {
                        log(clazzName + " is not a servlet");
                        continue;
                    }

                    // create new instance of jsp page
                    final HttpServlet servlet = (HttpServlet) clazz.newInstance();
                    newServletsByClassname.put(clazzName, servlet);

                    reload = true;
                } catch (Exception e) {
                    log("", e);
                }
            }

            if (reload) {
                log("Activating new map of servlets " + newServletsByClassname);
                servletsByClassname = newServletsByClassname;
            }
        }

        public void write(String pResourceName, byte[] pResourceData) {
            super.write(pResourceName, pResourceData);

            if (pResourceName.endsWith(".class")) {

                // compiler writes a new class, remember the classes to reload
                newClasses.add(pResourceName.replace('/', '.').substring(0,
                        pResourceName.length() - ".class".length()));
            }
        }

    };

    // listener that generates the java code from the jsp page and provides that to the compiler
    jspListener = new CompilingListener(new JavaCompilerFactory().createCompiler("eclipse"), store) {

        private final JspGenerator transformer = new JspGenerator();
        private final Map<String, byte[]> sources = new HashMap<String, byte[]>();
        private final Set<String> resourceToCompile = new HashSet<String>();

        public void onStart(FilesystemAlterationObserver pObserver) {
            super.onStart(pObserver);

            resourceToCompile.clear();
        }

        public void onFileChange(File pFile) {
            if (pFile.getName().endsWith(".jsp")) {
                final String resourceName = ConversionUtils
                        .stripExtension(getSourceNameFromFile(observer, pFile)) + ".java";

                log("Updating " + resourceName);

                sources.put(resourceName, transformer.generateJavaSource(resourceName, pFile));

                resourceToCompile.add(resourceName);
            }
            super.onFileChange(pFile);
        }

        public void onFileCreate(File pFile) {
            if (pFile.getName().endsWith(".jsp")) {
                final String resourceName = ConversionUtils
                        .stripExtension(getSourceNameFromFile(observer, pFile)) + ".java";

                log("Creating " + resourceName);

                sources.put(resourceName, transformer.generateJavaSource(resourceName, pFile));

                resourceToCompile.add(resourceName);
            }
            super.onFileCreate(pFile);
        }

        public String[] getResourcesToCompile(FilesystemAlterationObserver pObserver) {
            // we only want to compile the jsp pages
            final String[] resourceNames = new String[resourceToCompile.size()];
            resourceToCompile.toArray(resourceNames);
            return resourceNames;
        }

        public ResourceReader getReader(final FilesystemAlterationObserver pObserver) {
            return new JspReader(sources, super.getReader(pObserver));
        }
    };
    jspListener.addReloadNotificationListener(classloader);

    fam = new FilesystemAlterationMonitor();
    fam.addListener(serverpagesDir, jspListener);
    fam.start();
}

From source file:org.apache.helix.filestore.FileSystemWatchService.java

public FileSystemWatchService(String root, long startTime, FileChangeWatcher... watchers) {
    File file = new File(root);
    System.out.println("Setting up watch service for path:" + file.getAbsolutePath());
    fam = new FilesystemAlterationMonitor();
    listener = new MyFilesystemAlterationListener(root, startTime, watchers);
    fam.addListener(file, listener);/*  ww  w  . j a  va 2s  .  c o m*/
}

From source file:org.apache.struts2.spring.ClassReloadingXMLWebApplicationContext.java

public void setupReloading(String[] watchList, String acceptClasses, ServletContext servletContext,
        boolean reloadConfig) {
    this.reloadConfig = reloadConfig;

    classLoader = new ReloadingClassLoader(ClassReloadingXMLWebApplicationContext.class.getClassLoader());

    //make a list of accepted classes
    if (StringUtils.isNotBlank(acceptClasses)) {
        String[] splitted = acceptClasses.split(",");
        Set<Pattern> patterns = new HashSet<Pattern>(splitted.length);
        for (String pattern : splitted)
            patterns.add(Pattern.compile(pattern));

        classLoader.setAccepClasses(patterns);
    }/*from  ww  w . ja va  2s.c om*/

    fam = new FilesystemAlterationMonitor();

    //setup stores
    for (String watch : watchList) {
        File file = new File(watch);

        //make it absolute, if it is a relative path
        if (!file.isAbsolute())
            file = new File(servletContext.getRealPath(watch));

        if (watch.endsWith(".jar")) {
            classLoader.addResourceStore(new JarResourceStore(file));
            //register with the fam
            fam.addListener(file, this);
            if (LOG.isDebugEnabled()) {
                LOG.debug("Watching [#0] for changes", file.getAbsolutePath());
            }
        } else {
            //get all subdirs
            List<File> dirs = new ArrayList<File>();
            getAllPaths(file, dirs);

            classLoader.addResourceStore(new FileResourceStore(file));

            for (File dir : dirs) {
                //register with the fam
                fam.addListener(dir, this);
                if (LOG.isDebugEnabled()) {
                    LOG.debug("Watching [#0] for changes", dir.getAbsolutePath());
                }
            }
        }
    }
    //setup the bean factory
    beanFactory = new ClassReloadingBeanFactory();
    beanFactory.setInstantiationStrategy(new ClassReloadingInstantiationStrategy());
    beanFactory.setBeanClassLoader(classLoader);

    //start watch thread
    fam.start();
}

From source file:org.openecard.addon.FileRegistry.java

private void startFileMonitor(String addonPath) throws WSMarshallerException {
    File f = new File(addonPath);
    logger.debug("Starting file alteration monitor on path: {}", f.getPath());
    FilesystemAlterationMonitor fam = new FilesystemAlterationMonitor();
    fam.addListener(f, new PluginDirectoryAlterationListener(this));
    fam.start();//from w ww .  j a v  a  2 s  .c o m
}

From source file:org.openecomp.sdc.common.impl.ExternalConfiguration.java

public static void listenForChanges() {

    String watchingDir = configDir + File.separator + appName;
    if (enableReconfigure) {
        if (fam == null) {
            fam = new FilesystemAlterationMonitor();
            fam.setInterval(1000);/*w  w w. j  a  va2 s . c  om*/
            fam.addListener(new File(watchingDir), changeListener);
            fam.start();
        }
    }
}