Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 167955 Details for
Bug 310159
Hang in JavaModel.getExternalTarget(JavaModel.java:333)
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
Updated patch
patch_310159_latest.txt (text/plain), 6.71 KB, created by
Jay Arthanareeswaran
on 2010-05-11 12:07:51 EDT
(
hide
)
Description:
Updated patch
Filename:
MIME Type:
Creator:
Jay Arthanareeswaran
Created:
2010-05-11 12:07:51 EDT
Size:
6.71 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.jdt.core >Index: model/org/eclipse/jdt/internal/core/ExternalFoldersManager.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ExternalFoldersManager.java,v >retrieving revision 1.17 >diff -u -r1.17 ExternalFoldersManager.java >--- model/org/eclipse/jdt/internal/core/ExternalFoldersManager.java 25 Apr 2010 20:09:25 -0000 1.17 >+++ model/org/eclipse/jdt/internal/core/ExternalFoldersManager.java 11 May 2010 16:03:09 -0000 >@@ -1,5 +1,5 @@ > /******************************************************************************* >- * Copyright (c) 2000, 2009 IBM Corporation and others. >+ * Copyright (c) 2000, 2010 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 >@@ -14,6 +14,7 @@ > import java.io.FileOutputStream; > import java.io.IOException; > import java.util.ArrayList; >+import java.util.Collections; > import java.util.HashMap; > import java.util.HashSet; > import java.util.Iterator; >@@ -39,9 +40,19 @@ > public class ExternalFoldersManager { > private static final String EXTERNAL_PROJECT_NAME = ".org.eclipse.jdt.core.external.folders"; //$NON-NLS-1$ > private static final String LINKED_FOLDER_NAME = ".link"; //$NON-NLS-1$ >- private HashMap folders; >+ private Map folders; > private int counter = 0; >+ /* Singleton instance */ >+ private static ExternalFoldersManager MANAGER = new ExternalFoldersManager(); > >+ private ExternalFoldersManager() { >+ // Prevent instantiation >+ } >+ >+ public static ExternalFoldersManager getExternalFoldersManager() { >+ return MANAGER; >+ } >+ > /* > * Returns a set of external path to external folders referred to on the given classpath. > * Returns null if none. >@@ -92,8 +103,8 @@ > return addFolder(externalFolderPath, getExternalFoldersProject()); > } > >- private synchronized IFolder addFolder(IPath externalFolderPath, IProject externalFoldersProject) { >- HashMap knownFolders = getFolders(); >+ private IFolder addFolder(IPath externalFolderPath, IProject externalFoldersProject) { >+ Map knownFolders = getFolders(); > Object existing = knownFolders.get(externalFolderPath); > if (existing != null) { > return (IFolder) existing; >@@ -129,25 +140,27 @@ > project.delete(true, monitor); > } > >- private synchronized ArrayList getFoldersToCleanUp(IProgressMonitor monitor) throws CoreException { >+ private ArrayList getFoldersToCleanUp(IProgressMonitor monitor) throws CoreException { > DeltaProcessingState state = JavaModelManager.getDeltaState(); > HashMap roots = state.roots; > HashMap sourceAttachments = state.sourceAttachments; > if (roots == null && sourceAttachments == null) > return null; >- HashMap knownFolders = getFolders(); >- Iterator iterator = knownFolders.entrySet().iterator(); >+ Map knownFolders = getFolders(); > ArrayList result = null; >- while (iterator.hasNext()) { >- Map.Entry entry = (Map.Entry) iterator.next(); >- IPath path = (IPath) entry.getKey(); >- if ((roots != null && !roots.containsKey(path)) >- && (sourceAttachments != null && !sourceAttachments.containsKey(path))) { >- IFolder folder = (IFolder) entry.getValue(); >- if (folder != null) { >- if (result == null) >- result = new ArrayList(); >- result.add(folder); >+ synchronized (knownFolders) { >+ Iterator iterator = knownFolders.entrySet().iterator(); >+ while (iterator.hasNext()) { >+ Map.Entry entry = (Map.Entry) iterator.next(); >+ IPath path = (IPath) entry.getKey(); >+ if ((roots != null && !roots.containsKey(path)) >+ && (sourceAttachments != null && !sourceAttachments.containsKey(path))) { >+ IFolder folder = (IFolder) entry.getValue(); >+ if (folder != null) { >+ if (result == null) >+ result = new ArrayList(); >+ result.add(folder); >+ } > } > } > } >@@ -222,13 +235,13 @@ > project.create(desc, IResource.HIDDEN, monitor); > } > >- public synchronized IFolder getFolder(IPath externalFolderPath) { >+ public IFolder getFolder(IPath externalFolderPath) { > return (IFolder) getFolders().get(externalFolderPath); > } > >- private HashMap getFolders() { >+ private Map getFolders() { > if (this.folders == null) { >- this.folders = new HashMap(); >+ Map tempFolders = new HashMap(); > IProject project = getExternalFoldersProject(); > try { > if (!project.isAccessible()) { >@@ -237,7 +250,7 @@ > openExternalFoldersProject(project, null/*no progress*/); > } else { > // if project doesn't exist, do not open and recreate it as it means that there are no external folders >- return this.folders; >+ return this.folders = Collections.synchronizedMap(tempFolders); > } > } > IResource[] members = project.members(); >@@ -245,12 +258,13 @@ > IResource member = members[i]; > if (member.getType() == IResource.FOLDER && member.isLinked() && member.getName().startsWith(LINKED_FOLDER_NAME)) { > IPath externalFolderPath = member.getLocation(); >- this.folders.put(externalFolderPath, member); >+ tempFolders.put(externalFolderPath, member); > } > } > } catch (CoreException e) { > Util.log(e, "Exception while initializing external folders"); //$NON-NLS-1$ > } >+ this.folders = Collections.synchronizedMap(tempFolders); > } > return this.folders; > } >@@ -308,7 +322,7 @@ > return; > } > >- public synchronized IFolder removeFolder(IPath externalFolderPath) { >+ public IFolder removeFolder(IPath externalFolderPath) { > return (IFolder) getFolders().remove(externalFolderPath); > } > >Index: model/org/eclipse/jdt/internal/core/JavaModelManager.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaModelManager.java,v >retrieving revision 1.449 >diff -u -r1.449 JavaModelManager.java >--- model/org/eclipse/jdt/internal/core/JavaModelManager.java 12 Apr 2010 10:04:31 -0000 1.449 >+++ model/org/eclipse/jdt/internal/core/JavaModelManager.java 11 May 2010 16:03:10 -0000 >@@ -451,7 +451,7 @@ > /* whether an AbortCompilationUnit should be thrown when the source of a compilation unit cannot be retrieved */ > public ThreadLocal abortOnMissingSource = new ThreadLocal(); > >- private ExternalFoldersManager externalFoldersManager = new ExternalFoldersManager(); >+ private ExternalFoldersManager externalFoldersManager = ExternalFoldersManager.getExternalFoldersManager(); > > /** > * Returns whether the given full path (for a package) conflicts with the output location
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
Olivier_Thomann
:
review+
Actions:
View
|
Diff
Attachments on
bug 310159
:
165801
|
165810
|
167759
|
167803
| 167955