Hi,

tapestry 5 is great and it is fantastic how easy it is to write new
components for tapestry.

One problem we have though is that using injected variables at times breaks
the application in unpredictable ways. A typical example is as follows:

Getting some information from a wrapping component (we are transforming our
internal report structure to HTML using Tapestry components here)

    @Parameter(value = "componentResources.container")
    private ReportDisplayInterface reportInterface_;

Having a private variable

   private ReportData data_;

which is initialised in

   @SetupRender
   void setupRender() {
       data_ = reportInterface_.getData();
      ....


So far so good and this works fine. But we have need to make modifications
to data_ as we progress with the generation of the page. Frequently calls
like

    data_.someMethod();

will lead to a ClassNotFound exceptions - as the class could not be
transformed. (Previously I used to get an ArrayIndexOutOfBounds exception
out of javaassist, but with the latest snapshots that has gone away).

Frequently this can be solved by moving the call into a method, so turning
this into

    // data_.someMethod();
    myUnnecessaryMethod(data_);


    void myUnnecessaryMethod(ReportData data) {
        data.someMethod();
    }

This can be quite frustrating, as it leads to long sessions of commenting
out one line after the other to find the offending line of code.

So are there any guidelines as to what can be done with fields that are
linked through to properties in other classes? Are these bugs or am I just
trying to do something I shouldn't? Are there any standard templates for
usages that work?

I'm using 5.0.10-SNAPSHOT and have updated today, but this has been a
problem since 5.0.5.

Cheers,

Adriaan

Reply via email to