/*******************************************************************************
 * Copyright (c) 2006, 2007 Oracle Corporation.
 * All rights reserved. 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:
 *    Cameron Bateman/Oracle - initial API and implementation
 *    
 ********************************************************************************/

package org.eclipse.jst.jsf.context.resolver.structureddocument;

import org.eclipse.jst.jsf.context.resolver.IDocumentContextResolver;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

/**
 * Defines a context resolver that resolves tag library information
 * for a particular context.
 * 
 * This interface may be sub-classed or implemented by clients
 * 
 * @author cbateman
 *
 */
public interface ITaglibContextResolver extends IDocumentContextResolver 
{
    /**
     * @param node 
     * @return the URI corresponding to the taglib that defines the 
     * node in the context document or null if it cannot be found
     */
    String getTagURIForNodeName(Node node);
    
	/**
	 * @param uri
	 * @return the tag prefix used in the context document for
	 * the provided uri or null if it cannot be found.
	 */
	String	 getTagPrefixForURI(String uri);
	
	/**
	 * A list all tags in the document context that are called
	 * tagName defined in the namespace indicated by uri
	 * 
	 * @param uri
	 * @param tagName
	 * @return a (possibly empty) list of tags -- must never
	 * be null.  Indicate none found with an empty list.
	 */
	NodeList getTagsByNamespaceURI(String uri, String tagName);
    
    /**
     * @param node
     * @return true if node has a tag library associated with it in this context
     */
    public boolean hasTag(Node node);
}
