Skip to content

Commit

Permalink
Merge branch 'querydsl-7.0' into dependabot/maven/querydsl-7.0/hibern…
Browse files Browse the repository at this point in the history
…ate.version-7.0.0.Beta3
  • Loading branch information
velo authored Jan 17, 2025
2 parents ef24491 + 1fe7f7a commit a58a345
Show file tree
Hide file tree
Showing 11 changed files with 83 additions and 101 deletions.
18 changes: 9 additions & 9 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -108,19 +108,19 @@
<ecj.version>3.40.0</ecj.version>
<jdo.version>3.2.1</jdo.version>
<springboot.version>3.4.1</springboot.version>
<spring.version>6.2.1</spring.version>
<spring.version>6.2.2</spring.version>

<!-- SQL deps -->
<db2.version>12.1.0.0</db2.version>
<derby.version>10.17.1.0</derby.version>
<hsqldb.version>2.7.4</hsqldb.version>
<h2.version>2.3.232</h2.version>
<postgresql.version>42.7.4</postgresql.version>
<postgresql.version>42.7.5</postgresql.version>
<oracle.version>23.6.0.24.10</oracle.version>
<mysql.version>9.1.0</mysql.version>
<mssql.version>12.9.0.jre8-preview</mssql.version>
<cubrid.version>9.3.9.0002</cubrid.version>
<sqlite.version>3.47.1.0</sqlite.version>
<sqlite.version>3.48.0.0</sqlite.version>
<teradata.version>13.10.00.35</teradata.version>
<firebird.version>5.0.6.java11</firebird.version>
<mongodb.version>3.12.14</mongodb.version>
Expand All @@ -134,7 +134,7 @@
<jpa.version>3.2.0</jpa.version>
<jakarta.annotation.version>3.0.0</jakarta.annotation.version>

<assertj.version>3.27.0</assertj.version>
<assertj.version>3.27.2</assertj.version>
<mvn.version>3.9.9</mvn.version>
<guava.version>33.4.0-jre</guava.version>
<codegen.version>0.6.8</codegen.version>
Expand Down Expand Up @@ -284,7 +284,7 @@
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-bom</artifactId>
<version>2024.0.1</version>
<version>2024.0.2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
Expand Down Expand Up @@ -451,7 +451,7 @@
<plugin>
<groupId>com.github.siom79.japicmp</groupId>
<artifactId>japicmp-maven-plugin</artifactId>
<version>0.23.0</version>
<version>0.23.1</version>
<configuration>
<parameter>
<ignoreMissingOldVersion>true</ignoreMissingOldVersion>
Expand Down Expand Up @@ -1011,18 +1011,18 @@
<plugin>
<groupId>org.openrewrite.maven</groupId>
<artifactId>rewrite-maven-plugin</artifactId>
<version>5.47.1</version>
<version>6.0.3</version>

<dependencies>
<dependency>
<groupId>org.openrewrite.recipe</groupId>
<artifactId>rewrite-testing-frameworks</artifactId>
<version>2.24.0</version>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>org.openrewrite.recipe</groupId>
<artifactId>rewrite-migrate-java</artifactId>
<version>2.31.0</version>
<version>3.0.0</version>
</dependency>
</dependencies>

Expand Down
2 changes: 1 addition & 1 deletion querydsl-examples/querydsl-example-jpa-quarkus/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
<name>Querydsl example - JPA Quarkus</name>

<properties>
<quarkus.version>3.17.5</quarkus.version>
<quarkus.version>3.17.7</quarkus.version>
</properties>

<dependencyManagement>
Expand Down
2 changes: 1 addition & 1 deletion querydsl-libraries/querydsl-r2dbc/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@
<dependency>
<groupId>io.asyncer</groupId>
<artifactId>r2dbc-mysql</artifactId>
<version>1.3.0</version>
<version>1.3.1</version>
<scope>test</scope>
</dependency>
<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,11 @@
import java.lang.annotation.Annotation;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.ServiceLoader;
import org.jetbrains.annotations.NotNull;

