diff --git a/lang/java/maven-plugin/src/main/java/org/apache/avro/mojo/AbstractAvroMojo.java b/lang/java/maven-plugin/src/main/java/org/apache/avro/mojo/AbstractAvroMojo.java
index 7dc203b0357..08a758818a9 100644
--- a/lang/java/maven-plugin/src/main/java/org/apache/avro/mojo/AbstractAvroMojo.java
+++ b/lang/java/maven-plugin/src/main/java/org/apache/avro/mojo/AbstractAvroMojo.java
@@ -395,8 +395,7 @@ protected void doCompile(File sourceFileForModificationDetection, Protocol proto
doCompile(sourceFileForModificationDetection, new SpecificCompiler(protocol), outputDirectory);
}
- private void doCompile(File sourceFileForModificationDetection, SpecificCompiler compiler, File outputDirectory)
- throws IOException {
+ protected void setCompilerProperties(SpecificCompiler compiler) {
compiler.setTemplateDir(templateDirectory);
compiler.setStringType(GenericData.StringType.valueOf(stringType));
compiler.setFieldVisibility(getFieldVisibility());
@@ -406,6 +405,15 @@ private void doCompile(File sourceFileForModificationDetection, SpecificCompiler
compiler.setCreateSetters(createSetters);
compiler.setCreateNullSafeAnnotations(createNullSafeAnnotations);
compiler.setEnableDecimalLogicalType(enableDecimalLogicalType);
+ compiler.setOutputCharacterEncoding(project.getProperties().getProperty("project.build.sourceEncoding"));
+ compiler.setAdditionalVelocityTools(instantiateAdditionalVelocityTools());
+ compiler.setRecordSpecificClass(this.recordSpecificClass);
+ compiler.setErrorSpecificClass(this.errorSpecificClass);
+ }
+
+ private void doCompile(File sourceFileForModificationDetection, SpecificCompiler compiler, File outputDirectory)
+ throws IOException {
+ setCompilerProperties(compiler);
try {
for (String customConversion : customConversions) {
compiler.addCustomConversion(Thread.currentThread().getContextClassLoader().loadClass(customConversion));
@@ -413,10 +421,6 @@ private void doCompile(File sourceFileForModificationDetection, SpecificCompiler
} catch (ClassNotFoundException e) {
throw new IOException(e);
}
- compiler.setOutputCharacterEncoding(project.getProperties().getProperty("project.build.sourceEncoding"));
- compiler.setAdditionalVelocityTools(instantiateAdditionalVelocityTools());
- compiler.setRecordSpecificClass(this.recordSpecificClass);
- compiler.setErrorSpecificClass(this.errorSpecificClass);
compiler.compileToDestination(sourceFileForModificationDetection, outputDirectory);
}
diff --git a/lang/java/maven-plugin/src/main/java/org/apache/avro/mojo/IDLMojo.java b/lang/java/maven-plugin/src/main/java/org/apache/avro/mojo/IDLMojo.java
index 632ce7f955c..f2a379a5fb2 100644
--- a/lang/java/maven-plugin/src/main/java/org/apache/avro/mojo/IDLMojo.java
+++ b/lang/java/maven-plugin/src/main/java/org/apache/avro/mojo/IDLMojo.java
@@ -20,7 +20,6 @@
import org.apache.avro.Protocol;
import org.apache.avro.compiler.specific.SpecificCompiler;
-import org.apache.avro.generic.GenericData;
import org.apache.avro.idl.IdlFile;
import org.apache.avro.idl.IdlReader;
import org.apache.maven.artifact.DependencyResolutionRequiredException;
@@ -97,19 +96,10 @@ protected void doCompile(String filename, File sourceDirectory, File outputDirec
} else {
compiler = new SpecificCompiler(idlFile.getNamedSchemas().values());
}
- compiler.setStringType(GenericData.StringType.valueOf(stringType));
- compiler.setTemplateDir(templateDirectory);
- compiler.setFieldVisibility(getFieldVisibility());
- compiler.setCreateOptionalGetters(createOptionalGetters);
- compiler.setGettersReturnOptional(gettersReturnOptional);
- compiler.setOptionalGettersForNullableFieldsOnly(optionalGettersForNullableFieldsOnly);
- compiler.setCreateSetters(createSetters);
- compiler.setAdditionalVelocityTools(instantiateAdditionalVelocityTools());
- compiler.setEnableDecimalLogicalType(enableDecimalLogicalType);
+ setCompilerProperties(compiler);
for (String customConversion : customConversions) {
compiler.addCustomConversion(projPathLoader.loadClass(customConversion));
}
- compiler.setOutputCharacterEncoding(project.getProperties().getProperty("project.build.sourceEncoding"));
compiler.compileToDestination(sourceFilePath.toFile(), outputDirectory);
} finally {
Thread.currentThread().setContextClassLoader(contextClassLoader);
diff --git a/lang/java/maven-plugin/src/test/java/org/apache/avro/mojo/TestIDLMojo.java b/lang/java/maven-plugin/src/test/java/org/apache/avro/mojo/TestIDLMojo.java
index ab6cd7c9668..59819ae4def 100644
--- a/lang/java/maven-plugin/src/test/java/org/apache/avro/mojo/TestIDLMojo.java
+++ b/lang/java/maven-plugin/src/test/java/org/apache/avro/mojo/TestIDLMojo.java
@@ -61,7 +61,8 @@ public void testIdlProtocolMojo() throws Exception {
assertFilesExist(outputDir, generatedFiles);
final String idlUserContent = FileUtils.fileRead(new File(outputDir, "IdlUser.java"));
- assertTrue(idlUserContent.contains("java.time.Instant"));
+ assertTrue(idlUserContent.contains("@org.jetbrains.annotations.Nullable\n public java.lang.String getId"));
+ assertTrue(idlUserContent.contains("@org.jetbrains.annotations.NotNull\n public java.time.Instant getModifiedOn"));
assertEquals(Collections.singletonList("[WARN] Line 22, char 1: Ignoring out-of-place documentation comment.\n"
+ "Did you mean to use a multiline comment ( /* ... */ ) instead?"), log.getLogEntries());
diff --git a/lang/java/maven-plugin/src/test/resources/unit/idl/pom.xml b/lang/java/maven-plugin/src/test/resources/unit/idl/pom.xml
index aae65a9792a..aa53c4babd0 100644
--- a/lang/java/maven-plugin/src/test/resources/unit/idl/pom.xml
+++ b/lang/java/maven-plugin/src/test/resources/unit/idl/pom.xml
@@ -47,6 +47,7 @@
${basedir}/src/test
${basedir}/target/test-harness/idl
String
+ true