/******************************************************************************* * Copyright (c) 2004, 2006 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.xml.core.internal.search; import java.util.HashMap; import java.util.List; import java.util.Map; import org.eclipse.wst.common.core.search.pattern.QualifiedName; public abstract class ComponentSearchContributor { protected HashMap declarations; protected HashMap references; protected String[] namespaces; public ComponentSearchContributor() { super(); } public XMLSearchPattern getDeclarationPattern(QualifiedName componentName) { return (XMLSearchPattern) getDeclarations().get(componentName); } protected Map getDeclarations() { if (declarations == null) { initializeDeclarations(); } return declarations; } protected Map getReferences() { if (references == null) { initializeReferences(); } return references; } public XMLSearchPattern[] getReferencesPatterns(QualifiedName componentName) { List references = (List) getReferences().get(componentName); if (references != null) { return (XMLSearchPattern[]) references .toArray(new XMLSearchPattern[references.size()]); } return new XMLSearchPattern[0]; } public boolean supports(QualifiedName componentName){ return getReferencesPatterns(componentName).length > 0 || getDeclarationPattern(componentName) != null; } public String[] getSupportedNamespaces() { return namespaces; } protected abstract void initializeDeclarations(); protected abstract void initializeReferences(); protected abstract void initializeSupportedNamespaces(); }