blob: 1fec83055d73a20b623be249b92476ee762a0462 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007, 2008 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
* yyyymmdd bug Email and other contact information
* -------- -------- -----------------------------------------------------------
* 20071024 196997 pmoogk@ca.ibm.com - Peter Moogk
* 20071024 196997 pmoogk@ca.ibm.com - Peter Moogk
* 20080428 227501 pmoogk@ca.ibm.com - Peter Moogk, Fixed toLowerCase Locale problem.
* 20080516 232603 pmoogk@ca.ibm.com - Peter Moogk, Clean up java doc
* 20080905 246428 pmoogk@ca.ibm.com - Peter Moogk, Added iconBundleId parsing.
*******************************************************************************/
package org.eclipse.wst.ws.service.policy.utils;
import java.util.Locale;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.wst.ws.service.internal.policy.DescriptorImpl;
import org.eclipse.wst.ws.service.policy.ServicePolicyActivator;
/**
*
* This class is only intended for org.eclipse.wst.ws.service.policy.ui plugin to use.
* It contains convenience method for parsing the service policy extension point.
*
*/
public class RegistryUtils
{
/**
* Loads the attributes for a descriptor element.
* @param element the descriptor element
* @return returns the data for this element.
*/
public static DescriptorImpl loadDescriptor( IConfigurationElement element )
{
DescriptorImpl descriptor = new DescriptorImpl();
String shortName = getAttribute( element, "shortname" ); //$NON-NLS-1$
String longName = getAttribute( element, "longname" ); //$NON-NLS-1$
String description = getAttribute( element, "description" ); //$NON-NLS-1$
String iconPath = getAttribute( element, "iconpath" ); //$NON-NLS-1$
String contextHelp = getAttribute( element, "contexthelpid" ); //$NON-NLS-1$
if( shortName == null && longName == null )
{
ServicePolicyActivator.logError( "Short name or Long name missing from service policy descriptor.", null ); //$NON-NLS-1$
}
else if( shortName == null )
{
shortName = longName;
}
else if( longName == null )
{
longName = shortName;
}
descriptor.setDescription( description );
descriptor.setShortName( shortName );
descriptor.setLongName( longName );
descriptor.setContextHelpId( contextHelp );
if( iconPath != null )
{
String iconBundleId = element.getContributor().getName();
String pluginPrefix = "plugin://"; //$NON-NLS-1$
if( iconPath.startsWith( pluginPrefix ) && iconPath.length() > pluginPrefix.length() )
{
int pluginSlash = iconPath.indexOf( '/', pluginPrefix.length() );
iconBundleId = iconPath.substring( pluginPrefix.length(), pluginSlash );
iconPath = iconPath.substring( pluginSlash + 1 );
}
descriptor.setIconPath( iconPath );
descriptor.setIconBundleId( iconBundleId );
}
descriptor.resetHasChanged();
return descriptor;
}
/**
* This method takes in a lower case attribute name. It will then return
* the same attribute name that includes potentially uppercase characters.
* This method allows clients to specify attribute names in a case insensitive
* fashion.
*
* @param element the element
* @param attribute the attribute
* @return returns the lowercase attribute name.
*/
public static String getAttributeName( IConfigurationElement element, String attribute )
{
String[] names = element.getAttributeNames();
String result = null;
for( String name : names )
{
if( name.toLowerCase( Locale.ENGLISH ).equals( attribute ) )
{
result = name;
break;
}
}
return result;
}
/**
* Gets a attribute value where the attribute name is case insensitive.
*
* @param element the element.
* @param attribute the attribute to get.
* @return the value for this attribute or null if the attribute is not specified.
*/
public static String getAttribute( IConfigurationElement element, String attribute )
{
String[] names = element.getAttributeNames();
String value = null;
for( String name : names )
{
if( name.toLowerCase( Locale.ENGLISH ).equals( attribute ) )
{
value = element.getAttribute( name );
break;
}
}
return value;
}
}