blob: 31da1c53ed19c5b09af2cc3b5116b78116d4fa6f [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2003, 2007 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.common;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.jdt.core.IClasspathEntry;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.internal.core.ClasspathEntry;
import org.eclipse.jst.j2ee.internal.plugin.J2EEPlugin;
public class UpdateProjectClasspath {
public UpdateProjectClasspath(String sourceFolder, String componentName, IProject jProject){
addSrcFolderToProject(sourceFolder, componentName, jProject);
}
private IClasspathEntry[] getClasspathEntries(String sourceFolder, String componentName,
IProject jProject) {
ArrayList list = new ArrayList();
list.add(JavaCore.newSourceEntry(jProject.getFullPath().append(sourceFolder)));
IClasspathEntry[] classpath = new IClasspathEntry[list.size()];
IPath newOutputPath = null;
for (int i = 0; i < classpath.length; i++) {
classpath[i] = (IClasspathEntry) list.get(i);
newOutputPath = Path.fromOSString(Path.SEPARATOR +jProject.getName() + "/bin/"); //$NON-NLS-1$
((ClasspathEntry)classpath[i]).specificOutputLocation = newOutputPath;
}
return classpath;
}
private void addSrcFolderToProject(String sourceFolder,String componentName,
IProject jProject) {
IJavaProject javaProject = JavaCore.create( jProject );
try {
IClasspathEntry[] oldEntries = javaProject.getRawClasspath();
List oldEntriesList,classpathList;
IClasspathEntry[] newEntries = getClasspathEntries(sourceFolder, componentName,
jProject);
/**
* Warning clean-up 12/05/2005
*/
//int oldSize = oldEntries.length;
//int newSize = newEntries.length;
classpathList = new ArrayList();
oldEntriesList = Arrays.asList(oldEntries);
classpathList.addAll(oldEntriesList);
for( int j=0; j< newEntries.length; j++){
if(!oldEntriesList.contains(newEntries[j])) {
classpathList.add(newEntries[j]);
}
}
IClasspathEntry[] classpathEntries = (IClasspathEntry[]) classpathList.toArray(new IClasspathEntry[classpathList.size()]);
javaProject.setRawClasspath(classpathEntries, null);
}
catch (JavaModelException e) {
J2EEPlugin.logError(e);
}
}
}