For creating an itests for the validation messages, it was a requirement to
reproduce all kind of exceptions thrown from various processors in the
runtime. I came across this issue of unreachable code in the policy
processors (especially in PolicyIntentProcessor.java and
PolicySetProcessor.java). Here is the piece of code from
resolveProfileIntent method of PolicyIntentProcessor.java to explain.....

for (Intent requiredIntent : policyIntent.getRequiredIntents()) {
     if (requiredIntent.isUnresolved()) {
      Intent resolvedRequiredIntent = resolver.resolveModel(Intent.class,
requiredIntent);
        if (resolvedRequiredIntent != null) {
           requiredIntents.add(resolvedRequiredIntent);
        } else {
          error("RequiredIntentNotFound", resolver, requiredIntent,
policyIntent);
          throw new ContributionResolveException("Required Intent - " +
requiredIntent
          + " not found for ProfileIntent "
             + policyIntent);
        }
    } else {
      requiredIntents.add(requiredIntent);
    }
  }

Here the resolver.resolveModel does not seem to return null in any case,
what happens is if the resolver is unable to resolve the model it just
returns the unresolved model. So the if condition checking for
resolvedRequiredIntent for null never fails and the later part of the code
in the else condition is never reached.

Similarly, there are 6 places (including the above said) where this kind of
issue is noticed, where the code is failing to throw the following
exceptions.....
ExcludedIntentNotFound
QualifiableIntentNotFound
RequiredIntentNotFound
ReferredPolicySetNotFound
MappedIntentNotFound
ProvidedIntentNotFound

To overcome this situation, i just tried modifying the code to look like
this and it seems to be working for me.

Intent resolvedRequiredIntent = resolver.resolveModel(Intent.class,
requiredIntent);
if (!resolvedRequiredIntent.isUnresolved()) {
     requiredIntents.add(resolvedRequiredIntent);
} else {
   error("RequiredIntentNotFound", resolver, requiredIntent, policyIntent);
    throw new ContributionResolveException("Required Intent - " +
requiredIntent
                                                                     + " not
found for ProfileIntent "
                                                                     +
policyIntent);
}

Like to take help from someone, to know if this is really an issue that i am
noticing OR did i just overlook at the code.
If its really an issue, can i raise a JIRA to fix this. Thanks.

-- 
Thanks & Regards,
Ramkumar Ramalingam

Reply via email to