blob: cafb3c88958327dfafef7b84566ac7b731f0e6ca [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jst.j2ee.internal.componentcore;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jst.j2ee.project.JavaEEProjectUtilities;
import org.eclipse.wst.common.componentcore.internal.IModuleHandler;
import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
import org.eclipse.wst.common.componentcore.resources.IVirtualReference;
public class JavaEEModuleHandler implements IModuleHandler {
public String getArchiveName(IProject proj,IVirtualComponent comp) {
if (comp != null)
return JavaEEProjectUtilities.getComponentURI(comp);
return proj.getName() + ".jar"; //$NON-NLS-1$
}
public boolean setComponentAttributes(IProject proj) {
return true;
}
public List<IProject> getFilteredProjectListForAdd(IVirtualComponent sourceComponent, List<IProject> availableProjects) {
Iterator<IProject> i = availableProjects.iterator();
IProject p;
List existingRefs = new ArrayList();
IVirtualReference[] refs = sourceComponent.getReferences();
for (int j = 0; j < refs.length; j++) {
IVirtualReference iVirtualReference = refs[j];
IVirtualComponent refComp = iVirtualReference.getReferencedComponent();
if (refComp.isBinary())
continue;
if (refComp.getProject() != null)
existingRefs.add(refComp.getProject());
}
while(i.hasNext()) {
p = i.next();
if( !p.isOpen())
i.remove();
else {
IProject compProject = sourceComponent.getProject();
if( p.equals(compProject))
i.remove();
else if (!isJavaProject(p))
i.remove();
else if (existingRefs.contains(p))
i.remove();
}
}
return availableProjects;
}
private boolean isJavaProject(IProject project) {
if (project != null)
try {
return project.hasNature(JavaCore.NATURE_ID);
} catch (CoreException e) {
org.eclipse.jst.j2ee.internal.plugin.J2EEPlugin.logError(e);
}
return false;
}
}