org.mule.module.launcher.AbstractFileWatcher Maven / Gradle / Ivy
/*
* $Id: AbstractFileWatcher.java 21431 2011-03-03 16:55:13Z aperepel $
* --------------------------------------------------------------------------------------
* Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com
*
* The software in this package is published under the terms of the CPAL v1.0
* license, a copy of which has been included with this distribution in the
* LICENSE.txt file.
*/
package org.mule.module.launcher;
import java.io.File;
import java.util.Arrays;
import java.util.Collection;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public abstract class AbstractFileWatcher implements Runnable
{
protected Log logger = LogFactory.getLog(getClass());
private long timeStamp;
private Collection files;
public AbstractFileWatcher(File file)
{
this(Arrays.asList(file));
}
public AbstractFileWatcher(Collection files)
{
this.files = files;
this.timeStamp = System.currentTimeMillis();
}
public final void run()
{
long lastTimeStamp = timeStamp;
File latestFile = null;
for (File file : files)
{
long timestamp = file.lastModified();
if (timestamp > lastTimeStamp)
{
lastTimeStamp = timeStamp;
latestFile = file;
}
}
if (latestFile != null)
{
this.timeStamp = lastTimeStamp;
try
{
onChange(latestFile);
}
catch (Throwable t)
{
logger.error(String.format("Monitor for %s threw an exception", latestFile), t);
}
}
}
protected abstract void onChange(File file);
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy