Tapestry
  1. Tapestry
  2. TAPESTRY-1730

Order of event handler method invocation should be greatest number of parameters to fewest

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 5.0.5
    • Fix Version/s: 5.0.6
    • Component/s: tapestry-core
    • Labels:
      None

      Description

      Say you are writing an activate event handler, meant to guard the page against access without a provided token.

      void onActivate(String token) {
      // validate the token
      }

      Object onPassivate()

      { return _token; }

      Great ... but what about the case where the user omits the token?

      Object onActivate() {
      return _invalidAuthorizationPage; // Redirect away
      }

      But with the current setup, this gets invoked BEFORE onActivate(String) so there's no hope of actually using the page, even with the security token.

        Activity

        Hide
        Howard M. Lewis Ship added a comment -

        The workaround is to have a single onActivate() method that takes Object[]:

        void onActivate(Object[] context)

        { if (context.length != 1) return _invalidAuthorizationPage; String token = (String) context[0]; // validate token return null; // token is ok }
        Show
        Howard M. Lewis Ship added a comment - The workaround is to have a single onActivate() method that takes Object[]: void onActivate(Object[] context) { if (context.length != 1) return _invalidAuthorizationPage; String token = (String) context[0]; // validate token return null; // token is ok }
        Hide
        Nick Westgate added a comment -

        This covers the same issue as TAPESTRY-1695.

        Cheers,
        Nick.

        Show
        Nick Westgate added a comment - This covers the same issue as TAPESTRY-1695 . Cheers, Nick.
        Hide
        Howard M. Lewis Ship added a comment -

        This order is determined by the compare() method of TransformMethodSignature; it is now set up to sort ascending by name, then descending by parameter count (within a single name).

        Show
        Howard M. Lewis Ship added a comment - This order is determined by the compare() method of TransformMethodSignature; it is now set up to sort ascending by name, then descending by parameter count (within a single name).

          People

          • Assignee:
            Howard M. Lewis Ship
            Reporter:
            Howard M. Lewis Ship
          • Votes:
            1 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development