You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@avro.apache.org by op...@apache.org on 2025/06/13 08:11:05 UTC
(avro) 15/20: AVRO-4098: [maven-plugin]: make protocol-idl mojo support all compiler options [AVRO-4098] (#3261)
This is an automated email from the ASF dual-hosted git repository.
opwvhk pushed a commit to branch branch-1.12
in repository https://gitbox.apache.org/repos/asf/avro.git
commit 04a30f26833625503f61114462380272999c1939
Author: Alex Riedler <Al...@gmail.com>
AuthorDate: Tue Jun 10 12:19:31 2025 -0400
AVRO-4098: [maven-plugin]: make protocol-idl mojo support all compiler options [AVRO-4098] (#3261)
* AVRO-40980: [maven-plugin] make mojos support all compiler options
Keep compiler settings DRY, in particular make idl-protocol support
for createNullSafeAnnotations flag
* AVRO-4098: Add test case
---------
Co-authored-by: Oscar Westra van Holthe - Kind <op...@apache.org>
(cherry picked from commit 70d6e7c34820cc2babf6c43f0b3a155835740c02)
---
.../main/java/org/apache/avro/mojo/AbstractAvroMojo.java | 16 ++++++++++------
.../src/main/java/org/apache/avro/mojo/IDLMojo.java | 12 +-----------
.../src/test/java/org/apache/avro/mojo/TestIDLMojo.java | 3 ++-
.../maven-plugin/src/test/resources/unit/idl/pom.xml | 1 +
4 files changed, 14 insertions(+), 18 deletions(-)
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 282801cbbf..5615df36e3 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
@@ -422,8 +422,7 @@ public abstract class AbstractAvroMojo extends AbstractMojo {
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());
@@ -435,6 +434,15 @@ public abstract class AbstractAvroMojo extends AbstractMojo {
compiler.setNullSafeAnnotationNullable(nullSafeAnnotationNullable);
compiler.setNullSafeAnnotationNotNull(nullSafeAnnotationNotNull);
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));
@@ -442,10 +450,6 @@ public abstract class AbstractAvroMojo extends AbstractMojo {
} 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 632ce7f955..f2a379a5fb 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 @@ package org.apache.avro.mojo;
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 @@ public class IDLMojo extends AbstractAvroMojo {
} 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 ab6cd7c966..59819ae4de 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 class TestIDLMojo extends AbstractAvroMojoTest {
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 8ad6359ed5..f719162e76 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 @@
<sourceDirectory>${basedir}/src/test</sourceDirectory>
<outputDirectory>${basedir}/target/test-harness/idl</outputDirectory>
<stringType>String</stringType>
+ <createNullSafeAnnotations>true</createNullSafeAnnotations>
<project implementation="org.apache.maven.plugin.testing.stubs.MavenProjectStub"/>
</configuration>
</plugin>