You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@abdera.apache.org by jm...@apache.org on 2008/01/14 21:17:13 UTC

svn commit: r611915 - in /incubator/abdera/java/trunk: core/src/main/java/org/apache/abdera/util/ parser/src/main/java/org/apache/abdera/parser/stax/

Author: jmsnell
Date: Mon Jan 14 12:17:00 2008
New Revision: 611915

URL: http://svn.apache.org/viewvc?rev=611915&view=rev
Log:
Ewww... bugs!  The code would enter an infinite loop when attempting to use a named parser

Modified:
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/AbderaConfiguration.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/AbstractNamedParser.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/AbstractParser.java
    incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMParserFactory.java

Modified: incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/AbderaConfiguration.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/AbderaConfiguration.java?rev=611915&r1=611914&r2=611915&view=diff
==============================================================================
--- incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/AbderaConfiguration.java (original)
+++ incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/AbderaConfiguration.java Mon Jan 14 12:17:00 2008
@@ -240,8 +240,7 @@
    */
   private Map<String,NamedParser> initNamedParsers() {
     Map<String,NamedParser> parsers = null;
-    List<NamedParser> _parsers = 
-      ServiceUtil._loadimpls(NAMED_PARSER);
+    List<NamedParser> _parsers = ServiceUtil._loadimpls(NAMED_PARSER);
     parsers = Collections.synchronizedMap(new HashMap<String,NamedParser>());
     for (NamedParser parser : _parsers) {
       parsers.put(parser.getName().toLowerCase(), parser);

Modified: incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/AbstractNamedParser.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/AbstractNamedParser.java?rev=611915&r1=611914&r2=611915&view=diff
==============================================================================
--- incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/AbstractNamedParser.java (original)
+++ incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/AbstractNamedParser.java Mon Jan 14 12:17:00 2008
@@ -17,6 +17,7 @@
 */
 package org.apache.abdera.util;
 
+import org.apache.abdera.Abdera;
 import org.apache.abdera.parser.NamedParser;
 
 /**
@@ -29,9 +30,13 @@
   protected final String name;
   protected final String[] formats;
   
-  protected AbstractNamedParser(String name, String... formats) {
-    this.name = name;
-    this.formats = formats;
+  protected AbstractNamedParser(
+    Abdera abdera, 
+    String name, 
+    String... formats) {
+      super(abdera);
+      this.name = name;
+      this.formats = formats;
   }
   
   public String getName() {

Modified: incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/AbstractParser.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/AbstractParser.java?rev=611915&r1=611914&r2=611915&view=diff
==============================================================================
--- incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/AbstractParser.java (original)
+++ incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/util/AbstractParser.java Mon Jan 14 12:17:00 2008
@@ -18,6 +18,7 @@
 package org.apache.abdera.util;
 
 import java.io.InputStream;
+import java.io.InputStreamReader;
 import java.io.Reader;
 import java.nio.channels.Channels;
 import java.nio.channels.ReadableByteChannel;
@@ -36,7 +37,7 @@
 public abstract class AbstractParser 
   implements Parser {
 
-  protected final Abdera abdera;
+  protected Abdera abdera;
   protected ParserOptions options;
   
   protected AbstractParser() {
@@ -51,6 +52,10 @@
     return abdera;
   }
   
+  public void setAbdera(Abdera abdera) {
+    this.abdera = abdera;
+  }
+  
   public Factory getFactory() {
     return getAbdera().getFactory();
   }
@@ -80,7 +85,7 @@
     String base, 
     ParserOptions options) 
       throws ParseException{
-    return parse(in, base, options);
+    return parse(new InputStreamReader(in), base, options);
   }
   
   public <T extends Element>Document<T> parse(

Modified: incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMParserFactory.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMParserFactory.java?rev=611915&r1=611914&r2=611915&view=diff
==============================================================================
--- incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMParserFactory.java (original)
+++ incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMParserFactory.java Mon Jan 14 12:17:00 2008
@@ -24,6 +24,7 @@
 import org.apache.abdera.parser.NamedParser;
 import org.apache.abdera.parser.Parser;
 import org.apache.abdera.parser.ParserFactory;
+import org.apache.abdera.util.AbstractParser;
 
 @SuppressWarnings("unchecked")
 public class FOMParserFactory 
@@ -51,8 +52,12 @@
   }
 
   public <T extends Parser>T getParser(String name) {
-    return (T)((name != null) ? 
+    Parser parser = (T)((name != null) ? 
       getParsers().get(name.toLowerCase()) : getParser());
+    if (parser instanceof AbstractParser) {
+      ((AbstractParser)parser).setAbdera(abdera);
+    }
+    return (T) parser;
   }
 
   private Map<String,NamedParser> getParsers() {