You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ws.apache.org by ve...@apache.org on 2016/02/07 19:19:04 UTC

svn commit: r1729000 - in /webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl: common/builder/AbstractBuilder.java common/builder/BuilderHandler.java stream/NamespaceRepairingFilterHandler.java stream/XmlHandlerWrapper.java

Author: veithen
Date: Sun Feb  7 18:19:04 2016
New Revision: 1729000

URL: http://svn.apache.org/viewvc?rev=1729000&view=rev
Log:
Factor out the namespace repairing logic from BuilderHandler.

Added:
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/stream/NamespaceRepairingFilterHandler.java
      - copied, changed from r1728960, webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderHandler.java
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/stream/XmlHandlerWrapper.java   (with props)
Modified:
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/AbstractBuilder.java
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderHandler.java

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/AbstractBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/AbstractBuilder.java?rev=1729000&r1=1728999&r2=1729000&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/AbstractBuilder.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/AbstractBuilder.java Sun Feb  7 18:19:04 2016
@@ -23,6 +23,7 @@ import org.apache.axiom.om.OMDocument;
 import org.apache.axiom.om.OMXMLParserWrapper;
 import org.apache.axiom.om.impl.intf.AxiomDocument;
 import org.apache.axiom.om.impl.intf.AxiomSourcedElement;
