Uploaded image for project: 'Wicket'
  1. Wicket
  2. WICKET-2115

Make Component. 'protected List<IBehavior> getBehaviors(Class<? extends IBehavior>' public

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 1.4-RC2
    • Fix Version/s: 1.5-M2.1
    • Component/s: wicket
    • Labels:
      None

      Description

      actually making getbehaviors(class) public will also break code
      because any override already in place will then attempt to reduce the
      visibility of the method.

      add a jira issue, most likely for 1.5 considering 1.4 is already in RC2.

      -igor

      On Thu, Feb 19, 2009 at 1:24 PM, Martin Funk <mafulafunk@googlemail.com> wrote:
      Hi,

      why is Components

      public final List<IBehavior> getBehaviors()
      public

      and why is

      protected List<IBehavior> getBehaviors(Class<? extends IBehavior>
      type)
      protected?

      For example for a Behavior I'd like it to be able to tell if an Behavior of
      its type is already bound to that component.

      In its bind() method I'd like to do something like:
      if (component.getBehaviors(SomeBehavior.class).size() > 1)

      { throw new Error("Ther may only be one"); }

      But I have to do something like:
      for (IBehavior behavior : component.getBehaviors()) {
      if (behavior instanceof SomeBehavior)

      { throw new Error("There may only be one"); }

      }

      So my whish would be to have em both public. I wouldn't mind seeing em both
      final, but that might break existing code.

      mf

        Attachments

          Activity

            People

            • Assignee:
              ivaynberg Igor Vaynberg
              Reporter:
              funkattack Martin Funk
            • Votes:
              1 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: