/** * 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! } } } }