But nothing from generics is carried forward to runtime. Generics is meant to be compile-time fiction. It is all gone through Erasure.

Serge.

Howard Lewis Ship wrote:
I'm not sure how much of the generics type information is carried
forward to runtime; further, unlike the "slap it on the side"
annoation support, support for generic pages and components would
require some re-work in the core code ... and require JDK 1.5 for
Tapestry, something that sends people into fits when you even suggest
it.

On 11/1/05, Onno Scheffers <[EMAIL PROTECTED]> wrote:

I'm trying to use Generics to take away most of the plumbing code in a
typical CRUD application, like I used to do with Tapestry3.
I basically set up my own base-page for the different edit-screens that
looks something like this:

public abstract class ItemPage<K, I> extends BasePage [...] {
  public abstract K getKey();
  public abstract void setKey(K key);
  public abstact I getItem();
  public abstract void setItem(I item);

  // Subclasses implement these:
  public abstract I fetchItem(K key);
  public abstract void populatePageProperties(I item);
  public abstract K updateItem(IRequestCycle cycle, I item);
  public abstract K addItem(IRequestCycle cycle, K key);
  public abstract void deleteItem(IRequestCycle cycle, I item);
}

It handles most of the repetative code that each page needs and simply
calls some methods for handling the logic that does differ for each page:

public abstract class EditUserPage extends ItemPage<Integer, User> {
  public User fetchItem(Integer key) { [...] }
  public void populatePageProperties(User user) { [...] }
  public Integer updateItem(IRequestCycle cycle, User user) { [...] }
  public Integer addItem(IRequestCycle cycle, Integer key) { [...] }
  public void deleteItem(IRequestCycle cycle, User user) { [...] }
}

I get a ClassCastException though because Tapestry tries to convert the
numeric user-input for the key-field into a Long, while an Integer is
expected by the subclass.
Tapestry is not written for Java 5, so I'm guessing it won't look at the
generic type and thus only sees an 'Object' as the return-type, which
might confuse things (please correct me if I'm wrong).

I was hoping I could somehow tell Tapestry to use an Integer in classes
where the key is an Integer, Strings where the key is a String, etc.

In Tapestry 3 I could at least provide a 'type' in a
<property-specification> of the page-file, which is not possible with
the new <property> tag anymore. Has anyone else done something like this
with Tapestry 4?

Regards,

Onno Scheffers


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]





--
Howard M. Lewis Ship
Independent J2EE / Open-Source Java Consultant
Creator, Jakarta Tapestry
Creator, Jakarta HiveMind

Professional Tapestry training, mentoring, support
and project work.  http://howardlewisship.com

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to