[hibernate-commits] Hibernate SVN: r19524 - in validator/trunk/hibernate-validator-annotation-processor/src: test/java/org/hibernate/validator/ap and 1 other directories.
hibernate-commits at lists.jboss.org
hibernate-commits at lists.jboss.org
Sat May 15 11:50:33 EDT 2010
Author: gunnar.morling
Date: 2010-05-15 11:50:33 -0400 (Sat, 15 May 2010)
New Revision: 19524
Modified:
validator/trunk/hibernate-validator-annotation-processor/src/main/java/org/hibernate/validator/ap/ConstraintAnnotationVisitor.java
validator/trunk/hibernate-validator-annotation-processor/src/main/java/org/hibernate/validator/ap/ConstraintValidationProcessor.java
validator/trunk/hibernate-validator-annotation-processor/src/test/java/org/hibernate/validator/ap/ConstraintValidationProcessorTest.java
validator/trunk/hibernate-validator-annotation-processor/src/test/java/org/hibernate/validator/ap/testutil/CompilerTestHelper.java
Log:
HV-322: Created processor option "verbose"
Modified: validator/trunk/hibernate-validator-annotation-processor/src/main/java/org/hibernate/validator/ap/ConstraintAnnotationVisitor.java
===================================================================
--- validator/trunk/hibernate-validator-annotation-processor/src/main/java/org/hibernate/validator/ap/ConstraintAnnotationVisitor.java 2010-05-15 14:55:16 UTC (rev 19523)
+++ validator/trunk/hibernate-validator-annotation-processor/src/main/java/org/hibernate/validator/ap/ConstraintAnnotationVisitor.java 2010-05-15 15:50:33 UTC (rev 19524)
@@ -48,24 +48,23 @@
*/
final class ConstraintAnnotationVisitor extends ElementKindVisitor6<Void, List<AnnotationMirror>> {
- private final ConstraintHelper constraintHelper;
-
private final MessagerAdapter messager;
- private ConstraintCheckFactory constraintCheckFactory;
+ private final ConstraintCheckFactory constraintCheckFactory;
- //TODO GM: establish processor option for this
- private boolean verbose = true;
+ private final boolean verbose;
- public ConstraintAnnotationVisitor(ProcessingEnvironment processingEnvironment, MessagerAdapter messager) {
+ public ConstraintAnnotationVisitor(
+ ProcessingEnvironment processingEnvironment, MessagerAdapter messager, boolean verbose) {
this.messager = messager;
+ this.verbose = verbose;
AnnotationApiHelper annotationApiHelper = new AnnotationApiHelper(
processingEnvironment.getElementUtils(), processingEnvironment.getTypeUtils()
);
- constraintHelper = new ConstraintHelper(
+ ConstraintHelper constraintHelper = new ConstraintHelper(
processingEnvironment.getElementUtils(), processingEnvironment.getTypeUtils(), annotationApiHelper
);
Modified: validator/trunk/hibernate-validator-annotation-processor/src/main/java/org/hibernate/validator/ap/ConstraintValidationProcessor.java
===================================================================
--- validator/trunk/hibernate-validator-annotation-processor/src/main/java/org/hibernate/validator/ap/ConstraintValidationProcessor.java 2010-05-15 14:55:16 UTC (rev 19523)
+++ validator/trunk/hibernate-validator-annotation-processor/src/main/java/org/hibernate/validator/ap/ConstraintValidationProcessor.java 2010-05-15 15:50:33 UTC (rev 19524)
@@ -54,18 +54,24 @@
*/
@SupportedAnnotationTypes("*")
@SupportedSourceVersion(SourceVersion.RELEASE_6)
- at SupportedOptions(ConstraintValidationProcessor.DIAGNOSTIC_KIND_PROCESSOR_OPTION_NAME)
+ at SupportedOptions({
+ ConstraintValidationProcessor.DIAGNOSTIC_KIND_PROCESSOR_OPTION_NAME,
+ ConstraintValidationProcessor.VERBOSE_PROCESSOR_OPTION_NAME
+})
public class ConstraintValidationProcessor extends AbstractProcessor {
/**
* The name of the processor option for setting the diagnostic kind to be
- * used when reporting errors during annotation processing. Can be set on
- * the command line using the -A option, e.g.
- * <code>-AdiagnosticKind=ERROR</code>.
+ * used when reporting errors during annotation processing.
*/
public final static String DIAGNOSTIC_KIND_PROCESSOR_OPTION_NAME = "diagnosticKind";
/**
+ * The name of the processor option for activating verbose message reporting.
+ */
+ public final static String VERBOSE_PROCESSOR_OPTION_NAME = "verbose";
+
+ /**
* The diagnostic kind to be used if no or an invalid kind is given as processor option.
*/
public final static Kind DEFAULT_DIAGNOSTIC_KIND = Kind.ERROR;
@@ -79,11 +85,17 @@
*/
private MessagerAdapter messager;
+ /**
+ * Whether logging information shall be put out in a verbose way or not.
+ */
+ private boolean verbose;
+
@Override
public synchronized void init(ProcessingEnvironment processingEnv) {
super.init( processingEnv );
+ this.verbose = isVerbose();
messager = new MessagerAdapter( processingEnv.getMessager(), getDiagnosticKind() );
}
@@ -97,7 +109,7 @@
);
ElementVisitor<Void, List<AnnotationMirror>> visitor = new ConstraintAnnotationVisitor(
- processingEnv, messager
+ processingEnv, messager, verbose
);
for ( TypeElement oneAnnotation : annotations ) {
@@ -146,4 +158,25 @@
return DEFAULT_DIAGNOSTIC_KIND;
}
+ /**
+ * Retrieves the value for the "verbose" property from the options.
+ *
+ * @return The value for the "verbose" property.
+ */
+ private boolean isVerbose() {
+
+ boolean theValue = Boolean.parseBoolean( processingEnv.getOptions().get( VERBOSE_PROCESSOR_OPTION_NAME ) );
+
+ if ( theValue ) {
+ super.processingEnv.getMessager().printMessage(
+ Kind.NOTE, MessageFormat.format(
+ "Verbose reporting is activated. Some processing information will be displayed using diagnostic kind {0}.",
+ Kind.NOTE
+ )
+ );
+ }
+
+ return theValue;
+ }
+
}
Modified: validator/trunk/hibernate-validator-annotation-processor/src/test/java/org/hibernate/validator/ap/ConstraintValidationProcessorTest.java
===================================================================
--- validator/trunk/hibernate-validator-annotation-processor/src/test/java/org/hibernate/validator/ap/ConstraintValidationProcessorTest.java 2010-05-15 14:55:16 UTC (rev 19523)
+++ validator/trunk/hibernate-validator-annotation-processor/src/test/java/org/hibernate/validator/ap/ConstraintValidationProcessorTest.java 2010-05-15 15:50:33 UTC (rev 19524)
@@ -18,6 +18,7 @@
package org.hibernate.validator.ap;
import java.io.File;
+import javax.tools.Diagnostic;
import javax.tools.Diagnostic.Kind;
import javax.tools.DiagnosticCollector;
import javax.tools.JavaFileObject;
@@ -125,16 +126,24 @@
}
@Test
- public void compilationSucceedsDueToDiagnosticKindWarning() {
+ public void testThatProcessorOptionsAreEvaluated() {
File sourceFile = compilerHelper.getSourceFile( FieldLevelValidationUsingBuiltInConstraints.class );
+ // compile with -AdiagnosticKind=Kind.WARNING and -Averbose=true
boolean compilationResult =
- compilerHelper.compile( new ConstraintValidationProcessor(), diagnostics, Kind.WARNING, sourceFile );
+ compilerHelper.compile(
+ new ConstraintValidationProcessor(), diagnostics, Kind.WARNING, true, sourceFile
+ );
+ // compilation succeeds as there are problems, but Kind.WARNING won't stop compilation
assertTrue( compilationResult );
+
assertThatDiagnosticsMatch(
- diagnostics, new DiagnosticExpection( Kind.WARNING, 54 ), new DiagnosticExpection( Kind.WARNING, 60 )
+ diagnostics,
+ new DiagnosticExpection( Kind.NOTE, Diagnostic.NOPOS ), //says that verbose messaging is enabled
+ new DiagnosticExpection( Kind.WARNING, 54 ),
+ new DiagnosticExpection( Kind.WARNING, 60 )
);
}
Modified: validator/trunk/hibernate-validator-annotation-processor/src/test/java/org/hibernate/validator/ap/testutil/CompilerTestHelper.java
===================================================================
--- validator/trunk/hibernate-validator-annotation-processor/src/test/java/org/hibernate/validator/ap/testutil/CompilerTestHelper.java 2010-05-15 14:55:16 UTC (rev 19523)
+++ validator/trunk/hibernate-validator-annotation-processor/src/test/java/org/hibernate/validator/ap/testutil/CompilerTestHelper.java 2010-05-15 15:50:33 UTC (rev 19524)
@@ -46,10 +46,6 @@
private final String sourceBaseDir;
- /**
- * TODO GM: How can JavaCompiler access all dependencies of the project? This works within
- * Eclipse, but not on the command line.
- */
private final String pathToBeanValidationApiJar;
public CompilerTestHelper(JavaCompiler compiler, String sourceBaseDir, String pathToBeanValidationApiJar) {
@@ -75,28 +71,39 @@
}
/**
- * Creates and executes a {@link CompilationTask} using the given input.
- *
- * @param annotationProcessor An annotation processor to be attached to the task.
- * @param diagnostics An diagnostics listener to be attached to the task.
- * @param sourceFiles The source files to be compiled.
- *
- * @return True, if the source files could be compiled successfully (meaning
- * in especially, that the given annotation processor didn't raise
- * any errors), false otherwise.
+ * @see CompilerTestHelper#compile(Processor, DiagnosticCollector, Kind, Boolean, File...)
*/
public boolean compile(
Processor annotationProcessor, DiagnosticCollector<JavaFileObject> diagnostics, File... sourceFiles) {
- return compile( annotationProcessor, diagnostics, Kind.ERROR, sourceFiles );
+ return compile( annotationProcessor, diagnostics, null, null, sourceFiles );
}
/**
+ * @see CompilerTestHelper#compile(Processor, DiagnosticCollector, Kind, Boolean, File...)
+ */
+ public boolean compile(
+ Processor annotationProcessor, DiagnosticCollector<JavaFileObject> diagnostics, Kind diagnosticKind, File... sourceFiles) {
+
+ return compile( annotationProcessor, diagnostics, diagnosticKind, null, sourceFiles );
+ }
+
+ /**
+ * @see CompilerTestHelper#compile(Processor, DiagnosticCollector, Kind, Boolean, File...)
+ */
+ public boolean compile(
+ Processor annotationProcessor, DiagnosticCollector<JavaFileObject> diagnostics, boolean verbose, File... sourceFiles) {
+
+ return compile( annotationProcessor, diagnostics, null, verbose, sourceFiles );
+ }
+
+ /**
* Creates and executes a {@link CompilationTask} using the given input.
*
* @param annotationProcessor An annotation processor to be attached to the task.
* @param diagnostics An diagnostics listener to be attached to the task.
* @param diagnosticKind A value for the "diagnosticKind" option.
+ * @param verbose A value for the "verbose" option.
* @param sourceFiles The source files to be compiled.
*
* @return True, if the source files could be compiled successfully (meaning
@@ -104,21 +111,26 @@
* any errors), false otherwise.
*/
public boolean compile(
- Processor annotationProcessor, DiagnosticCollector<JavaFileObject> diagnostics, Kind diagnosticKind, File... sourceFiles) {
+ Processor annotationProcessor, DiagnosticCollector<JavaFileObject> diagnostics, Kind diagnosticKind, Boolean verbose, File... sourceFiles) {
StandardJavaFileManager fileManager =
compiler.getStandardFileManager( null, null, null );
Iterable<? extends JavaFileObject> compilationUnits = fileManager.getJavaFileObjects( sourceFiles );
- List<String> optionList = new ArrayList<String>();
- optionList.addAll(
- Arrays.asList(
- "-classpath", pathToBeanValidationApiJar, "-AdiagnosticKind=" + diagnosticKind, "-d", "target"
- )
- );
+ List<String> options = new ArrayList<String>();
- CompilationTask task = compiler.getTask( null, fileManager, diagnostics, optionList, null, compilationUnits );
+ options.addAll( Arrays.asList( "-classpath", pathToBeanValidationApiJar, "-d", "target" ) );
+
+ if ( diagnosticKind != null ) {
+ options.add( "-AdiagnosticKind=" + diagnosticKind );
+ }
+
+ if ( verbose != null ) {
+ options.add( "-Averbose=" + verbose.toString() );
+ }
+
+ CompilationTask task = compiler.getTask( null, fileManager, diagnostics, options, null, compilationUnits );
task.setProcessors( Arrays.asList( annotationProcessor ) );
return task.call();
More information about the hibernate-commits
mailing list