[Httpunit-commit] CVS: httpunit/src/com/meterware/httpunit HTMLPage.java,1.27,1.28 ParsedHTML.java,1
Brought to you by:
russgold
|
From: Russell G. <rus...@us...> - 2003-03-28 03:22:39
|
Update of /cvsroot/httpunit/httpunit/src/com/meterware/httpunit
In directory sc8-pr-cvs1:/tmp/cvs-serv15073/src/com/meterware/httpunit
Modified Files:
HTMLPage.java ParsedHTML.java
Log Message:
add support for getElementsByName
Index: HTMLPage.java
===================================================================
RCS file: /cvsroot/httpunit/httpunit/src/com/meterware/httpunit/HTMLPage.java,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -r1.27 -r1.28
--- HTMLPage.java 19 Mar 2003 19:05:39 -0000 1.27
+++ HTMLPage.java 28 Mar 2003 03:22:33 -0000 1.28
@@ -218,6 +218,16 @@
final HTMLElement elementWithID = HTMLPage.this.getElementWithID( id );
return elementWithID == null ? null : elementWithID.getScriptableDelegate();
}
+
+
+ public ScriptableDelegate[] getElementsByName( String name ) {
+ final HTMLElement[] elements = HTMLPage.this.getElementsByName( name );
+ ScriptableDelegate[] result = new ScriptableDelegate[ elements.length ];
+ for (int i = 0; i < elements.length; i++) {
+ result[i] = elements[i].getScriptableDelegate();
+ }
+ return result;
+ }
}
Index: ParsedHTML.java
===================================================================
RCS file: /cvsroot/httpunit/httpunit/src/com/meterware/httpunit/ParsedHTML.java,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -r1.45 -r1.46
--- ParsedHTML.java 9 Mar 2003 20:35:46 -0000 1.45
+++ ParsedHTML.java 28 Mar 2003 03:22:33 -0000 1.46
@@ -34,6 +34,8 @@
**/
class ParsedHTML {
+ final static private HTMLElement[] NO_ELEMENTS = new HTMLElement[0];
+
private Node _rootNode;
private URL _baseURL;
@@ -53,6 +55,9 @@
/** map of element IDs to elements. **/
private HashMap _elementsByID = new HashMap();
+ /** map of element names to lists of elements. **/
+ private HashMap _elementsByName = new HashMap();
+
/** map of DOM elements to HTML elements **/
private HashMap _elements = new HashMap();
@@ -154,6 +159,14 @@
}
+
+ HTMLElement[] getElementsByName( String name ) {
+ loadElements();
+ ArrayList elements = (ArrayList) _elementsByName.get( name );
+ return elements == null ? NO_ELEMENTS : (HTMLElement[]) elements.toArray( new HTMLElement[ elements.size() ] );
+ }
+
+
/**
* Returns the form found in the page with the specified ID.
**/
@@ -547,6 +560,14 @@
private void addToMaps( Element element, HTMLElement htmlElement ) {
_elements.put( element, htmlElement );
if (htmlElement.getID() != null) _elementsByID.put( htmlElement.getID(), htmlElement );
+ if (htmlElement.getName() != null) addNamedElement( htmlElement.getName(), htmlElement );
+ }
+
+
+ private void addNamedElement( String name, HTMLElement htmlElement ) {
+ List list = (List) _elementsByName.get( name );
+ if (list == null) _elementsByName.put( name, list = new ArrayList() );
+ list.add( htmlElement );
}
|