+import org.apache.axiom.om.impl.stream.NamespaceRepairingFilterHandler;
 import org.apache.axiom.om.impl.stream.XmlHandler;
 
 public abstract class AbstractBuilder implements OMXMLParserWrapper {
@@ -30,9 +31,8 @@ public abstract class AbstractBuilder im
     protected final XmlHandler handler;
 
     public AbstractBuilder(NodeFactory nodeFactory, Model model, AxiomSourcedElement root, boolean repairNamespaces) {
-        builderHandler = new BuilderHandler(nodeFactory, model, root, this, repairNamespaces);
-        // TODO: eventually the namespace repairing filter XmlHandler will be added here
-        handler = builderHandler;
+        builderHandler = new BuilderHandler(nodeFactory, model, root, this);
+        handler = repairNamespaces ? new NamespaceRepairingFilterHandler(builderHandler) : builderHandler;
     }
 
     public final void addNodePostProcessor(NodePostProcessor nodePostProcessor) {

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderHandler.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderHandler.java?rev=1729000&r1=1728999&r2=1729000&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderHandler.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderHandler.java Sun Feb  7 18:19:04 2016
@@ -27,7 +27,6 @@ import javax.xml.stream.XMLStreamConstan
 import org.apache.axiom.core.CoreParentNode;
 import org.apache.axiom.core.NodeFactory;
 import org.apache.axiom.om.OMContainer;
-import org.apache.axiom.om.OMException;
 import org.apache.axiom.om.OMNamespace;
 import org.apache.axiom.om.OMSerializable;
 import org.apache.axiom.om.OMXMLParserWrapper;
@@ -47,7 +46,6 @@ import org.apache.axiom.om.impl.intf.Axi
 import org.apache.axiom.om.impl.intf.AxiomProcessingInstruction;
 import org.apache.axiom.om.impl.intf.AxiomSourcedElement;
 import org.apache.axiom.om.impl.stream.XmlHandler;
-import org.apache.axiom.util.namespace.ScopedNamespaceContext;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -60,7 +58,6 @@ public final class BuilderHandler implem
     private final Model model;
     private final AxiomSourcedElement root;
     private final OMXMLParserWrapper builder;
-    private final ScopedNamespaceContext nsContext;
     private final OMNamespaceCache nsCache = new OMNamespaceCache();
     public AxiomContainer target;
     // returns the state of completion
@@ -84,13 +81,11 @@ public final class BuilderHandler implem
     
     private ArrayList<NodePostProcessor> nodePostProcessors;
 
-    public BuilderHandler(NodeFactory nodeFactory, Model model, AxiomSourcedElement root, OMXMLParserWrapper builder,
-            boolean repairNamespaces) {
+    public BuilderHandler(NodeFactory nodeFactory, Model model, AxiomSourcedElement root, OMXMLParserWrapper builder) {
         this.nodeFactory = nodeFactory;
         this.model = model;
         this.root = root;
         this.builder = builder;
-        nsContext = repairNamespaces ? new ScopedNamespaceContext() : null;
     }
 
     public void addNodePostProcessor(NodePostProcessor nodePostProcessor) {
@@ -149,18 +144,6 @@ public final class BuilderHandler implem
         addChild(node);
     }
     
-    private void ensureNamespaceDeclared(OMNamespace ns) {
-        if (ns == null) {
-            ns = DEFAULT_NS;
-        }
-        if (!ns.getNamespaceURI().equals(nsContext.getNamespaceURI(ns.getPrefix()))) {
-            AxiomNamespaceDeclaration decl = nodeFactory.createNode(AxiomNamespaceDeclaration.class);
-            decl.setDeclaredNamespace(ns);
-            ((AxiomElement)target).coreAppendAttribute(decl);
-            nsContext.setPrefix(ns.getPrefix(), ns.getNamespaceURI());
-        }
-    }
-    
     public void startElement(String namespaceURI, String localName, String prefix) {
         elementLevel++;
         AxiomElement element;
@@ -178,16 +161,9 @@ public final class BuilderHandler implem
             addChild(element);
         }
         target = element;
-        if (nsContext != null) {
-            nsContext.startScope();
-            ensureNamespaceDeclared(ns);
-        }
     }
     
     public void endElement() {
-        if (nsContext != null) {
-            nsContext.endScope();
-        }
         elementLevel--;
         target.setComplete(true);
         if (elementLevel == 0) {
@@ -209,24 +185,9 @@ public final class BuilderHandler implem
         attr.coreSetType(type);
         attr.coreSetSpecified(specified);
         ((AxiomElement)target).coreAppendAttribute(attr);
-        if (nsContext != null && ns != null) {
-            ensureNamespaceDeclared(ns);
-        }
     }
     
     public void processNamespaceDeclaration(String prefix, String namespaceURI) {
-        if (nsContext != null) {
-            for (int i=nsContext.getFirstBindingInCurrentScope(); i<nsContext.getBindingsCount(); i++) {
-                if (nsContext.getPrefix(i).equals(prefix)) {
-                    if (nsContext.getNamespaceURI(i).equals(namespaceURI)) {
-                        return;
-                    } else {
-                        // TODO: this causes a failure in the FOM tests
-//                        throw new OMException("The same prefix cannot be bound to two different namespaces");
-                    }
-                }
-            }
-        }
         OMNamespace ns = nsCache.getOMNamespace(namespaceURI, prefix);
         if (ns == null) {
             ns = DEFAULT_NS;
@@ -234,9 +195,6 @@ public final class BuilderHandler implem
         AxiomNamespaceDeclaration decl = nodeFactory.createNode(AxiomNamespaceDeclaration.class);
         decl.setDeclaredNamespace(ns);
         ((AxiomElement)target).coreAppendAttribute(decl);
-        if (nsContext != null) {
-            nsContext.setPrefix(prefix, namespaceURI);
-        }
     }
     
     public void attributesCompleted() {

Copied: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/stream/NamespaceRepairingFilterHandler.java (from r1728960, webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderHandler.java)
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/stream/NamespaceRepairingFilterHandler.java?p2=webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/stream/NamespaceRepairingFilterHandler.java&p1=webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderHandler.java&r1=1728960&r2=1729000&rev=1729000&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderHandler.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/stream/NamespaceRepairingFilterHandler.java Sun Feb  7 18:19:04 2016
@@ -16,278 +16,54 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.axiom.om.impl.common.builder;
+package org.apache.axiom.om.impl.stream;
 
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.Map;
-
-import javax.xml.stream.XMLStreamConstants;
-
-import org.apache.axiom.core.CoreParentNode;
-import org.apache.axiom.core.NodeFactory;
-import org.apache.axiom.om.OMContainer;
-import org.apache.axiom.om.OMException;
-import org.apache.axiom.om.OMNamespace;
-import org.apache.axiom.om.OMSerializable;
-import org.apache.axiom.om.OMXMLParserWrapper;
-import org.apache.axiom.om.impl.common.AxiomSemantics;
-import org.apache.axiom.om.impl.common.OMNamespaceImpl;
-import org.apache.axiom.om.impl.intf.AxiomAttribute;
-import org.apache.axiom.om.impl.intf.AxiomCDATASection;
-import org.apache.axiom.om.impl.intf.AxiomCharacterDataNode;
-import org.apache.axiom.om.impl.intf.AxiomChildNode;
-import org.apache.axiom.om.impl.intf.AxiomComment;
-import org.apache.axiom.om.impl.intf.AxiomContainer;
-import org.apache.axiom.om.impl.intf.AxiomDocType;
-import org.apache.axiom.om.impl.intf.AxiomDocument;
-import org.apache.axiom.om.impl.intf.AxiomElement;
-import org.apache.axiom.om.impl.intf.AxiomEntityReference;
-import org.apache.axiom.om.impl.intf.AxiomNamespaceDeclaration;
-import org.apache.axiom.om.impl.intf.AxiomProcessingInstruction;
-import org.apache.axiom.om.impl.intf.AxiomSourcedElement;
-import org.apache.axiom.om.impl.stream.XmlHandler;
 import org.apache.axiom.util.namespace.ScopedNamespaceContext;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 
-public final class BuilderHandler implements XmlHandler {
-    private static final Log log = LogFactory.getLog(BuilderHandler.class);
-    
-    private static final OMNamespace DEFAULT_NS = new OMNamespaceImpl("", "");
-    
-    private final NodeFactory nodeFactory;
-    private final Model model;
-    private final AxiomSourcedElement root;
-    private final OMXMLParserWrapper builder;
-    private final ScopedNamespaceContext nsContext;
-    private final OMNamespaceCache nsCache = new OMNamespaceCache();
-    public AxiomContainer target;
-    // returns the state of completion
-    public boolean done;
-    // keeps the state of the cache
-    public boolean cache = true;
-    public AxiomDocument document;
-    
-    /**
-     * Tracks the depth of the node identified by {@link #target}. By definition, the level of the
-     * root element is defined as 1. Note that if caching is disabled, then this depth may be
-     * different from the actual depth reached by the underlying parser.
-     */
-    public int elementLevel;
-    
-    /**
-     * Stores the stack trace of the code that caused a node to be discarded or consumed. This is
-     * only used if debug logging was enabled when builder was created.
-     */
-    public Map<OMContainer,Throwable> discardTracker = log.isDebugEnabled() ? new LinkedHashMap<OMContainer,Throwable>() : null;
-    
-    private ArrayList<NodePostProcessor> nodePostProcessors;
+public final class NamespaceRepairingFilterHandler extends XmlHandlerWrapper {
+    private final ScopedNamespaceContext nsContext = new ScopedNamespaceContext();
 
-    public BuilderHandler(NodeFactory nodeFactory, Model model, AxiomSourcedElement root, OMXMLParserWrapper builder,
-            boolean repairNamespaces) {
-        this.nodeFactory = nodeFactory;
-        this.model = model;
-        this.root = root;
-        this.builder = builder;
-        nsContext = repairNamespaces ? new ScopedNamespaceContext() : null;
-    }
-
-    public void addNodePostProcessor(NodePostProcessor nodePostProcessor) {
-        if (nodePostProcessors == null) {
-            nodePostProcessors = new ArrayList<NodePostProcessor>();
-        }
-        nodePostProcessors.add(nodePostProcessor);
-    }
-    
-    public void postProcessNode(OMSerializable node) {
-        if (nodePostProcessors != null) {
-            for (int i=0, size=nodePostProcessors.size(); i<size; i++) {
-                nodePostProcessors.get(i).postProcessNode(node);
-            }
-        }
+    public NamespaceRepairingFilterHandler(XmlHandler parent) {
+        super(parent);
     }
 
-    public boolean isCompleted() {
-        return done;
-    }
-    
-    public AxiomDocument getDocument() {
-        if (root != null) {
-            throw new UnsupportedOperationException("There is no document linked to this builder");
-        } else {
-            return document;
-        }
-    }
-    
-    private void addChild(AxiomChildNode node) {
-        target.addChild(node, true);
-        postProcessNode(node);
-    }
-    
-    public void startDocument(String inputEncoding, String xmlVersion, String xmlEncoding, boolean standalone) {
-        if (root == null) {
-            document = nodeFactory.createNode(model.getDocumentType());
-            document.coreSetInputEncoding(inputEncoding);
-            document.coreSetXmlVersion(xmlVersion);
-            document.coreSetXmlEncoding(xmlEncoding);
-            document.coreSetStandalone(standalone);
-            document.coreSetBuilder(builder);
-            postProcessNode(document);
-            target = document;
-        }
-    }
-    
-    public void processDocumentTypeDeclaration(String rootName, String publicId, String systemId,
-            String internalSubset) {
-        model.validateEventType(XMLStreamConstants.DTD);
-        AxiomDocType node = nodeFactory.createNode(AxiomDocType.class);
-        node.coreSetRootName(rootName);
-        node.coreSetPublicId(publicId);
-        node.coreSetSystemId(systemId);
-        node.coreSetInternalSubset(internalSubset);
-        addChild(node);
-    }
-    
-    private void ensureNamespaceDeclared(OMNamespace ns) {
-        if (ns == null) {
-            ns = DEFAULT_NS;
-        }
-        if (!ns.getNamespaceURI().equals(nsContext.getNamespaceURI(ns.getPrefix()))) {
-            AxiomNamespaceDeclaration decl = nodeFactory.createNode(AxiomNamespaceDeclaration.class);
-            decl.setDeclaredNamespace(ns);
-            ((AxiomElement)target).coreAppendAttribute(decl);
-            nsContext.setPrefix(ns.getPrefix(), ns.getNamespaceURI());
+    private void ensureNamespaceDeclared(String prefix, String namespaceURI) throws StreamException {
+        if (!namespaceURI.equals(nsContext.getNamespaceURI(prefix))) {
+            super.processNamespaceDeclaration(prefix, namespaceURI);
+            nsContext.setPrefix(prefix, namespaceURI);
         }
     }
     
-    public void startElement(String namespaceURI, String localName, String prefix) {
-        elementLevel++;
-        AxiomElement element;
-        OMNamespace ns = nsCache.getOMNamespace(namespaceURI, prefix);
-        if (elementLevel == 1 && root != null) {
-            root.validateName(prefix, localName, namespaceURI);
-            root.initName(localName, ns, false);
-            element = root;
-        } else {
-            element = nodeFactory.createNode(model.determineElementType(
-                    target, elementLevel, namespaceURI, localName));
-            element.coreSetBuilder(builder);
-            element.coreSetState(CoreParentNode.ATTRIBUTES_PENDING);
-            element.initName(localName, ns, false);
-            addChild(element);
-        }
-        target = element;
-        if (nsContext != null) {
-            nsContext.startScope();
-            ensureNamespaceDeclared(ns);
-        }
+    public void startElement(String namespaceURI, String localName, String prefix) throws StreamException {
+        super.startElement(namespaceURI, localName, prefix);
+        nsContext.startScope();
+        ensureNamespaceDeclared(prefix, namespaceURI);
     }
     
-    public void endElement() {
-        if (nsContext != null) {
-            nsContext.endScope();
-        }
-        elementLevel--;
-        target.setComplete(true);
-        if (elementLevel == 0) {
-            // This is relevant for OMSourcedElements and for the case where the document has been discarded
-            // using getDocumentElement(true). In these cases, this will actually set target to null. In all
-            // other cases, this will have the same effect as the instruction in the else clause.
-            target = document;
-        } else {
-            target = (AxiomContainer)((AxiomElement)target).getParent();
-        }
+    public void endElement() throws StreamException {
+        nsContext.endScope();
+        super.endElement();
     }
 
-    public void processAttribute(String namespaceURI, String localName, String prefix, String value, String type, boolean specified) {
-        OMNamespace ns = nsCache.getOMNamespace(namespaceURI, prefix);
-        AxiomAttribute attr = nodeFactory.createNode(AxiomAttribute.class);
-        attr.internalSetLocalName(localName);
-        attr.coreSetCharacterData(value, AxiomSemantics.INSTANCE);
-        attr.internalSetNamespace(ns);
-        attr.coreSetType(type);
-        attr.coreSetSpecified(specified);
-        ((AxiomElement)target).coreAppendAttribute(attr);
-        if (nsContext != null && ns != null) {
-            ensureNamespaceDeclared(ns);
+    public void processAttribute(String namespaceURI, String localName, String prefix, String value, String type, boolean specified) throws StreamException {
+        super.processAttribute(namespaceURI, localName, prefix, value, type, specified);
+        if (!namespaceURI.isEmpty()) {
+            ensureNamespaceDeclared(prefix, namespaceURI);
         }
     }
     
-    public void processNamespaceDeclaration(String prefix, String namespaceURI) {
-        if (nsContext != null) {
-            for (int i=nsContext.getFirstBindingInCurrentScope(); i<nsContext.getBindingsCount(); i++) {
-                if (nsContext.getPrefix(i).equals(prefix)) {
-                    if (nsContext.getNamespaceURI(i).equals(namespaceURI)) {
-                        return;
-                    } else {
-                        // TODO: this causes a failure in the FOM tests
+    public void processNamespaceDeclaration(String prefix, String namespaceURI) throws StreamException {
+        for (int i=nsContext.getFirstBindingInCurrentScope(); i<nsContext.getBindingsCount(); i++) {
+            if (nsContext.getPrefix(i).equals(prefix)) {
+                if (nsContext.getNamespaceURI(i).equals(namespaceURI)) {
+                    return;
+                } else {
+                    // TODO: this causes a failure in the FOM tests
 //                        throw new OMException("The same prefix cannot be bound to two different namespaces");
-                    }
                 }
             }
         }
-        OMNamespace ns = nsCache.getOMNamespace(namespaceURI, prefix);
-        if (ns == null) {
-            ns = DEFAULT_NS;
-        }
-        AxiomNamespaceDeclaration decl = nodeFactory.createNode(AxiomNamespaceDeclaration.class);
-        decl.setDeclaredNamespace(ns);
-        ((AxiomElement)target).coreAppendAttribute(decl);
-        if (nsContext != null) {
-            nsContext.setPrefix(prefix, namespaceURI);
-        }
-    }
-    
-    public void attributesCompleted() {
-        target.coreSetState(CoreParentNode.INCOMPLETE);
-    }
-    
-    public void processCharacterData(Object data, boolean ignorable) {
-        AxiomCharacterDataNode node = nodeFactory.createNode(AxiomCharacterDataNode.class);
-        node.coreSetCharacterData(data);
-        node.coreSetIgnorable(ignorable);
-        addChild(node);
-    }
-    
-    public void processProcessingInstruction(String piTarget, String piData) {
-        model.validateEventType(XMLStreamConstants.PROCESSING_INSTRUCTION);
-        AxiomProcessingInstruction node = nodeFactory.createNode(AxiomProcessingInstruction.class);
-        node.coreSetTarget(piTarget);
-        node.coreSetCharacterData(piData, AxiomSemantics.INSTANCE);
-        addChild(node);
-    }
-
-    public void processComment(String content) {
-        model.validateEventType(XMLStreamConstants.COMMENT);
-        AxiomComment node = nodeFactory.createNode(AxiomComment.class);
-        node.coreSetCharacterData(content, AxiomSemantics.INSTANCE);
-        addChild(node);
-    }
-    
-    public void processCDATASection(String content) {
-        model.validateEventType(XMLStreamConstants.CDATA);
-        AxiomCDATASection node = nodeFactory.createNode(AxiomCDATASection.class);
-        node.coreSetCharacterData(content, AxiomSemantics.INSTANCE);
-        addChild(node);
-    }
-    
-    public void processEntityReference(String name, String replacementText) {
-        model.validateEventType(XMLStreamConstants.ENTITY_REFERENCE);
-        AxiomEntityReference node = nodeFactory.createNode(AxiomEntityReference.class);
-        node.coreSetName(name);
-        node.coreSetReplacementText(replacementText);
-        addChild(node);
-    }
-    
-    public void endDocument() {
-        if (elementLevel != 0) {
-            throw new IllegalStateException();
-        }
-        if (document != null) {
-            document.setComplete(true);
-        }
-        target = null;
-        done = true;
+        super.processNamespaceDeclaration(prefix, namespaceURI);
+        nsContext.setPrefix(prefix, namespaceURI);
     }
 }

Added: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/stream/XmlHandlerWrapper.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/stream/XmlHandlerWrapper.java?rev=1729000&view=auto
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/stream/XmlHandlerWrapper.java (added)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/stream/XmlHandlerWrapper.java Sun Feb  7 18:19:04 2016
@@ -0,0 +1,85 @@
+/*
+ * 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.
+ */
+package org.apache.axiom.om.impl.stream;
+
+public class XmlHandlerWrapper implements XmlHandler {
+    private final XmlHandler parent;
+
+    public XmlHandlerWrapper(XmlHandler parent) {
+        this.parent = parent;
+    }
+
+    public void startDocument(String inputEncoding, String xmlVersion, String xmlEncoding,
+            boolean standalone) throws StreamException {
+        parent.startDocument(inputEncoding, xmlVersion, xmlEncoding, standalone);
+    }
+
+    public void endDocument() throws StreamException {
+        parent.endDocument();
+    }
+
+    public void processDocumentTypeDeclaration(String rootName, String publicId, String systemId,
+            String internalSubset) throws StreamException {
+        parent.processDocumentTypeDeclaration(rootName, publicId, systemId, internalSubset);
+    }
+
+    public void startElement(String namespaceURI, String localName, String prefix)
+            throws StreamException {
+        parent.startElement(namespaceURI, localName, prefix);
+    }
+
+    public void endElement() throws StreamException {
+        parent.endElement();
+    }
+
+    public void processAttribute(String namespaceURI, String localName, String prefix, String value,
+            String type, boolean specified) throws StreamException {
+        parent.processAttribute(namespaceURI, localName, prefix, value, type, specified);
+    }
+
+    public void processNamespaceDeclaration(String prefix, String namespaceURI)
+            throws StreamException {
+        parent.processNamespaceDeclaration(prefix, namespaceURI);
+    }
+
+    public void attributesCompleted() throws StreamException {
+        parent.attributesCompleted();
+    }
+
+    public void processCharacterData(Object data, boolean ignorable) throws StreamException {
+        parent.processCharacterData(data, ignorable);
+    }
+
+    public void processProcessingInstruction(String piTarget, String piData)
+            throws StreamException {
+        parent.processProcessingInstruction(piTarget, piData);
+    }
+
+    public void processComment(String content) throws StreamException {
+        parent.processComment(content);
+    }
+
+    public void processCDATASection(String content) throws StreamException {
+        parent.processCDATASection(content);
+    }
+
+    public void processEntityReference(String name, String replacementText) throws StreamException {
+        parent.processEntityReference(name, replacementText);
+    }
+}

Propchange: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/stream/XmlHandlerWrapper.java
------------------------------------------------------------------------------
    svn:eol-style = native