Skip to content

Commit b0f6c03

Browse files
committed
HHH-18633 Split Jandex-based scanning into new module/artifact
1 parent 6078128 commit b0f6c03

File tree

24 files changed

+119
-43
lines changed

24 files changed

+119
-43
lines changed

hibernate-core/hibernate-core.gradle

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ dependencies {
2929

3030
implementation libs.hibernateModels
3131
implementation libs.hibernateModelsJandex
32-
implementation libs.jandex
3332
implementation libs.classmate
3433
implementation libs.byteBuddy
3534

@@ -50,8 +49,12 @@ dependencies {
5049
// annotationProcessor project( ":annotation-descriptor-generator" )
5150
compileOnly project( ":annotation-descriptor-generator" )
5251

52+
runtimeOnly project(':hibernate-scan-jandex')
53+
5354
testImplementation project(':hibernate-testing')
5455
testImplementation project(':hibernate-ant')
56+
testImplementation project(':hibernate-scan-jandex')
57+
5558
testImplementation testLibs.shrinkwrapApi
5659
testImplementation testLibs.shrinkwrap
5760
testImplementation testLibs.shrinkwrapDescriptors
@@ -71,6 +74,7 @@ dependencies {
7174
testRuntimeOnly libs.byteBuddy
7275
testRuntimeOnly testLibs.weld
7376
testRuntimeOnly testLibs.wildFlyTxnClient
77+
testImplementation libs.jandex
7478
testImplementation jakartaLibs.jsonb
7579
testImplementation libs.jackson
7680
testRuntimeOnly libs.jacksonXml

hibernate-core/src/main/java/org/hibernate/boot/archive/scan/internal/DisabledScanner.java

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,11 @@
55
package org.hibernate.boot.archive.scan.internal;
66

77
import java.util.Collections;
8+
import java.util.Set;
89

10+
import org.hibernate.boot.archive.scan.spi.ClassDescriptor;
11+
import org.hibernate.boot.archive.scan.spi.MappingFileDescriptor;
12+
import org.hibernate.boot.archive.scan.spi.PackageDescriptor;
913
import org.hibernate.boot.archive.scan.spi.ScanEnvironment;
1014
import org.hibernate.boot.archive.scan.spi.ScanOptions;
1115
import org.hibernate.boot.archive.scan.spi.ScanParameters;
@@ -19,11 +23,22 @@
1923
* @author Petteri Pitkanen
2024
*/
2125
public class DisabledScanner implements Scanner {
22-
private static final ScanResult emptyScanResult = new ScanResultImpl(
23-
Collections.emptySet(),
24-
Collections.emptySet(),
25-
Collections.emptySet()
26-
);
26+
private static final ScanResult emptyScanResult = new ScanResult() {
27+
@Override
28+
public Set<PackageDescriptor> getLocatedPackages() {
29+
return Collections.emptySet();
30+
}
31+
32+
@Override
33+
public Set<ClassDescriptor> getLocatedClasses() {
34+
return Collections.emptySet();
35+
}
36+
37+
@Override
38+
public Set<MappingFileDescriptor> getLocatedMappingFiles() {
39+
return Collections.emptySet();
40+
}
41+
};
2742

2843
@Override
2944
public ScanResult scan(final ScanEnvironment environment, final ScanOptions options, final ScanParameters parameters) {

hibernate-core/src/main/java/org/hibernate/boot/archive/scan/spi/Scanner.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
*/
55
package org.hibernate.boot.archive.scan.spi;
66

7+
import org.hibernate.boot.archive.spi.ArchiveDescriptorFactory;
8+
79
/**
810
* Defines the contract for Hibernate to be able to scan for classes, packages and resources inside a
911
* persistence unit.
@@ -29,4 +31,8 @@ public interface Scanner {
2931
* @param params The parameters for scanning
3032
*/
3133
ScanResult scan(ScanEnvironment environment, ScanOptions options, ScanParameters params);
34+
35+
default void setArchiveDescriptorFactory(ArchiveDescriptorFactory archiveDescriptorFactory){
36+
throw new UnsupportedOperationException();
37+
}
3238
}

hibernate-core/src/main/java/org/hibernate/boot/model/process/internal/ScanningCoordinator.java

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,16 @@
88
import java.net.URL;
99
import java.util.ArrayList;
1010
import java.util.HashSet;
11+
import java.util.Iterator;
1112
import java.util.List;
13+
import java.util.ServiceLoader;
1214
import java.util.Set;
1315

1416
import org.hibernate.boot.MappingException;
1517
import org.hibernate.boot.archive.internal.StandardArchiveDescriptorFactory;
1618
import org.hibernate.boot.archive.internal.UrlInputStreamAccess;
19+
import org.hibernate.boot.archive.scan.internal.DisabledScanner;
1720
import org.hibernate.boot.archive.scan.internal.StandardScanParameters;
18-
import org.hibernate.boot.archive.scan.internal.StandardScanner;
1921
import org.hibernate.boot.archive.scan.spi.ClassDescriptor;
2022
import org.hibernate.boot.archive.scan.spi.MappingFileDescriptor;
2123
import org.hibernate.boot.archive.scan.spi.PackageDescriptor;
@@ -86,11 +88,21 @@ private static Scanner buildScanner(BootstrapContext bootstrapContext, ClassLoad
8688

8789
if ( scannerSetting == null ) {
8890
// No custom Scanner specified, use the StandardScanner
89-
if ( archiveDescriptorFactory == null ) {
90-
return new StandardScanner();
91+
final Iterator<Scanner> iterator = ServiceLoader.load( Scanner.class ).iterator();
92+
if ( iterator.hasNext() ) {
93+
final Scanner scanner = iterator.next();
94+
if ( archiveDescriptorFactory == null ) {
95+
scanner.setArchiveDescriptorFactory( StandardArchiveDescriptorFactory.INSTANCE );
96+
}
97+
else {
98+
scanner.setArchiveDescriptorFactory( archiveDescriptorFactory );
99+
}
100+
return scanner;
91101
}
92102
else {
93-
return new StandardScanner( archiveDescriptorFactory );
103+
// todo: need to log or throw an exception instead of returning a DisabledScanner?
104+
// if archiveDescriptorFactory != null throw an exception
105+
return new DisabledScanner();
94106
}
95107
}
96108
else {

hibernate-core/src/test/java/org/hibernate/orm/test/bootstrap/scanning/CustomScanner.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*/
55
package org.hibernate.orm.test.bootstrap.scanning;
66

7-
import org.hibernate.boot.archive.scan.internal.StandardScanner;
7+
import org.hibernate.archive.scan.internal.StandardScanner;
88
import org.hibernate.boot.archive.scan.spi.ScanEnvironment;
99
import org.hibernate.boot.archive.scan.spi.ScanOptions;
1010
import org.hibernate.boot.archive.scan.spi.ScanParameters;

hibernate-core/src/test/java/org/hibernate/orm/test/bootstrap/scanning/JarVisitorTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,17 @@
1616
import java.util.Collections;
1717
import java.util.List;
1818

19+
import org.hibernate.archive.scan.internal.ClassDescriptorImpl;
20+
import org.hibernate.archive.scan.internal.ScanResultCollector;
21+
import org.hibernate.archive.scan.internal.StandardScanner;
22+
import org.hibernate.archive.scan.spi.AbstractScannerImpl;
1923
import org.hibernate.boot.archive.internal.ArchiveHelper;
2024
import org.hibernate.boot.archive.internal.ExplodedArchiveDescriptor;
2125
import org.hibernate.boot.archive.internal.JarFileBasedArchiveDescriptor;
2226
import org.hibernate.boot.archive.internal.JarProtocolArchiveDescriptor;
2327
import org.hibernate.boot.archive.internal.StandardArchiveDescriptorFactory;
24-
import org.hibernate.boot.archive.scan.internal.ClassDescriptorImpl;
25-
import org.hibernate.boot.archive.scan.internal.ScanResultCollector;
2628
import org.hibernate.boot.archive.scan.internal.StandardScanOptions;
2729
import org.hibernate.boot.archive.scan.internal.StandardScanParameters;
28-
import org.hibernate.boot.archive.scan.internal.StandardScanner;
29-
import org.hibernate.boot.archive.scan.spi.AbstractScannerImpl;
3030
import org.hibernate.boot.archive.scan.spi.ClassDescriptor;
3131
import org.hibernate.boot.archive.scan.spi.MappingFileDescriptor;
3232
import org.hibernate.boot.archive.scan.spi.ScanEnvironment;

hibernate-core/src/test/java/org/hibernate/orm/test/bootstrap/scanning/ScannerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@
1414
import jakarta.persistence.EntityManagerFactory;
1515
import jakarta.persistence.Persistence;
1616

17+
import org.hibernate.archive.scan.internal.StandardScanner;
1718
import org.hibernate.boot.archive.scan.internal.StandardScanOptions;
1819
import org.hibernate.boot.archive.scan.internal.StandardScanParameters;
19-
import org.hibernate.boot.archive.scan.internal.StandardScanner;
2020
import org.hibernate.boot.archive.scan.spi.ClassDescriptor;
2121
import org.hibernate.boot.archive.scan.spi.MappingFileDescriptor;
2222
import org.hibernate.boot.archive.scan.spi.ScanEnvironment;

hibernate-core/src/test/java/org/hibernate/orm/test/bootstrap/scanning/ScanningCoordinatorTest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@
99
import java.util.Arrays;
1010
import java.util.Collections;
1111

12+
import org.hibernate.archive.scan.internal.ClassDescriptorImpl;
13+
import org.hibernate.boot.archive.scan.internal.DisabledScanner;
14+
import org.hibernate.archive.scan.internal.MappingFileDescriptorImpl;
15+
import org.hibernate.archive.scan.internal.PackageDescriptorImpl;
16+
import org.hibernate.archive.scan.internal.ScanResultImpl;
1217
import org.hibernate.boot.MetadataSources;
1318
import org.hibernate.boot.archive.internal.ByteArrayInputStreamAccess;
14-
import org.hibernate.boot.archive.scan.internal.ClassDescriptorImpl;
15-
import org.hibernate.boot.archive.scan.internal.DisabledScanner;
16-
import org.hibernate.boot.archive.scan.internal.MappingFileDescriptorImpl;
17-
import org.hibernate.boot.archive.scan.internal.PackageDescriptorImpl;
18-
import org.hibernate.boot.archive.scan.internal.ScanResultImpl;
1919
import org.hibernate.boot.archive.scan.spi.ClassDescriptor;
2020
import org.hibernate.boot.archive.scan.spi.MappingFileDescriptor;
2121
import org.hibernate.boot.archive.scan.spi.PackageDescriptor;

hibernate-integrationtest-java-modules/hibernate-integrationtest-java-modules.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ checkstyleMain.exclude '**/module-info.java'
2020
dependencies {
2121
api project( ':hibernate-core' )
2222
api project( ':hibernate-envers' )
23+
implementation project( ':hibernate-scan-jandex' )
2324
//Provide the jakarta.cdi module, as it's required by module jakarta.transaction
2425
//but not provided as transitive dependency of Narayana.
2526
testRuntimeOnly( jakartaLibs.cdi )

hibernate-integrationtest-java-modules/src/test/java/org/hibernate/orm/integrationtest/java/module/test/ScannerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import org.hibernate.boot.archive.internal.StandardArchiveDescriptorFactory;
1111
import org.hibernate.boot.archive.scan.internal.StandardScanOptions;
1212
import org.hibernate.boot.archive.scan.internal.StandardScanParameters;
13-
import org.hibernate.boot.archive.scan.internal.StandardScanner;
13+
import org.hibernate.archive.scan.internal.StandardScanner;
1414
import org.hibernate.boot.archive.scan.spi.ClassDescriptor;
1515
import org.hibernate.boot.archive.scan.spi.ScanResult;
1616
import org.hibernate.orm.integrationtest.java.module.test.entity.Author;

0 commit comments

Comments
 (0)