This does not produces any warnings

public class TablePage extends WebPage {

  /** Support serialization. */
  private static final long serialVersionUID = 1L;

  /**
   * Creates a page containing a table of Contacts.
   */
  public TablePage() {

    // Initialize our list of Contact instances.
    // Use ArrayList, not List, since ArrayList is Serializable.
    ArrayList<Contact> contacts = new ArrayList<Contact>();
    contacts.add(new Contact("Joe Smith", "123 Honu St., Kailua, HI
96734"));
    contacts.add(new Contact("Sally Forth", "456 Alapapa St., Honolulu, HI
96813"));

    // Create the dataview to display our list of contact instances.
    // Note that the following commented out line is OK from a type
perspective.
    // ListDataProvider<Contact> test = new
ListDataProvider<Contact>(contacts);

    // But we can't say new ListDataProvider<Contact> in the next line. Why?
    DataView<Contact> dataView = new DataView<Contact>("ContactList",
        new ListDataProvider<Contact>(contacts)) {
      /** For serialization. */
      private static final long serialVersionUID = 1L;

      /**
       * Display each row in the table.
       *
       * @param item A Contact instance to be displayed.
       */
      public void populateItem(Item<Contact> item) {
        Contact contact = (Contact) item.getModelObject();
        item.add(new Label("Name", contact.getName()));
        item.add(new Label("Address", contact.getAddress()));
      }
    };

    // Add the dataview to the TablePage.
    add(dataView);
  }

  /**
   * An inner class implementing a record of data to be displayed as a row
in the table. Package
   * private so that TestTablePage can access it.
   *
   * @author Philip Johnson
   */
  static class Contact implements Serializable {
    /** Support serialization. */
    private static final long serialVersionUID = 2L;
    private String name;
    private String address;

    /**
     * Create a new contact, given a name and an address.
     *
     * @param name The name.
     * @param address The address.
     */
    public Contact(String name, String address) {
      this.name = name;
      this.address = address;
    }

    /**
     * Return the name.
     *
     * @return The name of this contact.
     */
    public String getName() {
      return name;
    }

    /**
     * Return the address of this contact.
     *
     * @return The address.
     */
    public String getAddress() {
      return address;
    }
  }
}

at least on my IDE

Best,

Ernesto

On Sat, Nov 7, 2009 at 9:42 AM, Philip Johnson <john...@hawaii.edu> wrote:

> Greetings, Wicket Wizards,
>
> I am updating a sample Wicket program from 1.3.6 to 1.4.3 and running into
> a few generics-related issues.   I am hoping you folks can quickly set me
> straight. My code appears to run successfully and passes its JUnit tests,
> despite the warnings I would like to remove.  The purpose of the code is to
> demonstrate simple use of Forms, Lists, and Tables and associated testing of
> these constructs using WicketTester.
>
> First off, although you hopefully will not need to, you can download the
> sample code from here:
> <
> http://ics-wicket-examples.googlecode.com/files/wicket-example02-1.0.1106.zip
> >
>
> Unzip, cd into the directory, and type "ant", It should download Ivy, then
> download Wicket, Jetty, SLF4J, and JUnit, and finally compile the system,
> generating the following generic-related warnings.   Let me now show you
> what they are:
>
> Problem 1:  please take a look at line 39 of TablePage.java:
> <
> http://code.google.com/p/ics-wicket-examples/source/browse/trunk/example02/src/edu/hawaii/wicket/TablePage.java
> >
>
> The problematic line is:
> new ListDataProvider(contacts)
>
> and obviously requires a generic argument, but neither of the following
> work:
>  new ListDataProvider<Contact>(contacts)  // my preferred guess
>  new ListDataProvider<List<Contact>>(contacts)
>
> The compiler warning is:
>   [javac] TablePage.java:39: warning: [unchecked] unchecked call to
> ListDataProvider(java.util.List<T>) as a member of the raw type
> org.apache.wicket.markup.repeater.data.ListDataProvider
>   [javac]         new ListDataProvider(contacts)) {
>   [javac]         ^
>   [javac] TablePage.java:39: warning: [unchecked] unchecked conversion
>   [javac] found   : org.apache.wicket.markup.repeater.data.ListDataProvider
>   [javac] required:
> org.apache.wicket.markup.repeater.data.IDataProvider<java.util.List<edu.hawaii.wicket.TablePage.Contact>>
>   [javac]         new ListDataProvider(contacts)) {
>   [javac]         ^
>
> Problem 2:  on line 49 of the same file, TablePage.java:
> <
> http://code.google.com/p/ics-wicket-examples/source/browse/trunk/example02/src/edu/hawaii/wicket/TablePage.java
> >
>
> The line is:
> Contact contact = (Contact) item.getModelObject();
>
> Since the preceding line provides a parameterized declaration of  item
> (Item<List<Contact>> item), I don't understand why I need to cast here. But
> the code does not compile if I don't.  Then, I get the following warning:
>
>   [javac] TablePage.java:49: warning: [unchecked] unchecked cast
>   [javac] found   : java.util.List<edu.hawaii.wicket.TablePage.Contact>
>   [javac] required: edu.hawaii.wicket.TablePage.Contact
>   [javac]         Contact contact = (Contact) item.getModelObject();
>   [javac]
>                                                ^
>
> Problem 3:  WicketTester and generics.
>
> I clearly don't understand how to test with WicketTester.  Take a look at
> lines 37-39 of TestListPage:
> <
> http://code.google.com/p/ics-wicket-examples/source/browse/trunk/example02/src/edu/hawaii/wicket/TestListPage.java
> >
>
> This is a mess, and generates the following warning:
>   [javac] TestListPage.java:39: warning: [unchecked] unchecked cast
>   [javac] found   : capture#294 of ?
>   [javac] required: java.util.List<java.lang.String>
>   [javac]     List<String> metaVars = (List<String>) varsModel.getObject();
>
> I have a feeling that my whole approach to getting values out of the table
> for testing is wrong, but I don't know what the correct approach is.
>
> If any of you can give me a hand, the first Mai Tai is on me the next time
> you are in Hawaii.
>
> Thanks!
> Philip
>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> For additional commands, e-mail: users-h...@wicket.apache.org
>
>

Reply via email to