/**
  * Method validates GenericGenerator.strategy. Generator strategy either a predefined Hibernate
  * strategy or a fully qualified class name.
  *
  * @param messages
  * @param reporter
  * @param astRoot
  */
 protected void validateStrategy(
     List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) {
   if (this.strategy != null) {
     TextRange range =
         getStrategyTextRange(astRoot) == null
             ? TextRange.Empty.instance()
             : getStrategyTextRange(astRoot);
     if (this.strategy.trim().length() == 0) {
       messages.add(
           HibernateJpaValidationMessage.buildMessage(
               IMessage.HIGH_SEVERITY, STRATEGY_CANT_BE_EMPTY, getResource(), range));
     } else if (!generatorClasses.contains(this.strategy)) {
       IType lwType = null;
       try {
         lwType = getJpaProject().getJavaProject().findType(this.strategy);
         if (lwType == null || !lwType.isClass()) {
           messages.add(
               HibernateJpaValidationMessage.buildMessage(
                   IMessage.HIGH_SEVERITY,
                   STRATEGY_CLASS_NOT_FOUND,
                   new String[] {this.strategy},
                   getResource(),
                   range));
         } else {
           if (!JpaUtil.isTypeImplementsInterface(
               getJpaProject().getJavaProject(),
               lwType,
               "org.hibernate.id.IdentifierGenerator")) { //$NON-NLS-1$
             messages.add(
                 HibernateJpaValidationMessage.buildMessage(
                     IMessage.HIGH_SEVERITY,
                     STRATEGY_INTERFACE,
                     new String[] {this.strategy},
                     getResource(),
                     range));
           }
         }
       } catch (JavaModelException e) {
         // just ignore it!
       }
     }
   }
 }