Skip to content

Commit 0221a94

Browse files
committed
avoid a lookup by unqualified name that I *think* us unnecessary
cc @cigaly
1 parent 4b5d3d0 commit 0221a94

File tree

5 files changed

+25
-48
lines changed

5 files changed

+25
-48
lines changed

tooling/metamodel-generator/src/main/java/org/hibernate/processor/Context.java

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
import javax.lang.model.element.AnnotationValue;
1818
import javax.lang.model.element.Element;
1919
import javax.lang.model.element.ExecutableElement;
20-
import javax.lang.model.element.ModuleElement;
2120
import javax.lang.model.element.TypeElement;
2221
import javax.lang.model.type.DeclaredType;
2322
import javax.lang.model.type.TypeKind;
@@ -35,7 +34,6 @@
3534
import static java.lang.Boolean.parseBoolean;
3635
import static java.util.Collections.emptyList;
3736
import static org.hibernate.internal.util.collections.ArrayHelper.EMPTY_STRING_ARRAY;
38-
import static org.hibernate.processor.validation.ProcessorSessionFactory.findEntityByUnqualifiedName;
3937

4038
/**
4139
* @author Max Andersen
@@ -533,27 +531,6 @@ private void addEnumValue(String qualifiedTypeName, String value) {
533531
enumTypesByValue.computeIfAbsent( value, s -> new TreeSet<>() ).add( qualifiedTypeName );
534532
}
535533

536-
public @Nullable TypeElement entityType(String entityName) {
537-
final Elements elementUtils = getElementUtils();
538-
final String qualifiedName = qualifiedNameForEntityName(entityName);
539-
if ( qualifiedName != null ) {
540-
return elementUtils.getTypeElement(qualifiedName);
541-
}
542-
TypeElement symbol =
543-
findEntityByUnqualifiedName( entityName,
544-
elementUtils.getModuleElement("") );
545-
if ( symbol != null ) {
546-
return symbol;
547-
}
548-
for ( ModuleElement module : elementUtils.getAllModuleElements() ) {
549-
symbol = findEntityByUnqualifiedName( entityName, module );
550-
if ( symbol != null ) {
551-
return symbol;
552-
}
553-
}
554-
return null;
555-
}
556-
557534
public void setIndexing(boolean index) {
558535
this.indexing = index;
559536
}

tooling/metamodel-generator/src/main/java/org/hibernate/processor/HibernateProcessor.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,7 @@ public class HibernateProcessor extends AbstractProcessor {
201201

202202
private static final boolean ALLOW_OTHER_PROCESSORS_TO_CLAIM_ANNOTATIONS = false;
203203

204+
// dupe of ProcessorSessionFactory.ENTITY_INDEX for reasons of modularity
204205
public static final String ENTITY_INDEX = "entity.index";
205206

206207
private Context context;

tooling/metamodel-generator/src/main/java/org/hibernate/processor/annotation/AnnotationMeta.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ private void handleNamedQuery(AnnotationMirror mirror, boolean checkHql) {
113113
final AnnotationValue annotationValue = getAnnotationValue( mirror, "resultClass" );
114114
final String resultType = annotationValue != null
115115
? annotationValue.getValue().toString()
116-
: resultType( selectStatement, context );
116+
: resultType( selectStatement );
117117
putMember( name,
118118
new NamedQueryMethod(
119119
this,
@@ -128,7 +128,7 @@ private void handleNamedQuery(AnnotationMirror mirror, boolean checkHql) {
128128
);
129129
}
130130
if ( getAnnotationValue( mirror, "resultClass" ) == null ) {
131-
final String resultType = resultType( selectStatement, context );
131+
final String resultType = resultType( selectStatement );
132132
if ( resultType != null ) {
133133
putMember( "QUERY_" + name,
134134
new TypedMetaAttribute( this, name, "QUERY_", resultType,

tooling/metamodel-generator/src/main/java/org/hibernate/processor/util/SqmTypeUtils.java

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,35 +4,33 @@
44
*/
55
package org.hibernate.processor.util;
66

