Skip to content

Commit 03a4f77

Browse files
committed
testing with individual hibernate versions
1 parent c263cca commit 03a4f77

File tree

20 files changed

+631
-3
lines changed

20 files changed

+631
-3
lines changed

build.gradle.kts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,3 +63,24 @@ jreleaser {
6363
tasks.register<Delete>("cleanAllPublications") {
6464
setDelete(rootProject.layout.buildDirectory.dir("staging-deploy"))
6565
}
66+
67+
allprojects {
68+
apply(plugin = "project-report")
69+
70+
this.task("allDependencies", DependencyReportTask::class) {
71+
evaluationDependsOnChildren()
72+
this.setRenderer(org.gradle.api.tasks.diagnostics.internal.dependencies.AsciiDependencyReportRenderer().apply {
73+
outputFile = file(project.layout.buildDirectory.file("reports/dependencies.txt"))
74+
})
75+
}
76+
}
77+
78+
gradle.projectsEvaluated {
79+
// Make sure tests of individual modules are executed sequentially
80+
val testTasks = subprojects
81+
.flatMap { it.tasks.withType<Test>() }
82+
.sortedBy { it.project.path } // Sort to ensure a consistent order
83+
for (i in 1 until testTasks.size) {
84+
testTasks[i].mustRunAfter(testTasks[i - 1])
85+
}
86+
}

buildSrc/src/main/kotlin/framefork.java.gradle.kts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,3 +37,7 @@ tasks.withType<Javadoc> {
3737
options.encoding = "UTF-8"
3838
(options as StandardJavadocDocletOptions).addStringOption("Xdoclint:none", "-quiet")
3939
}
40+
41+
tasks.named("test") {
42+
outputs.upToDateWhen { false }
43+
}

modules/typed-ids-hibernate-63/build.gradle.kts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,9 @@ dependencies {
66
api(project(":typed-ids"))
77
api(libs.hibernate.orm.v63)
88
api(libs.hypersistence.utils.hibernate63)
9+
api(libs.ateoClassindex)
910

10-
compileOnly(libs.errorprone.annotations)
1111
compileOnly(libs.jetbrains.annotations)
12-
compileOnly(libs.ateoClassindex)
1312

1413
compileOnly(libs.autoService.annotations)
1514
annotationProcessor(libs.autoService.processor)

modules/typed-ids/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ plugins {
44

55
dependencies {
66
api(libs.uuidGenerator)
7+
api(libs.errorprone.annotations)
78

8-
compileOnly(libs.errorprone.annotations)
99
compileOnly(libs.jetbrains.annotations)
1010
compileOnly(libs.ateoClassindex)
1111

settings.gradle.kts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,8 @@ file("${rootProject.projectDir}/modules").toPath().listDirectoryEntries().forEac
1414
include("${moduleDir.fileName}")
1515
project(":${moduleDir.fileName}").projectDir = moduleDir.toFile()
1616
}
17+
18+
file("${rootProject.projectDir}/testing").toPath().listDirectoryEntries().forEach { moduleDir ->
19+
include("${moduleDir.fileName}")
20+
project(":${moduleDir.fileName}").projectDir = moduleDir.toFile()
21+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
plugins {
2+
id("framefork.java")
3+
}
4+
5+
dependencies {
6+
implementation(project(":typed-ids-hibernate-63"))
7+
implementation(libs.hibernate.orm.v63)
8+
implementation(libs.hypersistence.utils.hibernate63)
9+
10+
annotationProcessor(libs.ateoClassindex)
11+
12+
testImplementation(project(":typed-ids-testing"))
13+
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
14+
}
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
package org.framefork.typedIds.uuid.hibernate.v63;
2+
3+
import org.framefork.typedIds.uuid.ObjectUuid;
4+
5+
import jakarta.persistence.Column;
6+
import jakarta.persistence.Entity;
7+
import jakarta.persistence.Table;
8+
import java.util.UUID;
9+
10+
@Entity
11+
@Table(name = "article")
12+
public class ArticleTestingEntity
13+
{
14+
15+
@jakarta.persistence.Id
16+
@Column(nullable = false)
17+
private Id id;
18+
19+
@Column(nullable = false)
20+
private String title;
21+
22+
public ArticleTestingEntity(final String title)
23+
{
24+
this.id = Id.random();
25+
this.title = title;
26+
}
27+
28+
protected ArticleTestingEntity()
29+
{
30+
}
31+
32+
public Id getId()
33+
{
34+
return id;
35+
}
36+
37+
public String getTitle()
38+
{
39+
return title;
40+
}
41+
42+
public static final class Id extends ObjectUuid<Id>
43+
{
44+
45+
private Id(final UUID inner)
46+
{
47+
super(inner);
48+
}
49+
50+
public static Id random()
51+
{
52+
return ObjectUuid.randomUUID(Id::new);
53+
}
54+
55+
public static Id fromString(final String value)
56+
{
57+
return ObjectUuid.fromString(Id::new, value);
58+
}
59+
60+
public static Id fromUuid(final UUID value)
61+
{
62+
return ObjectUuid.fromUuid(Id::new, value);
63+
}
64+
65+
}
66+
67+
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package org.framefork.typedIds.uuid.hibernate.v63;
2+
3+
import org.framefork.typedIds.hibernate.tests.AbstractPostgreSQLIntegrationTest;
4+
import org.junit.jupiter.api.Assertions;
5+
import org.junit.jupiter.api.Test;
6+
7+
import java.util.HashMap;
8+
import java.util.List;
9+
import java.util.Map;
10+
import java.util.Objects;
11+
12+
final class ObjectUuidTypeWithHibernate63Test extends AbstractPostgreSQLIntegrationTest
13+
{
14+
15+
@Override
16+
protected Class<?>[] entities()
17+
{
18+
return new Class<?>[]{
19+
ArticleTestingEntity.class,
20+
};
21+
}
22+
23+
@Test
24+
public void testUsage()
25+
{
26+
Map<String, ArticleTestingEntity.Id> idsByTitle = new HashMap<>();
27+
28+
doInJPA(em -> {
29+
List<ArticleTestingEntity> articles = List.of(
30+
new ArticleTestingEntity("one"),
31+
new ArticleTestingEntity("two"),
32+
new ArticleTestingEntity("three")
33+
);
34+
35+
articles.forEach(em::persist);
36+
articles.forEach(article -> idsByTitle.put(article.getTitle(), article.getId()));
37+
em.flush();
38+
});
39+
40+
var idOfTwo = Objects.requireNonNull(idsByTitle.get("two"), "id must not be null");
41+
42+
doInJPA(em -> {
43+
var article = em.find(ArticleTestingEntity.class, idOfTwo);
44+
Assertions.assertEquals("two", article.getTitle());
45+
});
46+
47+
doInJPA(em -> {
48+
var article = em.createQuery("SELECT a FROM ArticleTestingEntity a WHERE a.id = :id", ArticleTestingEntity.class)
49+
.setParameter("id", idOfTwo)
50+
.getSingleResult();
51+
Assertions.assertEquals("two", article.getTitle());
52+
});
53+
}
54+
55+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
plugins {
2+
id("framefork.java")
3+
}
4+
5+
dependencies {
6+
implementation(project(":typed-ids-hibernate-63"))
7+
implementation(libs.hibernate.orm.v64)
8+
implementation(libs.hypersistence.utils.hibernate63)
9+
10+
annotationProcessor(libs.ateoClassindex)
11+
12+
testImplementation(project(":typed-ids-testing"))
13+
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
14+
}
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
package org.framefork.typedIds.uuid.hibernate.v64;
2+
3+
import org.framefork.typedIds.uuid.ObjectUuid;
4+
5+
import jakarta.persistence.Column;
6+
import jakarta.persistence.Entity;
7+
import jakarta.persistence.Table;
8+
import java.util.UUID;
9+
10+
@Entity
11+
@Table(name = "article")
12+
public class ArticleTestingEntity
13+
{
14+
15+
@jakarta.persistence.Id
16+
@Column(nullable = false)
17+
private Id id;
18+
19+
@Column(nullable = false)
20+
private String title;
21+
22+
public ArticleTestingEntity(final String title)
23+
{
24+
this.id = Id.random();
25+
this.title = title;
26+
}
27+
28+
protected ArticleTestingEntity()
29+
{
30+
}
31+
32+
public Id getId()
33+
{
34+
return id;
35+
}
36+
37+
public String getTitle()
38+
{
39+
return title;
40+
}
41+
42+
public static final class Id extends ObjectUuid<Id>
43+
{
44+
45+
private Id(final UUID inner)
46+
{
47+
super(inner);
48+
}
49+
50+
public static Id random()
51+
{
52+
return ObjectUuid.randomUUID(Id::new);
53+
}
54+
55+
public static Id fromString(final String value)
56+
{
57+
return ObjectUuid.fromString(Id::new, value);
58+
}
59+
60+
public static Id fromUuid(final UUID value)
61+
{
62+
return ObjectUuid.fromUuid(Id::new, value);
63+
}
64+
65+
}
66+
67+
}

0 commit comments

Comments
 (0)