blob: 7742d75f78d5002f1efe66040515413d82331367 [file] [log] [blame]
package org.eclipse.jst.jsf.common.internal.finder.acceptor;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import org.eclipse.core.resources.IProject;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.IPackageFragmentRoot;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jst.jsf.common.JSFCommonPlugin;
import org.eclipse.jst.jsf.common.internal.finder.AbstractMatcher.AlwaysMatcher;
import org.eclipse.jst.jsf.common.internal.finder.VisitorMatcher;
import org.eclipse.jst.jsf.common.internal.finder.VisitorMatcher.MatchingAcceptor;
import org.eclipse.jst.jsf.common.internal.resource.ClasspathJarFile;
import org.eclipse.jst.jsf.common.internal.resource.JavaCoreMediator;
/**
* A matching acceptor that provides the jars referenced by a project.
*
* @author cbateman
*
*/
public class JarMatchingAcceptor extends
MatchingAcceptor<IProject, ClasspathJarFile>
{
private final JavaCoreMediator _javaCoreMediator;
/**
* @param javaCoreMediator
*/
public JarMatchingAcceptor(final JavaCoreMediator javaCoreMediator)
{
_javaCoreMediator = javaCoreMediator;
}
@Override
protected Collection<ClasspathJarFile> getInputChildren(
final IProject project)
{
final IJavaProject javaProject = _javaCoreMediator.create(project);
IPackageFragmentRoot[] roots = null;
try
{
roots = javaProject.getPackageFragmentRoots();
} catch (final JavaModelException e1)
{
JSFCommonPlugin.log(e1);
}
if (roots == null || roots.length == 0)
{
return Collections.EMPTY_LIST;
}
final List<ClasspathJarFile> jars = new ArrayList<ClasspathJarFile>();
VisitorMatcher<IPackageFragmentRoot, ClasspathJarFile, String> entryMatcher = new VisitorMatcher<IPackageFragmentRoot, ClasspathJarFile, String>(
"", "", new ClasspathEntryJarMatchingAcceptor(project), //$NON-NLS-1$ //$NON-NLS-2$
Collections.singletonList(new AlwaysMatcher()));
for (final IPackageFragmentRoot root : roots)
{
try
{
jars.addAll(entryMatcher.perform(root));
} catch (Exception e)
{
JSFCommonPlugin.log(e);
}
}
return jars;
}
@Override
protected Collection<ClasspathJarFile> getVisitableChildren(
final ClasspathJarFile visitType)
{
return Collections.EMPTY_LIST;
}
}