|
8 | 8 | import org.checkerframework.checker.nullness.qual.Nullable;
|
9 | 9 | import org.hibernate.processor.Context;
|
10 | 10 | import org.hibernate.processor.MetaModelGenerationException;
|
11 |
| -import org.hibernate.processor.annotation.AnnotationMetaEntity; |
12 | 11 | import org.hibernate.processor.model.Metamodel;
|
13 | 12 |
|
14 | 13 | import javax.lang.model.element.AnnotationMirror;
|
|
28 | 27 | import javax.lang.model.type.TypeVariable;
|
29 | 28 | import javax.lang.model.type.WildcardType;
|
30 | 29 | import javax.lang.model.util.ElementFilter;
|
31 |
| -import javax.lang.model.util.Elements; |
32 | 30 | import javax.lang.model.util.SimpleTypeVisitor8;
|
33 | 31 | import javax.tools.Diagnostic;
|
34 | 32 | import java.util.HashMap;
|
@@ -582,23 +580,23 @@ else if ( isAnnotationMirrorOfType( mirror, "org.hibernate.annotations.Target")
|
582 | 580 | return null;
|
583 | 581 | }
|
584 | 582 |
|
585 |
| - public static String propertyName(AnnotationMetaEntity parent, Element element) { |
586 |
| - final Elements elementsUtil = parent.getContext().getElementUtils(); |
587 |
| - if ( element.getKind() == ElementKind.FIELD ) { |
588 |
| - return element.getSimpleName().toString(); |
589 |
| - } |
590 |
| - else if ( element.getKind() == ElementKind.METHOD ) { |
591 |
| - final String name = element.getSimpleName().toString(); |
592 |
| - if ( name.startsWith( "get" ) ) { |
593 |
| - return elementsUtil.getName(decapitalize(name.substring(3))).toString(); |
594 |
| - } |
595 |
| - else if ( name.startsWith( "is" ) ) { |
596 |
| - return elementsUtil.getName(decapitalize(name.substring(2))).toString(); |
597 |
| - } |
598 |
| - return elementsUtil.getName(decapitalize(name)).toString(); |
599 |
| - } |
600 |
| - else { |
601 |
| - return elementsUtil.getName(element.getSimpleName() + "/* " + element.getKind() + " */").toString(); |
| 583 | + public static String propertyName(Element element) { |
| 584 | + switch ( element.getKind() ) { |
| 585 | + case FIELD: |
| 586 | + return element.getSimpleName().toString(); |
| 587 | + case METHOD: |
| 588 | + final Name name = element.getSimpleName(); |
| 589 | + if ( name.length() > 3 && name.subSequence( 0, 3 ).equals( "get" ) ) { |
| 590 | + return decapitalize( name.subSequence( 3, name.length() ).toString() ); |
| 591 | + } |
| 592 | + else if ( name.length() > 2 && name.subSequence( 0, 2 ).equals( "is" ) ) { |
| 593 | + return decapitalize( name.subSequence( 2, name.length() ).toString() ); |
| 594 | + } |
| 595 | + else { |
| 596 | + return decapitalize( name.toString() ); |
| 597 | + } |
| 598 | + default: |
| 599 | + return element.getSimpleName() + "/* " + element.getKind() + " */"; |
602 | 600 | }
|
603 | 601 | }
|
604 | 602 |
|
@@ -678,17 +676,29 @@ public static boolean isMemberType(Element element) {
|
678 | 676 | public static String getGeneratedClassFullyQualifiedName(TypeElement typeElement, boolean jakartaDataStyle) {
|
679 | 677 | final String simpleName = typeElement.getSimpleName().toString();
|
680 | 678 | final Element enclosingElement = typeElement.getEnclosingElement();
|
681 |
| - return (enclosingElement instanceof TypeElement |
682 |
| - ? getGeneratedClassFullyQualifiedName( (TypeElement) enclosingElement, jakartaDataStyle ) |
683 |
| - : ((PackageElement) enclosingElement).getQualifiedName().toString()) |
684 |
| - + "." + (jakartaDataStyle ? '_' + simpleName : simpleName + '_'); |
| 679 | + return qualifiedName( enclosingElement, jakartaDataStyle ) |
| 680 | + + "." + (jakartaDataStyle ? '_' + simpleName : simpleName + '_'); |
| 681 | + } |
| 682 | + |
| 683 | + private static String qualifiedName(Element enclosingElement, boolean jakartaDataStyle) { |
| 684 | + if ( enclosingElement instanceof TypeElement typeElement ) { |
| 685 | + return getGeneratedClassFullyQualifiedName( typeElement, jakartaDataStyle ); |
| 686 | + } |
| 687 | + else if ( enclosingElement instanceof PackageElement packageElement ) { |
| 688 | + return packageElement.getQualifiedName().toString(); |
| 689 | + } |
| 690 | + else { |
| 691 | + throw new MetaModelGenerationException( "Unexpected enclosing element: " + enclosingElement ); |
| 692 | + } |
685 | 693 | }
|
686 | 694 |
|
687 | 695 |
|
688 | 696 | public static String getGeneratedClassFullyQualifiedName(TypeElement element, String packageName, boolean jakartaDataStyle) {
|
689 | 697 | final StringBuilder builder = new StringBuilder( packageName );
|
690 |
| - for ( String s : split( ".", element.getQualifiedName().toString().substring( builder.length() ) ) ) { |
691 |
| - final String part = removeDollar( s ); |
| 698 | + final Name qualifiedName = element.getQualifiedName(); |
| 699 | + final String tail = qualifiedName.subSequence( builder.length(), qualifiedName.length() ).toString(); |
| 700 | + for ( String bit : split( ".", tail ) ) { |
| 701 | + final String part = removeDollar( bit ); |
692 | 702 | if ( !builder.isEmpty() ) {
|
693 | 703 | builder.append( "." );
|
694 | 704 | }
|
|
0 commit comments