org.eclipse.jdt.internal.core.JavaCorePreferenceModifyListener Maven / Gradle / Ivy
/*******************************************************************************
* Copyright (c) 2000, 2014 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.runtime.preferences.IEclipsePreferences;
import org.eclipse.core.runtime.preferences.InstanceScope;
import org.eclipse.core.runtime.preferences.PreferenceModifyListener;
import org.eclipse.jdt.core.JavaCore;
import org.osgi.service.prefs.BackingStoreException;
import org.osgi.service.prefs.Preferences;
public class JavaCorePreferenceModifyListener extends PreferenceModifyListener {
static int PREFIX_LENGTH = JavaModelManager.CP_CONTAINER_PREFERENCES_PREFIX.length();
JavaModel javaModel = JavaModelManager.getJavaModelManager().getJavaModel();
/* (non-Javadoc)
* @see org.eclipse.core.runtime.preferences.PreferenceModifyListener#preApply(org.eclipse.core.runtime.preferences.IEclipsePreferences)
*/
public IEclipsePreferences preApply(IEclipsePreferences node) {
// the node does not need to be the root of the hierarchy
Preferences root = node.node("/"); //$NON-NLS-1$
try {
// we must not create empty preference nodes, so first check if the node exists
if (root.nodeExists(InstanceScope.SCOPE)) {
Preferences instance = root.node(InstanceScope.SCOPE);
// we must not create empty preference nodes, so first check if the node exists
if (instance.nodeExists(JavaCore.PLUGIN_ID)) {
cleanJavaCore(instance.node(JavaCore.PLUGIN_ID));
}
}
} catch (BackingStoreException e) {
// do nothing
}
return super.preApply(node);
}
/**
* Clean imported preferences from obsolete keys.
*
* @param preferences JavaCore preferences.
*/
void cleanJavaCore(Preferences preferences) {
try {
String[] keys = preferences.keys();
for (int k = 0, kl= keys.length; k 0) {
final String projectName = propertyName.substring(PREFIX_LENGTH, index).trim();
JavaProject project = (JavaProject) this.javaModel.getJavaProject(projectName);
if (project.getProject().isAccessible()) {
return true;
}
}
return false;
}
}