Skip to content

Commit 7e9b55f

Browse files
committed
HHH-17772 add option to suppress JD metamodel
- also squash an error - and improve report bug reporting
1 parent 582d736 commit 7e9b55f

15 files changed

+51
-31
lines changed

tooling/metamodel-generator/hibernate-jpamodelgen.gradle

+5-4
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ plugins {
88
id 'org.hibernate.build.xjc-jakarta'
99
}
1010

11-
description = 'Annotation Processor to generate JPA 2 static metamodel classes'
11+
description = 'Hibernate compile-time tooling'
1212

1313
apply from: rootProject.file( 'gradle/published-java-module.gradle' )
1414
apply plugin: 'version-injection'
@@ -25,7 +25,6 @@ dependencies {
2525
api jakartaLibs.jaxb
2626
api jakartaLibs.validation
2727
api jakartaLibs.annotation
28-
api jakartaLibs.data
2928
api libs.antlrRuntime
3029
api libs.byteBuddy
3130

@@ -41,7 +40,8 @@ sourceSets.main {
4140

4241
compileTestJava {
4342
options.compilerArgs += [
44-
"-proc:none"
43+
"-proc:none",
44+
"-AsuppressJakartaDataMetamodel=true"
4545
]
4646
}
4747

@@ -63,7 +63,8 @@ if ( jdkVersions.test.release.asInt() >= 17 && jdkVersions.explicit ) {
6363
languageVersion = jdkVersions.test.launcher
6464
}
6565
}
66-
} else {
66+
}
67+
else {
6768
sourceSets {
6869
test {
6970
java {

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ private ClassWriter() {
3636
public static void writeFile(Metamodel entity, Context context) {
3737
try {
3838
String metaModelPackage = entity.getPackageName();
39-
// need to generate the body first, since this will also update the required imports which need to
40-
// be written out first
39+
// need to generate the body first, since this will also update
40+
// the required imports which need to be written out first
4141
String body = generateBody( entity, context ).toString();
4242

4343
FileObject fo = context.getProcessingEnvironment().getFiler().createSourceFile(

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

+21-2
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import javax.lang.model.type.TypeKind;
2626
import javax.lang.model.type.TypeMirror;
2727
import javax.tools.Diagnostic;
28+
import java.util.Arrays;
2829
import java.util.Collection;
2930
import java.util.HashSet;
3031
import java.util.List;
@@ -42,6 +43,7 @@
4243
import static org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor.LAZY_XML_PARSING;
4344
import static org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor.ORM_XML_OPTION;
4445
import static org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor.PERSISTENCE_XML_OPTION;
46+
import static org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor.SUPPRESS_JAKARTA_DATA_METAMODEL;
4547
import static org.hibernate.jpamodelgen.util.Constants.*;
4648
import static org.hibernate.jpamodelgen.util.TypeUtils.containsAnnotation;
4749
import static org.hibernate.jpamodelgen.util.TypeUtils.getAnnotationMirror;
@@ -77,7 +79,8 @@
7779
LAZY_XML_PARSING,
7880
ADD_GENERATION_DATE,
7981
ADD_GENERATED_ANNOTATION,
80-
ADD_SUPPRESS_WARNINGS_ANNOTATION
82+
ADD_SUPPRESS_WARNINGS_ANNOTATION,
83+
SUPPRESS_JAKARTA_DATA_METAMODEL
8184
})
8285
public class JPAMetaModelEntityProcessor extends AbstractProcessor {
8386

@@ -123,6 +126,12 @@ public class JPAMetaModelEntityProcessor extends AbstractProcessor {
123126
*/
124127
public static final String ADD_SUPPRESS_WARNINGS_ANNOTATION = "addSuppressWarningsAnnotation";
125128

129+
/**
130+
* Option to suppress generation of the Jakarta Data static metamodel,
131+
* even when Jakarta Data is available on the build path.
132+
*/
133+
public static final String SUPPRESS_JAKARTA_DATA_METAMODEL = "suppressJakartaDataMetamodel";
134+
126135
private static final boolean ALLOW_OTHER_PROCESSORS_TO_CLAIM_ANNOTATIONS = false;
127136

128137
private Context context;
@@ -167,10 +176,13 @@ private boolean handleSettings(ProcessingEnvironment environment) {
167176
context.setAddGeneratedAnnotation( jakartaAnnotationPackage != null );
168177
context.setAddDependentAnnotation( jakartaContextPackage != null );
169178
context.setAddTransactionScopedAnnotation( jakartaTransactionsPackage != null );
170-
context.setGenerateJakartaDataStaticMetamodel( jakartaDataPackage != null );
171179

172180
final Map<String, String> options = environment.getOptions();
173181

182+
boolean suppressJakartaData = parseBoolean( options.get( SUPPRESS_JAKARTA_DATA_METAMODEL ) );
183+
184+
context.setGenerateJakartaDataStaticMetamodel( !suppressJakartaData && jakartaDataPackage != null );
185+
174186
String setting = options.get( ADD_GENERATED_ANNOTATION );
175187
if ( setting != null ) {
176188
context.setAddGeneratedAnnotation( parseBoolean( setting ) );
@@ -214,12 +226,19 @@ else if ( context.isFullyXmlConfigured() ) {
214226
createMetaModelClasses();
215227
}
216228
catch (Exception e) {
229+
final StringBuffer b = new StringBuffer();
230+
Arrays.stream(e.getStackTrace())
231+
.forEach(stackTraceElement -> {
232+
b.append(stackTraceElement);
233+
b.append('\n');
234+
});
217235
final Throwable cause = e.getCause();
218236
final String message =
219237
cause != null && cause != e
220238
? e.getMessage() + " caused by " + cause.getMessage()
221239
: e.getMessage();
222240
context.logMessage( Diagnostic.Kind.ERROR, "Error generating JPA metamodel: " + message );
241+
context.logMessage( Diagnostic.Kind.ERROR, b.toString() );
223242
}
224243
}
225244
return ALLOW_OTHER_PROCESSORS_TO_CLAIM_ANNOTATIONS;

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ public Metamodel getHostingEntity() {
7070

7171
@Override
7272
public String getMetaType() {
73-
throw new UnsupportedOperationException();
73+
throw new UnsupportedOperationException("operation not supported");
7474
}
7575

7676
@Override

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public final String getQualifiedName() {
6969

7070
@Override
7171
public @Nullable String getSupertypeName() {
72-
throw new UnsupportedOperationException();
72+
return null;
7373
}
7474

7575
@Override
@@ -157,7 +157,7 @@ public boolean isInjectable() {
157157

158158
@Override
159159
public String scope() {
160-
throw new UnsupportedOperationException();
160+
throw new UnsupportedOperationException("operation not supported");
161161
}
162162

163163
@Override

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public String getAttributeDeclarationString() {
5050

5151
@Override
5252
public String getAttributeNameDeclarationString() {
53-
throw new UnsupportedOperationException();
53+
throw new UnsupportedOperationException("operation not supported");
5454
}
5555

5656
@Override

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ private String getMetaImpl(String className, String memberName) {
122122

123123
@Override
124124
public String getAttributeNameDeclarationString(){
125-
throw new UnsupportedOperationException();
125+
throw new UnsupportedOperationException("operation not supported");
126126
}
127127

128128
@Override

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -114,12 +114,12 @@ private void inject(StringBuilder declaration) {
114114

115115
@Override
116116
public String getAttributeNameDeclarationString() {
117-
throw new UnsupportedOperationException();
117+
throw new UnsupportedOperationException("operation not supported");
118118
}
119119

120120
@Override
121121
public String getMetaType() {
122-
throw new UnsupportedOperationException();
122+
throw new UnsupportedOperationException("operation not supported");
123123
}
124124

125125
@Override

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -127,12 +127,12 @@ private void notNull(StringBuilder declaration) {
127127

128128
@Override
129129
public String getAttributeNameDeclarationString() {
130-
throw new UnsupportedOperationException();
130+
throw new UnsupportedOperationException("operation not supported");
131131
}
132132

133133
@Override
134134
public String getMetaType() {
135-
throw new UnsupportedOperationException();
135+
throw new UnsupportedOperationException("operation not supported");
136136
}
137137

138138
@Override

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public boolean hasStringAttribute() {
3737

3838
@Override
3939
public String getAttributeDeclarationString() {
40-
throw new UnsupportedOperationException();
40+
throw new UnsupportedOperationException("operation not supported");
4141
}
4242

4343
@Override
@@ -62,7 +62,7 @@ private String fieldName() {
6262

6363
@Override
6464
public String getMetaType() {
65-
throw new UnsupportedOperationException();
65+
throw new UnsupportedOperationException("operation not supported");
6666
}
6767

6868
@Override

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -210,12 +210,12 @@ private String parameterType(SqmParameter<?> param) {
210210

211211
@Override
212212
public String getAttributeNameDeclarationString() {
213-
throw new UnsupportedOperationException();
213+
throw new UnsupportedOperationException("operation not supported");
214214
}
215215

216216
@Override
217217
public String getMetaType() {
218-
throw new UnsupportedOperationException();
218+
throw new UnsupportedOperationException("operation not supported");
219219
}
220220

221221
@Override

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -151,12 +151,12 @@ private void notNull(StringBuilder declaration) {
151151

152152
@Override
153153
public String getAttributeNameDeclarationString() {
154-
throw new UnsupportedOperationException();
154+
throw new UnsupportedOperationException("operation not supported");
155155
}
156156

157157
@Override
158158
public String getMetaType() {
159-
throw new UnsupportedOperationException();
159+
throw new UnsupportedOperationException("operation not supported");
160160
}
161161

162162
@Override

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ public SessionFactoryImplementor getFactory() {
8383

8484
@Override
8585
public EntityMetamodel getEntityMetamodel() {
86-
throw new UnsupportedOperationException();
86+
throw new UnsupportedOperationException("operation not supported");
8787
}
8888

8989
@Override

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

+6-6
Original file line numberDiff line numberDiff line change
@@ -401,7 +401,7 @@ public boolean isPreferJavaTimeJdbcTypesEnabled() {
401401

402402
@Override
403403
public FastSessionServices getFastSessionServices() {
404-
throw new UnsupportedOperationException();
404+
throw new UnsupportedOperationException("operation not supported");
405405
}
406406

407407

@@ -410,7 +410,7 @@ public void close() {}
410410

411411
@Override
412412
public RootGraphImplementor<?> findEntityGraphByName(String s) {
413-
throw new UnsupportedOperationException();
413+
throw new UnsupportedOperationException("operation not supported");
414414
}
415415

416416
static Class<?> toPrimitiveClass(Class<?> type) {
@@ -746,7 +746,7 @@ public Map<String, Object> getSettings() {
746746

747747
@Override
748748
public SqlStringGenerationContext getSqlStringGenerationContext() {
749-
throw new UnsupportedOperationException();
749+
throw new UnsupportedOperationException("operation not supported");
750750
}
751751

752752
@Override
@@ -792,7 +792,7 @@ else if (isEntityDefined(queryName)) {
792792

793793
@Override
794794
public <X> ManagedDomainType<X> findManagedType(Class<X> cls) {
795-
throw new UnsupportedOperationException();
795+
throw new UnsupportedOperationException("operation not supported");
796796
}
797797

798798
@Override
@@ -807,12 +807,12 @@ public <X> EntityDomainType<X> findEntityType(Class<X> cls) {
807807

808808
@Override
809809
public <X> ManagedDomainType<X> managedType(Class<X> cls) {
810-
throw new UnsupportedOperationException();
810+
throw new UnsupportedOperationException("operation not supported");
811811
}
812812

813813
@Override
814814
public <X> EntityDomainType<X> entity(Class<X> cls) {
815-
throw new UnsupportedOperationException();
815+
throw new UnsupportedOperationException("operation not supported");
816816
}
817817

818818
@Override

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -637,7 +637,7 @@ public boolean isInjectable() {
637637

638638
@Override
639639
public String scope() {
640-
throw new UnsupportedOperationException();
640+
throw new UnsupportedOperationException("operation not supported");
641641
}
642642

643643
@Override

0 commit comments

Comments
 (0)