Return-Path: X-Original-To: apmail-abdera-commits-archive@www.apache.org Delivered-To: apmail-abdera-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id C9082D66D for ; Sun, 19 Aug 2012 07:50:06 +0000 (UTC) Received: (qmail 24806 invoked by uid 500); 19 Aug 2012 07:50:06 -0000 Delivered-To: apmail-abdera-commits-archive@abdera.apache.org Received: (qmail 24761 invoked by uid 500); 19 Aug 2012 07:50:06 -0000 Mailing-List: contact commits-help@abdera.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@abdera.apache.org Delivered-To: mailing list commits@abdera.apache.org Received: (qmail 24736 invoked by uid 99); 19 Aug 2012 07:50:05 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 19 Aug 2012 07:50:05 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 19 Aug 2012 07:50:03 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 99FEA23888FE for ; Sun, 19 Aug 2012 07:49:20 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1374702 - in /abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax: FOMBuilder.java FOMStAXFilter.java Date: Sun, 19 Aug 2012 07:49:20 -0000 To: commits@abdera.apache.org From: veithen@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20120819074920.99FEA23888FE@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: veithen Date: Sun Aug 19 07:49:20 2012 New Revision: 1374702 URL: http://svn.apache.org/viewvc?rev=1374702&view=rev Log: Also move attribute filtering to FOMStAXFilter, so that FOMBuilder no longer needs to override StAXOMBuilder#processAttributes. Now, all filtering and transformation is done in FOMStAXFilter. Modified: abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMBuilder.java abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMStAXFilter.java Modified: abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMBuilder.java URL: http://svn.apache.org/viewvc/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMBuilder.java?rev=1374702&r1=1374701&r2=1374702&view=diff ============================================================================== --- abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMBuilder.java (original) +++ abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMBuilder.java Sun Aug 19 07:49:20 2012 @@ -20,7 +20,6 @@ package org.apache.abdera.parser.stax; import javax.xml.namespace.QName; import javax.xml.stream.XMLStreamReader; -import org.apache.abdera.filter.ParseFilter; import org.apache.abdera.model.Content; import org.apache.abdera.model.Document; import org.apache.abdera.model.Element; @@ -32,12 +31,10 @@ import org.apache.axiom.om.OMContainer; import org.apache.axiom.om.OMDocument; import org.apache.axiom.om.OMElement; import org.apache.axiom.om.OMException; -import org.apache.axiom.om.OMNamespace; import org.apache.axiom.om.OMNode; import org.apache.axiom.om.impl.OMContainerEx; import org.apache.axiom.om.impl.OMNodeEx; import org.apache.axiom.om.impl.builder.StAXOMBuilder; -import org.apache.axiom.om.impl.util.OMSerializerUtil; @SuppressWarnings( {"unchecked", "deprecation"}) public class FOMBuilder extends StAXOMBuilder implements Constants { @@ -105,14 +102,6 @@ public class FOMBuilder extends StAXOMBu return ctype; } - private boolean isAcceptableToParse(QName qname, boolean attribute) { - if (parserOptions == null) - return true; - ParseFilter filter = parserOptions.getParseFilter(); - return (filter != null) ? (!attribute) ? filter.acceptable(qname) : filter.acceptable(parser.getName(), qname) - : true; - } - /** * Method next. * @@ -142,30 +131,6 @@ public class FOMBuilder extends StAXOMBu return element; } - @Override - protected void processAttributes(OMElement node) { - int attribCount = parser.getAttributeCount(); - for (int i = 0; i < attribCount; i++) { - QName attr = parser.getAttributeName(i); - if (isAcceptableToParse(attr, true)) { - String uri = parser.getAttributeNamespace(i); - String prefix = parser.getAttributePrefix(i); - OMNamespace namespace = null; - if (uri != null && uri.length() > 0) { - namespace = node.findNamespace(uri, prefix); - if (namespace == null) { - if (prefix == null || "".equals(prefix)) { - prefix = OMSerializerUtil.getNextNSPrefix(); - } - namespace = node.declareNamespace(uri, prefix); - } - } - String value = parser.getAttributeValue(i); - node.addAttribute(parser.getAttributeLocalName(i), value, namespace); - } - } - } - public Document getFomDocument() { while (!indoc && !done) { next(); Modified: abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMStAXFilter.java URL: http://svn.apache.org/viewvc/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMStAXFilter.java?rev=1374702&r1=1374701&r2=1374702&view=diff ============================================================================== --- abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMStAXFilter.java (original) +++ abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMStAXFilter.java Sun Aug 19 07:49:20 2012 @@ -51,6 +51,8 @@ class FOMStAXFilter extends XMLStreamRea private int altEventType; private QName altQName; private String altText; + private int[] attributeMap; + private int attributeCount; FOMStAXFilter(XMLStreamReader parent, ParserOptions parserOptions) { super(parent); @@ -61,6 +63,7 @@ class FOMStAXFilter extends XMLStreamRea ignoreWhitespace = parseFilter.getIgnoreWhitespace(); ignoreComments = parseFilter.getIgnoreComments(); ignorePI = parseFilter.getIgnoreProcessingInstructions(); + attributeMap = new int[8]; } } resetEvent(); @@ -70,16 +73,9 @@ class FOMStAXFilter extends XMLStreamRea altEventType = -1; altQName = null; altText = null; + attributeCount = -1; } - private boolean isAcceptableToParse(QName qname, boolean attribute) { - if (parserOptions == null) - return true; - ParseFilter filter = parserOptions.getParseFilter(); - return (filter != null) ? (!attribute) ? filter.acceptable(qname) : filter.acceptable(getName(), qname) - : true; - } - private void translateQName() { if (parserOptions.isQNameAliasMappingEnabled()) { Map map = parserOptions.getQNameAliasMap(); @@ -89,6 +85,25 @@ class FOMStAXFilter extends XMLStreamRea } } + private void mapAttributes() { + attributeCount = 0; + int orgAttCount = super.getAttributeCount(); + if (orgAttCount > 0) { + QName elementQName = super.getName(); + ParseFilter filter = parserOptions.getParseFilter(); + for (int i=0; i