/******************************************************************************* * Copyright (c) 2008, 2012 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.launching; import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer; import org.eclipse.core.runtime.preferences.DefaultScope; import org.eclipse.core.runtime.preferences.IEclipsePreferences; import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.launching.JavaRuntime; import org.osgi.service.prefs.BackingStoreException; /** * Initializes preferences for the JDT launching plug-in. * * @since 3.5 */ public class LaunchingPreferenceInitializer extends AbstractPreferenceInitializer { /* (non-Javadoc) * @see org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer#initializeDefaultPreferences() */ @Override public void initializeDefaultPreferences() { IEclipsePreferences dnode = DefaultScope.INSTANCE.getNode(LaunchingPlugin.ID_PLUGIN); if(dnode == null) { return; } dnode.putInt(JavaRuntime.PREF_CONNECT_TIMEOUT, JavaRuntime.DEF_CONNECT_TIMEOUT); dnode.put(JavaRuntime.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE, JavaCore.WARNING); dnode.putBoolean(JavaRuntime.PREF_ONLY_INCLUDE_EXPORTED_CLASSPATH_ENTRIES, false); try { dnode.flush(); } catch (BackingStoreException e) { LaunchingPlugin.log(e); } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=255381 // NOTE: only the pref's default value is initialized to avoid deadlock (we don't set the // associated JavaCore options, as this can trigger a job to touch the project (see // bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=260445) String launchFilter = "*." + ILaunchConfiguration.LAUNCH_CONFIGURATION_FILE_EXTENSION; //$NON-NLS-1$ dnode = DefaultScope.INSTANCE.getNode(JavaCore.PLUGIN_ID); if(dnode == null) { return; } //check to see if another plug-in has contributed to these defaults as well //https://bugs.eclipse.org/bugs/show_bug.cgi?id=395366 String val = dnode.get(JavaCore.CORE_JAVA_BUILD_RESOURCE_COPY_FILTER, (String)null); if(val != null && !"".equals(val)) { //$NON-NLS-1$ String[] filters = val.split(","); //$NON-NLS-1$ StringBuffer buff = new StringBuffer(); boolean found = false; for (int i = 0; i < filters.length; i++) { if(launchFilter.equals(val)) { found = true; break; } String filter = filters[i].trim(); buff.append(filter); if(i < filters.length-1) { buff.append(','); } } if(!found) { launchFilter = buff.append(',').append(launchFilter).toString(); dnode.put(JavaCore.CORE_JAVA_BUILD_RESOURCE_COPY_FILTER, launchFilter); } } else { dnode.put(JavaCore.CORE_JAVA_BUILD_RESOURCE_COPY_FILTER, launchFilter); } try { dnode.flush(); } catch (BackingStoreException e) { LaunchingPlugin.log(e); } } }