Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
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 http://www.eclipse.org/legal/epl-v10.html Contributors: IBM Corporation - initial API and implementation /
 
 package org.eclipse.jdt.internal.core;
 
 import  org.eclipse.core.resources.ResourcesPlugin;
 import  org.eclipse.core.runtime.CoreException;
 import  org.eclipse.core.runtime.IPath;
 
 
 	IPath containerPath;
 
 	/*
 	 * Creates a new SetContainerOperation.
 	 */
 	public SetContainerOperation(IPath containerPathIJavaProject[] affectedProjectsIClasspathContainer[] respectiveContainers) {
 		super(new IJavaElement[] {JavaModelManager.getJavaModelManager().getJavaModel()}, !ResourcesPlugin.getWorkspace().isTreeLocked());
 		this. = containerPath;
 		this. = affectedProjects;
 		this. = respectiveContainers;
 	}
 
 	protected void executeOperation() throws JavaModelException {
 		try {
 			beginTask("", 1); //$NON-NLS-1$
 
 			JavaModelManager manager = JavaModelManager.getJavaModelManager();
 				return;
 
 			final int projectLength = this..length;
 			final IJavaProject[] modifiedProjects;
 			System.arraycopy(this., 0, modifiedProjects = new IJavaProject[projectLength], 0, projectLength);
 
 			// filter out unmodified project containers
 			int remaining = 0;
 			for (int i = 0; i < projectLengthi++){
 				if (isCanceled())
 					return;
 				JavaProject affectedProject = (JavaProjectthis.[i];
 				IClasspathContainer newContainer = this.[i];
 				if (newContainer == nullnewContainer = .// 30920 - prevent infinite loop
 				boolean found = false;
 				if (JavaProject.hasJavaNature(affectedProject.getProject())){
 					IClasspathEntry[] rawClasspath = affectedProject.getRawClasspath();
 					for (int j = 0, cpLength = rawClasspath.lengthj <cpLengthj++) {
 						IClasspathEntry entry = rawClasspath[j];
 						if (entry.getEntryKind() == . && entry.getPath().equals(this.)){
 							found = true;
 							break;
 						}
 					}
 				}
 				if (!found) {
 					modifiedProjects[i] = null// filter out this project - does not reference the container path, or isnt't yet Java project
 					manager.containerPut(affectedProjectthis.newContainer);
 					continue;
 				}
 				IClasspathContainer oldContainer = manager.containerGet(affectedProjectthis.);
 					oldContainer = null;
 				}
 				if ((oldContainer != null && oldContainer.equals(this.[i]))
 						|| (oldContainer == this.[i])/*handle case where old and new containers are null (see bug 149043*/) {
 					modifiedProjects[i] = null// filter out this project - container did not change
 					continue;
 				}
 				remaining++;
 				manager.containerPut(affectedProjectthis.newContainer);
 			}
 
 			if (remaining == 0) return;
 
 			// trigger model refresh
 			try {
 				for(int i = 0; i < projectLengthi++){
 					if (isCanceled())
 						return;
					JavaProject affectedProject = (JavaProject)modifiedProjects[i];
					if (affectedProject == nullcontinue// was filtered out
						verbose_update_project(affectedProject);
					// force resolved classpath to be recomputed
					ClasspathChange classpathChange = affectedProject.getPerProjectInfo().resetResolvedClasspath();
					// if needed, generate delta, update project ref, create markers, ...
					classpathChanged(classpathChangei==0/*refresh external linked folder only once*/);
					if (this.) {
						// touch project to force a build if needed
						try {
							affectedProject.getProject().touch(this.);
catch (CoreException e) {
							// see https://bugs.eclipse.org/bugs/show_bug.cgi?id=148970
								throw e;
						}
					}
				}
catch(CoreException e) {
				if (e instanceof JavaModelException) {
else {
					throw new JavaModelException(e);
				}
finally {
				for (int i = 0; i < projectLengthi++) {
					if (this.[i] == null) {
						manager.containerPut(this.[i], this.null); // reset init in progress marker
					}
				}
			}
finally {
		}
	}
	private void verbose_failure(CoreException e) {
		Util.verbose(
			"CPContainer SET  - FAILED DUE TO EXCEPTION\n" + //$NON-NLS-1$
			"	container path: " + this.//$NON-NLS-1$
		e.printStackTrace();
	}
	private void verbose_update_project(JavaProject affectedProject) {
		Util.verbose(
			"CPContainer SET  - updating affected project due to setting container\n" + //$NON-NLS-1$
			"	project: " + affectedProject.getElementName() + '\n' + //$NON-NLS-1$
			"	container path: " + this.); //$NON-NLS-1$
	}
	private void verbose_set_container() {
		Util.verbose(
			"CPContainer SET  - setting container\n" + //$NON-NLS-1$
			"	container path: " + this. + '\n' + //$NON-NLS-1$
			"	projects: {" +//$NON-NLS-1$
			org.eclipse.jdt.internal.compiler.util.Util.toString(
					public String displayString(Object o) { return ((IJavaProjecto).getElementName(); }
				}) +
			"}\n	values: {\n"  +//$NON-NLS-1$
			org.eclipse.jdt.internal.compiler.util.Util.toString(
					public String displayString(Object o) {
						StringBuffer buffer = new StringBuffer("		"); //$NON-NLS-1$
						if (o == null) {
							buffer.append("<null>"); //$NON-NLS-1$
							return buffer.toString();
						}
						buffer.append(container.getDescription());
						buffer.append(" {\n"); //$NON-NLS-1$
						IClasspathEntry[] entries = container.getClasspathEntries();
						if (entries != null){
							for (int i = 0; i < entries.lengthi++){
								buffer.append(" 			"); //$NON-NLS-1$
								buffer.append(entries[i]);
								buffer.append('\n');
							}
						}
						buffer.append(" 		}"); //$NON-NLS-1$
						return buffer.toString();
					}
				}) +
			"\n	}");//$NON-NLS-1$
	}
		Util.verbose(
			"CPContainer SET  - setting container\n" + //$NON-NLS-1$
			"	invocation stack trace:"); //$NON-NLS-1$
			new Exception("<Fake exception>").printStackTrace(.); //$NON-NLS-1$
	}
New to GrepCode? Check out our FAQ X