You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Mikhail Loenko (JIRA)" <ji...@apache.org> on 2006/10/20 06:36:37 UTC

[jira] Resolved: (HARMONY-1414) [classlib][html] javax.swing.text.html.parser.Element.getAttributeByValue(String) throws NullPointerException

     [ http://issues.apache.org/jira/browse/HARMONY-1414?page=all ]

Mikhail Loenko resolved HARMONY-1414.
-------------------------------------

    Resolution: Fixed

fixed in revision 465986
Miguel please check it resolves the problem

> [classlib][html] javax.swing.text.html.parser.Element.getAttributeByValue(String) throws NullPointerException
> -------------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-1414
>                 URL: http://issues.apache.org/jira/browse/HARMONY-1414
>             Project: Harmony
>          Issue Type: Bug
>          Components: Classlib
>            Reporter: Miguel Montes
>         Assigned To: Mikhail Loenko
>         Attachments: AttributeList_01.patch
>
>
> The method javax.swing.text.html.parser.Element.getAttributeByValue(String) throws NullPointerException when at least one of its attributes, as represented with an instance of AttributeList, has a null values field. The problem is in the method j.s.t.h.p.AttributeList.containsValue(String), (with package visibility).
>   
>   //TODO correct a bit: Do we check an instance or just equals?
>     final boolean containsValue(final String value) {
>         if (value == this.value) {
>             return true;
>         }
>         return values.contains(value);
>     }
> This method doesn't check if values is null. In addition, it also compares its argument with the field 'value', although the RI only searchs in 'values'. Besides that, it uses == instead of equals for checking string equality.
> ===========Java code for testing if value should be compared ==================
> import java.io.IOException;
> import java.util.Vector;
> import javax.swing.text.html.parser.*;
> public class TestAttributeList {
> 	public static void main(String[] args) throws IOException {
>         DTD dtd = DTD.getDTD("html");
>         Vector<String> vector = new Vector<String>();
>         vector.add("data");
>         vector.add("ref");
>         vector.add("object");
>         AttributeList attValueType = new AttributeList("valuetype", DTDConstants.NMTOKEN, 0, "DATA", vector, null);
>         Element param =dtd.defineElement("param", DTDConstants.EMPTY, false, true, null, null, null, attValueType);
>         System.out.println(param.getAttributeByValue("DATA"));
> 	}
> }
> =============================================
> Output:
> $ java -showversion TestAttributeList
> java version "1.5.0"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
> Java HotSpot(TM) Client VM (build 1.5.0-b64, mixed mode)
> null
> $ /harmony-hdk-r431938/jdk/jre/bin/java -showversion TestAttributeList
> java version "1.5.0"
> pre-alpha : not complete or compatible
> svn = r431938, (Aug 16 2006), Linux/ia32/gcc 3.4.6, release build
> http://incubator.apache.org/harmony
> AttributeList[name=valuetype, type=9, modifier=0, value=DATA, values=[data, ref, object], next=null]
> ==========java code (NullPointerException)=======================
> import java.io.IOException;
> import java.util.Vector;
> import javax.swing.text.html.parser.*;
> public class TestAttributeList2 {
> 	public static void main(String[] args) throws IOException {
>         DTD dtd = DTD.getDTD("html");
>         Vector<String> vector = new Vector<String>();
>         vector.add("data");
>         vector.add("ref");
>        vector.add("object");
>         AttributeList attName = new AttributeList("type", DTDConstants.NAME, DTDConstants.REQUIRED, null, null, null);
>         Element param =dtd.defineElement("param", DTDConstants.EMPTY, false, true, null, null, null, attName);
>         System.out.println(param.getAttributeByValue("data"));
> 	}
> }
> =============================================================
> Output:
> $ java -showversion TestAttributeList2
> java version "1.5.0"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
> Java HotSpot(TM) Client VM (build 1.5.0-b64, mixed mode)
> null
> $ /harmony-hdk-r431938/jdk/jre/bin/java -showversion TestAttributeList2
> java version "1.5.0"
> pre-alpha : not complete or compatible
> svn = r431938, (Aug 16 2006), Linux/ia32/gcc 3.4.6, release build
> http://incubator.apache.org/harmony
> java.lang.NullPointerException
>         at javax.swing.text.html.parser.AttributeList.containsValue(AttributeList.java:185)
>         at javax.swing.text.html.parser.Element.getAttributeByValue(Element.java:92)
>         at TestAttributeList2.main(TestAttributeList2.java:13)
> Attached is a patch for AttributeList

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira