[241343] Eclipse hangs at "initializing java tooling"
diff --git a/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/common/classpath/J2EEComponentClasspathContainer.java b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/common/classpath/J2EEComponentClasspathContainer.java
index 88b7ef8..e9da13f 100644
--- a/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/common/classpath/J2EEComponentClasspathContainer.java
+++ b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/common/classpath/J2EEComponentClasspathContainer.java
@@ -30,6 +30,8 @@
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jst.common.jdt.internal.classpath.ClasspathDecorations;
import org.eclipse.jst.common.jdt.internal.classpath.ClasspathDecorationsManager;
+import org.eclipse.jst.common.jdt.internal.javalite.IJavaProjectLite;
+import org.eclipse.jst.common.jdt.internal.javalite.JavaCoreLite;
import org.eclipse.jst.j2ee.componentcore.J2EEModuleVirtualComponent;
import org.eclipse.jst.j2ee.componentcore.util.EARVirtualComponent;
import org.eclipse.jst.j2ee.internal.common.J2EECommonMessages;
@@ -63,6 +65,7 @@
private IPath containerPath;
private IJavaProject javaProject;
+ private IJavaProjectLite javaProjectLite;
private IClasspathEntry[] entries = new IClasspathEntry[0];
private boolean exportEntries = true; //the default behavior is to always export these dependencies
private static Map keys = new Hashtable();
@@ -80,10 +83,11 @@
public J2EEComponentClasspathContainer(IPath path, IJavaProject javaProject) {
this.containerPath = path;
this.javaProject = javaProject;
+ this.javaProjectLite = JavaCoreLite.create(javaProject);
}
private boolean requiresUpdate() {
- IVirtualComponent component = ComponentCore.createComponent(javaProject.getProject());
+ IVirtualComponent component = ComponentCore.createComponent(javaProjectLite.getProject());
if (component == null) {
return false;
}
@@ -121,13 +125,13 @@
}
private void update() {
- IVirtualComponent component = ComponentCore.createComponent(javaProject.getProject());
+ IVirtualComponent component = ComponentCore.createComponent(javaProjectLite.getProject());
if (component == null) {
return;
}
Object key = null;
- if(!javaProject.getProject().getFile(StructureEdit.MODULE_META_FILE_NAME).exists()){
- Integer hashCode = new Integer(javaProject.getProject().hashCode());
+ if(!javaProjectLite.getProject().getFile(StructureEdit.MODULE_META_FILE_NAME).exists()){
+ Integer hashCode = new Integer(javaProjectLite.getProject().hashCode());
key = keys.get(hashCode);
if(key == null){
keys.put(hashCode, hashCode);
@@ -142,7 +146,7 @@
retryCount = new Integer(retryCount.intValue() + 1);
}
retries.put(key, retryCount);
- J2EEComponentClasspathUpdater.getInstance().queueUpdate(javaProject.getProject());
+ J2EEComponentClasspathUpdater.getInstance().queueUpdate(javaProjectLite.getProject());
return;
}
@@ -213,24 +217,19 @@
List entriesList = new ArrayList();
try {
- IJavaProject javaProject = JavaCore.create(component.getProject());
boolean useJDTToControlExport = J2EEComponentClasspathContainerUtils.getDefaultUseEARLibrariesJDTExport();
if(useJDTToControlExport){
//if the default is not enabled, then check whether the container is being exported
- try{
- IClasspathEntry [] rawEntries = javaProject.getRawClasspath();
- for(int i=0;i<rawEntries.length; i++){
- IClasspathEntry entry = rawEntries[i];
- if(entry.getEntryKind() == IClasspathEntry.CPE_CONTAINER){
- if(entry.getPath().equals(CONTAINER_PATH)){
- exportEntries = entry.isExported();
- break;
- }
+ IClasspathEntry [] rawEntries = javaProjectLite.readRawClasspath();
+ for(int i=0;i<rawEntries.length; i++){
+ IClasspathEntry entry = rawEntries[i];
+ if(entry.getEntryKind() == IClasspathEntry.CPE_CONTAINER){
+ if(entry.getPath().equals(CONTAINER_PATH)){
+ exportEntries = entry.isExported();
+ break;
}
}
- } catch (JavaModelException e) {
- J2EEPlugin.logError(e);
}
}
@@ -267,12 +266,12 @@
srcrootpath = dec.getSourceAttachmentRootPath();
attrs = dec.getExtraAttributes();
}
- IClasspathEntry newEntry = JavaCore.newLibraryEntry( lastUpdate.paths[i], srcpath, srcrootpath, access, attrs, exportEntries );
+ IClasspathEntry newEntry = JavaCoreLite.newLibraryEntry( lastUpdate.paths[i], srcpath, srcrootpath, access, attrs, exportEntries );
entriesList.add(newEntry);
} else {
IProject project = comp.getProject();
lastUpdate.paths[i] = project.getFullPath();
- entriesList.add(JavaCore.newProjectEntry(lastUpdate.paths[i], exportEntries));
+ entriesList.add(JavaCoreLite.newProjectEntry(lastUpdate.paths[i], exportEntries));
}
}
} finally {
@@ -314,7 +313,7 @@
public IClasspathEntry[] getClasspathEntries() {
if(!isUpdating){
- if(this != J2EEComponentClasspathContainerUtils.getInstalledEARLibrariesContainer(javaProject.getProject())){
+ if(this != J2EEComponentClasspathContainerUtils.getInstalledEARLibrariesContainer(javaProjectLite.getProject())){
try {
isUpdating = true;
update();
diff --git a/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/common/classpath/J2EEComponentClasspathContainerUtils.java b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/common/classpath/J2EEComponentClasspathContainerUtils.java
index 93cfe14..c21c2e9 100644
--- a/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/common/classpath/J2EEComponentClasspathContainerUtils.java
+++ b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/common/classpath/J2EEComponentClasspathContainerUtils.java
@@ -57,20 +57,14 @@
}
public static IClasspathEntry getInstalledContainerEntry(IJavaProject jproj, IPath classpathContainerPath) {
- if (jproj.isOpen()) {
- try {
- IClasspathEntry[] cpes;
- cpes = jproj.getRawClasspath();
- for (int j = 0; j < cpes.length; j++) {
- final IClasspathEntry cpe = cpes[j];
- if (cpe.getEntryKind() == IClasspathEntry.CPE_CONTAINER) {
- if (cpe.getPath().equals(classpathContainerPath)) {
- return cpe; // entry found
- }
- }
+ IClasspathEntry[] cpes;
+ cpes = jproj.readRawClasspath();
+ for (int j = 0; j < cpes.length; j++) {
+ final IClasspathEntry cpe = cpes[j];
+ if (cpe.getEntryKind() == IClasspathEntry.CPE_CONTAINER) {
+ if (cpe.getPath().equals(classpathContainerPath)) {
+ return cpe; // entry found
}
- } catch (JavaModelException e) {
- J2EEPlugin.getDefault().getLogger().logError(e);
}
}
// entry not found