blob: 4341bde6d44ab5df121d8caa79daf0c9f08d2821 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 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
*******************************************************************************/
package org.eclipse.wst.sse.ui.internal.correction;
import java.util.ArrayList;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtensionRegistry;
import org.eclipse.core.runtime.Platform;
import org.eclipse.wst.sse.ui.internal.SSEUIPlugin;
import org.eclipse.wst.sse.ui.internal.extension.RegistryReader;
public class QuickFixRegistryReader extends RegistryReader {
private static final String QUICKFIXPROCESSOR = "quickFixProcessor"; //$NON-NLS-1$
private static final String ATT_PROBLEMTYPE = "problemType"; //$NON-NLS-1$
private static final String ATTRIBUTE = "attribute"; //$NON-NLS-1$
private static final String ATT_NAME = "name"; //$NON-NLS-1$
private static final String ATT_VALUE = "value"; //$NON-NLS-1$
private ArrayList currentAttributeNames;
private ArrayList currentAttributeValues;
private QuickFixRegistry quickFixProcessorRegistry;
protected boolean readElement(IConfigurationElement element) {
if (element.getName().equals(QUICKFIXPROCESSOR)) {
readQuickFixProcessorElement(element);
return true;
}
if (element.getName().equals(ATTRIBUTE)) {
readAttributeElement(element);
return true;
}
return false;
}
/**
* Processes a resolution configuration element.
*/
private void readQuickFixProcessorElement(IConfigurationElement element) {
// read type
String type = element.getAttribute(ATT_PROBLEMTYPE);
// read attributes and values
currentAttributeNames = new ArrayList();
currentAttributeValues = new ArrayList();
readElementChildren(element);
String[] attributeNames = (String[]) currentAttributeNames.toArray(new String[currentAttributeNames.size()]);
String[] attributeValues = (String[]) currentAttributeValues.toArray(new String[currentAttributeValues.size()]);
// add query to the registry
AnnotationQuery query = new AnnotationQuery(type, attributeNames);
AnnotationQueryResult result = new AnnotationQueryResult(attributeValues);
quickFixProcessorRegistry.addResolutionQuery(query, result, element);
}
/**
* Get the marker help that is defined in the plugin registry and add it
* to the given marker help registry.
* <p>
* Warning: The marker help registry must be passed in because this method
* is called during the process of setting up the marker help registry and
* at this time it has not been safely setup with the plugin.
* </p>
*/
public void addHelp(QuickFixRegistry registry) {
IExtensionRegistry extensionRegistry = Platform.getExtensionRegistry();
quickFixProcessorRegistry = registry;
readRegistry(extensionRegistry, SSEUIPlugin.ID, QUICKFIXPROCESSOR);
}
/**
* Processes an attribute sub element.
*/
private void readAttributeElement(IConfigurationElement element) {
String name = element.getAttribute(ATT_NAME);
String value = element.getAttribute(ATT_VALUE);
if (name != null && value != null) {
currentAttributeNames.add(name);
currentAttributeValues.add(value);
}
}
}