List of usage examples for org.eclipse.jdt.internal.core JavaProject getEclipsePreferences
public IEclipsePreferences getEclipsePreferences()
From source file:org.eclipse.ajdt.core.builder.AJBuilder.java
License:Open Source License
/** * This is the workaround discussed in bug 73435 for the case when projects are * checked out from CVS, the AJ projects have no valid build state and projects * depend on them./*from ww w. j av a 2s . c o m*/ */ private void updateJavaCompilerPreferences(IProject[] dependingProjects) { boolean setWorkbenchPref = false; for (int i = 0; i < dependingProjects.length; i++) { IProject dependingProject = dependingProjects[i]; try { // Skip over any dependents that are themselves // AspectJ projects if (AspectJPlugin.isAJProject(dependingProject)) { continue; } // Only update dependent projects that have Java natures. // These could be ordinary Java projects or if we running inside // other Eclipse-based tools, they could be J2EE projects like dynamic // web projects. // Note that if the project does not have a Java nature then // the JavaCore.create() call appears to return a null. if (dependingProject.hasNature(JavaCore.NATURE_ID)) { JavaProject jp = (JavaProject) JavaCore.create(dependingProject); // Bug 91131 - In Eclipse 3.1 need to use IEclipsePreferences IEclipsePreferences projectPreferences = jp.getEclipsePreferences(); String[] keys = projectPreferences.keys(); if (keys.length == 0 && !setWorkbenchPref) { Hashtable options = JavaCore.getOptions(); String workbenchSetting = (String) options.get(JavaCore.CORE_JAVA_BUILD_INVALID_CLASSPATH); if (lastWorkbenchPreference.equals(JavaCore.ABORT) && workbenchSetting.equals(JavaCore.IGNORE)) { lastWorkbenchPreference = JavaCore.IGNORE; } else if (lastWorkbenchPreference.equals(JavaCore.ABORT) && workbenchSetting.equals(JavaCore.ABORT)) { if (!setWorkbenchPref) { options.put(JavaCore.CORE_JAVA_BUILD_INVALID_CLASSPATH, JavaCore.IGNORE); JavaCore.setOptions(options); setWorkbenchPref = true; lastWorkbenchPreference = JavaCore.IGNORE; } } else if (lastWorkbenchPreference.equals(JavaCore.IGNORE) && workbenchSetting.equals(JavaCore.ABORT)) { if (!setWorkbenchPref) { options.put(JavaCore.CORE_JAVA_BUILD_INVALID_CLASSPATH, JavaCore.IGNORE); JavaCore.setOptions(options); setWorkbenchPref = true; } else { lastWorkbenchPreference = JavaCore.ABORT; } } } else if (keys.length > 0 && usingProjectBuildingOptions(keys)) { projectPreferences.put(JavaCore.CORE_JAVA_BUILD_INVALID_CLASSPATH, JavaCore.IGNORE); try { projectPreferences.flush(); } catch (BackingStoreException e) { // problem with pref store - quietly ignore } lastWorkbenchPreference = (String) JavaCore.getOptions() .get(JavaCore.CORE_JAVA_BUILD_INVALID_CLASSPATH); } } // end if dependent has a Java nature } catch (CoreException e) { } catch (BackingStoreException e) { } } }