/* ********************************************************************** **
** Copyright notice **
** **
** (c) 2005-2009 RSSOwl Development Team **
** http://www.rssowl.org/ **
** **
** 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.rssowl.org/legal/epl-v10.html **
** **
** A copy is found in the file epl-v10.html and important notices to the **
** license from the team is found in the textfile LICENSE.txt distributed **
** in this package. **
** **
** This copyright notice MUST APPEAR in all copies of the file! **
** **
** Contributors: **
** RSSOwl Development Team - initial API and implementation **
** **
** ********************************************************************** */
package org.rssowl.core.interpreter;
import org.jdom.Attribute;
import org.jdom.Element;
import org.rssowl.core.persist.IPersistable;
/**
* The Namespace Handler allows to contribute processing of Namespaces. Use this
* mechanism if you want to interpret Elements or Attributes with Namespaces.
* <p>
* Contributed via <code>org.rssowl.core.NamespaceHandler</code> Extension
* Point.
* </p>
*
* @author bpasero
*/
public interface INamespaceHandler {
/**
* This Method is called whenever an Element has been reached that makes use
* of the defined NamespaceURI. The type-parameter is the current
* Interpreter-Model at the time the Element was reached.
*
* @param element The Element to process.
* @param type The Interpreter Type the given Element belongs to.
*/
void processElement(Element element, IPersistable type);
/**
* This Method is called whenever an Attribute has been reached that makes use
* of the defined NamespaceURI. The type-parameter is the current
* Interpreter-Model at the time the Attribute was reached.
* <p>
* Note: This Method is <em>only</em> called in case the Element this
* Attribute is belonging to does not itself use a Namespace. In that case,
* only the processElement-Method belonging to that Namespace is called.
* </p>
*
* @param attribute The Attribute to process.
* @param type The Interpreter Type the given Element belongs to.
*/
void processAttribute(Attribute attribute, IPersistable type);
}