7-
import org.hibernate.processor.Context;
8-
import org.hibernate.query.sqm.SqmExpressible;
7+
import org.hibernate.query.criteria.JpaEntityJoin;
8+
import org.hibernate.query.criteria.JpaRoot;
9+
import org.hibernate.query.criteria.JpaSelection;
10+
import org.hibernate.query.sqm.tree.select.SqmSelectClause;
911
import org.hibernate.query.sqm.tree.select.SqmSelectStatement;
10-
import org.hibernate.query.sqm.tree.select.SqmSelectableNode;
1112

12-
import javax.lang.model.element.TypeElement;
13-
import java.util.List;
1413

1514
public final class SqmTypeUtils {
1615
private SqmTypeUtils() {
1716
}
1817

19-
public static String resultType(SqmSelectStatement<?> selectStatement, Context context) {
20-
final String javaTypeName = selectStatement.getSelection().getJavaTypeName();
21-
if ( javaTypeName != null ) {
22-
return javaTypeName;
18+
public static String resultType(SqmSelectStatement<?> selectStatement) {
19+
final JpaSelection<?> selection = selectStatement.getSelection();
20+
if (selection instanceof SqmSelectClause from) {
21+
return from.getSelectionItems().size() > 1
22+
? "Object[]"
23+
: from.getSelectionItems().get(0).getJavaTypeName();
24+
}
25+
else if (selection instanceof JpaRoot<?> root) {
26+
return root.getJavaTypeName();
27+
}
28+
else if (selection instanceof JpaEntityJoin<?, ?> join) {
29+
return join.getJavaTypeName();
2330
}
2431
else {
25-
final List<SqmSelectableNode<?>> items =
26-
selectStatement.getQuerySpec().getSelectClause().getSelectionItems();
27-
final SqmExpressible<?> expressible;
28-
if ( items.size() == 1 && (expressible = items.get( 0 ).getExpressible()) != null ) {
29-
final String typeName = expressible.getTypeName();
30-
final TypeElement entityType = context.entityType( typeName );
31-
return entityType == null ? typeName : entityType.getQualifiedName().toString();
32-
}
33-
else {
34-
return "Object[]";
35-
}
32+
return selection.getJavaTypeName();
3633
}
3734
}
35+
3836
}

tooling/metamodel-generator/src/main/java/org/hibernate/processor/validation/ProcessorSessionFactory.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,7 @@ private static JdbcType enumJdbcType(Element member) {
215215
: IntegerJdbcType.INSTANCE;
216216
}
217217

218+
// dupe of HibernateProcessor.ENTITY_INDEX for reasons of modularity
218219
public static final String ENTITY_INDEX = "entity.index";
219220

220221
@Override @Nullable
@@ -520,7 +521,7 @@ private TypeElement findEntityByUnqualifiedName(String entityName) {
520521
}
521522

522523
if ( indexing ) {
523-
final TypeElement indexedEntity = findIndexedEntityByQualifiedName( entityName );
524+
final TypeElement indexedEntity = findIndexedEntityByUnqualifiedName( entityName );
524525
if ( indexedEntity != null ) {
525526
entityCache.put(entityName, indexedEntity);
526527
return indexedEntity;
@@ -544,7 +545,7 @@ private TypeElement findEntityByUnqualifiedName(String entityName) {
544545
return null;
545546
}
546547

547-
private @Nullable TypeElement findIndexedEntityByQualifiedName(String entityName) {
548+
private @Nullable TypeElement findIndexedEntityByUnqualifiedName(String entityName) {
548549
final String qualifiedName = entityNameMappings.get(entityName);
549550
if ( qualifiedName != null ) {
550551
return elementUtil.getTypeElement(qualifiedName);
@@ -564,7 +565,7 @@ private TypeElement findEntityByUnqualifiedName(String entityName) {
564565
return null;
565566
}
566567

567-
public static TypeElement findEntityByUnqualifiedName(String entityName, ModuleElement module) {
568+
private static @Nullable TypeElement findEntityByUnqualifiedName(String entityName, ModuleElement module) {
568569
for (Element element: module.getEnclosedElements()) {
569570
if (element.getKind() == ElementKind.PACKAGE) {
570571
final PackageElement pack = (PackageElement) element;

0 commit comments

Comments
 (0)