Skip to content

Commit f230086

Browse files
committed
simplifications in TypeUtils
1 parent f35e5ac commit f230086

File tree

4 files changed

+42
-31
lines changed

4 files changed

+42
-31
lines changed

Diff for: tooling/metamodel-generator/src/main/java/org/hibernate/processor/annotation/AnnotationMetaAttribute.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ public String getAttributeNameDeclarationString(){
8484

8585
@Override
8686
public String getPropertyName() {
87-
return propertyName(parent, element);
87+
return propertyName(element);
8888
}
8989

9090
@Override

Diff for: tooling/metamodel-generator/src/main/java/org/hibernate/processor/annotation/AnnotationMetaEntity.java

+5-4
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import org.hibernate.processor.model.Metamodel;
1818
import org.hibernate.processor.util.AccessTypeInformation;
1919
import org.hibernate.processor.util.Constants;
20+
import org.hibernate.processor.util.TypeUtils;
2021
import org.hibernate.processor.validation.ProcessorSessionFactory;
2122
import org.hibernate.processor.validation.Validation;
2223
import org.hibernate.query.criteria.JpaEntityJoin;
@@ -469,15 +470,15 @@ private void addIdClassIfNeeded(List<? extends Element> fields, List<? extends E
469470
final List<MetaAttribute> components = new ArrayList<>();
470471
for ( Element field : fields ) {
471472
if ( hasAnnotation( field, ID ) && isPersistent( field, AccessType.FIELD ) ) {
472-
final String propertyName = propertyName( this, field );
473+
final String propertyName = propertyName( field );
473474
if ( members.containsKey( propertyName ) ) {
474475
components.add( members.get( propertyName ) );
475476
}
476477
}
477478
}
478479
for ( Element method : methods ) {
479480
if ( hasAnnotation( method, ID ) && isPersistent( method, AccessType.PROPERTY ) ) {
480-
final String propertyName = propertyName( this, method );
481+
final String propertyName = propertyName( method );
481482
if ( members.containsKey( propertyName ) ) {
482483
components.add( members.get( propertyName ) );
483484
}
@@ -1037,7 +1038,7 @@ private void validateBidirectionalMapping(
10371038
return;
10381039
}
10391040
for ( Element member : context.getAllMembers( assocTypeElement ) ) {
1040-
if ( propertyName( this, member ).contentEquals( mappedBy )
1041+
if ( propertyName( member ).contentEquals( mappedBy )
10411042
&& compatibleAccess( assocTypeElement, member ) ) {
10421043
validateBackRef( memberOfClass, annotation, assocTypeElement, member, annotationVal );
10431044
return;
@@ -2965,7 +2966,7 @@ private List<String> parameterNames(ExecutableElement method, TypeElement entity
29652966
// account for special @By("#id") hack in Jakarta Data
29662967
entity.getEnclosedElements().stream()
29672968
.filter(member -> hasAnnotation(member, ID))
2968-
.map(member -> propertyName(this, member))
2969+
.map(TypeUtils::propertyName)
29692970
.findFirst()
29702971
.orElse("id");
29712972
return method.getParameters().stream()

Diff for: tooling/metamodel-generator/src/main/java/org/hibernate/processor/annotation/DataAnnotationMetaAttribute.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ private String fieldName() {
9999

100100
@Override
101101
public String getPropertyName() {
102-
final String propertyName = propertyName(parent, element);
102+
final String propertyName = propertyName(element);
103103
return path == null ? propertyName : path + '.' + propertyName;
104104
}
105105

Diff for: tooling/metamodel-generator/src/main/java/org/hibernate/processor/util/TypeUtils.java

+35-25
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import org.checkerframework.checker.nullness.qual.Nullable;
99
import org.hibernate.processor.Context;
1010
import org.hibernate.processor.MetaModelGenerationException;
11-
import org.hibernate.processor.annotation.AnnotationMetaEntity;
1211
import org.hibernate.processor.model.Metamodel;
1312

1413
import javax.lang.model.element.AnnotationMirror;
@@ -28,7 +27,6 @@
2827
import javax.lang.model.type.TypeVariable;
2928
import javax.lang.model.type.WildcardType;
3029
import javax.lang.model.util.ElementFilter;
31-
import javax.lang.model.util.Elements;
3230
import javax.lang.model.util.SimpleTypeVisitor8;
3331
import javax.tools.Diagnostic;
3432
import java.util.HashMap;
@@ -582,23 +580,23 @@ else if ( isAnnotationMirrorOfType( mirror, "org.hibernate.annotations.Target")
582580
return null;
583581
}
584582

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() + " */";
602600
}
603601
}
604602

@@ -678,17 +676,29 @@ public static boolean isMemberType(Element element) {
678676
public static String getGeneratedClassFullyQualifiedName(TypeElement typeElement, boolean jakartaDataStyle) {
679677
final String simpleName = typeElement.getSimpleName().toString();
680678
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+
}
685693
}
686694

687695

688696
public static String getGeneratedClassFullyQualifiedName(TypeElement element, String packageName, boolean jakartaDataStyle) {
689697
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 );
692702
if ( !builder.isEmpty() ) {
693703
builder.append( "." );
694704
}

0 commit comments

Comments
 (0)