Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Won't Fix
-
iPOJO-1.6.0
-
None
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)
}
}
@Component
class Component2
{
String usefullData;
@Validate
public void init()
}
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.