001 // 002 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v1.0.1-05/30/2003 05:06 AM(java_re)-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: 2004.10.11 at 12:13:34 EDT 006 // 007 008 /* 009 * Copyright 2003 Sun Microsystems, Inc. All rights reserved. 010 * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. 011 */ 012 013 /* 014 * @(#)$Id: AbstractGrammarInfoImpl.java,v 1.5 2003/05/14 18:36:17 lschwenk Exp $ 015 */ 016 package astronomy.data.spectra.impl.runtime; 017 018 import java.io.InputStream; 019 import java.io.ObjectInputStream; 020 021 import javax.xml.bind.JAXBException; 022 023 import com.sun.msv.grammar.Grammar; 024 import com.sun.xml.bind.GrammarImpl; 025 import com.sun.xml.bind.Messages; 026 027 /** 028 * Keeps the information about the grammar as a whole. 029 * 030 * Implementation of this interface is provided by the generated code. 031 * 032 * @author 033 * <a href="mailto:kohsuke.kawaguchi@sun.com>Kohsuke KAWAGUCHI</a> 034 */ 035 public abstract class AbstractGrammarInfoImpl implements GrammarInfo 036 { 037 /** 038 * Creates an unmarshaller that can unmarshal a given element. 039 * 040 * @param namespaceUri 041 * The string needs to be interned by the caller 042 * for a performance reason. 043 * @param localName 044 * The string needs to be interned by the caller 045 * for a performance reason. 046 * 047 * @return 048 * null if the given name pair is not recognized. 049 */ 050 public abstract UnmarshallingEventHandler createUnmarshaller( 051 String namespaceUri, String localName, UnmarshallingContext context ); 052 053 /** 054 * Return the probe points for this GrammarInfo, which are used to detect 055 * {namespaceURI,localName} collisions across the GrammarInfo's on the 056 * schemaPath. This is a slightly more complex implementation than a simple 057 * hashmap, but it is more flexible in supporting additional schema langs. 058 */ 059 public abstract String[] getProbePoints(); 060 061 /** 062 * Returns true if the invocation of the createUnmarshaller method 063 * will return a non-null value for the given name pair. 064 * 065 * @param namespaceUri 066 * The string needs to be interned by the caller 067 * for a performance reason. 068 * @param localName 069 * The string needs to be interned by the caller 070 * for a performance reason. 071 */ 072 public abstract boolean recognize( String nsUri, String localName ); 073 074 /** 075 * Gets the default implementation for the given public content 076 * interface. 077 * 078 * @param javaContentInterface 079 * the Class object of the public interface. 080 * 081 * @return null 082 * If the interface is not found. 083 */ 084 public abstract Class getDefaultImplementation( Class javaContentInterface ); 085 086 /** 087 * Gets the MSV AGM which can be used to validate XML during 088 * marshalling/unmarshalling. 089 */ 090 public Grammar getGrammar() throws JAXBException { 091 try { 092 InputStream is = this.getClass().getResourceAsStream("bgm.ser"); 093 094 if( is==null ) 095 // unable to find bgm.ser 096 throw new JAXBException( 097 Messages.format( Messages.NO_BGM, 098 this.getClass().getName().replace('.','/') ) ); 099 100 101 // deserialize the bgm 102 ObjectInputStream ois = new ObjectInputStream( is ); 103 GrammarImpl g = (GrammarImpl)ois.readObject(); 104 ois.close(); 105 106 g.connect(new Grammar[]{g}); // connect to itself 107 108 return g; 109 } catch( Exception e ) { 110 throw new JAXBException( 111 Messages.format( Messages.UNABLE_TO_READ_BGM ), 112 e ); 113 } 114 } 115 }