001//
002// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v1.0.6-01/24/2006 06:15 PM(kohsuke)-fcs 
003// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
004// Any modifications to this file will be lost upon recompilation of the source schema. 
005// Generated on: 2012.10.03 at 04:27:47 AM CEST 
006//
007
008package org.jdtaus.mojo.resource.model.impl.runtime;
009
010import javax.xml.bind.JAXBException;
011
012/**
013 * Keeps the information about the grammar as a whole.
014 * 
015 * Implementation of this interface is provided by the generated code.
016 *
017 * @author
018 *  <a href="mailto:kohsuke.kawaguchi@sun.com">Kohsuke KAWAGUCHI</a>
019 */
020public interface GrammarInfo
021{
022    /**
023     * Creates an unmarshaller that can unmarshal a given element.
024     * 
025     * @param namespaceUri
026     *      The string needs to be interned by the caller
027     *      for a performance reason.
028     * @param localName
029     *      The string needs to be interned by the caller
030     *      for a performance reason.
031     * 
032     * @return
033     *      null if the given name pair is not recognized.
034     */
035    UnmarshallingEventHandler createUnmarshaller(
036        String namespaceUri, String localName, UnmarshallingContext context );
037    
038    /**
039     * Creates an instance for the root element.
040     * 
041     * @return
042     *      null if the given name pair is not recognized.
043     */
044    Class getRootElement(String namespaceUri, String localName);
045    
046    /**
047     * Return the probe points for this GrammarInfo, which are used to detect 
048     * {namespaceURI,localName} collisions across the GrammarInfo's on the
049     * schemaPath.  This is a slightly more complex implementation than a simple
050     * hashmap, but it is more flexible in supporting additional schema langs.
051     */
052    String[] getProbePoints();
053    
054    /**
055     * Returns true if the invocation of the createUnmarshaller method
056     * will return a non-null value for the given name pair.
057     * 
058     * @param nsUri
059     *      The string needs to be interned by the caller
060     *      for a performance reason.
061     * @param localName
062     *      The string needs to be interned by the caller
063     *      for a performance reason.
064     */
065    boolean recognize( String nsUri, String localName );
066
067    /**
068     * Gets the default implementation for the given public content
069     * interface. 
070     *
071     * @param javaContentInterface
072     *      the Class object of the public interface.
073     * 
074     * @return null
075     *      If the interface is not found.
076     */
077    Class getDefaultImplementation( Class javaContentInterface );
078
079    /**
080     * Gets the MSV AGM which can be used to validate XML during
081     * marshalling/unmarshalling.
082     */
083    com.sun.msv.grammar.Grammar getGrammar() throws JAXBException;
084
085    
086    XMLSerializable castToXMLSerializable( Object o );
087    
088    
089    ValidatableObject castToValidatableObject(Object o);
090}