Uploaded image for project: 'Felix'
  1. Felix
  2. FELIX-2834

@Validate method is called when the @Requires components are not validated yet

    XMLWordPrintableJSON

Details

    Description

      Declare two components one that requires the other.
      Have an @Validate method.
      Depending on the declaration order in the metadata.xml, the component that requires the other may have acces to a component which has not been validated.

      Example:

      @Component
      class Component1
      {
      @Requires
      Component2 c2;

      @Validate
      public void init() {
      // this may cause an NullPointerException, as c2.usefullData is created in the @Validate method
      if (c2.usefullData.length()>0)

      { // Do something }

      }
      }

      @Component
      class Component2
      {
      String usefullData;
      @Validate
      public void init()

      { usefullData="ready"; }

      }

      If you declare this metadata.xml, the @Validate will fail:
      <ipojo>
      <instance component="Component1" />
      <instance component="Component2" />
      </ipojo>

      Changing the order of components in xml solves the problem, although I think the validation should be called only when the required components are validated.

      Attachments

        Activity

          People

            clement.escoffier Clement Escoffier
            vvandeme Vincent Vandemeulebrouck
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: