// Path: resourcesmanager-core/src/main/java/com/gemserk/resources/Resource.java
// public class Resource<T> {
// 
// 	T data = null;
// 
// 	DataLoader<T> dataLoader;
// 
// 	protected Resource(DataLoader<T> dataLoader) {
// 		this(dataLoader, true);
// 	}
// 
// 	protected Resource(DataLoader<T> dataLoader, boolean deferred) {
// 		this.dataLoader = dataLoader;
// 		if (!deferred)
// 			reload();
// 	}
// 
// 	/**
// 	 * Returns the data stored by the Resource.
// 	 */
// 	public T get() {
// 		if (!isLoaded())
// 			load();
// 		return data;
// 	}
// 	
// 	public void set(T data) {
// 		this.data = data;
// 	}
// 
// 	public DataLoader<T> getDataLoader() {
// 		return dataLoader;
// 	}
// 	
// 	public void setDataLoader(DataLoader<T> dataLoader) {
// 		unload();
// 		this.dataLoader = dataLoader;
// 	}
// 
// 	/**
// 	 * Reloads the internal data by calling unload and load().
// 	 */
// 	public void reload() {
// 		unload();
// 		load();
// 	}
// 
// 	/**
// 	 * Loads the data if it wasn't loaded yet, it does nothing otherwise.
// 	 */
// 	public void load() {
// 		if (!isLoaded())
// 			data = dataLoader.load();
// 	}
// 
// 	/**
// 	 * Unloads the data by calling the DataLoader.unload(t) method.
// 	 */
// 	public void unload() {
// 		if (isLoaded()) {
// 			dataLoader.unload(data);
// 			data = null;
// 		}
// 	}
// 
// 	/**
// 	 * Returns true if the data is loaded, false otherwise.
// 	 */
// 	public boolean isLoaded() {
// 		return data != null;
// 	}
// 
// 	public Resource<T> clone() {
// 		return new Resource<T>(dataLoader);
// 	}
// 
// }
// 
// Path: resourcesmanager-core/src/main/java/com/gemserk/resources/monitor/handlers/ReloadResourceWhenFileModified.java
// @SuppressWarnings("rawtypes")
// public class ReloadResourceWhenFileModified extends FileStatusChangedHandlerAdapter {
// 
// 	protected static final Logger logger = LoggerFactory.getLogger(ReloadResourceWhenFileModified.class);
// 
// 	private final Resource resource;
// 
// 	public ReloadResourceWhenFileModified(Resource resource) {
// 		this.resource = resource;
// 	}
// 
// 	@Override
// 	public void onFileModified(File file) {
// 		resource.reload();
// 		if (logger.isInfoEnabled())
// 			logger.info("Reloading resource from file " + file);
// 	}
// 
// }


import java.io.File;
import com.gemserk.resources.Resource;
import com.gemserk.resources.monitor.handlers.ReloadResourceWhenFileModified;
package com.gemserk.resources.monitor;



public class FileMonitorResourceHelperImpl implements FileMonitorResourceHelper {

	private FilesMonitor filesMonitor;

	public void setFilesMonitor(FilesMonitor filesMonitor) {
		this.filesMonitor = filesMonitor;
	}

	@SuppressWarnings("rawtypes")
	public void monitorClassPathFile(String file, Resource resource) {
		new FileMonitorAction(filesMonitor).with(new ReloadResourceWhenFileModified(resource)).monitor(FileUtils.classPathFile(file));
	}

	@SuppressWarnings("rawtypes")
// Path: resourcesmanager-core/src/main/java/com/gemserk/resources/Resource.java
// public class Resource<T> {
// 
// 	T data = null;
// 
// 	DataLoader<T> dataLoader;
// 
// 	protected Resource(DataLoader<T> dataLoader) {
// 		this(dataLoader, true);
// 	}
// 
// 	protected Resource(DataLoader<T> dataLoader, boolean deferred) {
// 		this.dataLoader = dataLoader;
// 		if (!deferred)
// 			reload();
// 	}
// 
// 	/**
// 	 * Returns the data stored by the Resource.
// 	 */
// 	public T get() {
// 		if (!isLoaded())
// 			load();
// 		return data;
// 	}
// 	
// 	public void set(T data) {
// 		this.data = data;
// 	}
// 
// 	public DataLoader<T> getDataLoader() {
// 		return dataLoader;
// 	}
// 	
// 	public void setDataLoader(DataLoader<T> dataLoader) {
// 		unload();
// 		this.dataLoader = dataLoader;
// 	}
// 
// 	/**
// 	 * Reloads the internal data by calling unload and load().
// 	 */
// 	public void reload() {
// 		unload();
// 		load();
// 	}
// 
// 	/**
// 	 * Loads the data if it wasn't loaded yet, it does nothing otherwise.
// 	 */
// 	public void load() {
// 		if (!isLoaded())
// 			data = dataLoader.load();
// 	}
// 
// 	/**
// 	 * Unloads the data by calling the DataLoader.unload(t) method.
// 	 */
// 	public void unload() {
// 		if (isLoaded()) {
// 			dataLoader.unload(data);
// 			data = null;
// 		}
// 	}
// 
// 	/**
// 	 * Returns true if the data is loaded, false otherwise.
// 	 */
// 	public boolean isLoaded() {
// 		return data != null;
// 	}
// 
// 	public Resource<T> clone() {
// 		return new Resource<T>(dataLoader);
// 	}
// 
// }
// 
// Path: resourcesmanager-core/src/main/java/com/gemserk/resources/monitor/handlers/ReloadResourceWhenFileModified.java
// @SuppressWarnings("rawtypes")
// public class ReloadResourceWhenFileModified extends FileStatusChangedHandlerAdapter {
// 
// 	protected static final Logger logger = LoggerFactory.getLogger(ReloadResourceWhenFileModified.class);
// 
// 	private final Resource resource;
// 
// 	public ReloadResourceWhenFileModified(Resource resource) {
// 		this.resource = resource;
// 	}
// 
// 	@Override
// 	public void onFileModified(File file) {
// 		resource.reload();
// 		if (logger.isInfoEnabled())
// 			logger.info("Reloading resource from file " + file);
// 	}
// 
// }


// Path: resourcesmanager-core/src/main/java/com/gemserk/resources/monitor/FileMonitorResourceHelperImpl.java
import java.io.File;
import com.gemserk.resources.Resource;
import com.gemserk.resources.monitor.handlers.ReloadResourceWhenFileModified;

package com.gemserk.resources.monitor;



public class FileMonitorResourceHelperImpl implements FileMonitorResourceHelper {

	private FilesMonitor filesMonitor;

	public void setFilesMonitor(FilesMonitor filesMonitor) {
		this.filesMonitor = filesMonitor;
	}

	@SuppressWarnings("rawtypes")
	public void monitorClassPathFile(String file, Resource resource) {
		new FileMonitorAction(filesMonitor).with(new ReloadResourceWhenFileModified(resource)).monitor(FileUtils.classPathFile(file));
	}

	@SuppressWarnings("rawtypes")
	public void monitorFileSystemFile(String file, Resource resource) {