This is an automated email from the ASF dual-hosted git repository.
opwvhk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/avro.git
The following commit(s) were added to refs/heads/main by this push:
new 067c44024c AVRO-4119: [java] Make Nullable and NotNull annotations
configurable (#3312)
067c44024c is described below
commit 067c44024c3db832e731c051ba0178f0c4f18a04
Author: Benedikt Werner <[email protected]>
AuthorDate: Sat May 3 09:15:49 2025 +0200
AVRO-4119: [java] Make Nullable and NotNull annotations configurable (#3312)
Add nullSafeAnnotationNullable and nullSafeAnnotationNotNull
configuration options to allow specifying the exact annotations
to use when createNullSafeAnnotations is enabled.
This allows using annotations besides the JetBrains annotations
(which remain the default for backward-compatibility).
Co-authored-by: Oscar Westra van Holthe - Kind <[email protected]>
---
.../avro/compiler/specific/SpecificCompiler.java | 35 ++++++-
.../specific/templates/java/classic/record.vm | 10 +-
.../org/apache/avro/mojo/AbstractAvroMojo.java | 35 ++++++-
.../org/apache/avro/tool/SpecificCompilerTool.java | 31 +++++-
.../jetbrainsnullsafeannotationsfieldstest.avsc | 8 ++
.../jspecifynullsafeannotationsfieldstest.avsc | 8 ++
.../input/nullsafeannotationsfieldstest.avsc | 8 --
... => JSpecifyNullSafeAnnotationsFieldsTest.java} | 114 ++++++++++-----------
...=> JetBrainsNullSafeAnnotationsFieldsTest.java} | 96 ++++++++---------
.../apache/avro/tool/TestSpecificCompilerTool.java | 33 ++++--
pom.xml | 3 +-
11 files changed, 247 insertions(+), 134 deletions(-)
diff --git
a/lang/java/compiler/src/main/java/org/apache/avro/compiler/specific/SpecificCompiler.java
b/lang/java/compiler/src/main/java/org/apache/avro/compiler/specific/SpecificCompiler.java
index cad00e943f..31a4a495bf 100644
---
a/lang/java/compiler/src/main/java/org/apache/avro/compiler/specific/SpecificCompiler.java
+++
b/lang/java/compiler/src/main/java/org/apache/avro/compiler/specific/SpecificCompiler.java
@@ -131,6 +131,9 @@ public class SpecificCompiler {
private String suffix = ".java";
private List<Object> additionalVelocityTools = Collections.emptyList();
+ private String nullSafeAnnotationNullable =
"org.jetbrains.annotations.Nullable";
+ private String nullSafeAnnotationNotNull =
"org.jetbrains.annotations.NotNull";
+
private String recordSpecificClass =
"org.apache.avro.specific.SpecificRecordBase";
private String errorSpecificClass =
"org.apache.avro.specific.SpecificExceptionBase";
@@ -244,12 +247,42 @@ public class SpecificCompiler {
}
/**
- * Set to true to add jetbrains @Nullable and @NotNull annotations
+ * Set to true to add @Nullable and @NotNull annotations. By default,
JetBrains
+ * annotations are used (org.jetbrains.annotations.Nullable and
+ * org.jetbrains.annotations.NotNull) but this can be overridden using
+ * {@link #setNullSafeAnnotationNullable)} and
+ * {@link #setNullSafeAnnotationNotNull)}.
*/
public void setCreateNullSafeAnnotations(boolean createNullSafeAnnotations) {
this.createNullSafeAnnotations = createNullSafeAnnotations;
}
+ public String getNullSafeAnnotationNullable() {
+ return this.nullSafeAnnotationNullable;
+ }
+
+ /**
+ * Sets the annotation to use for nullable fields. Default is
+ * "org.jetbrains.annotations.Nullable". The annotation must include the full
+ * package path.
+ */
+ public void setNullSafeAnnotationNullable(String nullSafeAnnotationNullable)
{
+ this.nullSafeAnnotationNullable = nullSafeAnnotationNullable;
+ }
+
+ public String getNullSafeAnnotationNotNull() {
+ return this.nullSafeAnnotationNotNull;
+ }
+
+ /**
+ * Sets the annotation to use for non-nullable fields. Default is
+ * "org.jetbrains.annotations.NotNull". The annotation must include the full
+ * package path.
+ */
+ public void setNullSafeAnnotationNotNull(String nullSafeAnnotationNotNull) {
+ this.nullSafeAnnotationNotNull = nullSafeAnnotationNotNull;
+ }
+
public boolean isCreateOptionalGetters() {
return this.createOptionalGetters;
}
diff --git
a/lang/java/compiler/src/main/velocity/org/apache/avro/compiler/specific/templates/java/classic/record.vm
b/lang/java/compiler/src/main/velocity/org/apache/avro/compiler/specific/templates/java/classic/record.vm
index eef50ec720..d08f099ec9 100755
---
a/lang/java/compiler/src/main/velocity/org/apache/avro/compiler/specific/templates/java/classic/record.vm
+++
b/lang/java/compiler/src/main/velocity/org/apache/avro/compiler/specific/templates/java/classic/record.vm
@@ -160,7 +160,7 @@ public class
${this.mangleTypeIdentifier($schema.getName())} extends ${this.getS
#end
#end
*/
- public ${this.mangleTypeIdentifier($schema.getName())}(#foreach($field in
$schema.getFields())#if(${this.createNullSafeAnnotations})#if(${field.schema().isNullable()})@org.jetbrains.annotations.Nullable#[email protected]#end
#end${this.javaType($field.schema())}
${this.mangle($field.name())}#if($foreach.count < $schema.getFields().size()),
#end#end) {
+ public ${this.mangleTypeIdentifier($schema.getName())}(#foreach($field in
$schema.getFields())#if(${this.createNullSafeAnnotations})#if(${field.schema().isNullable()})@${this.nullSafeAnnotationNullable}#else@${this.nullSafeAnnotationNotNull}#end
#end${this.javaType($field.schema())}
${this.mangle($field.name())}#if($foreach.count < $schema.getFields().size()),
#end#end) {
#foreach ($field in $schema.getFields())
${this.generateSetterCode($field.schema(), ${this.mangle($field.name())},
${this.mangle($field.name())})}
#end
@@ -244,9 +244,9 @@ public class
${this.mangleTypeIdentifier($schema.getName())} extends ${this.getS
*/
#if(${this.createNullSafeAnnotations})
#if (${field.schema().isNullable()})
- @org.jetbrains.annotations.Nullable
+ @${this.nullSafeAnnotationNullable}
#else
- @org.jetbrains.annotations.NotNull
+ @${this.nullSafeAnnotationNotNull}
#end
#end
public ${this.javaUnbox($field.schema(), false)}
${this.generateGetMethod($schema, $field)}() {
@@ -273,7 +273,7 @@ public class
${this.mangleTypeIdentifier($schema.getName())} extends ${this.getS
#end
* @param value the value to set.
*/
- public void ${this.generateSetMethod($schema,
$field)}(#if(${this.createNullSafeAnnotations})#if(${field.schema().isNullable()})@org.jetbrains.annotations.Nullable#[email protected]#end
#end${this.javaUnbox($field.schema(), false)} value) {
+ public void ${this.generateSetMethod($schema,
$field)}(#if(${this.createNullSafeAnnotations})#if(${field.schema().isNullable()})@${this.nullSafeAnnotationNullable}#else@${this.nullSafeAnnotationNotNull}#end
#end${this.javaUnbox($field.schema(), false)} value) {
${this.generateSetterCode($field.schema(), ${this.mangle($field.name(),
$schema.isError())}, "value")}
}
#end
@@ -429,7 +429,7 @@ public class
${this.mangleTypeIdentifier($schema.getName())} extends ${this.getS
* @param value The value of '${this.mangle($field.name(),
$schema.isError())}'.
* @return This builder.
*/
- public #if
($schema.getNamespace())$this.mangle($schema.getNamespace()).#end${this.mangleTypeIdentifier($schema.getName())}.Builder
${this.generateSetMethod($schema,
$field)}(#if(${this.createNullSafeAnnotations})#if(${field.schema().isNullable()})@org.jetbrains.annotations.Nullable#[email protected]#end
#end${this.javaUnbox($field.schema(), false)} value) {
+ public #if
($schema.getNamespace())$this.mangle($schema.getNamespace()).#end${this.mangleTypeIdentifier($schema.getName())}.Builder
${this.generateSetMethod($schema,
$field)}(#if(${this.createNullSafeAnnotations})#if(${field.schema().isNullable()})@${this.nullSafeAnnotationNullable}#else@${this.nullSafeAnnotationNotNull}#end
#end${this.javaUnbox($field.schema(), false)} value) {
validate(fields()[$field.pos()], value);
#if (${this.hasBuilder($field.schema())})
this.${this.mangle($field.name(), $schema.isError())}Builder = null;
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 7dc203b035..282801cbbf 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
@@ -183,9 +183,10 @@ public abstract class AbstractAvroMojo extends
AbstractMojo {
protected boolean createSetters;
/**
- * The createNullSafeAnnotations parameter adds JetBrains {@literal
@}Nullable
- * and {@literal @}NotNull annotations for fhe fields of the record. The
default
- * is to not include annotations.
+ * If set to true, {@literal @}Nullable and {@literal @}NotNull annotations
are
+ * added to fields of the record. The default is false. If enabled, JetBrains
+ * annotations are used by default but other annotations can be specified via
+ * the nullSafeAnnotationNullable and nullSafeAnnotationNotNull parameters.
*
* @parameter property="createNullSafeAnnotations"
*
@@ -195,6 +196,32 @@ public abstract class AbstractAvroMojo extends
AbstractMojo {
*/
protected boolean createNullSafeAnnotations = false;
+ /**
+ * Controls which annotation should be added to nullable fields if
+ * createNullSafeAnnotations is enabled. The default is
+ * org.jetbrains.annotations.Nullable.
+ *
+ * @parameter property="nullSafeAnnotationNullable"
+ *
+ * @see <a href=
+ *
"https://www.jetbrains.com/help/idea/annotating-source-code.html#nullability-annotations">
+ * JetBrains nullability annotations</a>
+ */
+ protected String nullSafeAnnotationNullable =
"org.jetbrains.annotations.Nullable";
+
+ /**
+ * Controls which annotation should be added to non-nullable fields if
+ * createNullSafeAnnotations is enabled. The default is
+ * org.jetbrains.annotations.NotNull.
+ *
+ * @parameter property="nullSafeAnnotationNotNull"
+ *
+ * @see <a href=
+ *
"https://www.jetbrains.com/help/idea/annotating-source-code.html#nullability-annotations">
+ * JetBrains nullability annotations</a>
+ */
+ protected String nullSafeAnnotationNotNull =
"org.jetbrains.annotations.NotNull";
+
/**
* A set of fully qualified class names of custom
* {@link org.apache.avro.Conversion} implementations to add to the compiler.
@@ -405,6 +432,8 @@ public abstract class AbstractAvroMojo extends AbstractMojo
{
compiler.setOptionalGettersForNullableFieldsOnly(optionalGettersForNullableFieldsOnly);
compiler.setCreateSetters(createSetters);
compiler.setCreateNullSafeAnnotations(createNullSafeAnnotations);
+ compiler.setNullSafeAnnotationNullable(nullSafeAnnotationNullable);
+ compiler.setNullSafeAnnotationNotNull(nullSafeAnnotationNotNull);
compiler.setEnableDecimalLogicalType(enableDecimalLogicalType);
try {
for (String customConversion : customConversions) {
diff --git
a/lang/java/tools/src/main/java/org/apache/avro/tool/SpecificCompilerTool.java
b/lang/java/tools/src/main/java/org/apache/avro/tool/SpecificCompilerTool.java
index d82929e940..ed55c4ff47 100644
---
a/lang/java/tools/src/main/java/org/apache/avro/tool/SpecificCompilerTool.java
+++
b/lang/java/tools/src/main/java/org/apache/avro/tool/SpecificCompilerTool.java
@@ -50,8 +50,10 @@ public class SpecificCompilerTool implements Tool {
if (origArgs.size() < 3) {
System.err
.println("Usage: [-encoding <outputencoding>] [-string]
[-bigDecimal] [-fieldVisibility <visibilityType>] "
- + "[-noSetters] [-nullSafeAnnotations]
[-addExtraOptionalGetters] [-optionalGetters <optionalGettersType>] "
- + "[-templateDir <templateDir>] (schema|protocol) input...
outputdir");
+ + "[-noSetters] [-nullSafeAnnotations]
[-nullSafeAnnotationNullable <nullableAnnotation>] "
+ + "[-nullSafeAnnotationNotNull <notNullAnnotation>]
[-addExtraOptionalGetters] "
+ + "[-optionalGetters <optionalGettersType>] [-templateDir
<templateDir>] "
+ + "(schema|protocol) input... outputdir");
System.err.println(" input - input files or directories");
System.err.println(" outputdir - directory to write generated java");
System.err.println(" -encoding <outputencoding> - set the encoding of "
+ "output file(s)");
@@ -59,6 +61,9 @@ public class SpecificCompilerTool implements Tool {
System.err.println(" -fieldVisibility [private|public] - use either and
default private");
System.err.println(" -noSetters - do not generate setters");
System.err.println(" -nullSafeAnnotations - add @Nullable and @NotNull
annotations");
+ System.err.println(" -nullSafeAnnotationNullable - full package path of
annotation to use for nullable fields");
+ System.err
+ .println(" -nullSafeAnnotationNotNull - full package path of
annotation to use for non-nullable fields");
System.err
.println(" -addExtraOptionalGetters - generate extra getters with
this format: 'getOptional<FieldName>'");
System.err.println(
@@ -74,6 +79,8 @@ public class SpecificCompilerTool implements Tool {
compilerOpts.useLogicalDecimal = false;
compilerOpts.createSetters = true;
compilerOpts.createNullSafeAnnotations = false;
+ compilerOpts.nullSafeAnnotationNullable = Optional.empty();
+ compilerOpts.nullSafeAnnotationNotNull = Optional.empty();
compilerOpts.optionalGettersType = Optional.empty();
compilerOpts.addExtraOptionalGetters = false;
compilerOpts.encoding = Optional.empty();
@@ -81,6 +88,7 @@ public class SpecificCompilerTool implements Tool {
compilerOpts.fieldVisibility = Optional.empty();
List<String> args = new ArrayList<>(origArgs);
+ int arg = 0;
if (args.contains("-noSetters")) {
compilerOpts.createSetters = false;
@@ -92,11 +100,24 @@ public class SpecificCompilerTool implements Tool {
args.remove(args.indexOf("-nullSafeAnnotations"));
}
+ if (args.contains("-nullSafeAnnotationNullable")) {
+ arg = args.indexOf("-nullSafeAnnotationNullable") + 1;
+ compilerOpts.nullSafeAnnotationNullable = Optional.of(args.get(arg));
+ args.remove(arg);
+ args.remove(arg - 1);
+ }
+
+ if (args.contains("-nullSafeAnnotationNotNull")) {
+ arg = args.indexOf("-nullSafeAnnotationNotNull") + 1;
+ compilerOpts.nullSafeAnnotationNotNull = Optional.of(args.get(arg));
+ args.remove(arg);
+ args.remove(arg - 1);
+ }
+
if (args.contains("-addExtraOptionalGetters")) {
compilerOpts.addExtraOptionalGetters = true;
args.remove(args.indexOf("-addExtraOptionalGetters"));
}
- int arg = 0;
if (args.contains("-optionalGetters")) {
arg = args.indexOf("-optionalGetters") + 1;
@@ -180,6 +201,8 @@ public class SpecificCompilerTool implements Tool {
compiler.setStringType(opts.stringType);
compiler.setCreateSetters(opts.createSetters);
compiler.setCreateNullSafeAnnotations(opts.createNullSafeAnnotations);
+
opts.nullSafeAnnotationNullable.ifPresent(compiler::setNullSafeAnnotationNullable);
+
opts.nullSafeAnnotationNotNull.ifPresent(compiler::setNullSafeAnnotationNotNull);
opts.optionalGettersType.ifPresent(choice -> {
compiler.setGettersReturnOptional(true);
@@ -276,6 +299,8 @@ public class SpecificCompilerTool implements Tool {
boolean useLogicalDecimal;
boolean createSetters;
boolean createNullSafeAnnotations;
+ Optional<String> nullSafeAnnotationNullable;
+ Optional<String> nullSafeAnnotationNotNull;
boolean addExtraOptionalGetters;
Optional<OptionalGettersType> optionalGettersType;
Optional<String> templateDir;
diff --git
a/lang/java/tools/src/test/compiler/input/jetbrainsnullsafeannotationsfieldstest.avsc
b/lang/java/tools/src/test/compiler/input/jetbrainsnullsafeannotationsfieldstest.avsc
new file mode 100644
index 0000000000..07d9d904be
--- /dev/null
+++
b/lang/java/tools/src/test/compiler/input/jetbrainsnullsafeannotationsfieldstest.avsc
@@ -0,0 +1,8 @@
+{"type":"record", "name":"JetBrainsNullSafeAnnotationsFieldsTest",
"namespace": "avro.examples.baseball", "doc":"Test that
@org.jetbrains.annotations.Nullable and @org.jetbrains.annotations.NotNull
annotations are created for all fields",
+ "fields": [
+ {"name": "name", "type": "string"},
+ {"name": "nullable_name", "type": ["string", "null"]},
+ {"name": "favorite_number", "type": "int"},
+ {"name": "nullable_favorite_number", "type": ["int", "null"]}
+ ]
+}
diff --git
a/lang/java/tools/src/test/compiler/input/jspecifynullsafeannotationsfieldstest.avsc
b/lang/java/tools/src/test/compiler/input/jspecifynullsafeannotationsfieldstest.avsc
new file mode 100644
index 0000000000..e20ad36b1b
--- /dev/null
+++
b/lang/java/tools/src/test/compiler/input/jspecifynullsafeannotationsfieldstest.avsc
@@ -0,0 +1,8 @@
+{"type":"record", "name":"JSpecifyNullSafeAnnotationsFieldsTest", "namespace":
"avro.examples.baseball", "doc":"Test that @org.jspecify.annotations.Nullable
and @org.jspecify.annotations.NonNull annotations are created for all fields",
+ "fields": [
+ {"name": "name", "type": "string"},
+ {"name": "nullable_name", "type": ["string", "null"]},
+ {"name": "favorite_number", "type": "int"},
+ {"name": "nullable_favorite_number", "type": ["int", "null"]}
+ ]
+}
diff --git
a/lang/java/tools/src/test/compiler/input/nullsafeannotationsfieldstest.avsc
b/lang/java/tools/src/test/compiler/input/nullsafeannotationsfieldstest.avsc
deleted file mode 100644
index 04ef43e34e..0000000000
--- a/lang/java/tools/src/test/compiler/input/nullsafeannotationsfieldstest.avsc
+++ /dev/null
@@ -1,8 +0,0 @@
-{"type":"record", "name":"NullSafeAnnotationsFieldsTest", "namespace":
"avro.examples.baseball", "doc":"Test that @org.jetbrains.annotations.Nullable
and @org.jetbrains.annotations.NotNull annotations are created for all fields",
- "fields": [
- {"name": "name", "type": "string"},
- {"name": "nullable_name", "type": ["string", "null"]},
- {"name": "favorite_number", "type": "int"},
- {"name": "nullable_favorite_number", "type": ["int", "null"]}
- ]
-}
diff --git
a/lang/java/tools/src/test/compiler/output-string/avro/examples/baseball/NullSafeAnnotationsFieldsTest.java
b/lang/java/tools/src/test/compiler/output-string/avro/examples/baseball/JSpecifyNullSafeAnnotationsFieldsTest.java
similarity index 70%
copy from
lang/java/tools/src/test/compiler/output-string/avro/examples/baseball/NullSafeAnnotationsFieldsTest.java
copy to
lang/java/tools/src/test/compiler/output-string/avro/examples/baseball/JSpecifyNullSafeAnnotationsFieldsTest.java
index 1da1fcde0e..1fa56857f8 100644
---
a/lang/java/tools/src/test/compiler/output-string/avro/examples/baseball/NullSafeAnnotationsFieldsTest.java
+++
b/lang/java/tools/src/test/compiler/output-string/avro/examples/baseball/JSpecifyNullSafeAnnotationsFieldsTest.java
@@ -11,28 +11,28 @@ import org.apache.avro.message.BinaryMessageEncoder;
import org.apache.avro.message.BinaryMessageDecoder;
import org.apache.avro.message.SchemaStore;
-/** Test that @org.jetbrains.annotations.Nullable and
@org.jetbrains.annotations.NotNull annotations are created for all fields */
+/** Test that @org.jspecify.annotations.Nullable and
@org.jspecify.annotations.NonNull annotations are created for all fields */
@org.apache.avro.specific.AvroGenerated
-public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.SpecificRecordBase implements
org.apache.avro.specific.SpecificRecord {
- private static final long serialVersionUID = 2020521726426674816L;
+public class JSpecifyNullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.SpecificRecordBase implements
org.apache.avro.specific.SpecificRecord {
+ private static final long serialVersionUID = 2433229483110849489L;
- public static final org.apache.avro.Schema SCHEMA$ = new
org.apache.avro.Schema.Parser().parse("{\"type\":\"record\",\"name\":\"NullSafeAnnotationsFieldsTest\",\"namespace\":\"avro.examples.baseball\",\"doc\":\"Test
that @org.jetbrains.annotations.Nullable and
@org.jetbrains.annotations.NotNull annotations are created for all
fields\",\"fields\":[{\"name\":\"name\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"}},{\"name\":\"nullable_name\",\"type\":[{\"type\":\"string\"
[...]
+ public static final org.apache.avro.Schema SCHEMA$ = new
org.apache.avro.Schema.Parser().parse("{\"type\":\"record\",\"name\":\"JSpecifyNullSafeAnnotationsFieldsTest\",\"namespace\":\"avro.examples.baseball\",\"doc\":\"Test
that @org.jspecify.annotations.Nullable and @org.jspecify.annotations.NonNull
annotations are created for all
fields\",\"fields\":[{\"name\":\"name\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"}},{\"name\":\"nullable_name\",\"type\":[{\"type\":\"st
[...]
public static org.apache.avro.Schema getClassSchema() { return SCHEMA$; }
private static final SpecificData MODEL$ = new SpecificData();
- private static final BinaryMessageEncoder<NullSafeAnnotationsFieldsTest>
ENCODER =
+ private static final
BinaryMessageEncoder<JSpecifyNullSafeAnnotationsFieldsTest> ENCODER =
new BinaryMessageEncoder<>(MODEL$, SCHEMA$);
- private static final BinaryMessageDecoder<NullSafeAnnotationsFieldsTest>
DECODER =
+ private static final
BinaryMessageDecoder<JSpecifyNullSafeAnnotationsFieldsTest> DECODER =
new BinaryMessageDecoder<>(MODEL$, SCHEMA$);
/**
* Return the BinaryMessageEncoder instance used by this class.
* @return the message encoder used by this class
*/
- public static BinaryMessageEncoder<NullSafeAnnotationsFieldsTest>
getEncoder() {
+ public static BinaryMessageEncoder<JSpecifyNullSafeAnnotationsFieldsTest>
getEncoder() {
return ENCODER;
}
@@ -40,7 +40,7 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
* Return the BinaryMessageDecoder instance used by this class.
* @return the message decoder used by this class
*/
- public static BinaryMessageDecoder<NullSafeAnnotationsFieldsTest>
getDecoder() {
+ public static BinaryMessageDecoder<JSpecifyNullSafeAnnotationsFieldsTest>
getDecoder() {
return DECODER;
}
@@ -49,12 +49,12 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
* @param resolver a {@link SchemaStore} used to find schemas by fingerprint
* @return a BinaryMessageDecoder instance for this class backed by the
given SchemaStore
*/
- public static BinaryMessageDecoder<NullSafeAnnotationsFieldsTest>
createDecoder(SchemaStore resolver) {
+ public static BinaryMessageDecoder<JSpecifyNullSafeAnnotationsFieldsTest>
createDecoder(SchemaStore resolver) {
return new BinaryMessageDecoder<>(MODEL$, SCHEMA$, resolver);
}
/**
- * Serializes this NullSafeAnnotationsFieldsTest to a ByteBuffer.
+ * Serializes this JSpecifyNullSafeAnnotationsFieldsTest to a ByteBuffer.
* @return a buffer holding the serialized data for this instance
* @throws java.io.IOException if this instance could not be serialized
*/
@@ -63,12 +63,12 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
}
/**
- * Deserializes a NullSafeAnnotationsFieldsTest from a ByteBuffer.
+ * Deserializes a JSpecifyNullSafeAnnotationsFieldsTest from a ByteBuffer.
* @param b a byte buffer holding serialized data for an instance of this
class
- * @return a NullSafeAnnotationsFieldsTest instance decoded from the given
buffer
+ * @return a JSpecifyNullSafeAnnotationsFieldsTest instance decoded from the
given buffer
* @throws java.io.IOException if the given bytes could not be deserialized
into an instance of this class
*/
- public static NullSafeAnnotationsFieldsTest fromByteBuffer(
+ public static JSpecifyNullSafeAnnotationsFieldsTest fromByteBuffer(
java.nio.ByteBuffer b) throws java.io.IOException {
return DECODER.decode(b);
}
@@ -83,7 +83,7 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
* to their default values from the schema. If that is desired then
* one should use <code>newBuilder()</code>.
*/
- public NullSafeAnnotationsFieldsTest() {}
+ public JSpecifyNullSafeAnnotationsFieldsTest() {}
/**
* All-args constructor.
@@ -92,7 +92,7 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
* @param favorite_number The new value for favorite_number
* @param nullable_favorite_number The new value for nullable_favorite_number
*/
- public NullSafeAnnotationsFieldsTest(@org.jetbrains.annotations.NotNull
java.lang.String name, @org.jetbrains.annotations.Nullable java.lang.String
nullable_name, @org.jetbrains.annotations.NotNull java.lang.Integer
favorite_number, @org.jetbrains.annotations.Nullable java.lang.Integer
nullable_favorite_number) {
+ public
JSpecifyNullSafeAnnotationsFieldsTest(@org.jspecify.annotations.NonNull
java.lang.String name, @org.jspecify.annotations.Nullable java.lang.String
nullable_name, @org.jspecify.annotations.NonNull java.lang.Integer
favorite_number, @org.jspecify.annotations.Nullable java.lang.Integer
nullable_favorite_number) {
this.name = name;
this.nullable_name = nullable_name;
this.favorite_number = favorite_number;
@@ -134,7 +134,7 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
* Gets the value of the 'name' field.
* @return The value of the 'name' field.
*/
- @org.jetbrains.annotations.NotNull
+ @org.jspecify.annotations.NonNull
public java.lang.String getName() {
return name;
}
@@ -144,7 +144,7 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
* Sets the value of the 'name' field.
* @param value the value to set.
*/
- public void setName(@org.jetbrains.annotations.NotNull java.lang.String
value) {
+ public void setName(@org.jspecify.annotations.NonNull java.lang.String
value) {
this.name = value;
}
@@ -152,7 +152,7 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
* Gets the value of the 'nullable_name' field.
* @return The value of the 'nullable_name' field.
*/
- @org.jetbrains.annotations.Nullable
+ @org.jspecify.annotations.Nullable
public java.lang.String getNullableName() {
return nullable_name;
}
@@ -162,7 +162,7 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
* Sets the value of the 'nullable_name' field.
* @param value the value to set.
*/
- public void setNullableName(@org.jetbrains.annotations.Nullable
java.lang.String value) {
+ public void setNullableName(@org.jspecify.annotations.Nullable
java.lang.String value) {
this.nullable_name = value;
}
@@ -170,7 +170,7 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
* Gets the value of the 'favorite_number' field.
* @return The value of the 'favorite_number' field.
*/
- @org.jetbrains.annotations.NotNull
+ @org.jspecify.annotations.NonNull
public int getFavoriteNumber() {
return favorite_number;
}
@@ -180,7 +180,7 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
* Sets the value of the 'favorite_number' field.
* @param value the value to set.
*/
- public void setFavoriteNumber(@org.jetbrains.annotations.NotNull int value) {
+ public void setFavoriteNumber(@org.jspecify.annotations.NonNull int value) {
this.favorite_number = value;
}
@@ -188,7 +188,7 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
* Gets the value of the 'nullable_favorite_number' field.
* @return The value of the 'nullable_favorite_number' field.
*/
- @org.jetbrains.annotations.Nullable
+ @org.jspecify.annotations.Nullable
public java.lang.Integer getNullableFavoriteNumber() {
return nullable_favorite_number;
}
@@ -198,50 +198,50 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
* Sets the value of the 'nullable_favorite_number' field.
* @param value the value to set.
*/
- public void setNullableFavoriteNumber(@org.jetbrains.annotations.Nullable
java.lang.Integer value) {
+ public void setNullableFavoriteNumber(@org.jspecify.annotations.Nullable
java.lang.Integer value) {
this.nullable_favorite_number = value;
}
/**
- * Creates a new NullSafeAnnotationsFieldsTest RecordBuilder.
- * @return A new NullSafeAnnotationsFieldsTest RecordBuilder
+ * Creates a new JSpecifyNullSafeAnnotationsFieldsTest RecordBuilder.
+ * @return A new JSpecifyNullSafeAnnotationsFieldsTest RecordBuilder
*/
- public static avro.examples.baseball.NullSafeAnnotationsFieldsTest.Builder
newBuilder() {
- return new avro.examples.baseball.NullSafeAnnotationsFieldsTest.Builder();
+ public static
avro.examples.baseball.JSpecifyNullSafeAnnotationsFieldsTest.Builder
newBuilder() {
+ return new
avro.examples.baseball.JSpecifyNullSafeAnnotationsFieldsTest.Builder();
}
/**
- * Creates a new NullSafeAnnotationsFieldsTest RecordBuilder by copying an
existing Builder.
+ * Creates a new JSpecifyNullSafeAnnotationsFieldsTest RecordBuilder by
copying an existing Builder.
* @param other The existing builder to copy.
- * @return A new NullSafeAnnotationsFieldsTest RecordBuilder
+ * @return A new JSpecifyNullSafeAnnotationsFieldsTest RecordBuilder
*/
- public static avro.examples.baseball.NullSafeAnnotationsFieldsTest.Builder
newBuilder(avro.examples.baseball.NullSafeAnnotationsFieldsTest.Builder other) {
+ public static
avro.examples.baseball.JSpecifyNullSafeAnnotationsFieldsTest.Builder
newBuilder(avro.examples.baseball.JSpecifyNullSafeAnnotationsFieldsTest.Builder
other) {
if (other == null) {
- return new
avro.examples.baseball.NullSafeAnnotationsFieldsTest.Builder();
+ return new
avro.examples.baseball.JSpecifyNullSafeAnnotationsFieldsTest.Builder();
} else {
- return new
avro.examples.baseball.NullSafeAnnotationsFieldsTest.Builder(other);
+ return new
avro.examples.baseball.JSpecifyNullSafeAnnotationsFieldsTest.Builder(other);
}
}
/**
- * Creates a new NullSafeAnnotationsFieldsTest RecordBuilder by copying an
existing NullSafeAnnotationsFieldsTest instance.
+ * Creates a new JSpecifyNullSafeAnnotationsFieldsTest RecordBuilder by
copying an existing JSpecifyNullSafeAnnotationsFieldsTest instance.
* @param other The existing instance to copy.
- * @return A new NullSafeAnnotationsFieldsTest RecordBuilder
+ * @return A new JSpecifyNullSafeAnnotationsFieldsTest RecordBuilder
*/
- public static avro.examples.baseball.NullSafeAnnotationsFieldsTest.Builder
newBuilder(avro.examples.baseball.NullSafeAnnotationsFieldsTest other) {
+ public static
avro.examples.baseball.JSpecifyNullSafeAnnotationsFieldsTest.Builder
newBuilder(avro.examples.baseball.JSpecifyNullSafeAnnotationsFieldsTest other) {
if (other == null) {
- return new
avro.examples.baseball.NullSafeAnnotationsFieldsTest.Builder();
+ return new
avro.examples.baseball.JSpecifyNullSafeAnnotationsFieldsTest.Builder();
} else {
- return new
avro.examples.baseball.NullSafeAnnotationsFieldsTest.Builder(other);
+ return new
avro.examples.baseball.JSpecifyNullSafeAnnotationsFieldsTest.Builder(other);
}
}
/**
- * RecordBuilder for NullSafeAnnotationsFieldsTest instances.
+ * RecordBuilder for JSpecifyNullSafeAnnotationsFieldsTest instances.
*/
@org.apache.avro.specific.AvroGenerated
- public static class Builder extends
org.apache.avro.specific.SpecificRecordBuilderBase<NullSafeAnnotationsFieldsTest>
- implements
org.apache.avro.data.RecordBuilder<NullSafeAnnotationsFieldsTest> {
+ public static class Builder extends
org.apache.avro.specific.SpecificRecordBuilderBase<JSpecifyNullSafeAnnotationsFieldsTest>
+ implements
org.apache.avro.data.RecordBuilder<JSpecifyNullSafeAnnotationsFieldsTest> {
private java.lang.String name;
private java.lang.String nullable_name;
@@ -257,7 +257,7 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
* Creates a Builder by copying an existing Builder.
* @param other The existing Builder to copy.
*/
- private
Builder(avro.examples.baseball.NullSafeAnnotationsFieldsTest.Builder other) {
+ private
Builder(avro.examples.baseball.JSpecifyNullSafeAnnotationsFieldsTest.Builder
other) {
super(other);
if (isValidValue(fields()[0], other.name)) {
this.name = data().deepCopy(fields()[0].schema(), other.name);
@@ -278,10 +278,10 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
}
/**
- * Creates a Builder by copying an existing NullSafeAnnotationsFieldsTest
instance
+ * Creates a Builder by copying an existing
JSpecifyNullSafeAnnotationsFieldsTest instance
* @param other The existing instance to copy.
*/
- private Builder(avro.examples.baseball.NullSafeAnnotationsFieldsTest
other) {
+ private
Builder(avro.examples.baseball.JSpecifyNullSafeAnnotationsFieldsTest other) {
super(SCHEMA$, MODEL$);
if (isValidValue(fields()[0], other.name)) {
this.name = data().deepCopy(fields()[0].schema(), other.name);
@@ -315,7 +315,7 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
* @param value The value of 'name'.
* @return This builder.
*/
- public avro.examples.baseball.NullSafeAnnotationsFieldsTest.Builder
setName(@org.jetbrains.annotations.NotNull java.lang.String value) {
+ public
avro.examples.baseball.JSpecifyNullSafeAnnotationsFieldsTest.Builder
setName(@org.jspecify.annotations.NonNull java.lang.String value) {
validate(fields()[0], value);
this.name = value;
fieldSetFlags()[0] = true;
@@ -335,7 +335,7 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
* Clears the value of the 'name' field.
* @return This builder.
*/
- public avro.examples.baseball.NullSafeAnnotationsFieldsTest.Builder
clearName() {
+ public
avro.examples.baseball.JSpecifyNullSafeAnnotationsFieldsTest.Builder
clearName() {
name = null;
fieldSetFlags()[0] = false;
return this;
@@ -355,7 +355,7 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
* @param value The value of 'nullable_name'.
* @return This builder.
*/
- public avro.examples.baseball.NullSafeAnnotationsFieldsTest.Builder
setNullableName(@org.jetbrains.annotations.Nullable java.lang.String value) {
+ public
avro.examples.baseball.JSpecifyNullSafeAnnotationsFieldsTest.Builder
setNullableName(@org.jspecify.annotations.Nullable java.lang.String value) {
validate(fields()[1], value);
this.nullable_name = value;
fieldSetFlags()[1] = true;
@@ -375,7 +375,7 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
* Clears the value of the 'nullable_name' field.
* @return This builder.
*/
- public avro.examples.baseball.NullSafeAnnotationsFieldsTest.Builder
clearNullableName() {
+ public
avro.examples.baseball.JSpecifyNullSafeAnnotationsFieldsTest.Builder
clearNullableName() {
nullable_name = null;
fieldSetFlags()[1] = false;
return this;
@@ -395,7 +395,7 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
* @param value The value of 'favorite_number'.
* @return This builder.
*/
- public avro.examples.baseball.NullSafeAnnotationsFieldsTest.Builder
setFavoriteNumber(@org.jetbrains.annotations.NotNull int value) {
+ public
avro.examples.baseball.JSpecifyNullSafeAnnotationsFieldsTest.Builder
setFavoriteNumber(@org.jspecify.annotations.NonNull int value) {
validate(fields()[2], value);
this.favorite_number = value;
fieldSetFlags()[2] = true;
@@ -415,7 +415,7 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
* Clears the value of the 'favorite_number' field.
* @return This builder.
*/
- public avro.examples.baseball.NullSafeAnnotationsFieldsTest.Builder
clearFavoriteNumber() {
+ public
avro.examples.baseball.JSpecifyNullSafeAnnotationsFieldsTest.Builder
clearFavoriteNumber() {
fieldSetFlags()[2] = false;
return this;
}
@@ -434,7 +434,7 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
* @param value The value of 'nullable_favorite_number'.
* @return This builder.
*/
- public avro.examples.baseball.NullSafeAnnotationsFieldsTest.Builder
setNullableFavoriteNumber(@org.jetbrains.annotations.Nullable java.lang.Integer
value) {
+ public
avro.examples.baseball.JSpecifyNullSafeAnnotationsFieldsTest.Builder
setNullableFavoriteNumber(@org.jspecify.annotations.Nullable java.lang.Integer
value) {
validate(fields()[3], value);
this.nullable_favorite_number = value;
fieldSetFlags()[3] = true;
@@ -454,7 +454,7 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
* Clears the value of the 'nullable_favorite_number' field.
* @return This builder.
*/
- public avro.examples.baseball.NullSafeAnnotationsFieldsTest.Builder
clearNullableFavoriteNumber() {
+ public
avro.examples.baseball.JSpecifyNullSafeAnnotationsFieldsTest.Builder
clearNullableFavoriteNumber() {
nullable_favorite_number = null;
fieldSetFlags()[3] = false;
return this;
@@ -462,9 +462,9 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
@Override
@SuppressWarnings("unchecked")
- public NullSafeAnnotationsFieldsTest build() {
+ public JSpecifyNullSafeAnnotationsFieldsTest build() {
try {
- NullSafeAnnotationsFieldsTest record = new
NullSafeAnnotationsFieldsTest();
+ JSpecifyNullSafeAnnotationsFieldsTest record = new
JSpecifyNullSafeAnnotationsFieldsTest();
record.name = fieldSetFlags()[0] ? this.name : (java.lang.String)
defaultValue(fields()[0]);
record.nullable_name = fieldSetFlags()[1] ? this.nullable_name :
(java.lang.String) defaultValue(fields()[1]);
record.favorite_number = fieldSetFlags()[2] ? this.favorite_number :
(java.lang.Integer) defaultValue(fields()[2]);
@@ -479,8 +479,8 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
}
@SuppressWarnings("unchecked")
- private static final
org.apache.avro.io.DatumWriter<NullSafeAnnotationsFieldsTest>
- WRITER$ =
(org.apache.avro.io.DatumWriter<NullSafeAnnotationsFieldsTest>)MODEL$.createDatumWriter(SCHEMA$);
+ private static final
org.apache.avro.io.DatumWriter<JSpecifyNullSafeAnnotationsFieldsTest>
+ WRITER$ =
(org.apache.avro.io.DatumWriter<JSpecifyNullSafeAnnotationsFieldsTest>)MODEL$.createDatumWriter(SCHEMA$);
@Override public void writeExternal(java.io.ObjectOutput out)
throws java.io.IOException {
@@ -488,8 +488,8 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
}
@SuppressWarnings("unchecked")
- private static final
org.apache.avro.io.DatumReader<NullSafeAnnotationsFieldsTest>
- READER$ =
(org.apache.avro.io.DatumReader<NullSafeAnnotationsFieldsTest>)MODEL$.createDatumReader(SCHEMA$);
+ private static final
org.apache.avro.io.DatumReader<JSpecifyNullSafeAnnotationsFieldsTest>
+ READER$ =
(org.apache.avro.io.DatumReader<JSpecifyNullSafeAnnotationsFieldsTest>)MODEL$.createDatumReader(SCHEMA$);
@Override public void readExternal(java.io.ObjectInput in)
throws java.io.IOException {
diff --git
a/lang/java/tools/src/test/compiler/output-string/avro/examples/baseball/NullSafeAnnotationsFieldsTest.java
b/lang/java/tools/src/test/compiler/output-string/avro/examples/baseball/JetBrainsNullSafeAnnotationsFieldsTest.java
similarity index 73%
rename from
lang/java/tools/src/test/compiler/output-string/avro/examples/baseball/NullSafeAnnotationsFieldsTest.java
rename to
lang/java/tools/src/test/compiler/output-string/avro/examples/baseball/JetBrainsNullSafeAnnotationsFieldsTest.java
index 1da1fcde0e..44db6edcae 100644
---
a/lang/java/tools/src/test/compiler/output-string/avro/examples/baseball/NullSafeAnnotationsFieldsTest.java
+++
b/lang/java/tools/src/test/compiler/output-string/avro/examples/baseball/JetBrainsNullSafeAnnotationsFieldsTest.java
@@ -13,26 +13,26 @@ import org.apache.avro.message.SchemaStore;
/** Test that @org.jetbrains.annotations.Nullable and
@org.jetbrains.annotations.NotNull annotations are created for all fields */
@org.apache.avro.specific.AvroGenerated
-public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.SpecificRecordBase implements
org.apache.avro.specific.SpecificRecord {
- private static final long serialVersionUID = 2020521726426674816L;
+public class JetBrainsNullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.SpecificRecordBase implements
org.apache.avro.specific.SpecificRecord {
+ private static final long serialVersionUID = 4199351420542345651L;
- public static final org.apache.avro.Schema SCHEMA$ = new
org.apache.avro.Schema.Parser().parse("{\"type\":\"record\",\"name\":\"NullSafeAnnotationsFieldsTest\",\"namespace\":\"avro.examples.baseball\",\"doc\":\"Test
that @org.jetbrains.annotations.Nullable and
@org.jetbrains.annotations.NotNull annotations are created for all
fields\",\"fields\":[{\"name\":\"name\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"}},{\"name\":\"nullable_name\",\"type\":[{\"type\":\"string\"
[...]
+ public static final org.apache.avro.Schema SCHEMA$ = new
org.apache.avro.Schema.Parser().parse("{\"type\":\"record\",\"name\":\"JetBrainsNullSafeAnnotationsFieldsTest\",\"namespace\":\"avro.examples.baseball\",\"doc\":\"Test
that @org.jetbrains.annotations.Nullable and
@org.jetbrains.annotations.NotNull annotations are created for all
fields\",\"fields\":[{\"name\":\"name\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"}},{\"name\":\"nullable_name\",\"type\":[{\"type\":\
[...]
public static org.apache.avro.Schema getClassSchema() { return SCHEMA$; }
private static final SpecificData MODEL$ = new SpecificData();
- private static final BinaryMessageEncoder<NullSafeAnnotationsFieldsTest>
ENCODER =
+ private static final
BinaryMessageEncoder<JetBrainsNullSafeAnnotationsFieldsTest> ENCODER =
new BinaryMessageEncoder<>(MODEL$, SCHEMA$);
- private static final BinaryMessageDecoder<NullSafeAnnotationsFieldsTest>
DECODER =
+ private static final
BinaryMessageDecoder<JetBrainsNullSafeAnnotationsFieldsTest> DECODER =
new BinaryMessageDecoder<>(MODEL$, SCHEMA$);
/**
* Return the BinaryMessageEncoder instance used by this class.
* @return the message encoder used by this class
*/
- public static BinaryMessageEncoder<NullSafeAnnotationsFieldsTest>
getEncoder() {
+ public static BinaryMessageEncoder<JetBrainsNullSafeAnnotationsFieldsTest>
getEncoder() {
return ENCODER;
}
@@ -40,7 +40,7 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
* Return the BinaryMessageDecoder instance used by this class.
* @return the message decoder used by this class
*/
- public static BinaryMessageDecoder<NullSafeAnnotationsFieldsTest>
getDecoder() {
+ public static BinaryMessageDecoder<JetBrainsNullSafeAnnotationsFieldsTest>
getDecoder() {
return DECODER;
}
@@ -49,12 +49,12 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
* @param resolver a {@link SchemaStore} used to find schemas by fingerprint
* @return a BinaryMessageDecoder instance for this class backed by the
given SchemaStore
*/
- public static BinaryMessageDecoder<NullSafeAnnotationsFieldsTest>
createDecoder(SchemaStore resolver) {
+ public static BinaryMessageDecoder<JetBrainsNullSafeAnnotationsFieldsTest>
createDecoder(SchemaStore resolver) {
return new BinaryMessageDecoder<>(MODEL$, SCHEMA$, resolver);
}
/**
- * Serializes this NullSafeAnnotationsFieldsTest to a ByteBuffer.
+ * Serializes this JetBrainsNullSafeAnnotationsFieldsTest to a ByteBuffer.
* @return a buffer holding the serialized data for this instance
* @throws java.io.IOException if this instance could not be serialized
*/
@@ -63,12 +63,12 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
}
/**
- * Deserializes a NullSafeAnnotationsFieldsTest from a ByteBuffer.
+ * Deserializes a JetBrainsNullSafeAnnotationsFieldsTest from a ByteBuffer.
* @param b a byte buffer holding serialized data for an instance of this
class
- * @return a NullSafeAnnotationsFieldsTest instance decoded from the given
buffer
+ * @return a JetBrainsNullSafeAnnotationsFieldsTest instance decoded from
the given buffer
* @throws java.io.IOException if the given bytes could not be deserialized
into an instance of this class
*/
- public static NullSafeAnnotationsFieldsTest fromByteBuffer(
+ public static JetBrainsNullSafeAnnotationsFieldsTest fromByteBuffer(
java.nio.ByteBuffer b) throws java.io.IOException {
return DECODER.decode(b);
}
@@ -83,7 +83,7 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
* to their default values from the schema. If that is desired then
* one should use <code>newBuilder()</code>.
*/
- public NullSafeAnnotationsFieldsTest() {}
+ public JetBrainsNullSafeAnnotationsFieldsTest() {}
/**
* All-args constructor.
@@ -92,7 +92,7 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
* @param favorite_number The new value for favorite_number
* @param nullable_favorite_number The new value for nullable_favorite_number
*/
- public NullSafeAnnotationsFieldsTest(@org.jetbrains.annotations.NotNull
java.lang.String name, @org.jetbrains.annotations.Nullable java.lang.String
nullable_name, @org.jetbrains.annotations.NotNull java.lang.Integer
favorite_number, @org.jetbrains.annotations.Nullable java.lang.Integer
nullable_favorite_number) {
+ public
JetBrainsNullSafeAnnotationsFieldsTest(@org.jetbrains.annotations.NotNull
java.lang.String name, @org.jetbrains.annotations.Nullable java.lang.String
nullable_name, @org.jetbrains.annotations.NotNull java.lang.Integer
favorite_number, @org.jetbrains.annotations.Nullable java.lang.Integer
nullable_favorite_number) {
this.name = name;
this.nullable_name = nullable_name;
this.favorite_number = favorite_number;
@@ -203,45 +203,45 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
}
/**
- * Creates a new NullSafeAnnotationsFieldsTest RecordBuilder.
- * @return A new NullSafeAnnotationsFieldsTest RecordBuilder
+ * Creates a new JetBrainsNullSafeAnnotationsFieldsTest RecordBuilder.
+ * @return A new JetBrainsNullSafeAnnotationsFieldsTest RecordBuilder
*/
- public static avro.examples.baseball.NullSafeAnnotationsFieldsTest.Builder
newBuilder() {
- return new avro.examples.baseball.NullSafeAnnotationsFieldsTest.Builder();
+ public static
avro.examples.baseball.JetBrainsNullSafeAnnotationsFieldsTest.Builder
newBuilder() {
+ return new
avro.examples.baseball.JetBrainsNullSafeAnnotationsFieldsTest.Builder();
}
/**
- * Creates a new NullSafeAnnotationsFieldsTest RecordBuilder by copying an
existing Builder.
+ * Creates a new JetBrainsNullSafeAnnotationsFieldsTest RecordBuilder by
copying an existing Builder.
* @param other The existing builder to copy.
- * @return A new NullSafeAnnotationsFieldsTest RecordBuilder
+ * @return A new JetBrainsNullSafeAnnotationsFieldsTest RecordBuilder
*/
- public static avro.examples.baseball.NullSafeAnnotationsFieldsTest.Builder
newBuilder(avro.examples.baseball.NullSafeAnnotationsFieldsTest.Builder other) {
+ public static
avro.examples.baseball.JetBrainsNullSafeAnnotationsFieldsTest.Builder
newBuilder(avro.examples.baseball.JetBrainsNullSafeAnnotationsFieldsTest.Builder
other) {
if (other == null) {
- return new
avro.examples.baseball.NullSafeAnnotationsFieldsTest.Builder();
+ return new
avro.examples.baseball.JetBrainsNullSafeAnnotationsFieldsTest.Builder();
} else {
- return new
avro.examples.baseball.NullSafeAnnotationsFieldsTest.Builder(other);
+ return new
avro.examples.baseball.JetBrainsNullSafeAnnotationsFieldsTest.Builder(other);
}
}
/**
- * Creates a new NullSafeAnnotationsFieldsTest RecordBuilder by copying an
existing NullSafeAnnotationsFieldsTest instance.
+ * Creates a new JetBrainsNullSafeAnnotationsFieldsTest RecordBuilder by
copying an existing JetBrainsNullSafeAnnotationsFieldsTest instance.
* @param other The existing instance to copy.
- * @return A new NullSafeAnnotationsFieldsTest RecordBuilder
+ * @return A new JetBrainsNullSafeAnnotationsFieldsTest RecordBuilder
*/
- public static avro.examples.baseball.NullSafeAnnotationsFieldsTest.Builder
newBuilder(avro.examples.baseball.NullSafeAnnotationsFieldsTest other) {
+ public static
avro.examples.baseball.JetBrainsNullSafeAnnotationsFieldsTest.Builder
newBuilder(avro.examples.baseball.JetBrainsNullSafeAnnotationsFieldsTest other)
{
if (other == null) {
- return new
avro.examples.baseball.NullSafeAnnotationsFieldsTest.Builder();
+ return new
avro.examples.baseball.JetBrainsNullSafeAnnotationsFieldsTest.Builder();
} else {
- return new
avro.examples.baseball.NullSafeAnnotationsFieldsTest.Builder(other);
+ return new
avro.examples.baseball.JetBrainsNullSafeAnnotationsFieldsTest.Builder(other);
}
}
/**
- * RecordBuilder for NullSafeAnnotationsFieldsTest instances.
+ * RecordBuilder for JetBrainsNullSafeAnnotationsFieldsTest instances.
*/
@org.apache.avro.specific.AvroGenerated
- public static class Builder extends
org.apache.avro.specific.SpecificRecordBuilderBase<NullSafeAnnotationsFieldsTest>
- implements
org.apache.avro.data.RecordBuilder<NullSafeAnnotationsFieldsTest> {
+ public static class Builder extends
org.apache.avro.specific.SpecificRecordBuilderBase<JetBrainsNullSafeAnnotationsFieldsTest>
+ implements
org.apache.avro.data.RecordBuilder<JetBrainsNullSafeAnnotationsFieldsTest> {
private java.lang.String name;
private java.lang.String nullable_name;
@@ -257,7 +257,7 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
* Creates a Builder by copying an existing Builder.
* @param other The existing Builder to copy.
*/
- private
Builder(avro.examples.baseball.NullSafeAnnotationsFieldsTest.Builder other) {
+ private
Builder(avro.examples.baseball.JetBrainsNullSafeAnnotationsFieldsTest.Builder
other) {
super(other);
if (isValidValue(fields()[0], other.name)) {
this.name = data().deepCopy(fields()[0].schema(), other.name);
@@ -278,10 +278,10 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
}
/**
- * Creates a Builder by copying an existing NullSafeAnnotationsFieldsTest
instance
+ * Creates a Builder by copying an existing
JetBrainsNullSafeAnnotationsFieldsTest instance
* @param other The existing instance to copy.
*/
- private Builder(avro.examples.baseball.NullSafeAnnotationsFieldsTest
other) {
+ private
Builder(avro.examples.baseball.JetBrainsNullSafeAnnotationsFieldsTest other) {
super(SCHEMA$, MODEL$);
if (isValidValue(fields()[0], other.name)) {
this.name = data().deepCopy(fields()[0].schema(), other.name);
@@ -315,7 +315,7 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
* @param value The value of 'name'.
* @return This builder.
*/
- public avro.examples.baseball.NullSafeAnnotationsFieldsTest.Builder
setName(@org.jetbrains.annotations.NotNull java.lang.String value) {
+ public
avro.examples.baseball.JetBrainsNullSafeAnnotationsFieldsTest.Builder
setName(@org.jetbrains.annotations.NotNull java.lang.String value) {
validate(fields()[0], value);
this.name = value;
fieldSetFlags()[0] = true;
@@ -335,7 +335,7 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
* Clears the value of the 'name' field.
* @return This builder.
*/
- public avro.examples.baseball.NullSafeAnnotationsFieldsTest.Builder
clearName() {
+ public
avro.examples.baseball.JetBrainsNullSafeAnnotationsFieldsTest.Builder
clearName() {
name = null;
fieldSetFlags()[0] = false;
return this;
@@ -355,7 +355,7 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
* @param value The value of 'nullable_name'.
* @return This builder.
*/
- public avro.examples.baseball.NullSafeAnnotationsFieldsTest.Builder
setNullableName(@org.jetbrains.annotations.Nullable java.lang.String value) {
+ public
avro.examples.baseball.JetBrainsNullSafeAnnotationsFieldsTest.Builder
setNullableName(@org.jetbrains.annotations.Nullable java.lang.String value) {
validate(fields()[1], value);
this.nullable_name = value;
fieldSetFlags()[1] = true;
@@ -375,7 +375,7 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
* Clears the value of the 'nullable_name' field.
* @return This builder.
*/
- public avro.examples.baseball.NullSafeAnnotationsFieldsTest.Builder
clearNullableName() {
+ public
avro.examples.baseball.JetBrainsNullSafeAnnotationsFieldsTest.Builder
clearNullableName() {
nullable_name = null;
fieldSetFlags()[1] = false;
return this;
@@ -395,7 +395,7 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
* @param value The value of 'favorite_number'.
* @return This builder.
*/
- public avro.examples.baseball.NullSafeAnnotationsFieldsTest.Builder
setFavoriteNumber(@org.jetbrains.annotations.NotNull int value) {
+ public
avro.examples.baseball.JetBrainsNullSafeAnnotationsFieldsTest.Builder
setFavoriteNumber(@org.jetbrains.annotations.NotNull int value) {
validate(fields()[2], value);
this.favorite_number = value;
fieldSetFlags()[2] = true;
@@ -415,7 +415,7 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
* Clears the value of the 'favorite_number' field.
* @return This builder.
*/
- public avro.examples.baseball.NullSafeAnnotationsFieldsTest.Builder
clearFavoriteNumber() {
+ public
avro.examples.baseball.JetBrainsNullSafeAnnotationsFieldsTest.Builder
clearFavoriteNumber() {
fieldSetFlags()[2] = false;
return this;
}
@@ -434,7 +434,7 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
* @param value The value of 'nullable_favorite_number'.
* @return This builder.
*/
- public avro.examples.baseball.NullSafeAnnotationsFieldsTest.Builder
setNullableFavoriteNumber(@org.jetbrains.annotations.Nullable java.lang.Integer
value) {
+ public
avro.examples.baseball.JetBrainsNullSafeAnnotationsFieldsTest.Builder
setNullableFavoriteNumber(@org.jetbrains.annotations.Nullable java.lang.Integer
value) {
validate(fields()[3], value);
this.nullable_favorite_number = value;
fieldSetFlags()[3] = true;
@@ -454,7 +454,7 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
* Clears the value of the 'nullable_favorite_number' field.
* @return This builder.
*/
- public avro.examples.baseball.NullSafeAnnotationsFieldsTest.Builder
clearNullableFavoriteNumber() {
+ public
avro.examples.baseball.JetBrainsNullSafeAnnotationsFieldsTest.Builder
clearNullableFavoriteNumber() {
nullable_favorite_number = null;
fieldSetFlags()[3] = false;
return this;
@@ -462,9 +462,9 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
@Override
@SuppressWarnings("unchecked")
- public NullSafeAnnotationsFieldsTest build() {
+ public JetBrainsNullSafeAnnotationsFieldsTest build() {
try {
- NullSafeAnnotationsFieldsTest record = new
NullSafeAnnotationsFieldsTest();
+ JetBrainsNullSafeAnnotationsFieldsTest record = new
JetBrainsNullSafeAnnotationsFieldsTest();
record.name = fieldSetFlags()[0] ? this.name : (java.lang.String)
defaultValue(fields()[0]);
record.nullable_name = fieldSetFlags()[1] ? this.nullable_name :
(java.lang.String) defaultValue(fields()[1]);
record.favorite_number = fieldSetFlags()[2] ? this.favorite_number :
(java.lang.Integer) defaultValue(fields()[2]);
@@ -479,8 +479,8 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
}
@SuppressWarnings("unchecked")
- private static final
org.apache.avro.io.DatumWriter<NullSafeAnnotationsFieldsTest>
- WRITER$ =
(org.apache.avro.io.DatumWriter<NullSafeAnnotationsFieldsTest>)MODEL$.createDatumWriter(SCHEMA$);
+ private static final
org.apache.avro.io.DatumWriter<JetBrainsNullSafeAnnotationsFieldsTest>
+ WRITER$ =
(org.apache.avro.io.DatumWriter<JetBrainsNullSafeAnnotationsFieldsTest>)MODEL$.createDatumWriter(SCHEMA$);
@Override public void writeExternal(java.io.ObjectOutput out)
throws java.io.IOException {
@@ -488,8 +488,8 @@ public class NullSafeAnnotationsFieldsTest extends
org.apache.avro.specific.Spec
}
@SuppressWarnings("unchecked")
- private static final
org.apache.avro.io.DatumReader<NullSafeAnnotationsFieldsTest>
- READER$ =
(org.apache.avro.io.DatumReader<NullSafeAnnotationsFieldsTest>)MODEL$.createDatumReader(SCHEMA$);
+ private static final
org.apache.avro.io.DatumReader<JetBrainsNullSafeAnnotationsFieldsTest>
+ READER$ =
(org.apache.avro.io.DatumReader<JetBrainsNullSafeAnnotationsFieldsTest>)MODEL$.createDatumReader(SCHEMA$);
@Override public void readExternal(java.io.ObjectInput in)
throws java.io.IOException {
diff --git
a/lang/java/tools/src/test/java/org/apache/avro/tool/TestSpecificCompilerTool.java
b/lang/java/tools/src/test/java/org/apache/avro/tool/TestSpecificCompilerTool.java
index 03768fea4b..1f4aac91f9 100644
---
a/lang/java/tools/src/test/java/org/apache/avro/tool/TestSpecificCompilerTool.java
+++
b/lang/java/tools/src/test/java/org/apache/avro/tool/TestSpecificCompilerTool.java
@@ -58,8 +58,10 @@ public class TestSpecificCompilerTool {
"avro/examples/baseball/Position.java");
private static final File TEST_EXPECTED_STRING_PLAYER = new
File(TEST_EXPECTED_STRING_OUTPUT_DIR,
"avro/examples/baseball/Player.java");
- private static final File TEST_EXPECTED_STRING_NULL_SAFE_ANNOTATIONS_TEST =
new File(TEST_EXPECTED_STRING_OUTPUT_DIR,
- "avro/examples/baseball/NullSafeAnnotationsFieldsTest.java");
+ private static final File
TEST_EXPECTED_STRING_JET_BRAINS_NULL_SAFE_ANNOTATIONS_TEST = new File(
+ TEST_EXPECTED_STRING_OUTPUT_DIR,
"avro/examples/baseball/JetBrainsNullSafeAnnotationsFieldsTest.java");
+ private static final File
TEST_EXPECTED_STRING_JSPECIFY_NULL_SAFE_ANNOTATIONS_TEST = new File(
+ TEST_EXPECTED_STRING_OUTPUT_DIR,
"avro/examples/baseball/JSpecifyNullSafeAnnotationsFieldsTest.java");
private static final File TEST_EXPECTED_STRING_FIELDTEST = new
File(TEST_EXPECTED_STRING_OUTPUT_DIR,
"avro/examples/baseball/FieldTest.java");
private static final File TEST_EXPECTED_STRING_PROTO = new
File(TEST_EXPECTED_STRING_OUTPUT_DIR,
@@ -85,8 +87,10 @@ public class TestSpecificCompilerTool {
"avro/examples/baseball/Position.java");
private static final File TEST_OUTPUT_STRING_FIELDTEST = new
File(TEST_OUTPUT_STRING_DIR,
"avro/examples/baseball/FieldTest.java");
- private static final File TEST_OUTPUT_STRING_NULL_SAFE_ANNOTATIONS_TEST =
new File(TEST_OUTPUT_STRING_DIR,
- "avro/examples/baseball/NullSafeAnnotationsFieldsTest.java");
+ private static final File
TEST_OUTPUT_STRING_JET_BRAINS_NULL_SAFE_ANNOTATIONS_TEST = new
File(TEST_OUTPUT_STRING_DIR,
+ "avro/examples/baseball/JetBrainsNullSafeAnnotationsFieldsTest.java");
+ private static final File
TEST_OUTPUT_STRING_JSPECIFY_NULL_SAFE_ANNOTATIONS_TEST = new
File(TEST_OUTPUT_STRING_DIR,
+ "avro/examples/baseball/JSpecifyNullSafeAnnotationsFieldsTest.java");
private static final File TEST_OUTPUT_STRING_PROTO = new
File(TEST_OUTPUT_STRING_DIR,
"avro/examples/baseball/Proto.java");
@@ -114,12 +118,25 @@ public class TestSpecificCompilerTool {
}
@Test
- void compileSchemaWithNullSafeAnnotationsFields() throws Exception {
+ void compileSchemaWithJetBrainsNullSafeAnnotationsFields() throws Exception {
- TEST_OUTPUT_STRING_NULL_SAFE_ANNOTATIONS_TEST.delete();
+ TEST_OUTPUT_STRING_JET_BRAINS_NULL_SAFE_ANNOTATIONS_TEST.delete();
doCompile(new String[] { "-encoding", "UTF-8", "-nullSafeAnnotations",
"-string", "schema",
- TEST_INPUT_DIR.toString() + "/nullsafeannotationsfieldstest.avsc",
TEST_OUTPUT_STRING_DIR.getPath() });
- assertFileMatch(TEST_EXPECTED_STRING_NULL_SAFE_ANNOTATIONS_TEST,
TEST_OUTPUT_STRING_NULL_SAFE_ANNOTATIONS_TEST);
+ TEST_INPUT_DIR.toString() +
"/jetbrainsnullsafeannotationsfieldstest.avsc",
TEST_OUTPUT_STRING_DIR.getPath() });
+ assertFileMatch(TEST_EXPECTED_STRING_JET_BRAINS_NULL_SAFE_ANNOTATIONS_TEST,
+ TEST_OUTPUT_STRING_JET_BRAINS_NULL_SAFE_ANNOTATIONS_TEST);
+ }
+
+ @Test
+ void compileSchemaWithJSpecifyNullSafeAnnotationsFields() throws Exception {
+
+ TEST_OUTPUT_STRING_JSPECIFY_NULL_SAFE_ANNOTATIONS_TEST.delete();
+ doCompile(new String[] { "-encoding", "UTF-8", "-nullSafeAnnotations",
"-nullSafeAnnotationNullable",
+ "org.jspecify.annotations.Nullable", "-nullSafeAnnotationNotNull",
"org.jspecify.annotations.NonNull",
+ "-string", "schema", TEST_INPUT_DIR.toString() +
"/jspecifynullsafeannotationsfieldstest.avsc",
+ TEST_OUTPUT_STRING_DIR.getPath() });
+ assertFileMatch(TEST_EXPECTED_STRING_JSPECIFY_NULL_SAFE_ANNOTATIONS_TEST,
+ TEST_OUTPUT_STRING_JSPECIFY_NULL_SAFE_ANNOTATIONS_TEST);
}
@Test
diff --git a/pom.xml b/pom.xml
index e1d60c3d13..aabbe6c5e5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -457,7 +457,8 @@
<exclude>lang/java/avro/src/test/java/org/apache/avro/specific/TestRecordWithoutLogicalTypes.java</exclude>
<exclude>lang/java/avro/src/test/java/org/apache/avro/specific/int$.java</exclude>
<exclude>lang/java/ipc-netty/src/test/resources/**/*.txt</exclude>
-
<exclude>lang/java/tools/src/test/compiler/output-string/avro/examples/baseball/NullSafeAnnotationsFieldsTest.java</exclude>
+
<exclude>lang/java/tools/src/test/compiler/output-string/avro/examples/baseball/JetBrainsNullSafeAnnotationsFieldsTest.java</exclude>
+
<exclude>lang/java/tools/src/test/compiler/output-string/avro/examples/baseball/JSpecifyNullSafeAnnotationsFieldsTest.java</exclude>
<exclude>lang/java/tools/src/test/compiler/output-string/avro/examples/baseball/Player.java</exclude>
<exclude>lang/java/tools/src/test/compiler/output-string/avro/examples/baseball/Position.java</exclude>
<exclude>lang/java/tools/src/test/compiler/output-string/avro/examples/baseball/FieldTest.java</exclude>