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