HHH-17772 add option to suppress JD metamodel
- also squash an error - and improve report bug reporting
This commit is contained in:
parent
582d736062
commit
7e9b55ff92
|
@ -8,7 +8,7 @@ plugins {
|
||||||
id 'org.hibernate.build.xjc-jakarta'
|
id 'org.hibernate.build.xjc-jakarta'
|
||||||
}
|
}
|
||||||
|
|
||||||
description = 'Annotation Processor to generate JPA 2 static metamodel classes'
|
description = 'Hibernate compile-time tooling'
|
||||||
|
|
||||||
apply from: rootProject.file( 'gradle/published-java-module.gradle' )
|
apply from: rootProject.file( 'gradle/published-java-module.gradle' )
|
||||||
apply plugin: 'version-injection'
|
apply plugin: 'version-injection'
|
||||||
|
@ -25,7 +25,6 @@ dependencies {
|
||||||
api jakartaLibs.jaxb
|
api jakartaLibs.jaxb
|
||||||
api jakartaLibs.validation
|
api jakartaLibs.validation
|
||||||
api jakartaLibs.annotation
|
api jakartaLibs.annotation
|
||||||
api jakartaLibs.data
|
|
||||||
api libs.antlrRuntime
|
api libs.antlrRuntime
|
||||||
api libs.byteBuddy
|
api libs.byteBuddy
|
||||||
|
|
||||||
|
@ -41,7 +40,8 @@ sourceSets.main {
|
||||||
|
|
||||||
compileTestJava {
|
compileTestJava {
|
||||||
options.compilerArgs += [
|
options.compilerArgs += [
|
||||||
"-proc:none"
|
"-proc:none",
|
||||||
|
"-AsuppressJakartaDataMetamodel=true"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -63,7 +63,8 @@ if ( jdkVersions.test.release.asInt() >= 17 && jdkVersions.explicit ) {
|
||||||
languageVersion = jdkVersions.test.launcher
|
languageVersion = jdkVersions.test.launcher
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
sourceSets {
|
sourceSets {
|
||||||
test {
|
test {
|
||||||
java {
|
java {
|
||||||
|
|
|
@ -36,8 +36,8 @@ public final class ClassWriter {
|
||||||
public static void writeFile(Metamodel entity, Context context) {
|
public static void writeFile(Metamodel entity, Context context) {
|
||||||
try {
|
try {
|
||||||
String metaModelPackage = entity.getPackageName();
|
String metaModelPackage = entity.getPackageName();
|
||||||
// need to generate the body first, since this will also update the required imports which need to
|
// need to generate the body first, since this will also update
|
||||||
// be written out first
|
// the required imports which need to be written out first
|
||||||
String body = generateBody( entity, context ).toString();
|
String body = generateBody( entity, context ).toString();
|
||||||
|
|
||||||
FileObject fo = context.getProcessingEnvironment().getFiler().createSourceFile(
|
FileObject fo = context.getProcessingEnvironment().getFiler().createSourceFile(
|
||||||
|
|
|
@ -25,6 +25,7 @@ import javax.lang.model.element.TypeElement;
|
||||||
import javax.lang.model.type.TypeKind;
|
import javax.lang.model.type.TypeKind;
|
||||||
import javax.lang.model.type.TypeMirror;
|
import javax.lang.model.type.TypeMirror;
|
||||||
import javax.tools.Diagnostic;
|
import javax.tools.Diagnostic;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -42,6 +43,7 @@ import static org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor.FULLY_ANNOTA
|
||||||
import static org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor.LAZY_XML_PARSING;
|
import static org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor.LAZY_XML_PARSING;
|
||||||
import static org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor.ORM_XML_OPTION;
|
import static org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor.ORM_XML_OPTION;
|
||||||
import static org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor.PERSISTENCE_XML_OPTION;
|
import static org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor.PERSISTENCE_XML_OPTION;
|
||||||
|
import static org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor.SUPPRESS_JAKARTA_DATA_METAMODEL;
|
||||||
import static org.hibernate.jpamodelgen.util.Constants.*;
|
import static org.hibernate.jpamodelgen.util.Constants.*;
|
||||||
import static org.hibernate.jpamodelgen.util.TypeUtils.containsAnnotation;
|
import static org.hibernate.jpamodelgen.util.TypeUtils.containsAnnotation;
|
||||||
import static org.hibernate.jpamodelgen.util.TypeUtils.getAnnotationMirror;
|
import static org.hibernate.jpamodelgen.util.TypeUtils.getAnnotationMirror;
|
||||||
|
@ -77,7 +79,8 @@ import static org.hibernate.jpamodelgen.util.TypeUtils.isClassOrRecordType;
|
||||||
LAZY_XML_PARSING,
|
LAZY_XML_PARSING,
|
||||||
ADD_GENERATION_DATE,
|
ADD_GENERATION_DATE,
|
||||||
ADD_GENERATED_ANNOTATION,
|
ADD_GENERATED_ANNOTATION,
|
||||||
ADD_SUPPRESS_WARNINGS_ANNOTATION
|
ADD_SUPPRESS_WARNINGS_ANNOTATION,
|
||||||
|
SUPPRESS_JAKARTA_DATA_METAMODEL
|
||||||
})
|
})
|
||||||
public class JPAMetaModelEntityProcessor extends AbstractProcessor {
|
public class JPAMetaModelEntityProcessor extends AbstractProcessor {
|
||||||
|
|
||||||
|
@ -123,6 +126,12 @@ public class JPAMetaModelEntityProcessor extends AbstractProcessor {
|
||||||
*/
|
*/
|
||||||
public static final String ADD_SUPPRESS_WARNINGS_ANNOTATION = "addSuppressWarningsAnnotation";
|
public static final String ADD_SUPPRESS_WARNINGS_ANNOTATION = "addSuppressWarningsAnnotation";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Option to suppress generation of the Jakarta Data static metamodel,
|
||||||
|
* even when Jakarta Data is available on the build path.
|
||||||
|
*/
|
||||||
|
public static final String SUPPRESS_JAKARTA_DATA_METAMODEL = "suppressJakartaDataMetamodel";
|
||||||
|
|
||||||
private static final boolean ALLOW_OTHER_PROCESSORS_TO_CLAIM_ANNOTATIONS = false;
|
private static final boolean ALLOW_OTHER_PROCESSORS_TO_CLAIM_ANNOTATIONS = false;
|
||||||
|
|
||||||
private Context context;
|
private Context context;
|
||||||
|
@ -167,10 +176,13 @@ public class JPAMetaModelEntityProcessor extends AbstractProcessor {
|
||||||
context.setAddGeneratedAnnotation( jakartaAnnotationPackage != null );
|
context.setAddGeneratedAnnotation( jakartaAnnotationPackage != null );
|
||||||
context.setAddDependentAnnotation( jakartaContextPackage != null );
|
context.setAddDependentAnnotation( jakartaContextPackage != null );
|
||||||
context.setAddTransactionScopedAnnotation( jakartaTransactionsPackage != null );
|
context.setAddTransactionScopedAnnotation( jakartaTransactionsPackage != null );
|
||||||
context.setGenerateJakartaDataStaticMetamodel( jakartaDataPackage != null );
|
|
||||||
|
|
||||||
final Map<String, String> options = environment.getOptions();
|
final Map<String, String> options = environment.getOptions();
|
||||||
|
|
||||||
|
boolean suppressJakartaData = parseBoolean( options.get( SUPPRESS_JAKARTA_DATA_METAMODEL ) );
|
||||||
|
|
||||||
|
context.setGenerateJakartaDataStaticMetamodel( !suppressJakartaData && jakartaDataPackage != null );
|
||||||
|
|
||||||
String setting = options.get( ADD_GENERATED_ANNOTATION );
|
String setting = options.get( ADD_GENERATED_ANNOTATION );
|
||||||
if ( setting != null ) {
|
if ( setting != null ) {
|
||||||
context.setAddGeneratedAnnotation( parseBoolean( setting ) );
|
context.setAddGeneratedAnnotation( parseBoolean( setting ) );
|
||||||
|
@ -214,12 +226,19 @@ public class JPAMetaModelEntityProcessor extends AbstractProcessor {
|
||||||
createMetaModelClasses();
|
createMetaModelClasses();
|
||||||
}
|
}
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
|
final StringBuffer b = new StringBuffer();
|
||||||
|
Arrays.stream(e.getStackTrace())
|
||||||
|
.forEach(stackTraceElement -> {
|
||||||
|
b.append(stackTraceElement);
|
||||||
|
b.append('\n');
|
||||||
|
});
|
||||||
final Throwable cause = e.getCause();
|
final Throwable cause = e.getCause();
|
||||||
final String message =
|
final String message =
|
||||||
cause != null && cause != e
|
cause != null && cause != e
|
||||||
? e.getMessage() + " caused by " + cause.getMessage()
|
? e.getMessage() + " caused by " + cause.getMessage()
|
||||||
: e.getMessage();
|
: e.getMessage();
|
||||||
context.logMessage( Diagnostic.Kind.ERROR, "Error generating JPA metamodel: " + message );
|
context.logMessage( Diagnostic.Kind.ERROR, "Error generating JPA metamodel: " + message );
|
||||||
|
context.logMessage( Diagnostic.Kind.ERROR, b.toString() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ALLOW_OTHER_PROCESSORS_TO_CLAIM_ANNOTATIONS;
|
return ALLOW_OTHER_PROCESSORS_TO_CLAIM_ANNOTATIONS;
|
||||||
|
|
|
@ -70,7 +70,7 @@ public abstract class AbstractQueryMethod implements MetaAttribute {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getMetaType() {
|
public String getMetaType() {
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException("operation not supported");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -69,7 +69,7 @@ public class AnnotationMetaPackage extends AnnotationMeta {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @Nullable String getSupertypeName() {
|
public @Nullable String getSupertypeName() {
|
||||||
throw new UnsupportedOperationException();
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -157,7 +157,7 @@ public class AnnotationMetaPackage extends AnnotationMeta {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String scope() {
|
public String scope() {
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException("operation not supported");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -50,7 +50,7 @@ public class AnnotationMetaType implements MetaAttribute {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getAttributeNameDeclarationString() {
|
public String getAttributeNameDeclarationString() {
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException("operation not supported");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -122,7 +122,7 @@ public class DataAnnotationMetaAttribute implements MetaAttribute {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getAttributeNameDeclarationString(){
|
public String getAttributeNameDeclarationString(){
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException("operation not supported");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -114,12 +114,12 @@ public class DefaultConstructor implements MetaAttribute {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getAttributeNameDeclarationString() {
|
public String getAttributeNameDeclarationString() {
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException("operation not supported");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getMetaType() {
|
public String getMetaType() {
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException("operation not supported");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -127,12 +127,12 @@ public class LifecycleMethod implements MetaAttribute {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getAttributeNameDeclarationString() {
|
public String getAttributeNameDeclarationString() {
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException("operation not supported");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getMetaType() {
|
public String getMetaType() {
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException("operation not supported");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -37,7 +37,7 @@ class NameMetaAttribute implements MetaAttribute {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getAttributeDeclarationString() {
|
public String getAttributeDeclarationString() {
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException("operation not supported");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -62,7 +62,7 @@ class NameMetaAttribute implements MetaAttribute {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getMetaType() {
|
public String getMetaType() {
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException("operation not supported");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -210,12 +210,12 @@ class NamedQueryMethod implements MetaAttribute {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getAttributeNameDeclarationString() {
|
public String getAttributeNameDeclarationString() {
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException("operation not supported");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getMetaType() {
|
public String getMetaType() {
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException("operation not supported");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -151,12 +151,12 @@ public class RepositoryConstructor implements MetaAttribute {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getAttributeNameDeclarationString() {
|
public String getAttributeNameDeclarationString() {
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException("operation not supported");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getMetaType() {
|
public String getMetaType() {
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException("operation not supported");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -83,7 +83,7 @@ public abstract class MockEntityPersister implements EntityPersister, Queryable,
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EntityMetamodel getEntityMetamodel() {
|
public EntityMetamodel getEntityMetamodel() {
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException("operation not supported");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -401,7 +401,7 @@ public abstract class MockSessionFactory
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FastSessionServices getFastSessionServices() {
|
public FastSessionServices getFastSessionServices() {
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException("operation not supported");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -410,7 +410,7 @@ public abstract class MockSessionFactory
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public RootGraphImplementor<?> findEntityGraphByName(String s) {
|
public RootGraphImplementor<?> findEntityGraphByName(String s) {
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException("operation not supported");
|
||||||
}
|
}
|
||||||
|
|
||||||
static Class<?> toPrimitiveClass(Class<?> type) {
|
static Class<?> toPrimitiveClass(Class<?> type) {
|
||||||
|
@ -746,7 +746,7 @@ public abstract class MockSessionFactory
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SqlStringGenerationContext getSqlStringGenerationContext() {
|
public SqlStringGenerationContext getSqlStringGenerationContext() {
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException("operation not supported");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -792,7 +792,7 @@ public abstract class MockSessionFactory
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <X> ManagedDomainType<X> findManagedType(Class<X> cls) {
|
public <X> ManagedDomainType<X> findManagedType(Class<X> cls) {
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException("operation not supported");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -807,12 +807,12 @@ public abstract class MockSessionFactory
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <X> ManagedDomainType<X> managedType(Class<X> cls) {
|
public <X> ManagedDomainType<X> managedType(Class<X> cls) {
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException("operation not supported");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <X> EntityDomainType<X> entity(Class<X> cls) {
|
public <X> EntityDomainType<X> entity(Class<X> cls) {
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException("operation not supported");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -637,7 +637,7 @@ public class XmlMetaEntity implements Metamodel {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String scope() {
|
public String scope() {
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException("operation not supported");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in New Issue