| /* |
| * Copyright (C) The Apache Software Foundation. All rights reserved. |
| * |
| * This software is published under the terms of the Apache Software License |
| * version 1.1, a copy of which has been included with this distribution in |
| * the LICENSE file. |
| */ |
| package org.apache.myrmidon.components.builder; |
| |
| import java.util.ArrayList; |
| import org.xml.sax.Attributes; |
| import org.xml.sax.SAXException; |
| import org.xml.sax.helpers.DefaultHandler; |
| |
| /** |
| * Handler that reacts to PIs before first element. |
| * Have to do it this way as there doesn't seem to be a *safe* way |
| * of redirecting content handlers at runtime while using transformers. |
| * |
| * @author <a href="mailto:donaldp@apache.org">Peter Donald</a> |
| */ |
| public class ReactorPIHandler |
| extends DefaultHandler |
| { |
| private ArrayList m_targets = new ArrayList(); |
| private ArrayList m_data = new ArrayList(); |
| |
| public int getPICount() |
| { |
| return m_targets.size(); |
| } |
| |
| public String getTarget( final int index ) |
| { |
| return (String)m_targets.get( index ); |
| } |
| |
| public String getData( final int index ) |
| { |
| return (String)m_data.get( index ); |
| } |
| |
| public void processingInstruction( final String target, final String data ) |
| throws SAXException |
| { |
| m_targets.add( target ); |
| m_data.add( data ); |
| } |
| |
| public void startElement( final String uri, |
| final String localName, |
| final String qName, |
| final Attributes atts ) |
| throws SAXException |
| { |
| //Workaround to stop SAX pipeline |
| throw new StopParsingException(); |
| } |
| } |