/**
* {@code AbstractModule} provides a base class for annotation based dependency injection
Expand Down Expand Up @@ -117,45 +119,44 @@ public final <T> T get(Class<T> iface, String name) {
}
}

@SuppressWarnings("unchecked")
private <T> T createInstance(Class<? extends T> implementation) {
Constructor<?> constructor = null;
for (Constructor<?> c : implementation.getConstructors()) {
if (c.isAnnotationPresent(Inject.class)) {
constructor = c;
break;
}
var constructor =
Arrays.stream(implementation.getConstructors())
.filter(c -> c.isAnnotationPresent(Inject.class))
.findFirst()
.orElseGet(() -> fallbackToDefaultConstructor(implementation));

var args = getConstructorParameters(constructor);
try {
//noinspection unchecked
return (T) constructor.newInstance(args);
// TODO : populate fields as well?!?
} catch (InstantiationException | InvocationTargetException | IllegalAccessException e) {
throw new RuntimeException(e);
}
}

// fallback to default constructor
if (constructor == null) {
try {
constructor = implementation.getConstructor();
} catch (SecurityException | NoSuchMethodException e) {
throw new RuntimeException(e);
private Object @NotNull [] getConstructorParameters(Constructor<?> constructor) {
Class<?>[] parameterTypes = constructor.getParameterTypes();
Annotation[][] parameterAnnotations = constructor.getParameterAnnotations();
var args = new Object[parameterTypes.length];
for (var i = 0; i < parameterTypes.length; i++) {
var named = getNamedAnnotation(parameterAnnotations[i]);
if (named != null) {
args[i] = get(parameterTypes[i], named.value());
} else {
args[i] = get(parameterTypes[i]);
}
}
return args;
}

if (constructor != null) {
var args = new Object[constructor.getParameterTypes().length];
for (var i = 0; i < constructor.getParameterTypes().length; i++) {
var named = getNamedAnnotation(constructor.getParameterAnnotations()[i]);
if (named != null) {
args[i] = get(constructor.getParameterTypes()[i], named.value());
} else {
args[i] = get(constructor.getParameterTypes()[i]);
}
}
try {
return (T) constructor.newInstance(args);
// TODO : populate fields as well?!?
} catch (InstantiationException | InvocationTargetException | IllegalAccessException e) {
throw new RuntimeException(e);
}

} else {
throw new IllegalArgumentException(
"Got no annotated constructor for " + implementation.getName());
private static <T> @NotNull Constructor<? extends T> fallbackToDefaultConstructor(
Class<? extends T> implementation) {
try {
return implementation.getConstructor();
} catch (SecurityException | NoSuchMethodException e) {
throw new RuntimeException(e);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
import java.lang.annotation.Annotation;

/**
* {@code AnnotationHelper} defines a interface to provide custom annotation processing for {@link
* {@code AnnotationHelper} defines an interface to provide custom annotation processing for {@link
* TypeFactory}.
*
* @author dyorgio
Expand All @@ -36,7 +36,7 @@ public interface AnnotationHelper {
* Get specific object that will be used as part of type cache key.
*
* @param annotation Annotation instance.
* @return Any object, normally a annotation param. Can be {@code null}.
* @return Any object, normally an annotation param. Can be {@code null}.
*/
Object getCustomKey(Annotation annotation);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,12 +48,7 @@ public class BeanSerializer implements Serializer {
public static final boolean DEFAULT_PROPERTY_ANNOTATIONS = true;

private static final Function<Property, Parameter> propertyToParameter =
new Function<>() {
@Override
public Parameter apply(Property input) {
return new Parameter(input.getName(), input.getType());
}
};
input -> new Parameter(input.getName(), input.getType());
private final Class<? extends Annotation> generatedAnnotationClass;

private final boolean propertyAnnotations;
Expand Down Expand Up @@ -242,7 +237,7 @@ protected void addFullConstructor(EntityType model, CodeWriter writer) throws IO
writer.end();

// full constructor
writer.beginConstructor(model.getProperties(), propertyToParameter::apply);
writer.beginConstructor(model.getProperties(), propertyToParameter);
for (Property property : model.getProperties()) {
writer.line("this.", property.getEscapedName(), " = ", property.getEscapedName(), ";");
}
Expand Down
2 changes: 1 addition & 1 deletion querydsl-tooling/querydsl-ksp-codegen/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@
<dependency>
<groupId>io.mockk</groupId>
<artifactId>mockk-jvm</artifactId>
<version>1.13.14</version>
<version>1.13.16</version>
<scope>test</scope>
</dependency>
<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,6 @@
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashSet;
Expand Down Expand Up @@ -169,7 +168,7 @@ private String normalizePackage(String packageName, SchemaAndTable schemaAndTabl
protected Property createProperty(
EntityType classModel, String normalizedColumnName, String propertyName, Type typeModel) {
return new Property(
classModel, propertyName, propertyName, typeModel, Collections.<String>emptyList(), false);
classModel, propertyName, propertyName, typeModel, Collections.emptyList(), false);
}

/**
Expand All @@ -184,8 +183,8 @@ public void export(DatabaseMetaData md) throws SQLException {

if (config.getNamingStrategyClass() != null) {
try {
namingStrategy = config.getNamingStrategyClass().newInstance();
} catch (InstantiationException | IllegalAccessException e) {
namingStrategy = config.getNamingStrategyClass().getDeclaredConstructor().newInstance();
} catch (ReflectiveOperationException e) {
throw new RuntimeException(e);
}
} else {
Expand Down Expand Up @@ -308,8 +307,8 @@ private void configureModule() {
serializer = new BeanSerializer();
} else {
try {
serializer = config.getBeanSerializerClass().newInstance();
} catch (InstantiationException | IllegalAccessException e) {
serializer = config.getBeanSerializerClass().getDeclaredConstructor().newInstance();
} catch (ReflectiveOperationException e) {
throw new RuntimeException(e);
}
}
Expand Down Expand Up @@ -338,8 +337,11 @@ private void configureModule() {
for (CustomType cl : config.getCustomTypes()) {
try {
configuration.register(
(com.querydsl.sql.types.Type) Class.forName(cl.getClassName()).newInstance());
} catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
Class.forName(cl.getClassName())
.asSubclass(com.querydsl.sql.types.Type.class)
.getDeclaredConstructor()
.newInstance());
} catch (ReflectiveOperationException e) {
throw new RuntimeException(e);
}
}
Expand All @@ -361,9 +363,7 @@ private void configureModule() {
}

if (config.getColumnComparatorClass() != null) {
module.bind(
SQLCodegenModule.COLUMN_COMPARATOR,
config.getColumnComparatorClass().asSubclass(Comparator.class));
module.bind(SQLCodegenModule.COLUMN_COMPARATOR, config.getColumnComparatorClass());
}

if (config.getSerializerClass() != null) {
Expand Down Expand Up @@ -596,7 +596,7 @@ private void write(Serializer serializer, File targetFile, EntityType type) thro
var generate = true;
var bytes = w.toString().getBytes(config.getSourceEncoding());
if (targetFile.exists() && targetFile.length() == bytes.length) {
var str = new String(Files.readAllBytes(targetFile.toPath()), config.getSourceEncoding());
var str = Files.readString(targetFile.toPath(), config.getSourceEncoding());
if (str.equals(w.toString())) {
generate = false;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@

import com.querydsl.codegen.Property;
import com.querydsl.sql.ColumnMetadata;
import java.util.Arrays;
import java.util.Comparator;

/** Compares {@link Property} instances based on their ordinal position in the table */
Expand All @@ -27,13 +26,12 @@ public OrdinalPositionComparator() {

@Override
public int compare(Property property1, Property property2) {
Integer comparison = null;
for (Property property : Arrays.asList(property1, property2)) {
var data = property.getData();
var columnMetadata = (ColumnMetadata) data.get("COLUMN");
var index = columnMetadata.getIndex();
comparison = comparison == null ? index : comparison - index;
}
return comparison;
return getOrdinalPosition(property1) - getOrdinalPosition(property2);
}

private static int getOrdinalPosition(Property property) {
var data = property.getData();
var columnMetadata = (ColumnMetadata) data.get("COLUMN");
return columnMetadata.getIndex();
}
}
Loading

0 comments on commit a58a345

Please sign in to comment.