Hi,

A while back, I committed a bug report in JIRA: <URL: https://issues.apache.org/jira/browse/ABDERA-242 >. I now had some time to look at the problem and found a possible solution.

I don't know how you would like to have the fix, so I have include the "svn diff" below. I can commit this to svn if you would prefer that.

The problem is occuring in the class "AbstractParserOptions".

First the problem is the key in "entities". For both the upper and the lower case letters the key is registeted as lower in "initDefaultEntities()". The result is that both "Aring" and "aring" has same key "aring". The method "resolveEntity" is also converting the lookup key (name) to lower case, so this also has to be changed to get the correct transformation.

The same problem is occurring for "AElig" and "Oslash" as well.

Proposed solution (svn diff):

korvald:~/Utvikling/abdera/trunk$ svn diff core/src/main/java/org/apache/abdera/util/AbstractParserOptions.java
Index: core/src/main/java/org/apache/abdera/util/AbstractParserOptions.java
===================================================================
--- core/src/main/java/org/apache/abdera/util/AbstractParserOptions.java (revision 890809) +++ core/src/main/java/org/apache/abdera/util/AbstractParserOptions.java (working copy)
@@ -187,8 +187,8 @@
   registerEntity("acirc","\u00C2");
   registerEntity("atilde","\u00C3");
   registerEntity("auml","\u00C4");
-    registerEntity("aring","\u00C5");
-    registerEntity("aelig","\u00C6");
+    registerEntity("Aring","\u00C5");
+    registerEntity("AElig","\u00C6");
   registerEntity("ccedil","\u00C7");
   registerEntity("egrave","\u00C8");
   registerEntity("eacute","\u00C9");
@@ -206,7 +206,7 @@
   registerEntity("otilde","\u00D5");
   registerEntity("ouml","\u00D6");
   registerEntity("times","\u00D7");
-    registerEntity("oslash","\u00D8");
+    registerEntity("Oslash","\u00D8");
   registerEntity("ugrave","\u00D9");
   registerEntity("uacute","\u00DA");
   registerEntity("ucirc","\u00DB");
@@ -401,7 +401,7 @@
 }

 public String resolveEntity(String name) {
-    return resolveentities ? entities.get(name.toLowerCase()) : null;
+    return resolveentities ? entities.get(name) : null;
 }

 public ParserOptions setResolveEntities(boolean resolve) {

--
Regards,

Magnus Korvald

Reply via email to