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 package astronomy.data.spectra.impl.runtime; 013 014 import java.util.ArrayList; 015 016 import org.xml.sax.Attributes; 017 import org.xml.sax.ContentHandler; 018 import org.xml.sax.Locator; 019 import org.xml.sax.SAXException; 020 021 /** 022 * Receives SAX2 events and send the equivalent events to 023 * {@link com.sun.xml.bind.serializer.XMLSerializer} 024 * 025 * @author 026 * Kohsuke Kawaguchi (kohsuke.kawaguchi@sun.com) 027 */ 028 public class ContentHandlerAdaptor implements ContentHandler { 029 030 /** Stores newly declared prefix-URI mapping. */ 031 private final ArrayList prefixMap = new ArrayList(); 032 033 /** Events will be sent to this object. */ 034 private final XMLSerializer serializer; 035 036 private final StringBuffer text = new StringBuffer(); 037 038 039 public ContentHandlerAdaptor( XMLSerializer _serializer ) { 040 this.serializer = _serializer; 041 } 042 043 044 045 public void startDocument() throws SAXException { 046 prefixMap.clear(); 047 } 048 049 public void endDocument() throws SAXException { 050 } 051 052 public void startPrefixMapping(String prefix, String uri) throws SAXException { 053 prefixMap.add(prefix); 054 prefixMap.add(uri); 055 } 056 057 public void endPrefixMapping(String prefix) throws SAXException { 058 } 059 060 public void startElement(String namespaceURI, String localName, String qName, Attributes atts) 061 throws SAXException { 062 063 flushText(); 064 065 int len = atts.getLength(); 066 067 serializer.startElement(namespaceURI,localName); 068 // declare namespace events 069 for( int i=0; i<len; i++ ) { 070 String qname = atts.getQName(i); 071 int idx = qname.indexOf(':'); 072 String prefix = (idx==-1)?qname:qname.substring(0,idx); 073 074 serializer.getNamespaceContext().declareNamespace( 075 atts.getURI(i), prefix, true ); 076 } 077 // TODO: declare new prefixes. 078 serializer.endNamespaceDecls(); 079 // fire attribute events 080 for( int i=0; i<len; i++ ) { 081 serializer.startAttribute( atts.getURI(i), atts.getLocalName(i) ); 082 serializer.text(atts.getValue(i)); 083 serializer.endAttribute(); 084 } 085 prefixMap.clear(); 086 serializer.endAttributes(); 087 } 088 089 public void endElement(String namespaceURI, String localName, String qName) throws SAXException { 090 flushText(); 091 serializer.endElement(); 092 } 093 094 private void flushText() throws SAXException { 095 if( text.length()!=0 ) { 096 serializer.text(text.toString()); 097 text.setLength(0); 098 } 099 } 100 101 public void characters(char[] ch, int start, int length) throws SAXException { 102 text.append(ch,start,length); 103 } 104 105 public void ignorableWhitespace(char[] ch, int start, int length) throws SAXException { 106 text.append(ch,start,length); 107 } 108 109 110 111 public void setDocumentLocator(Locator locator) { 112 } 113 114 public void processingInstruction(String target, String data) throws SAXException { 115 } 116 117 public void skippedEntity(String name) throws SAXException { 118 } 119 120 }