List of usage examples for org.apache.commons.io.monitor FileAlterationMonitor FileAlterationMonitor
public FileAlterationMonitor(long interval)
From source file:nl.armatiek.xslweb.configuration.Context.java
private void initFileAlterationObservers() { File webAppsDir = new File(homeDir, "webapps"); IOFileFilter webAppFiles = FileFilterUtils.and(FileFilterUtils.fileFileFilter(), FileFilterUtils.nameFileFilter("webapp.xml")); IOFileFilter filter = FileFilterUtils.or(FileFilterUtils.directoryFileFilter(), webAppFiles); FileAlterationObserver webAppObserver = new FileAlterationObserver(webAppsDir, filter); webAppObserver.addListener(new FileAlterationListenerAdaptor() { @Override//from w w w . j a va 2s . c o m public void onFileCreate(File file) { logger.info("New webapp detected ..."); reloadWebApp(file, true); } @Override public void onFileChange(File file) { logger.info("Change in webapp definition detected ..."); reloadWebApp(file, true); } @Override public void onFileDelete(File file) { logger.info("Deletion of webapp detected ..."); reloadWebApp(file, true); } }); monitor = new FileAlterationMonitor(3000); monitor.addObserver(webAppObserver); }
From source file:nl.armatiek.xslweb.configuration.WebApp.java
private void initFileAlterationObservers() { monitor = new FileAlterationMonitor(3000); if (!developmentMode) { IOFileFilter xslFiles = FileFilterUtils.and(FileFilterUtils.fileFileFilter(), new SuffixFileFilter(new String[] { ".xsl", ".xslt" }, IOCase.INSENSITIVE)); FileAlterationObserver xslObserver = new FileAlterationObserver(new File(homeDir, "xsl"), FileFilterUtils.or(FileFilterUtils.directoryFileFilter(), xslFiles)); xslObserver.addListener(new FileAlterationListenerAdaptor() { @Override/*ww w . j a va 2s . c om*/ public void onFileChange(File file) { onFileChanged(file, "Change in XSL stylesheet \"%s\" detected. Reloading webapp ..."); } @Override public void onFileDelete(File file) { onFileChanged(file, "Deletion of XSL stylesheet \"%s\" detected. Reloading webapp ..."); } }); monitor.addObserver(xslObserver); } IOFileFilter jarAndClassFiles = FileFilterUtils.and(FileFilterUtils.fileFileFilter(), new SuffixFileFilter(new String[] { ".jar", ".class" }, IOCase.INSENSITIVE)); FileAlterationObserver classObserver = new FileAlterationObserver(new File(homeDir, "lib"), FileFilterUtils.or(FileFilterUtils.directoryFileFilter(), jarAndClassFiles)); classObserver.addListener(new FileAlterationListenerAdaptor() { @Override public void onFileCreate(File file) { onFileChanged(file, "New plugin jar or class file \"%s\" detected. Reloading webapp ..."); } @Override public void onFileChange(File file) { onFileChanged(file, "Change in plugin jar or class file \"%s\" detected. Reloading webapp ..."); } @Override public void onFileDelete(File file) { onFileChanged(file, "Deletion of plugin jar or class file \"%s\" detected. Reloading webapp ..."); } }); monitor.addObserver(classObserver); }
From source file:org.apache.hadoop.gateway.services.topology.DefaultTopologyServiceTest.java
@Test public void testGetTopologies() throws Exception { File dir = createDir();/*from w w w .j av a 2 s.c om*/ long time = dir.lastModified(); try { createFile(dir, "one.xml", "org/apache/hadoop/gateway/topology/file/topology-one.xml", time); TestTopologyListener topoListener = new TestTopologyListener(); FileAlterationMonitor monitor = new FileAlterationMonitor(Long.MAX_VALUE); TopologyService provider = new DefaultTopologyService(); Map<String, String> c = new HashMap<>(); GatewayConfig config = EasyMock.createNiceMock(GatewayConfig.class); EasyMock.expect(config.getGatewayTopologyDir()).andReturn(dir.toString()).anyTimes(); EasyMock.replay(config); provider.init(config, c); provider.addTopologyChangeListener(topoListener); provider.reloadTopologies(); Collection<Topology> topologies = provider.getTopologies(); assertThat(topologies, notNullValue()); assertThat(topologies.size(), is(1)); Topology topology = topologies.iterator().next(); assertThat(topology.getName(), is("one")); assertThat(topology.getTimestamp(), is(time)); assertThat(topoListener.events.size(), is(1)); topoListener.events.clear(); // Add a file to the directory. File two = createFile(dir, "two.xml", "org/apache/hadoop/gateway/topology/file/topology-two.xml", 1L); provider.reloadTopologies(); topologies = provider.getTopologies(); assertThat(topologies.size(), is(2)); Set<String> names = new HashSet<>(Arrays.asList("one", "two")); Iterator<Topology> iterator = topologies.iterator(); topology = iterator.next(); assertThat(names, hasItem(topology.getName())); names.remove(topology.getName()); topology = iterator.next(); assertThat(names, hasItem(topology.getName())); names.remove(topology.getName()); assertThat(names.size(), is(0)); assertThat(topoListener.events.size(), is(1)); List<TopologyEvent> events = topoListener.events.get(0); assertThat(events.size(), is(1)); TopologyEvent event = events.get(0); assertThat(event.getType(), is(TopologyEvent.Type.CREATED)); assertThat(event.getTopology(), notNullValue()); // Update a file in the directory. two = createFile(dir, "two.xml", "org/apache/hadoop/gateway/topology/file/topology-three.xml", 2L); provider.reloadTopologies(); topologies = provider.getTopologies(); assertThat(topologies.size(), is(2)); names = new HashSet<>(Arrays.asList("one", "two")); iterator = topologies.iterator(); topology = iterator.next(); assertThat(names, hasItem(topology.getName())); names.remove(topology.getName()); topology = iterator.next(); assertThat(names, hasItem(topology.getName())); names.remove(topology.getName()); assertThat(names.size(), is(0)); // Remove a file from the directory. two.delete(); provider.reloadTopologies(); topologies = provider.getTopologies(); assertThat(topologies.size(), is(1)); topology = topologies.iterator().next(); assertThat(topology.getName(), is("one")); assertThat(topology.getTimestamp(), is(time)); } finally { FileUtils.deleteQuietly(dir); } }
From source file:org.apache.hadoop.gateway.services.topology.impl.DefaultTopologyService.java
private void initListener(File directory) throws IOException, SAXException { // Increasing the monitoring interval to 5 seconds as profiling has shown // this is rather expensive in terms of generated garbage objects. initListener(new FileAlterationMonitor(5000L), directory); }
From source file:org.apache.lucene.analysis.ko.utils.DictionaryUtil.java
/** * ? .//from w ww. j a va 2 s .com */ public synchronized static void loadDictionary() throws MorphException { // monitor file change every 30 seconds final long pollingInterval = 30 * 1000; // wait file modification end final long delayfilemodify = 5 * 1000; dictionary = new Trie<String, WordEntry>(true); List<String> strList = null; List<String> compounds = null; List<String> abbrevs = null; try { strList = FileUtil.readLines(KoreanEnv.getInstance().getValue(KoreanEnv.FILE_DICTIONARY), "UTF-8"); strList.addAll(FileUtil.readLines(KoreanEnv.getInstance().getValue(KoreanEnv.FILE_EXTENSION), "UTF-8")); compounds = FileUtil.readLines(KoreanEnv.getInstance().getValue(KoreanEnv.FILE_COMPOUNDS), "UTF-8"); abbrevs = FileUtil.readLines(KoreanEnv.getInstance().getValue(KoreanEnv.FILE_ABBREV), "UTF-8"); if (monitor == null) { File dicPath = new File(KoreanEnv.getInstance().getValue(KoreanEnv.FILE_EXTENSION)); File folder = new File(dicPath.getParentFile().getAbsolutePath()); if (folder != null && folder.exists()) { FileAlterationObserver observer = new FileAlterationObserver(folder); monitor = new FileAlterationMonitor(pollingInterval); FileAlterationListener listener = new FileAlterationListenerAdaptor() { @Override public void onFileChange(File file) { try { Thread.sleep(delayfilemodify); dictionary = null; } catch (InterruptedException e) { new MorphException(e.getMessage(), e); } } }; observer.addListener(listener); monitor.addObserver(observer); monitor.start(); } } } catch (IOException e) { new MorphException(e.getMessage(), e); } catch (Exception e) { new MorphException(e.getMessage(), e); } if (strList == null) throw new MorphException("dictionary is null"); ; for (String str : strList) { String[] infos = str.split("[,]+"); if (infos.length != 2) continue; infos[1] = infos[1].trim(); if (infos[1].length() == 6) infos[1] = infos[1].substring(0, 5) + "000" + infos[1].substring(5); WordEntry entry = new WordEntry(infos[0].trim(), infos[1].trim().toCharArray()); dictionary.add(entry.getWord(), entry); } for (String compound : compounds) { String[] infos = compound.split("[:]+"); if (infos.length != 3 && infos.length != 2) continue; WordEntry entry = null; if (infos.length == 2) entry = new WordEntry(infos[0].trim(), "200000000X".toCharArray()); else entry = new WordEntry(infos[0].trim(), ("200" + infos[2] + "0X").toCharArray()); entry.setCompounds(compoundArrayToList(infos[1], infos[1].split("[,]+"))); dictionary.add(entry.getWord(), entry); } abbreviations = new HashMap<String, String>(); for (String abbrev : abbrevs) { String[] infos = abbrev.split("[:]+"); if (infos.length != 2) continue; abbreviations.put(infos[0].trim(), infos[1].trim()); } }
From source file:org.apache.syncope.client.enduser.SyncopeEnduserApplication.java
@Override protected void init() { super.init(); // read enduser.properties Properties props = PropertyUtils.read(getClass(), ENDUSER_PROPERTIES, "enduser.directory").getLeft(); domain = props.getProperty("domain", SyncopeConstants.MASTER_DOMAIN); adminUser = props.getProperty("adminUser"); Args.notNull(adminUser, "<adminUser>"); anonymousUser = props.getProperty("anonymousUser"); Args.notNull(anonymousUser, "<anonymousUser>"); anonymousKey = props.getProperty("anonymousKey"); Args.notNull(anonymousKey, "<anonymousKey>"); captchaEnabled = Boolean.parseBoolean(props.getProperty("captcha")); Args.notNull(captchaEnabled, "<captcha>"); xsrfEnabled = Boolean.parseBoolean(props.getProperty("xsrf")); Args.notNull(xsrfEnabled, "<xsrf>"); String scheme = props.getProperty("scheme"); Args.notNull(scheme, "<scheme>"); String host = props.getProperty("host"); Args.notNull(host, "<host>"); String port = props.getProperty("port"); Args.notNull(port, "<port>"); String rootPath = props.getProperty("rootPath"); Args.notNull(rootPath, "<rootPath>"); String useGZIPCompression = props.getProperty("useGZIPCompression"); Args.notNull(useGZIPCompression, "<useGZIPCompression>"); maxUploadFileSizeMB = props.getProperty("maxUploadFileSizeMB") == null ? null : Integer.valueOf(props.getProperty("maxUploadFileSizeMB")); clientFactory = new SyncopeClientFactoryBean() .setAddress(scheme + "://" + host + ":" + port + "/" + rootPath) .setContentType(SyncopeClientFactoryBean.ContentType.JSON) .setUseCompression(BooleanUtils.toBoolean(useGZIPCompression)); // read customForm.json try (InputStream is = getClass().getResourceAsStream("/" + CUSTOM_FORM_FILE)) { customForm = MAPPER.readValue(is, new TypeReference<HashMap<String, CustomAttributesInfo>>() { });// w w w .ja v a 2 s . com File enduserDir = new File(props.getProperty("enduser.directory")); boolean existsEnduserDir = enduserDir.exists() && enduserDir.canRead() && enduserDir.isDirectory(); if (existsEnduserDir) { File customFormFile = FileUtils.getFile(enduserDir, CUSTOM_FORM_FILE); if (customFormFile.exists() && customFormFile.canRead() && customFormFile.isFile()) { customForm = MAPPER.readValue(FileUtils.openInputStream(customFormFile), new TypeReference<HashMap<String, CustomAttributesInfo>>() { }); } } FileAlterationObserver observer = existsEnduserDir ? new FileAlterationObserver(enduserDir, pathname -> StringUtils.contains(pathname.getPath(), CUSTOM_FORM_FILE)) : new FileAlterationObserver(getClass().getResource("/" + CUSTOM_FORM_FILE).getFile(), pathname -> StringUtils.contains(pathname.getPath(), CUSTOM_FORM_FILE)); FileAlterationMonitor monitor = new FileAlterationMonitor(5000); FileAlterationListener listener = new FileAlterationListenerAdaptor() { @Override public void onFileChange(final File file) { try { LOG.trace("{} has changed. Reloading form customization configuration.", CUSTOM_FORM_FILE); customForm = MAPPER.readValue(FileUtils.openInputStream(file), new TypeReference<HashMap<String, CustomAttributesInfo>>() { }); } catch (IOException e) { e.printStackTrace(System.err); } } @Override public void onFileCreate(final File file) { try { LOG.trace("{} has been created. Loading form customization configuration.", CUSTOM_FORM_FILE); customForm = MAPPER.readValue(FileUtils.openInputStream(file), new TypeReference<HashMap<String, CustomAttributesInfo>>() { }); } catch (IOException e) { e.printStackTrace(System.err); } } @Override public void onFileDelete(final File file) { LOG.trace("{} has been deleted. Resetting form customization configuration.", CUSTOM_FORM_FILE); customForm = null; } }; observer.addListener(listener); monitor.addObserver(observer); monitor.start(); } catch (Exception e) { throw new WicketRuntimeException("Could not read " + CUSTOM_FORM_FILE, e); } // mount resources ClassPathScanImplementationLookup classPathScanImplementationLookup = (ClassPathScanImplementationLookup) getServletContext() .getAttribute(EnduserInitializer.CLASSPATH_LOOKUP); for (final Class<? extends AbstractResource> resource : classPathScanImplementationLookup.getResources()) { Resource annotation = resource.getAnnotation(Resource.class); if (annotation == null) { LOG.debug("No @Resource annotation found on {}, ignoring", resource.getName()); } else { try { final AbstractResource instance = resource.newInstance(); mountResource(annotation.path(), new ResourceReference(annotation.key()) { private static final long serialVersionUID = -128426276529456602L; @Override public IResource getResource() { return instance; } }); } catch (Exception e) { LOG.error("Could not instantiate {}", resource.getName(), e); } } } //mount captcha resource only if captcha is enabled if (captchaEnabled) { mountResource("/api/captcha", new ResourceReference("captcha") { private static final long serialVersionUID = -128426276529456602L; @Override public IResource getResource() { return new CaptchaResource(); } }); } }
From source file:org.asciidoctor.maven.AsciidoctorRefreshMojo.java
private void startPolling() throws MojoExecutionException { monitors = new ArrayList<FileAlterationMonitor>(); { // content monitor final FileAlterationObserver observer; if (sourceDocumentName != null) { observer = new FileAlterationObserver(sourceDirectory, new NameFileFilter(sourceDocumentName)); } else if (sourceDirectory != null) { observer = new FileAlterationObserver(sourceDirectory, new RegexFileFilter(ASCIIDOC_REG_EXP_EXTENSION)); } else {//from w ww . j a v a2 s . c o m monitors = null; // no need to start anything because there is no content return; } final FileAlterationMonitor monitor = new FileAlterationMonitor(interval); final FileAlterationListener listener = new FileAlterationListenerAdaptor() { @Override public void onFileCreate(final File file) { getLog().info("File " + file.getAbsolutePath() + " created."); needsUpdate.set(true); } @Override public void onFileChange(final File file) { getLog().info("File " + file.getAbsolutePath() + " updated."); needsUpdate.set(true); } @Override public void onFileDelete(final File file) { getLog().info("File " + file.getAbsolutePath() + " deleted."); needsUpdate.set(true); } }; observer.addListener(listener); monitor.addObserver(observer); monitors.add(monitor); } { // resources monitors if (synchronizations != null) { for (final Synchronization s : synchronizations) { final FileAlterationMonitor monitor = new FileAlterationMonitor(interval); final FileAlterationListener listener = new FileAlterationListenerAdaptor() { @Override public void onFileCreate(final File file) { getLog().info("File " + file.getAbsolutePath() + " created."); synchronize(s); needsUpdate.set(true); } @Override public void onFileChange(final File file) { getLog().info("File " + file.getAbsolutePath() + " updated."); synchronize(s); needsUpdate.set(true); } @Override public void onFileDelete(final File file) { getLog().info("File " + file.getAbsolutePath() + " deleted."); FileUtils.deleteQuietly(file); needsUpdate.set(true); } }; final File source = s.getSource(); final FileAlterationObserver observer; if (source.isDirectory()) { observer = new FileAlterationObserver(source); } else { observer = new FileAlterationObserver(source.getParentFile(), new NameFileFilter(source.getName())); } observer.addListener(listener); monitor.addObserver(observer); monitors.add(monitor); } } } for (final FileAlterationMonitor monitor : monitors) { try { monitor.start(); } catch (final Exception e) { throw new MojoExecutionException(e.getMessage(), e); } } }
From source file:org.bonitasoft.web.designer.config.LiveBuildConfig.java
@Bean public FileAlterationMonitor monitor() { return new FileAlterationMonitor(1000); }
From source file:org.codice.opendx.utility.NITFDirectoryWatcher.java
public void init() throws Exception { log.info("Starting NITFDirectoryWatcher"); File directory = new File(path); try {/*from w w w . j a v a 2s. c o m*/ directory.mkdirs(); } catch (Exception e) { log.warn("Unable to create nitf target directory: " + directory.getPath(), e); } FileAlterationObserver observer = new FileAlterationObserver(directory); observer.addListener(alterationListener); long interval = 5000l; monitor = new FileAlterationMonitor(interval); monitor.addObserver(observer); monitor.start(); }
From source file:org.cytoscape.app.internal.manager.AppManager.java
private void setupAlterationMonitor() { // Set up the FileAlterationMonitor to install/uninstall apps when apps are moved in/out of the // installed/uninstalled app directories fileAlterationMonitor = new FileAlterationMonitor(2000L); File installedAppsPath = new File(getInstalledAppsPath()); FileAlterationObserver installAlterationObserver = new FileAlterationObserver(installedAppsPath, new SingleLevelFileFilter(installedAppsPath), IOCase.SYSTEM); final AppManager appManager = this; // Listen for events on the "installed apps" folder installAlterationObserver.addListener(new FileAlterationListenerAdaptor() { @Override//from ww w . ja v a 2 s. c o m public void onFileCreate(File file) { App parsedApp = null; try { parsedApp = appParser.parseApp(file); } catch (AppParsingException e) { return; } App registeredApp = null; for (App app : apps) { if (parsedApp.heuristicEquals(app)) { registeredApp = app; // Delete old file if it was still there File oldFile = registeredApp.getAppFile(); if (oldFile.exists() && !registeredApp.getAppFile().equals(parsedApp.getAppFile())) { FileUtils.deleteQuietly(oldFile); } // Update file reference to reflect file having been moved registeredApp.setAppFile(file); } } try { if (registeredApp == null) { apps.add(parsedApp); parsedApp.install(appManager); } else { registeredApp.install(appManager); } } catch (AppInstallException e) { logger.warn(e.getLocalizedMessage()); } fireAppsChangedEvent(); } @Override public void onFileChange(File file) { // Can treat file replacements/changes as old file deleted, new file added this.onFileDelete(file); this.onFileCreate(file); fireAppsChangedEvent(); } @Override public void onFileDelete(File file) { // System.out.println(file + " on delete"); DebugHelper.print(this + " installObserverDelete", file.getAbsolutePath() + " deleted."); for (App app : apps) { if (app.getAppFile().equals(file)) { app.setStatus(AppStatus.FILE_MOVED); } } fireAppsChangedEvent(); } }); FileAlterationObserver disableAlterationObserver = new FileAlterationObserver(getDisabledAppsPath(), new SingleLevelFileFilter(new File(getDisabledAppsPath())), IOCase.SYSTEM); // Listen for events on the "disabled apps" folder disableAlterationObserver.addListener(new FileAlterationListenerAdaptor() { @Override public void onFileCreate(File file) { App parsedApp = null; try { parsedApp = appParser.parseApp(file); } catch (AppParsingException e) { logger.warn(e.getLocalizedMessage()); return; } DebugHelper.print(this + " disableObserver Create", parsedApp.getAppName() + " parsed"); App registeredApp = null; for (App app : apps) { if (parsedApp.heuristicEquals(app)) { registeredApp = app; // Delete old file if it was still there // TODO: Possible rename from filename-2 to filename? File oldFile = registeredApp.getAppFile(); if (oldFile.exists() && !registeredApp.getAppFile().equals(parsedApp.getAppFile())) { DebugHelper.print(this + " disableObserverCreate", registeredApp.getAppName() + " moved from " + registeredApp.getAppFile().getAbsolutePath() + " to " + parsedApp.getAppFile().getAbsolutePath() + ". deleting: " + oldFile); FileUtils.deleteQuietly(oldFile); } // Update file reference to reflect file having been moved registeredApp.setAppFile(file); } } try { if (registeredApp == null) { apps.add(parsedApp); parsedApp.disable(appManager); } else { registeredApp.disable(appManager); } fireAppsChangedEvent(); } catch (AppDisableException e) { } // System.out.println(file + " on create"); } @Override public void onFileChange(File file) { // Can treat file replacements/changes as old file deleted, new file added this.onFileDelete(file); this.onFileCreate(file); fireAppsChangedEvent(); } @Override public void onFileDelete(File file) { // System.out.println(file + " on delete"); DebugHelper.print(this + " disableObserverDelete", file.getAbsolutePath() + " deleted."); for (App app : apps) { // System.out.println("checking " + app.getAppFile().getAbsolutePath()); if (app.getAppFile().equals(file)) { // System.out.println(app + " moved"); app.setStatus(AppStatus.FILE_MOVED); } } fireAppsChangedEvent(); } }); FileAlterationObserver uninstallAlterationObserver = new FileAlterationObserver(getUninstalledAppsPath(), new SingleLevelFileFilter(new File(getUninstalledAppsPath())), IOCase.SYSTEM); // Listen for events on the "uninstalled apps" folder uninstallAlterationObserver.addListener(new FileAlterationListenerAdaptor() { @Override public void onFileCreate(File file) { App parsedApp = null; try { parsedApp = appParser.parseApp(file); } catch (AppParsingException e) { return; } DebugHelper.print(this + " uninstallObserverCreate", parsedApp.getAppName() + " parsed"); App registeredApp = null; for (App app : apps) { if (parsedApp.heuristicEquals(app)) { registeredApp = app; // Delete old file if it was still there // TODO: Possible rename from filename-2 to filename? File oldFile = registeredApp.getAppFile(); if (oldFile.exists() && !registeredApp.getAppFile().equals(parsedApp.getAppFile())) { DebugHelper.print(this + " uninstallObserverCreate", registeredApp.getAppName() + " moved from " + registeredApp.getAppFile().getAbsolutePath() + " to " + parsedApp.getAppFile().getAbsolutePath() + ". deleting: " + oldFile); FileUtils.deleteQuietly(oldFile); } // Update file reference to reflect file having been moved registeredApp.setAppFile(file); } } try { // Checks if the app file moved here belonged to a known app, if so, uninstall it. if (registeredApp == null) { apps.add(parsedApp); parsedApp.uninstall(appManager); } else { registeredApp.uninstall(appManager); } fireAppsChangedEvent(); } catch (AppUninstallException e) { } // System.out.println(file + " on create"); } @Override public void onFileChange(File file) { // Can treat file replacements/changes as old file deleted, new file added this.onFileDelete(file); this.onFileCreate(file); fireAppsChangedEvent(); } @Override public void onFileDelete(File file) { // System.out.println(file + " on delete"); DebugHelper.print(this + " uninstallObserverDelete", file.getAbsolutePath() + " deleted."); for (App app : apps) { // System.out.println("checking " + app.getAppFile().getAbsolutePath()); if (app.getAppFile().equals(file)) { // System.out.println(app + " moved"); app.setStatus(AppStatus.FILE_MOVED); } } fireAppsChangedEvent(); } }); // setupKarafDeployMonitor(fileAlterationMonitor); try { installAlterationObserver.initialize(); fileAlterationMonitor.addObserver(installAlterationObserver); disableAlterationObserver.initialize(); fileAlterationMonitor.addObserver(disableAlterationObserver); uninstallAlterationObserver.initialize(); fileAlterationMonitor.addObserver(uninstallAlterationObserver); fileAlterationMonitor.start(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }