blob: 34629f99039dd472c930846e05678e0abe6a878c [file] [log] [blame]
package org.eclipse.jst.jsf.common.internal.resource;
import java.util.Collection;
import org.eclipse.core.resources.IProject;
import org.eclipse.jst.jsf.common.internal.locator.ILocator;
import org.eclipse.jst.jsf.common.internal.locator.ILocatorChangeListener;
import org.eclipse.jst.jsf.common.internal.locator.ILocatorChangeListener.LocatorChangeEvent;
/**
* Provider of jars for use by the locator. Exists to abstract the locator from
* JDT for test purposes.
*
*/
public interface IJarLocator extends
ILocator<Collection<? extends ClasspathJarFile>, IProject, String>
{
/**
* @param project
* @return a list of valid jar files.
*/
Collection<? extends ClasspathJarFile> getJars(final IProject project);
/**
* @param listener
*/
void addListener(final JarChangeListener listener);
/**
* @param listener
*/
void removeListener(final JarChangeListener listener);
/**
* Disposes the provider.
*/
void dispose();
/**
* Implemented by classes that want receive events signalling a change on
* the classpath.
*
*/
public abstract class JarChangeListener implements ILocatorChangeListener
{
/**
* @param event
*/
public abstract void changed(JarChangeEvent event);
public final void changed(final LocatorChangeEvent event)
{
changed((JarChangeEvent) event);
}
}
/**
* Indicates a change on the class path.
*
*/
public class JarChangeEvent extends LocatorChangeEvent
{
/**
* Indicates the type of event
*
*/
public enum Type
{
/**
* Indicates a jar has been added.
*/
JAR_ADDED,
/**
* Indicates a jar has been removed.
*/
JAR_REMOVED;
}
private final Type _type;
private final ClasspathJarFile _jar;
/**
* @param source
* @param type
* @param jar
*/
public JarChangeEvent(final ILocator source, final Type type,
final ClasspathJarFile jar)
{
super(source);
_type = type;
_jar = jar;
}
/**
* @return the type of the event
*/
public Type getType()
{
return _type;
}
/**
* @return the affected jar.
*/
public ClasspathJarFile getJar()
{
return _jar;
}
/**
*
*/
private static final long serialVersionUID = 8163703453414731319L;
}
}