View | Details | Raw Unified | Return to bug 337415 | Differences between
and this patch

Collapse All | Expand All

(-)model/org/eclipse/jdt/core/JavaCore.java (-3 / +8 lines)
Lines 3530-3537 Link Here
3530
3530
3531
			// initialize all containers and variables
3531
			// initialize all containers and variables
3532
			JavaModelManager manager = JavaModelManager.getJavaModelManager();
3532
			JavaModelManager manager = JavaModelManager.getJavaModelManager();
3533
			ExternalFoldersManager externalFoldersManager = JavaModelManager.getExternalManager();
3534
			externalFoldersManager.createExternalFoldersProject(monitor);
3535
			SubProgressMonitor subMonitor = null;
3533
			SubProgressMonitor subMonitor = null;
3536
			try {
3534
			try {
3537
				if (monitor != null) {
3535
				if (monitor != null) {
Lines 3569-3574 Link Here
3569
				monitor.subTask(Messages.javamodel_resetting_source_attachment_properties);
3567
				monitor.subTask(Messages.javamodel_resetting_source_attachment_properties);
3570
			final IJavaProject[] projects = manager.getJavaModel().getJavaProjects();
3568
			final IJavaProject[] projects = manager.getJavaModel().getJavaProjects();
3571
			HashSet visitedPaths = new HashSet();
3569
			HashSet visitedPaths = new HashSet();
3570
			ExternalFoldersManager externalFoldersManager = JavaModelManager.getExternalManager();
3572
			for (int i = 0, length = projects.length; i < length; i++) {
3571
			for (int i = 0, length = projects.length; i < length; i++) {
3573
				JavaProject javaProject = (JavaProject) projects[i];
3572
				JavaProject javaProject = (JavaProject) projects[i];
3574
				IClasspathEntry[] classpath;
3573
				IClasspathEntry[] classpath;
Lines 3597-3603 Link Here
3597
					}
3596
					}
3598
				}
3597
				}
3599
			}
3598
			}
3600
			externalFoldersManager.createPendingFolders(monitor);
3599
			try {
3600
				externalFoldersManager.createPendingFolders(monitor);
3601
			}
3602
			catch(JavaModelException jme) {
3603
				// Creation of external folder project failed. Log it and continue;
3604
				Util.log(jme, "Error while processing external folders"); //$NON-NLS-1$
3605
			}
3601
			// initialize delta state
3606
			// initialize delta state
3602
			if (monitor != null)
3607
			if (monitor != null)
3603
				monitor.subTask(Messages.javamodel_initializing_delta_state);
3608
				monitor.subTask(Messages.javamodel_initializing_delta_state);
(-)model/org/eclipse/jdt/internal/core/ExternalFoldersManager.java (-3 / +17 lines)
Lines 141-146 Link Here
141
141
142
	public IFolder createLinkFolder(IPath externalFolderPath, boolean refreshIfExistAlready, IProgressMonitor monitor) throws CoreException {
142
	public IFolder createLinkFolder(IPath externalFolderPath, boolean refreshIfExistAlready, IProgressMonitor monitor) throws CoreException {
143
		IProject externalFoldersProject = createExternalFoldersProject(monitor); // run outside synchronized as this can create a resource
143
		IProject externalFoldersProject = createExternalFoldersProject(monitor); // run outside synchronized as this can create a resource
144
		return createLinkFolder(externalFolderPath, refreshIfExistAlready, externalFoldersProject, monitor);
145
	}
146
147
	private IFolder createLinkFolder(IPath externalFolderPath, boolean refreshIfExistAlready,
148
									IProject externalFoldersProject, IProgressMonitor monitor) throws CoreException {
149
		
144
		IFolder result = addFolder(externalFolderPath, externalFoldersProject, false);
150
		IFolder result = addFolder(externalFolderPath, externalFoldersProject, false);
145
		if (!result.exists())
151
		if (!result.exists())
146
			result.createLink(externalFolderPath, IResource.ALLOW_MISSING_LOCAL, monitor);
152
			result.createLink(externalFolderPath, IResource.ALLOW_MISSING_LOCAL, monitor);
Lines 150-163 Link Here
150
	}
156
	}
151
157
152
	public void createPendingFolders(IProgressMonitor monitor) throws JavaModelException{
158
	public void createPendingFolders(IProgressMonitor monitor) throws JavaModelException{
153
		if (this.pendingFolders == null) return;
159
		if (this.pendingFolders == null || this.pendingFolders.isEmpty()) return;
160
		
161
		IProject externalFoldersProject = null;
162
		try {
163
			externalFoldersProject = createExternalFoldersProject(monitor);
164
		}
165
		catch(CoreException e) {
166
			throw new JavaModelException(e);
167
		}
154
		Iterator iterator = this.pendingFolders.iterator();
168
		Iterator iterator = this.pendingFolders.iterator();
155
		while (iterator.hasNext()) {
169
		while (iterator.hasNext()) {
156
			Object folderPath = iterator.next();
170
			Object folderPath = iterator.next();
157
			try {
171
			try {
158
				createLinkFolder((IPath) folderPath, false, monitor);
172
				createLinkFolder((IPath) folderPath, false, externalFoldersProject, monitor);
159
			} catch (CoreException e) {
173
			} catch (CoreException e) {
160
				throw new JavaModelException(e);
174
				continue;
161
			}
175
			}
162
		}
176
		}
163
		this.pendingFolders.clear();
177
		this.pendingFolders.clear();

Return to bug 337415