/***************************************************************************** * Copyright (c) 2006-2013, Cloudsmith Inc. * The code, documentation and other materials contained herein have been * licensed under the Eclipse Public License - v 1.0 by the copyright holder * listed above, as the Initial Contributor under such license. The text of * such license is available at www.eclipse.org. *****************************************************************************/ package org.eclipse.buckminster.pde.prefs; import org.eclipse.buckminster.cmdline.BasicPreferenceHandler; import org.eclipse.buckminster.pde.Messages; import org.eclipse.buckminster.runtime.Buckminster; import org.eclipse.core.runtime.CoreException; import org.eclipse.pde.core.target.ITargetDefinition; import org.eclipse.pde.core.target.ITargetHandle; import org.eclipse.pde.core.target.ITargetPlatformService; import org.eclipse.pde.internal.core.ICoreConstants; import org.osgi.service.prefs.BackingStoreException; /** * Custom preference handler for the target preferences. * * @author Thomas Hallgren */ @SuppressWarnings("restriction") abstract class TargetVariableHandler extends BasicPreferenceHandler implements ICoreConstants { @Override public String get(String defaultValue) throws CoreException { Buckminster bucky = Buckminster.getDefault(); ITargetPlatformService service = null; try { service = bucky.getService(ITargetPlatformService.class); ITargetHandle activeHandle = service.getWorkspaceTargetHandle(); if (activeHandle == null) return defaultValue; ITargetDefinition definition = activeHandle.getTargetDefinition(); String value = get(definition); if (value == null) value = defaultValue; return value; } finally { bucky.ungetService(service); } } @Override public void set(String value) throws BackingStoreException { Buckminster bucky = Buckminster.getDefault(); ITargetPlatformService service = null; try { service = bucky.getService(ITargetPlatformService.class); ITargetHandle activeHandle = service.getWorkspaceTargetHandle(); if (activeHandle == null) throw new BackingStoreException(Messages.No_active_target_platform); ITargetDefinition definition = activeHandle.getTargetDefinition(); set(definition, value); service.saveTargetDefinition(definition); } catch (CoreException e) { throw new BackingStoreException(e.getMessage(), e); } finally { bucky.ungetService(service); } } abstract protected String get(ITargetDefinition definition) throws CoreException; abstract protected void set(ITargetDefinition definition, String value) throws CoreException; }