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/04/27 23:32:23 UTC

svn commit: r1741345 - in /webservices/axiom/trunk: aspects/core-aspects/src/main/java/org/apache/axiom/core/impl/builder/ aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/ aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common...

Author: veithen
Date: Wed Apr 27 21:32:23 2016
New Revision: 1741345

URL: http://svn.apache.org/viewvc?rev=1741345&view=rev
Log:
Remove namespace repairing logic from the builder.

Added:
    webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/NamespaceRepairingFilter.java   (with props)
Modified:
    webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/impl/builder/BuilderImpl.java
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/BuilderFactory.java
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomSourcedElementSupport.aj
    webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMParser.java

Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/impl/builder/BuilderImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/impl/builder/BuilderImpl.java?rev=1741345&r1=1741344&r2=1741345&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/impl/builder/BuilderImpl.java (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/impl/builder/BuilderImpl.java Wed Apr 27 21:32:23 2016
@@ -23,7 +23,6 @@ import org.apache.axiom.core.CoreDocumen
 import org.apache.axiom.core.CoreNSAwareElement;
 import org.apache.axiom.core.DeferredParsingException;
 import org.apache.axiom.core.NodeFactory;
-import org.apache.axiom.core.stream.NamespaceRepairingFilterHandler;
 import org.apache.axiom.core.stream.StreamException;
 import org.apache.axiom.core.stream.XmlInput;
 import org.apache.axiom.core.stream.XmlReader;
@@ -34,9 +33,9 @@ public final class BuilderImpl implement
     private Object facade;
 
     public BuilderImpl(XmlInput input, NodeFactory nodeFactory, Model model,
-            CoreNSAwareElement root, boolean repairNamespaces) {
+            CoreNSAwareElement root) {
         builderHandler = new BuilderHandler(nodeFactory, model, root, this);
-        reader = input.createReader(repairNamespaces ? new NamespaceRepairingFilterHandler(builderHandler, null, false) : builderHandler);
+        reader = input.createReader(builderHandler);
     }
 
     public void addListener(BuilderListener listener) {

Added: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/NamespaceRepairingFilter.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/NamespaceRepairingFilter.java?rev=1741345&view=auto
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/NamespaceRepairingFilter.java (added)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/stream/NamespaceRepairingFilter.java Wed Apr 27 21:32:23 2016
@@ -0,0 +1,38 @@
+/*
+ * 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.core.stream;
+
+public final class NamespaceRepairingFilter implements XmlFilter {
+    public static final NamespaceRepairingFilter DEFAULT = new NamespaceRepairingFilter(null, false);
+
+    private final NamespaceContextProvider parentNamespaceContext;
+    private final boolean removeRedundantDeclarations;
+
+    public NamespaceRepairingFilter(NamespaceContextProvider parentNamespaceContext,
+            boolean removeRedundantDeclarations) {
+        this.parentNamespaceContext = parentNamespaceContext;
+        this.removeRedundantDeclarations = removeRedundantDeclarations;
+    }
+
+    @Override
+    public XmlHandler createFilterHandler(XmlHandler parent) {
+        return new NamespaceRepairingFilterHandler(parent, parentNamespaceContext,
+                removeRedundantDeclarations);
+    }
+}

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

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/BuilderFactory.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/BuilderFactory.java?rev=1741345&r1=1741344&r2=1741345&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/BuilderFactory.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/BuilderFactory.java Wed Apr 27 21:32:23 2016
@@ -37,6 +37,7 @@ import org.apache.axiom.core.impl.builde
 import org.apache.axiom.core.impl.builder.BuilderListener;
 import org.apache.axiom.core.impl.builder.PlainXMLModel;
 import org.apache.axiom.core.stream.FilteredXmlInput;
+import org.apache.axiom.core.stream.NamespaceRepairingFilter;
 import org.apache.axiom.core.stream.XmlInput;
 import org.apache.axiom.core.stream.dom.DOMInput;
 import org.apache.axiom.core.stream.sax.SAXInput;
@@ -89,17 +90,17 @@ abstract class BuilderFactory<T extends
     final static BuilderFactory<OMXMLParserWrapper> OM = new BuilderFactory<OMXMLParserWrapper>() {
         @Override
         OMXMLParserWrapper createBuilder(NodeFactory nodeFactory, XmlInput input,
-                boolean repairNamespaces, Detachable detachable) {
+                Detachable detachable) {
             return new OMXMLParserWrapperImpl(new BuilderImpl(input, nodeFactory,
-                    PlainXMLModel.INSTANCE, null, repairNamespaces), detachable);
+                    PlainXMLModel.INSTANCE, null), detachable);
         }
     };
 
     final static BuilderFactory<SOAPModelBuilder> SOAP = new BuilderFactory<SOAPModelBuilder>() {
         @Override
         SOAPModelBuilder createBuilder(NodeFactory nodeFactory, XmlInput input,
-                boolean repairNamespaces, Detachable detachable) {
-            BuilderImpl builder = new BuilderImpl(new FilteredXmlInput(input, SOAPFilter.INSTANCE), nodeFactory, new SOAPModel(), null, true);
+                Detachable detachable) {
+            BuilderImpl builder = new BuilderImpl(new FilteredXmlInput(input, SOAPFilter.INSTANCE), nodeFactory, new SOAPModel(), null);
             // The SOAPFactory instance linked to the SOAPMessage is unknown until we reach the
             // SOAPEnvelope. Register a post-processor that does the necessary updates on the
             // SOAPMessage.
@@ -183,9 +184,16 @@ abstract class BuilderFactory<T extends
         return new SourceInfo(reader, detachable, closeable);
     }
     
-    abstract T createBuilder(NodeFactory nodeFactory, XmlInput input, boolean repairNamespaces,
-            Detachable detachable);
+    abstract T createBuilder(NodeFactory nodeFactory, XmlInput input, Detachable detachable);
 
+    final T createBuilder(NodeFactory nodeFactory, XmlInput input, boolean repairNamespaces,
+            Detachable detachable) {
+        return createBuilder(
+                nodeFactory,
+                repairNamespaces ? new FilteredXmlInput(input, NamespaceRepairingFilter.DEFAULT) : input,
+                detachable);
+    }
+    
     final T createBuilder(NodeFactory nodeFactory, XMLStreamReader reader) {
         int eventType = reader.getEventType();
         switch (eventType) {

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomSourcedElementSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomSourcedElementSupport.aj?rev=1741345&r1=1741344&r2=1741345&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomSourcedElementSupport.aj (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomSourcedElementSupport.aj Wed Apr 27 21:32:23 2016
@@ -25,6 +25,8 @@ import org.apache.axiom.core.CoreNode;
 import org.apache.axiom.core.DeferredParsingException;
 import org.apache.axiom.core.impl.builder.BuilderImpl;
 import org.apache.axiom.core.impl.builder.PlainXMLModel;
+import org.apache.axiom.core.stream.FilteredXmlInput;
+import org.apache.axiom.core.stream.NamespaceRepairingFilter;
 import org.apache.axiom.core.stream.StreamException;
 import org.apache.axiom.core.stream.XmlInput;
 import org.apache.axiom.om.OMCloneOptions;
@@ -197,7 +199,7 @@ public aspect AxiomSourcedElementSupport
             if (OMDataSourceUtil.isPushDataSource(dataSource)) {
                 // Disable namespace repairing because the OMDataSource is required to produce well formed
                 // XML with respect to namespaces.
-                builder = new BuilderImpl(new PushOMDataSourceInput(this, dataSource), coreGetNodeFactory(), PlainXMLModel.INSTANCE, this, false);
+                builder = new BuilderImpl(new PushOMDataSourceInput(this, dataSource), coreGetNodeFactory(), PlainXMLModel.INSTANCE, this);
             } else {
                 // Get the XMLStreamReader
                 XMLStreamReader readerFromDS;
@@ -206,7 +208,7 @@ public aspect AxiomSourcedElementSupport
                 } catch (XMLStreamException ex) {
                     throw new OMException("Error obtaining parser from data source for element " + getPrintableName(), ex);
                 }
-                builder = new BuilderImpl(new StAXPullInput(readerFromDS), coreGetNodeFactory(), PlainXMLModel.INSTANCE, this, true);
+                builder = new BuilderImpl(new FilteredXmlInput(new StAXPullInput(readerFromDS), NamespaceRepairingFilter.DEFAULT), coreGetNodeFactory(), PlainXMLModel.INSTANCE, this);
             }
             isExpanded = true;
             coreSetState(ATTRIBUTES_PENDING);

Modified: webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMParser.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMParser.java?rev=1741345&r1=1741344&r2=1741345&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMParser.java (original)
+++ webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMParser.java Wed Apr 27 21:32:23 2016
@@ -41,6 +41,8 @@ import org.apache.axiom.core.CoreNode;
 import org.apache.axiom.core.DeferredParsingException;
 import org.apache.axiom.core.impl.builder.BuilderImpl;
 import org.apache.axiom.core.impl.builder.BuilderListener;
+import org.apache.axiom.core.stream.FilteredXmlInput;
+import org.apache.axiom.core.stream.NamespaceRepairingFilter;
 import org.apache.axiom.fom.AbderaNode;
 import org.apache.axiom.fom.FOMSemantics;
 import org.apache.axiom.fom.impl.FOMNodeFactory;
@@ -181,8 +183,12 @@ public class FOMParser extends AbstractP
         throws ParseException {
         try {
             final FOMFactory factory = getFomFactory(options);
-            BuilderImpl builder = new BuilderImpl(new StAXPullInput(new FOMStAXFilter(reader, options), false, null), FOMNodeFactory.INSTANCE,
-                    factory, null, true); // TODO: probably we can use repairNamespaces=false here
+            // TODO: we probably don't need namespace repairing here
+            BuilderImpl builder = new BuilderImpl(
+                    new FilteredXmlInput(
+                            new StAXPullInput(new FOMStAXFilter(reader, options), false, null),
+                            NamespaceRepairingFilter.DEFAULT),
+                    FOMNodeFactory.INSTANCE, factory, null);
             builder.addListener(new BuilderListener() {
                 @Override
                 public Runnable nodeAdded(CoreNode node, int depth) {