You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@abdera.apache.org by ve...@apache.org on 2012/08/12 20:07:54 UTC
svn commit: r1372163 [2/4] - in /abdera/java/branches/axiom-upgrade: ./
dependencies/i18n/src/main/java/org/apache/abdera/i18n/text/io/ parser/
parser/src/main/java/org/apache/abdera/parser/stax/
parser/src/test/java/org/apache/abdera/test/parser/stax/...
Propchange: abdera/java/branches/axiom-upgrade/
------------------------------------------------------------------------------
Merged /abdera/java/trunk:r1371963-1372162
Propchange: abdera/java/branches/axiom-upgrade/dependencies/i18n/src/main/java/org/apache/abdera/i18n/text/io/CompressionUtil.java
------------------------------------------------------------------------------
Merged /abdera/java/trunk/dependencies/i18n/src/main/java/org/apache/abdera/i18n/text/io/CompressionUtil.java:r1371963-1372162
Modified: abdera/java/branches/axiom-upgrade/parser/pom.xml
URL: http://svn.apache.org/viewvc/abdera/java/branches/axiom-upgrade/parser/pom.xml?rev=1372163&r1=1372162&r2=1372163&view=diff
==============================================================================
--- abdera/java/branches/axiom-upgrade/parser/pom.xml (original)
+++ abdera/java/branches/axiom-upgrade/parser/pom.xml Sun Aug 12 18:07:30 2012
@@ -72,13 +72,4 @@
<scope>runtime</scope>
</dependency>
</dependencies>
- <repositories>
- <repository>
- <id>apache.snapshots</id>
- <url>http://repository.apache.org/snapshots</url>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </repository>
- </repositories>
</project>
Modified: abdera/java/branches/axiom-upgrade/parser/src/main/java/org/apache/abdera/parser/stax/FOMBuilder.java
URL: http://svn.apache.org/viewvc/abdera/java/branches/axiom-upgrade/parser/src/main/java/org/apache/abdera/parser/stax/FOMBuilder.java?rev=1372163&r1=1372162&r2=1372163&view=diff
==============================================================================
--- abdera/java/branches/axiom-upgrade/parser/src/main/java/org/apache/abdera/parser/stax/FOMBuilder.java (original)
+++ abdera/java/branches/axiom-upgrade/parser/src/main/java/org/apache/abdera/parser/stax/FOMBuilder.java Sun Aug 12 18:07:30 2012
@@ -20,8 +20,6 @@ package org.apache.abdera.parser.stax;
import java.util.Map;
import javax.xml.namespace.QName;
-import javax.xml.stream.XMLStreamConstants;
-import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import org.apache.abdera.filter.ParseFilter;
@@ -32,15 +30,12 @@ import org.apache.abdera.model.Text;
import org.apache.abdera.parser.ParseException;
import org.apache.abdera.parser.ParserOptions;
import org.apache.abdera.util.Constants;
-import org.apache.axiom.om.OMConstants;
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.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axiom.om.OMNode;
-import org.apache.axiom.om.OMText;
import org.apache.axiom.om.impl.OMContainerEx;
import org.apache.axiom.om.impl.OMNodeEx;
import org.apache.axiom.om.impl.builder.StAXOMBuilder;
@@ -52,27 +47,15 @@ public class FOMBuilder extends StAXOMBu
private final FOMFactory fomfactory;
private final ParserOptions parserOptions;
private boolean indoc = false;
- private int depthInSkipElement = 0;
- private boolean ignoreWhitespace = false;
- private boolean ignoreComments = false;
- private boolean ignorePI = false;
public FOMBuilder(FOMFactory factory, XMLStreamReader parser, ParserOptions parserOptions) {
- super(factory, parser);
+ super(factory, new FOMStAXFilter(parser, parserOptions));
this.document = (OMDocument)factory.newDocument();
this.parserOptions = parserOptions;
this.fomfactory = factory;
String enc = parser.getCharacterEncodingScheme();
document.setCharsetEncoding(enc != null ? enc : "utf-8");
document.setXMLVersion(parser.getVersion() != null ? parser.getVersion() : "1.0");
- if (parserOptions != null) {
- ParseFilter parseFilter = parserOptions.getParseFilter();
- if (parseFilter != null) {
- ignoreWhitespace = parseFilter.getIgnoreWhitespace();
- ignoreComments = parseFilter.getIgnoreComments();
- ignorePI = parseFilter.getIgnoreProcessingInstructions();
- }
- }
}
public ParserOptions getParserOptions() {
@@ -112,32 +95,6 @@ public class FOMBuilder extends StAXOMBu
: true;
}
- private OMNode applyTextFilter(int type) {
- if (parserOptions != null) {
- ParseFilter parseFilter = parserOptions.getParseFilter();
- if (parseFilter != null) {
- if (parser.isWhiteSpace() && parseFilter.getIgnoreWhitespace())
- return createOMText("", type);
- }
- }
- return createOMText(type);
- }
-
- private int getNextElementToParse() throws XMLStreamException {
- int token = parser.next();
- if (depthInSkipElement == 0 && token != XMLStreamConstants.START_ELEMENT) {
- return token;
- } else if (token == XMLStreamConstants.START_ELEMENT && isAcceptableToParse(parser.getName(), false)
- && depthInSkipElement == 0) {
- return token;
- } else if (token == XMLStreamConstants.START_ELEMENT) {
- depthInSkipElement++;
- } else if (token == XMLStreamConstants.END_ELEMENT) { // otherwise skip like crazy
- depthInSkipElement--;
- }
- return getNextElementToParse();
- }
-
/**
* Method next.
*
@@ -146,79 +103,9 @@ public class FOMBuilder extends StAXOMBu
*/
public int next() throws OMException {
try {
- if (done) {
- throw new OMException();
- }
- int token = getNextElementToParse();
- if (!cache) {
- return token;
- }
- switch (token) {
- case XMLStreamConstants.START_ELEMENT:
- lastNode = createOMElement();
- break;
- case XMLStreamConstants.START_DOCUMENT:
- document.setXMLVersion(parser.getVersion() != null ? parser.getVersion() : "1.0");
- document.setCharsetEncoding(parser.getEncoding() != null ? parser.getEncoding() : "utf-8");
- document.setStandalone(parser.isStandalone() ? YES : NO);
- break;
- case XMLStreamConstants.CHARACTERS:
- lastNode = applyTextFilter(XMLStreamConstants.CHARACTERS);
- break;
- case XMLStreamConstants.CDATA:
- lastNode = applyTextFilter(XMLStreamConstants.CDATA);
- break;
- case XMLStreamConstants.END_ELEMENT:
- endElement();
- break;
- case XMLStreamConstants.END_DOCUMENT:
- done = true;
- ((OMContainerEx)this.document).setComplete(true);
- break;
- case XMLStreamConstants.SPACE:
- if (!ignoreWhitespace)
- lastNode = createOMText(XMLStreamConstants.SPACE);
- break;
- case XMLStreamConstants.COMMENT:
- if (!ignoreComments)
- createComment();
- break;
- case XMLStreamConstants.DTD:
- // Current StAX cursor model implementations inconsistently handle DTDs.
- // Woodstox, for instance, does not provide a means of getting to the complete
- // doctype declaration (which is actually valid according to the spec, which
- // is broken). The StAX reference impl returns the complete doctype declaration
- // despite the fact that doing so is apparently against the spec. We can get
- // to the complete declaration in Woodstox if we want to use their proprietary
- // extension APIs. It's unclear how other Stax impls handle this. So.. for now,
- // we're just going to ignore the DTD. The DTD will still be processed as far
- // as entities are concerned, but we will not be able to reserialize the parsed
- // document with the DTD. Since very few folks actually use DTD's in feeds
- // right now (and we should likely be encouraging folks not to do so), this
- // shouldn't be that big of a problem
- // if (!parserOptions.getIgnoreDoctype())
- // createDTD();
- break;
- case XMLStreamConstants.PROCESSING_INSTRUCTION:
- if (!ignorePI)
- createPI();
- break;
- case XMLStreamConstants.ENTITY_REFERENCE:
- String val = parserOptions.resolveEntity(super.getName());
- if (val == null)
- throw new ParseException("Unresolved undeclared entity: " + super.getName());
- else
- lastNode = createOMText(val, XMLStreamConstants.CHARACTERS);
- break;
- default:
- throw new ParseException();
- }
- return token;
- } catch (ParseException e) {
- throw e;
+ return super.next();
} catch (OMException e) {
- throw new ParseException(e);
- } catch (Exception e) {
+ // TODO: transforming the OMException here is not ideal!
throw new ParseException(e);
}
}
@@ -287,50 +174,4 @@ public class FOMBuilder extends StAXOMBu
public FOMFactory getFactory() {
return fomfactory;
}
-
- /**
- * Method createOMText.
- *
- * @return Returns OMNode.
- * @throws OMException
- */
- protected OMNode createOMText(String value, int textType) throws OMException {
- OMNode node = null;
- if (lastNode == null) {
- return null;
- } else if (!lastNode.isComplete()) {
- node = createOMText(value, (OMElement)lastNode, textType);
- } else {
- OMContainer parent = lastNode.getParent();
- if (!(parent instanceof OMDocument)) {
- node = createOMText(value, (OMElement)parent, textType);
- }
- }
- return node;
- }
-
- /**
- * This method will check whether the text can be optimizable using IS_BINARY flag. If that is set then we try to
- * get the data handler.
- *
- * @param omElement
- * @param textType
- * @return omNode
- */
- private OMNode createOMText(String value, OMElement omElement, int textType) {
- try {
- // TODO:Check on this. I'm not sure it's actually used
- // if (isDataHandlerAware && Boolean.TRUE == parser.getProperty(OMConstants.IS_BINARY)) {
- if (Boolean.TRUE == parser.getProperty(OMConstants.IS_BINARY)) {
- Object dataHandler = parser.getProperty(OMConstants.DATA_HANDLER);
- OMText text = new FOMTextValue(dataHandler, true, (OMFactory)this);
- omElement.addChild(text);
- return text;
- } else {
- return new FOMTextValue(omElement, value, textType, (OMFactory)this.fomfactory);
- }
- } catch (IllegalArgumentException e) {
- return new FOMTextValue(omElement, value, textType, (OMFactory)this.fomfactory);
- }
- }
}
Modified: abdera/java/branches/axiom-upgrade/parser/src/test/java/org/apache/abdera/test/parser/stax/BaseParserTestCase.java
URL: http://svn.apache.org/viewvc/abdera/java/branches/axiom-upgrade/parser/src/test/java/org/apache/abdera/test/parser/stax/BaseParserTestCase.java?rev=1372163&r1=1372162&r2=1372163&view=diff
==============================================================================
--- abdera/java/branches/axiom-upgrade/parser/src/test/java/org/apache/abdera/test/parser/stax/BaseParserTestCase.java (original)
+++ abdera/java/branches/axiom-upgrade/parser/src/test/java/org/apache/abdera/test/parser/stax/BaseParserTestCase.java Sun Aug 12 18:07:30 2012
@@ -33,20 +33,11 @@ public abstract class BaseParserTestCase
return abdera.getParser();
}
- protected static <T extends Element> Document<T> parse(IRI uri) {
- try {
- String uriStr = uri.toString();
- String path = uriStr.substring(uriStr.indexOf("//") + 1);
- InputStream stream = BaseParserTestCase.class.getResourceAsStream(path);
- return getParser().parse(stream, uri.toString());
- } catch (Exception e) {
- // when getting it local fails, fall back to getting it from the server
- try {
- return getParser().parse(uri.toURL().openStream(), uri.toString());
- } catch (Exception ex) {
- }
- }
- return null;
+ protected static <T extends Element> Document<T> parse(IRI uri) throws Exception {
+ String uriStr = uri.toString();
+ String path = uriStr.substring(uriStr.indexOf("//") + 1);
+ InputStream stream = BaseParserTestCase.class.getResourceAsStream(path);
+ return getParser().parse(stream, uri.toString());
}
}