/*******************************************************************************
* Copyright (c) 2012 eBay Inc. 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:
* eBay Inc. - initial API and implementation
*******************************************************************************/
/**
*
*/
package org.eclipse.vjet.eclipse.core.typeconstruct;
import org.eclipse.vjet.dsf.jstojava.resolver.ITypeConstructorResolver;
import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
/**
* Represents an extension for
* {@link TypeConstructResolverExtensionRegistry#EXTENSION_POINT_ID} extension
* point.
*
* @author paragraval
*
*/
public class TypeConstructResolverExtension {
public static final String ATT_NAME = "name"; //$NON-NLS-1$
public static final String ATT_KEY = "key"; //$NON-NLS-1$
public static final String TAG_DESCRIPTION = "description"; //$NON-NLS-1$
public static final String ATT_CLASS = "class"; //$NON-NLS-1$
private final String name;
private final String key;
private String description;
private String executableClass;
private final IConfigurationElement configurationElement;
/**
* Default constructor
*/
public TypeConstructResolverExtension(IConfigurationElement element) {
this.configurationElement = element;
this.name = configurationElement.getAttribute(ATT_NAME);
Assert.isLegal(this.name != null);
this.key = configurationElement.getAttribute(ATT_KEY);
Assert.isLegal(this.key != null);
this.executableClass = configurationElement.getAttribute(ATT_CLASS);
Assert.isLegal(executableClass != null);
}
/**
* Returns human-readable name of this resolver.
*
* @return human-readable name of this resolver
*/
public String getName() {
return name;
}
/**
* Returns the key to which this extension is mapped.
*
* @return the key to which this extension is mapped
*/
public String getKey() {
return key;
}
/**
* Returns description of this resolver, if available.
*
* @return description of this resolver, if available
*/
public String getDescription() {
if (description == null) {
IConfigurationElement[] children = configurationElement
.getChildren(TAG_DESCRIPTION);
if (children.length > 0) {
description = children[0].getValue();
}
}
return description;
}
/**
* Returns a new instance of {@link ITypeConstructorResolver} as described
* by the 'class' attribute.
*
* @see IConfigurationElement#createExecutableExtension(String)
*
* @return a new instance of {@link ITypeConstructorResolver}
* @throws CoreException
* if an instance of the executable extension could not be
* created for any reason
*/
public ITypeConstructorResolver createResolver() throws CoreException {
ITypeConstructorResolver typeConstructResolver = (ITypeConstructorResolver) configurationElement
.createExecutableExtension(ATT_CLASS);
return typeConstructResolver;
}
@Override
public String toString() {
String value = name + " [key: " + key + " , class: " + executableClass
+ "]";
return value;
}
}