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

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

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 1.4-RC2
    • 1.5-M2.1
    • wicket
    • 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

        1. BehaviorsUtil.java
          1 kB
          Antony Stubbs

        Activity

          People

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

            Dates

              Created:
              Updated:
              Resolved: