Skip to content

Commit 56cf0c4

Browse files
committed
HHH-16813 don't add @generated annotations if it's going to cause a compilation failure
1 parent b199878 commit 56cf0c4

File tree

3 files changed

+27
-13
lines changed

3 files changed

+27
-13
lines changed

tooling/metamodel-generator/src/main/java/org/hibernate/jpamodelgen/ClassWriter.java

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -98,17 +98,17 @@ private static StringBuffer generateBody(Metamodel entity, Context context) {
9898
StringWriter sw = new StringWriter();
9999
try ( PrintWriter pw = new PrintWriter(sw) ) {
100100

101+
if ( entity.getElement() instanceof TypeElement ) {
102+
pw.println(writeStaticMetaModelAnnotation(entity));
103+
}
104+
101105
if (context.addGeneratedAnnotation()) {
102106
pw.println(writeGeneratedAnnotation(entity, context));
103107
}
104108
if (context.isAddSuppressWarningsAnnotation()) {
105109
pw.println(writeSuppressWarnings());
106110
}
107111

108-
if ( entity.getElement() instanceof TypeElement ) {
109-
pw.println(writeStaticMetaModelAnnotation(entity));
110-
}
111-
112112
printClassDeclaration(entity, pw, context);
113113

114114
pw.println();
@@ -203,18 +203,26 @@ private static String getFullyQualifiedClassName(Metamodel entity, String metaMo
203203

204204
private static String writeGeneratedAnnotation(Metamodel entity, Context context) {
205205
StringBuilder generatedAnnotation = new StringBuilder();
206-
generatedAnnotation.append( "@" )
206+
generatedAnnotation
207+
.append( "@" )
207208
.append( entity.importType( "jakarta.annotation.Generated" ) )
208-
.append( "(value = \"" )
209-
.append( JPAMetaModelEntityProcessor.class.getName() );
209+
.append( "(" );
210210
if ( context.addGeneratedDate() ) {
211-
generatedAnnotation.append( "\", date = \"" )
212-
.append( SIMPLE_DATE_FORMAT.get().format( new Date() ) )
213-
.append( "\")" );
211+
generatedAnnotation
212+
.append( "value = " );
214213
}
215-
else {
216-
generatedAnnotation.append( "\")" );
214+
generatedAnnotation
215+
.append( "\"" )
216+
.append( JPAMetaModelEntityProcessor.class.getName() )
217+
.append( "\"" );
218+
if ( context.addGeneratedDate() ) {
219+
generatedAnnotation
220+
.append( ", date = " )
221+
.append( "\"" )
222+
.append( SIMPLE_DATE_FORMAT.get().format( new Date() ) )
223+
.append( "\"" );
217224
}
225+
generatedAnnotation.append( ")" );
218226
return generatedAnnotation.toString();
219227
}
220228

tooling/metamodel-generator/src/main/java/org/hibernate/jpamodelgen/JPAMetaModelEntityProcessor.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,12 @@ public void init(ProcessingEnvironment env) {
9090
boolean addGeneratedAnnotation = Boolean.parseBoolean( tmp );
9191
context.setAddGeneratedAnnotation( addGeneratedAnnotation );
9292
}
93+
else {
94+
PackageElement jakartaAnnotationPackage =
95+
context.getProcessingEnvironment().getElementUtils()
96+
.getPackageElement( "jakarta.annotation" );
97+
context.setAddGeneratedAnnotation( jakartaAnnotationPackage != null );
98+
}
9399

94100
tmp = env.getOptions().get( JPAMetaModelEntityProcessor.ADD_GENERATION_DATE );
95101
boolean addGenerationDate = Boolean.parseBoolean( tmp );

tooling/metamodel-generator/src/test/java/org/hibernate/jpamodelgen/test/generatedannotation/GeneratedAnnotationTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public void testGeneratedAnnotationNotGenerated() {
2828

2929
// need to check the source because @Generated is not a runtime annotation
3030
String metaModelSource = getMetaModelSourceAsString( TestEntity.class );
31-
String generatedString = "@Generated(value = \"org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor\")";
31+
String generatedString = "@Generated(\"org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor\")";
3232
assertTrue( "@Generated should be added to the metamodel.", metaModelSource.contains( generatedString ) );
3333
}
3434
}

0 commit comments

Comments
 (0)