|
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