| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| /* |
| * $Id$ |
| */ |
| package org.apache.xalan.transformer; |
| |
| import java.util.Vector; |
| |
| import org.apache.xml.utils.MutableAttrListImpl; |
| |
| |
| /** |
| * This class acts as a base for ResultTreeHandler, and keeps |
| * queud stack events. In truth, we don't need a stack, |
| * so I may change this down the line a bit. |
| */ |
| public abstract class QueuedEvents |
| { |
| |
| /** The number of events queued */ |
| protected int m_eventCount = 0; |
| |
| /** Queued start document */ |
| // QueuedStartDocument m_startDoc = new QueuedStartDocument(); |
| |
| /** Queued start element */ |
| // QueuedStartElement m_startElement = new QueuedStartElement(); |
| |
| public boolean m_docPending = false; |
| protected boolean m_docEnded = false; |
| |
| /** Flag indicating that an event is pending. Public for |
| * fast access by ElemForEach. */ |
| public boolean m_elemIsPending = false; |
| |
| /** Flag indicating that an event is ended */ |
| public boolean m_elemIsEnded = false; |
| |
| /** |
| * The pending attributes. We have to delay the call to |
| * m_flistener.startElement(name, atts) because of the |
| * xsl:attribute and xsl:copy calls. In other words, |
| * the attributes have to be fully collected before you |
| * can call startElement. |
| */ |
| protected MutableAttrListImpl m_attributes = new MutableAttrListImpl(); |
| |
| /** |
| * Flag to try and get the xmlns decls to the attribute list |
| * before other attributes are added. |
| */ |
| protected boolean m_nsDeclsHaveBeenAdded = false; |
| |
| /** |
| * The pending element, namespace, and local name. |
| */ |
| protected String m_name; |
| |
| /** Namespace URL of the element */ |
| protected String m_url; |
| |
| /** Local part of qualified name of the element */ |
| protected String m_localName; |
| |
| |
| /** Vector of namespaces for this element */ |
| protected Vector m_namespaces = null; |
| |
| // /** |
| // * Get the queued element. |
| // * |
| // * @return the queued element. |
| // */ |
| // QueuedStartElement getQueuedElem() |
| // { |
| // return (m_eventCount > 1) ? m_startElement : null; |
| // } |
| |
| /** |
| * To re-initialize the document and element events |
| * |
| */ |
| protected void reInitEvents() |
| { |
| } |
| |
| /** |
| * Push document event and re-initialize events |
| * |
| */ |
| public void reset() |
| { |
| pushDocumentEvent(); |
| reInitEvents(); |
| } |
| |
| /** |
| * Push the document event. This never gets popped. |
| */ |
| void pushDocumentEvent() |
| { |
| |
| // m_startDoc.setPending(true); |
| // initQSE(m_startDoc); |
| m_docPending = true; |
| |
| m_eventCount++; |
| } |
| |
| /** |
| * Pop element event |
| * |
| */ |
| void popEvent() |
| { |
| m_elemIsPending = false; |
| m_attributes.clear(); |
| |
| m_nsDeclsHaveBeenAdded = false; |
| m_name = null; |
| m_url = null; |
| m_localName = null; |
| m_namespaces = null; |
| |
| m_eventCount--; |
| } |
| |
| /** Instance of a serializer */ |
| private org.apache.xml.serializer.Serializer m_serializer; |
| |
| /** |
| * This is only for use of object pooling, so that |
| * it can be reset. |
| * |
| * @param s non-null instance of a serializer |
| */ |
| void setSerializer(org.apache.xml.serializer.Serializer s) |
| { |
| m_serializer = s; |
| } |
| |
| /** |
| * This is only for use of object pooling, so the that |
| * it can be reset. |
| * |
| * @return The serializer |
| */ |
| org.apache.xml.serializer.Serializer getSerializer() |
| { |
| return m_serializer; |
| } |
| } |