package net.contextfw.web.application.internal.development; import java.util.HashSet; import java.util.Set; import net.contextfw.web.application.configuration.Configuration; import net.contextfw.web.application.development.DevelopmentModeListener; public class DevelopmentToolsImpl implements InternalDevelopmentTools { private final Set<DevelopmentModeListener> listeners = new HashSet<DevelopmentModeListener>(); private final ClassLoaderProvider classLoaderProvider; private final boolean developmentMode; public DevelopmentToolsImpl(Configuration configuration) { classLoaderProvider = new ClassLoaderProvider( new ReloadingClassLoaderConf(configuration)); developmentMode = configuration.get(Configuration.DEVELOPMENT_MODE); } @Override public void addListener(DevelopmentModeListener listener) { if (listener != null) { listeners.add(listener); } } @Override public boolean isDevelopmentMode() { return developmentMode; } @Override public ClassLoader reloadClasses() { ClassLoader classLoader = classLoaderProvider.reload(); for (DevelopmentModeListener listener : listeners) { listener.classesReloaded(classLoader); } return classLoader; } @Override public void reloadResources() { for (DevelopmentModeListener listener : listeners) { listener.resourcesReloaded(); } } }