/******************************************************************************* * Copyright (c) 2004, 2013 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 * which accompanies this distribution, and is available at * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.debug.internal.core; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.debug.core.DebugPlugin; import org.eclipse.debug.core.ILaunchMode; import com.ibm.icu.text.MessageFormat; /** * Proxy to a launch mode extension. * * @see IConfigurationElementConstants */ public class LaunchMode implements ILaunchMode { private IConfigurationElement fConfigurationElement; /** * Constructs a new launch mode. * * @param element configuration element * @exception CoreException if required attributes are missing */ public LaunchMode(IConfigurationElement element) throws CoreException { fConfigurationElement = element; verifyAttributes(); } /** * Verifies required attributes. * * @exception CoreException if required attributes are missing */ private void verifyAttributes() throws CoreException { verifyAttributeExists(IConfigurationElementConstants.MODE); verifyAttributeExists(IConfigurationElementConstants.LABEL); } /** * Verifies the given attribute exists * @param name the attribute name to check * * @exception CoreException if attribute does not exist */ private void verifyAttributeExists(String name) throws CoreException { if (fConfigurationElement.getAttribute(name) == null) { missingAttribute(name); } } /** * This method is used to create a new internal error describing that the specified attribute * is missing * @param attrName the name of the attribute that is missing * @throws CoreException if a problem is encountered */ private void missingAttribute(String attrName) throws CoreException { throw new CoreException(new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(), DebugPlugin.ERROR, MessageFormat.format(DebugCoreMessages.LaunchMode_1, new Object[] { attrName }), null)); } @Override public String getIdentifier() { return fConfigurationElement.getAttribute(IConfigurationElementConstants.MODE); } @Override public String getLabel() { return fConfigurationElement.getAttribute(IConfigurationElementConstants.LABEL); } @Override public String getLaunchAsLabel() { String label = fConfigurationElement.getAttribute(IConfigurationElementConstants.LAUNCH_AS_LABEL); if (label == null) { return MessageFormat.format(DebugCoreMessages.LaunchMode_0, new Object[] { getLabel() }); } return label; } }