From: <asa...@us...> - 2008-09-01 18:55:24
|
Revision: 3293 http://htmlunit.svn.sourceforge.net/htmlunit/?rev=3293&view=rev Author: asashour Date: 2008-09-01 18:55:21 +0000 (Mon, 01 Sep 2008) Log Message: ----------- Better generics. Modified Paths: -------------- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlElement.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlForm.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlPage.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlIsIndexTest.java Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlElement.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlElement.java 2008-09-01 15:01:50 UTC (rev 3292) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlElement.java 2008-09-01 18:55:21 UTC (rev 3293) @@ -374,12 +374,13 @@ /** * Returns the HTML elements that are descendants of this element and that have one of the specified tag names. * @param tagNames the tag names to match (case-insensitive) + * @param <X> the sub-element * @return the HTML elements that are descendants of this element and that have one of the specified tag name */ - public final List< ? extends HtmlElement> getHtmlElementsByTagNames(final List<String> tagNames) { - final List<HtmlElement> list = new ArrayList<HtmlElement>(); + public final <X extends HtmlElement> List<X> getHtmlElementsByTagNames(final List<String> tagNames) { + final List<X> list = new ArrayList<X>(); for (final String tagName : tagNames) { - list.addAll(getHtmlElementsByTagName(tagName)); + list.addAll(this.<X>getHtmlElementsByTagName(tagName)); } return list; } @@ -969,19 +970,20 @@ * @param attributeValue the value of the attribute to search for * @return all elements which are descendants of this element and match the specified search criteria */ - public final List< ? extends HtmlElement> getHtmlElementsByAttribute( + @SuppressWarnings("unchecked") + public final <X extends HtmlElement> List<X> getHtmlElementsByAttribute( final String elementName, final String attributeName, final String attributeValue) { - final List<HtmlElement> list = new ArrayList<HtmlElement>(); + final List<X> list = new ArrayList<X>(); final String lowerCaseTagName = elementName.toLowerCase(); for (final HtmlElement next : getAllHtmlChildElements()) { if (next.getTagName().equals(lowerCaseTagName)) { final String attValue = next.getAttributeValue(attributeName); if (attValue != null && attValue.equals(attributeValue)) { - list.add(next); + list.add((X) next); } } } Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlForm.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlForm.java 2008-09-01 15:01:50 UTC (rev 3292) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlForm.java 2008-09-01 18:55:21 UTC (rev 3293) @@ -328,9 +328,8 @@ * @param name the input name to search for * @return all input elements which are members of this form and have the specified name */ - @SuppressWarnings("unchecked") public List<HtmlInput> getInputsByName(final String name) { - final List<HtmlInput> list = (List<HtmlInput>) getHtmlElementsByAttribute("input", "name", name); + final List<HtmlInput> list = getHtmlElementsByAttribute("input", "name", name); // collect inputs from lost children for (final HtmlElement elt : getLostChildren()) { @@ -363,9 +362,8 @@ * @param name the name to search for * @return all the {@link HtmlSelect} elements in this form that have the specified name */ - @SuppressWarnings("unchecked") public List<HtmlSelect> getSelectsByName(final String name) { - final List<HtmlSelect> list = (List<HtmlSelect>) getHtmlElementsByAttribute("select", "name", name); + final List<HtmlSelect> list = getHtmlElementsByAttribute("select", "name", name); // collect selects from lost children for (final HtmlElement elt : getLostChildren()) { @@ -398,9 +396,8 @@ * @param name the name to search for * @return all the {@link HtmlButton} elements in this form that have the specified name */ - @SuppressWarnings("unchecked") public List<HtmlButton> getButtonsByName(final String name) { - final List<HtmlButton> list = (List<HtmlButton>) getHtmlElementsByAttribute("button", "name", name); + final List<HtmlButton> list = getHtmlElementsByAttribute("button", "name", name); // collect buttons from lost children for (final HtmlElement elt : getLostChildren()) { @@ -433,9 +430,8 @@ * @param name the name to search for * @return all the {@link HtmlTextArea} elements in this form that have the specified name */ - @SuppressWarnings("unchecked") public List<HtmlTextArea> getTextAreasByName(final String name) { - final List<HtmlTextArea> list = (List<HtmlTextArea>) getHtmlElementsByAttribute("textarea", "name", name); + final List<HtmlTextArea> list = getHtmlElementsByAttribute("textarea", "name", name); // collect buttons from lost children for (final HtmlElement elt : getLostChildren()) { @@ -698,9 +694,8 @@ * @param value the value to search for * @return all the inputs in this form with the specified value */ - @SuppressWarnings("unchecked") public List<HtmlInput> getInputsByValue(final String value) { - final List<HtmlInput> results = (List<HtmlInput>) getHtmlElementsByAttribute("input", "value", value); + final List<HtmlInput> results = getHtmlElementsByAttribute("input", "value", value); for (final HtmlElement element : getLostChildren()) { if (element instanceof HtmlInput && value.equals(element.getAttribute("value"))) { Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlPage.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlPage.java 2008-09-01 15:01:50 UTC (rev 3292) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlPage.java 2008-09-01 18:55:21 UTC (rev 3293) @@ -575,12 +575,11 @@ * @exception ElementNotFoundException If no forms match the specified result. */ public HtmlForm getFormByName(final String name) throws ElementNotFoundException { - final List< ? extends HtmlElement> forms = - getDocumentElement().getHtmlElementsByAttribute("form", "name", name); + final List<HtmlForm> forms = getDocumentElement().getHtmlElementsByAttribute("form", "name", name); if (forms.size() == 0) { throw new ElementNotFoundException("form", "name", name); } - return (HtmlForm) forms.get(0); + return forms.get(0); } /** Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlIsIndexTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlIsIndexTest.java 2008-09-01 15:01:50 UTC (rev 3292) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlIsIndexTest.java 2008-09-01 18:55:21 UTC (rev 3293) @@ -54,7 +54,7 @@ final HtmlForm form = (HtmlForm) page.getHtmlElementById("form1"); - final HtmlIsIndex isInput = (HtmlIsIndex) form.getHtmlElementsByAttribute( + final HtmlIsIndex isInput = form.<HtmlIsIndex>getHtmlElementsByAttribute( "isindex", "prompt", "enterSomeText").get(0); isInput.setValue("Flintstone"); final Page secondPage = form.submit((SubmittableElement) null); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |