minor code style issues in the query validator

This commit is contained in:
Gavin King 2024-11-22 13:56:44 +01:00
parent b9274f5b75
commit e7c3f52499
3 changed files with 128 additions and 160 deletions

View File

@ -149,7 +149,7 @@ public abstract class MockEntityPersister implements EntityPersister, Joinable,
@Override @Override
public Set<String> getSubclassEntityNames() { public Set<String> getSubclassEntityNames() {
Set<String> names = new HashSet<>(); final Set<String> names = new HashSet<>();
names.add( entityName ); names.add( entityName );
for (MockEntityPersister persister : factory.getMockEntityPersisters()) { for (MockEntityPersister persister : factory.getMockEntityPersisters()) {
if (persister.isSubclassPersister(this)) { if (persister.isSubclassPersister(this)) {

View File

@ -257,21 +257,15 @@ public abstract class MockSessionFactory
} }
static CollectionType createCollectionType(String role, String name) { static CollectionType createCollectionType(String role, String name) {
switch (name) { return switch ( name ) {
case "Set": case "Set", "SortedSet" ->
case "SortedSet":
//might actually be a bag! //might actually be a bag!
//TODO: look for @OrderColumn on the property //TODO: look for @OrderColumn on the property
return new SetType(role, null); new SetType( role, null );
case "List": case "List", "SortedList" -> new ListType( role, null );
case "SortedList": case "Map", "SortedMap" -> new MapType( role, null );
return new ListType(role, null); default -> new BagType( role, null );
case "Map": };
case "SortedMap":
return new MapType(role, null);
default:
return new BagType(role, null);
}
} }
/** /**
@ -456,26 +450,17 @@ public abstract class MockSessionFactory
} }
static Class<?> toPrimitiveClass(Class<?> type) { static Class<?> toPrimitiveClass(Class<?> type) {
switch (type.getName()) { return switch ( type.getName() ) {
case "java.lang.Boolean": case "java.lang.Boolean" -> boolean.class;
return boolean.class; case "java.lang.Character" -> char.class;
case "java.lang.Character": case "java.lang.Integer" -> int.class;
return char.class; case "java.lang.Short" -> short.class;
case "java.lang.Integer": case "java.lang.Byte" -> byte.class;
return int.class; case "java.lang.Long" -> long.class;
case "java.lang.Short": case "java.lang.Float" -> float.class;
return short.class; case "java.lang.Double" -> double.class;
case "java.lang.Byte": default -> Object.class;
return byte.class; };
case "java.lang.Long":
return long.class;
case "java.lang.Float":
return float.class;
case "java.lang.Double":
return double.class;
default:
return Object.class;
}
} }
@Override @Override
@ -539,7 +524,7 @@ public abstract class MockSessionFactory
@Override @Override
public RuntimeMetamodelsImplementor getRuntimeMetamodels() { public RuntimeMetamodelsImplementor getRuntimeMetamodels() {
RuntimeMetamodelsImpl runtimeMetamodels = new RuntimeMetamodelsImpl(); final RuntimeMetamodelsImpl runtimeMetamodels = new RuntimeMetamodelsImpl();
runtimeMetamodels.setJpaMetamodel( metamodel.getJpaMetamodel() ); runtimeMetamodels.setJpaMetamodel( metamodel.getJpaMetamodel() );
runtimeMetamodels.setMappingMetamodel( metamodel ); runtimeMetamodels.setMappingMetamodel( metamodel );
return runtimeMetamodels; return runtimeMetamodels;
@ -789,12 +774,9 @@ public abstract class MockSessionFactory
@Override @Override
public EntityDomainType<?> entity(String entityName) { public EntityDomainType<?> entity(String entityName) {
if ( isEntityDefined(entityName) ) { return isEntityDefined( entityName )
return new MockEntityDomainType<>(entityName); ? new MockEntityDomainType<>( entityName )
} : null;
else {
return null;
}
} }
@Override @Override
@ -805,7 +787,9 @@ public abstract class MockSessionFactory
else if (isEntityDefined(queryName)) { else if (isEntityDefined(queryName)) {
return qualifyName(queryName); return qualifyName(queryName);
} }
return null; else {
return null;
}
} }
@Override @Override
@ -822,12 +806,9 @@ public abstract class MockSessionFactory
@Override @Override
public <X> EntityDomainType<X> findEntityType(Class<X> cls) { public <X> EntityDomainType<X> findEntityType(Class<X> cls) {
if ( isEntityDefined( cls.getName() ) ) { return isEntityDefined( cls.getName() )
return new MockEntityDomainType<>( cls.getName() ); ? new MockEntityDomainType<X>( cls.getName() )
} : null;
else {
return null;
}
} }
@Override @Override
@ -843,7 +824,7 @@ public abstract class MockSessionFactory
@Override @Override
public EnumJavaType<?> getEnumType(String className) { public EnumJavaType<?> getEnumType(String className) {
if ( isEnum(className) ) { if ( isEnum(className) ) {
return new EnumJavaType( Enum.class ) { return new EnumJavaType<>( Enum.class ) {
@Override @Override
public String getTypeName() { public String getTypeName() {
return className; return className;
@ -857,10 +838,9 @@ public abstract class MockSessionFactory
@Override @Override
public JavaType<?> getJavaConstantType(String className, String fieldName) { public JavaType<?> getJavaConstantType(String className, String fieldName) {
final Class<?> fieldType = javaConstantType( className, fieldName );
return MockSessionFactory.this.getTypeConfiguration() return MockSessionFactory.this.getTypeConfiguration()
.getJavaTypeRegistry() .getJavaTypeRegistry()
.getDescriptor( fieldType ); .getDescriptor( javaConstantType( className, fieldName ) );
} }
@Override @Override
@ -898,7 +878,7 @@ public abstract class MockSessionFactory
@Override @Override
public PersistentAttribute<X,?> findDeclaredAttribute(String name) { public PersistentAttribute<X,?> findDeclaredAttribute(String name) {
String typeName = getTypeName(); final String typeName = getTypeName();
return isFieldDefined(typeName, name) return isFieldDefined(typeName, name)
? createAttribute(name, typeName, propertyType(typeName, name), this) ? createAttribute(name, typeName, propertyType(typeName, name), this)
: null; : null;
@ -946,21 +926,21 @@ public abstract class MockSessionFactory
if (type == null) { if (type == null) {
return null; return null;
} }
else if (type instanceof BasicDomainType) { else if (type instanceof BasicDomainType<?> basicDomainType) {
return new BasicSqmPathSource<>( return new BasicSqmPathSource<>(
EntityIdentifierMapping.ID_ROLE_NAME, EntityIdentifierMapping.ID_ROLE_NAME,
null, null,
(BasicDomainType<?>) type, basicDomainType,
MockEntityDomainType.this.getExpressibleJavaType(), MockEntityDomainType.this.getExpressibleJavaType(),
Bindable.BindableType.SINGULAR_ATTRIBUTE, Bindable.BindableType.SINGULAR_ATTRIBUTE,
false false
); );
} }
else if (type instanceof EmbeddableDomainType) { else if (type instanceof EmbeddableDomainType<?> embeddableDomainType) {
return new EmbeddedSqmPathSource<>( return new EmbeddedSqmPathSource<>(
EntityIdentifierMapping.ID_ROLE_NAME, EntityIdentifierMapping.ID_ROLE_NAME,
null, null,
(EmbeddableDomainType<?>) type, embeddableDomainType,
Bindable.BindableType.SINGULAR_ATTRIBUTE, Bindable.BindableType.SINGULAR_ATTRIBUTE,
false false
); );
@ -982,8 +962,8 @@ public abstract class MockSessionFactory
if ( source != null ) { if ( source != null ) {
return source; return source;
} }
String supertype = MockSessionFactory.this.getSupertype(getHibernateEntityName()); final String supertype = MockSessionFactory.this.getSupertype(getHibernateEntityName());
PersistentAttribute<? super Object, ?> superattribute final PersistentAttribute<? super Object, ?> superattribute
= new MockMappedDomainType<>(supertype).findAttribute(name); = new MockMappedDomainType<>(supertype).findAttribute(name);
if (superattribute != null) { if (superattribute != null) {
return (SqmPathSource<?>) superattribute; return (SqmPathSource<?>) superattribute;
@ -991,7 +971,7 @@ public abstract class MockSessionFactory
for (Map.Entry<String, MockEntityPersister> entry : entityPersistersByName.entrySet()) { for (Map.Entry<String, MockEntityPersister> entry : entityPersistersByName.entrySet()) {
if (!entry.getValue().getEntityName().equals(getHibernateEntityName()) if (!entry.getValue().getEntityName().equals(getHibernateEntityName())
&& isSubtype(entry.getValue().getEntityName(), getHibernateEntityName())) { && isSubtype(entry.getValue().getEntityName(), getHibernateEntityName())) {
PersistentAttribute<? super Object, ?> subattribute final PersistentAttribute<? super Object, ?> subattribute
= new MockEntityDomainType<>(entry.getValue().getEntityName()).findAttribute(name); = new MockEntityDomainType<>(entry.getValue().getEntityName()).findAttribute(name);
if (subattribute != null) { if (subattribute != null) {
return (SqmPathSource<?>) subattribute; return (SqmPathSource<?>) subattribute;
@ -1003,12 +983,12 @@ public abstract class MockSessionFactory
@Override @Override
public PersistentAttribute<? super X, ?> findAttribute(String name) { public PersistentAttribute<? super X, ?> findAttribute(String name) {
PersistentAttribute<? super X, ?> attribute = super.findAttribute(name); final PersistentAttribute<? super X, ?> attribute = super.findAttribute(name);
if (attribute != null) { if (attribute != null) {
return attribute; return attribute;
} }
String supertype = MockSessionFactory.this.getSupertype(getHibernateEntityName()); final String supertype = MockSessionFactory.this.getSupertype(getHibernateEntityName());
PersistentAttribute<? super Object, ?> superattribute final PersistentAttribute<? super Object, ?> superattribute
= new MockMappedDomainType<>(supertype).findAttribute(name); = new MockMappedDomainType<>(supertype).findAttribute(name);
if (superattribute != null) { if (superattribute != null) {
return superattribute; return superattribute;
@ -1018,7 +998,7 @@ public abstract class MockSessionFactory
@Override @Override
public PersistentAttribute<X,?> findDeclaredAttribute(String name) { public PersistentAttribute<X,?> findDeclaredAttribute(String name) {
String entityName = getHibernateEntityName(); final String entityName = getHibernateEntityName();
return isAttributeDefined(entityName, name) return isAttributeDefined(entityName, name)
? createAttribute(name, entityName, getReferencedPropertyType(entityName, name), this) ? createAttribute(name, entityName, getReferencedPropertyType(entityName, name), this)
: null; : null;
@ -1030,7 +1010,7 @@ public abstract class MockSessionFactory
throw new UnsupportedOperationException(entityName + "." + name); throw new UnsupportedOperationException(entityName + "." + name);
} }
else if ( type.isCollectionType() ) { else if ( type.isCollectionType() ) {
CollectionType collectionType = (CollectionType) type; final CollectionType collectionType = (CollectionType) type;
return createPluralAttribute(collectionType, entityName, name, owner); return createPluralAttribute(collectionType, entityName, name, owner);
} }
else if ( type.isEntityType() ) { else if ( type.isEntityType() ) {
@ -1049,7 +1029,7 @@ public abstract class MockSessionFactory
); );
} }
else if ( type.isComponentType() ) { else if ( type.isComponentType() ) {
CompositeType compositeType = (CompositeType) type; final CompositeType compositeType = (CompositeType) type;
return new SingularAttributeImpl<>( return new SingularAttributeImpl<>(
owner, owner,
name, name,
@ -1070,8 +1050,8 @@ public abstract class MockSessionFactory
name, name,
AttributeClassification.BASIC, AttributeClassification.BASIC,
(DomainType<?>) type, (DomainType<?>) type,
type instanceof JdbcMapping type instanceof JdbcMapping jdbcMapping
? ((JdbcMapping) type).getJavaTypeDescriptor() ? jdbcMapping.getJavaTypeDescriptor()
: null, : null,
null, null,
false, false,
@ -1084,26 +1064,26 @@ public abstract class MockSessionFactory
} }
private DomainType<?> getElementDomainType(String entityName, CollectionType collectionType, ManagedDomainType<?> owner) { private DomainType<?> getElementDomainType(String entityName, CollectionType collectionType, ManagedDomainType<?> owner) {
Type elementType = collectionType.getElementType(MockSessionFactory.this); final Type elementType = collectionType.getElementType(MockSessionFactory.this);
return getDomainType(entityName, collectionType, owner, elementType); return getDomainType(entityName, collectionType, owner, elementType);
} }
private DomainType<?> getMapKeyDomainType(String entityName, CollectionType collectionType, ManagedDomainType<?> owner) { private DomainType<?> getMapKeyDomainType(String entityName, CollectionType collectionType, ManagedDomainType<?> owner) {
Type keyType = getMappingMetamodel().getCollectionDescriptor( collectionType.getRole() ).getIndexType(); final Type keyType = getMappingMetamodel().getCollectionDescriptor( collectionType.getRole() ).getIndexType();
return getDomainType(entityName, collectionType, owner, keyType); return getDomainType(entityName, collectionType, owner, keyType);
} }
private DomainType<?> getDomainType(String entityName, CollectionType collectionType, ManagedDomainType<?> owner, Type elementType) { private DomainType<?> getDomainType(String entityName, CollectionType collectionType, ManagedDomainType<?> owner, Type elementType) {
if ( elementType.isEntityType() ) { if ( elementType.isEntityType() ) {
String associatedEntityName = collectionType.getAssociatedEntityName(MockSessionFactory.this); final String associatedEntityName = collectionType.getAssociatedEntityName(MockSessionFactory.this);
return new MockEntityDomainType<>(associatedEntityName); return new MockEntityDomainType<>(associatedEntityName);
} }
else if ( elementType.isComponentType() ) { else if ( elementType.isComponentType() ) {
CompositeType compositeType = (CompositeType) elementType; final CompositeType compositeType = (CompositeType) elementType;
return createEmbeddableDomainType(entityName, compositeType, owner); return createEmbeddableDomainType(entityName, compositeType, owner);
} }
else if ( elementType instanceof DomainType ) { else if ( elementType instanceof DomainType<?> domainType ) {
return (DomainType<?>) elementType; return domainType;
} }
else { else {
return OBJECT_BASIC_TYPE; return OBJECT_BASIC_TYPE;
@ -1115,84 +1095,73 @@ public abstract class MockSessionFactory
String entityName, String entityName,
String name, String name,
ManagedDomainType<?> owner) { ManagedDomainType<?> owner) {
Property property = new Property(); final Property property = new Property();
property.setName(name); property.setName(name);
JavaType<Object> collectionJavaType = final JavaType<?> collectionJavaType =
typeConfiguration.getJavaTypeRegistry() typeConfiguration.getJavaTypeRegistry()
.getDescriptor(collectionType.getReturnedClass()); .getDescriptor(collectionType.getReturnedClass());
DomainType<?> elementDomainType = getElementDomainType(entityName, collectionType, owner); final DomainType<?> elementDomainType = getElementDomainType(entityName, collectionType, owner);
CollectionClassification classification = collectionType.getCollectionClassification(); final CollectionClassification classification = collectionType.getCollectionClassification();
switch (classification) { return switch ( classification ) {
case LIST: case LIST -> new ListAttributeImpl(
return new ListAttributeImpl( new PluralAttributeBuilder<>(
new PluralAttributeBuilder<>( collectionJavaType,
collectionJavaType, true,
true, AttributeClassification.MANY_TO_MANY,
AttributeClassification.MANY_TO_MANY, classification,
classification, elementDomainType,
elementDomainType, typeConfiguration.getBasicTypeRegistry()
typeConfiguration.getBasicTypeRegistry() .getRegisteredType( Integer.class ),
.getRegisteredType(Integer.class), owner,
owner, property,
property, null
null ),
), metadataContext
metadataContext );
); case BAG, ID_BAG -> new BagAttributeImpl(
case BAG: new PluralAttributeBuilder<>(
case ID_BAG: collectionJavaType,
return new BagAttributeImpl( true,
new PluralAttributeBuilder<>( AttributeClassification.MANY_TO_MANY,
collectionJavaType, classification,
true, elementDomainType,
AttributeClassification.MANY_TO_MANY, null,
classification, owner,
elementDomainType, property,
null, null
owner, ),
property, metadataContext
null );
), case SET, SORTED_SET, ORDERED_SET -> new SetAttributeImpl(
metadataContext new PluralAttributeBuilder<>(
); collectionJavaType,
case SET: true,
case SORTED_SET: AttributeClassification.MANY_TO_MANY,
case ORDERED_SET: classification,
return new SetAttributeImpl( elementDomainType,
new PluralAttributeBuilder<>( null,
collectionJavaType, owner,
true, property,
AttributeClassification.MANY_TO_MANY, null
classification, ),
elementDomainType, metadataContext
null, );
owner, case MAP, SORTED_MAP, ORDERED_MAP -> new MapAttributeImpl(
property, new PluralAttributeBuilder<>(
null collectionJavaType,
), true,
metadataContext AttributeClassification.MANY_TO_MANY,
); classification,
case MAP: elementDomainType,
case SORTED_MAP: getMapKeyDomainType( entityName, collectionType, owner ),
case ORDERED_MAP: owner,
DomainType<?> keyDomainType = getMapKeyDomainType(entityName, collectionType, owner); property,
return new MapAttributeImpl( null
new PluralAttributeBuilder<>( ),
collectionJavaType, metadataContext
true, );
AttributeClassification.MANY_TO_MANY, default -> null;
classification, };
elementDomainType,
keyDomainType,
owner,
property,
null
),
metadataContext
);
default:
return null;
}
} }
private EmbeddableTypeImpl<?> createEmbeddableDomainType(String entityName, CompositeType compositeType, ManagedDomainType<?> owner) { private EmbeddableTypeImpl<?> createEmbeddableDomainType(String entityName, CompositeType compositeType, ManagedDomainType<?> owner) {

View File

@ -269,11 +269,11 @@ public abstract class ProcessorSessionFactory extends MockSessionFactory {
while (type!=null) { while (type!=null) {
if (isMappedClass(type)) { //ignore unmapped intervening classes if (isMappedClass(type)) { //ignore unmapped intervening classes
AccessType accessType = getAccessType(type, defaultAccessType); final AccessType accessType = getAccessType(type, defaultAccessType);
for (Element member: type.getEnclosedElements()) { for (Element member: type.getEnclosedElements()) {
if (isPersistable(member, accessType)) { if (isPersistable(member, accessType)) {
String name = propertyName(member); final String name = propertyName(member);
Type propertyType = final Type propertyType =
factory.propertyType(member, entityName, factory.propertyType(member, entityName,
qualify(path, name), defaultAccessType); qualify(path, name), defaultAccessType);
if (propertyType != null) { if (propertyType != null) {
@ -292,7 +292,7 @@ public abstract class ProcessorSessionFactory extends MockSessionFactory {
@Override @Override
public int getPropertyIndex(String name) { public int getPropertyIndex(String name) {
String[] names = getPropertyNames(); final String[] names = getPropertyNames();
for ( int i = 0, max = names.length; i < max; i++ ) { for ( int i = 0, max = names.length; i < max; i++ ) {
if ( names[i].equals( name ) ) { if ( names[i].equals( name ) ) {
return i; return i;
@ -504,14 +504,13 @@ public abstract class ProcessorSessionFactory extends MockSessionFactory {
} }
final String qualifiedName = entityNameMappings.get(entityName); final String qualifiedName = entityNameMappings.get(entityName);
if ( qualifiedName != null ) { if ( qualifiedName != null ) {
TypeElement result = elementUtil.getTypeElement(qualifiedName); final TypeElement result = elementUtil.getTypeElement(qualifiedName);
entityCache.put(entityName, result); entityCache.put(entityName, result);
return result; return result;
} }
final StandardLocation location = StandardLocation.SOURCE_OUTPUT; try (Reader reader = filer.getResource( StandardLocation.SOURCE_OUTPUT, ENTITY_INDEX, entityName)
try (Reader reader = filer.getResource(location, ENTITY_INDEX, entityName)
.openReader(true); BufferedReader buffered = new BufferedReader(reader) ) { .openReader(true); BufferedReader buffered = new BufferedReader(reader) ) {
TypeElement result = elementUtil.getTypeElement(buffered.readLine()); final TypeElement result = elementUtil.getTypeElement(buffered.readLine());
entityCache.put(entityName, result); entityCache.put(entityName, result);
return result; return result;
} }
@ -519,7 +518,7 @@ public abstract class ProcessorSessionFactory extends MockSessionFactory {
} }
try (Reader reader = filer.getResource(StandardLocation.CLASS_PATH, ENTITY_INDEX, entityName) try (Reader reader = filer.getResource(StandardLocation.CLASS_PATH, ENTITY_INDEX, entityName)
.openReader(true); BufferedReader buffered = new BufferedReader(reader) ) { .openReader(true); BufferedReader buffered = new BufferedReader(reader) ) {
TypeElement result = elementUtil.getTypeElement(buffered.readLine()); final TypeElement result = elementUtil.getTypeElement(buffered.readLine());
entityCache.put(entityName, result); entityCache.put(entityName, result);
return result; return result;
} }
@ -546,7 +545,7 @@ public abstract class ProcessorSessionFactory extends MockSessionFactory {
public static TypeElement findEntityByUnqualifiedName(String entityName, ModuleElement module) { public static TypeElement findEntityByUnqualifiedName(String entityName, ModuleElement module) {
for (Element element: module.getEnclosedElements()) { for (Element element: module.getEnclosedElements()) {
if (element.getKind() == ElementKind.PACKAGE) { if (element.getKind() == ElementKind.PACKAGE) {
PackageElement pack = (PackageElement) element; final PackageElement pack = (PackageElement) element;
try { try {
for (Element member : pack.getEnclosedElements()) { for (Element member : pack.getEnclosedElements()) {
if (isMatchingEntity(member, entityName)) { if (isMatchingEntity(member, entityName)) {
@ -1085,8 +1084,8 @@ public abstract class ProcessorSessionFactory extends MockSessionFactory {
} }
private static TypeMirror memberType(Element member) { private static TypeMirror memberType(Element member) {
if (member instanceof ExecutableElement) { if (member instanceof ExecutableElement executableElement) {
return ((ExecutableElement) member).getReturnType(); return executableElement.getReturnType();
} }
else if (member instanceof VariableElement) { else if (member instanceof VariableElement) {
return member.asType(); return member.asType();