Skip to content

Commit

Permalink
HHH-18633 Split Jandex-based scanning into new module/artifact
Browse files Browse the repository at this point in the history
  • Loading branch information
dreab8 committed Sep 27, 2024
1 parent 6078128 commit 1fd33a5
Show file tree
Hide file tree
Showing 26 changed files with 138 additions and 43 deletions.
7 changes: 5 additions & 2 deletions hibernate-core/hibernate-core.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,6 @@ dependencies {
api jakartaLibs.jta

implementation libs.hibernateModels
implementation libs.hibernateModelsJandex
implementation libs.jandex
implementation libs.classmate
implementation libs.byteBuddy

Expand All @@ -50,8 +48,12 @@ dependencies {
// annotationProcessor project( ":annotation-descriptor-generator" )
compileOnly project( ":annotation-descriptor-generator" )

runtimeOnly project(':hibernate-scan-jandex')

testImplementation project(':hibernate-testing')
testImplementation project(':hibernate-ant')
testImplementation project(':hibernate-scan-jandex')

testImplementation testLibs.shrinkwrapApi
testImplementation testLibs.shrinkwrap
testImplementation testLibs.shrinkwrapDescriptors
Expand All @@ -71,6 +73,7 @@ dependencies {
testRuntimeOnly libs.byteBuddy
testRuntimeOnly testLibs.weld
testRuntimeOnly testLibs.wildFlyTxnClient
testImplementation libs.jandex
testImplementation jakartaLibs.jsonb
testImplementation libs.jackson
testRuntimeOnly libs.jacksonXml
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,11 @@
package org.hibernate.boot.archive.scan.internal;

import java.util.Collections;
import java.util.Set;

import org.hibernate.boot.archive.scan.spi.ClassDescriptor;
import org.hibernate.boot.archive.scan.spi.MappingFileDescriptor;
import org.hibernate.boot.archive.scan.spi.PackageDescriptor;
import org.hibernate.boot.archive.scan.spi.ScanEnvironment;
import org.hibernate.boot.archive.scan.spi.ScanOptions;
import org.hibernate.boot.archive.scan.spi.ScanParameters;
Expand All @@ -19,11 +23,22 @@
* @author Petteri Pitkanen
*/
public class DisabledScanner implements Scanner {
private static final ScanResult emptyScanResult = new ScanResultImpl(
Collections.emptySet(),
Collections.emptySet(),
Collections.emptySet()
);
private static final ScanResult emptyScanResult = new ScanResult() {
@Override
public Set<PackageDescriptor> getLocatedPackages() {
return Collections.emptySet();
}

@Override
public Set<ClassDescriptor> getLocatedClasses() {
return Collections.emptySet();
}

@Override
public Set<MappingFileDescriptor> getLocatedMappingFiles() {
return Collections.emptySet();
}
};

@Override
public ScanResult scan(final ScanEnvironment environment, final ScanOptions options, final ScanParameters parameters) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
*/
package org.hibernate.boot.archive.scan.spi;

import org.hibernate.boot.archive.spi.ArchiveDescriptorFactory;

/**
* Defines the contract for Hibernate to be able to scan for classes, packages and resources inside a
* persistence unit.
Expand All @@ -29,4 +31,8 @@ public interface Scanner {
* @param params The parameters for scanning
*/
ScanResult scan(ScanEnvironment environment, ScanOptions options, ScanParameters params);

default void setArchiveDescriptorFactory(ArchiveDescriptorFactory archiveDescriptorFactory){
throw new UnsupportedOperationException();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
/*
* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright Red Hat Inc. and Hibernate Authors
*/
package org.hibernate.boot.archive.scan.spi;

import org.hibernate.boot.archive.spi.ArchiveDescriptorFactory;
import org.hibernate.service.Service;

public interface ScannerFactory extends Service {
Scanner getScanner(ArchiveDescriptorFactory archiveDescriptorFactory);
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,20 +8,22 @@
import java.net.URL;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import org.hibernate.boot.MappingException;
import org.hibernate.boot.archive.internal.StandardArchiveDescriptorFactory;
import org.hibernate.boot.archive.internal.UrlInputStreamAccess;
import org.hibernate.boot.archive.scan.internal.DisabledScanner;
import org.hibernate.boot.archive.scan.internal.StandardScanParameters;
import org.hibernate.boot.archive.scan.internal.StandardScanner;
import org.hibernate.boot.archive.scan.spi.ClassDescriptor;
import org.hibernate.boot.archive.scan.spi.MappingFileDescriptor;
import org.hibernate.boot.archive.scan.spi.PackageDescriptor;
import org.hibernate.boot.archive.scan.spi.ScanEnvironment;
import org.hibernate.boot.archive.scan.spi.ScanResult;
import org.hibernate.boot.archive.scan.spi.Scanner;
import org.hibernate.boot.archive.scan.spi.ScannerFactory;
import org.hibernate.boot.archive.spi.ArchiveDescriptorFactory;
import org.hibernate.boot.internal.ClassLoaderAccessImpl;
import org.hibernate.boot.jaxb.Origin;
Expand Down Expand Up @@ -86,11 +88,18 @@ private static Scanner buildScanner(BootstrapContext bootstrapContext, ClassLoad

if ( scannerSetting == null ) {
// No custom Scanner specified, use the StandardScanner
if ( archiveDescriptorFactory == null ) {
return new StandardScanner();
final Iterator<ScannerFactory> iterator = bootstrapContext.getServiceRegistry()
.requireService( ClassLoaderService.class )
.loadJavaServices( ScannerFactory.class )
.iterator();
if ( iterator.hasNext() ) {
// todo: check for multiple scanner and in case raise a warning?
final ScannerFactory factory = iterator.next();
return factory.getScanner( archiveDescriptorFactory );
}
else {
return new StandardScanner( archiveDescriptorFactory );
// todo: add a debug message that there is no Scanner?
return new DisabledScanner();
}
}
else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
*/
package org.hibernate.orm.test.bootstrap.scanning;

import org.hibernate.boot.archive.scan.internal.StandardScanner;
import org.hibernate.archive.scan.internal.StandardScanner;
import org.hibernate.boot.archive.scan.spi.ScanEnvironment;
import org.hibernate.boot.archive.scan.spi.ScanOptions;
import org.hibernate.boot.archive.scan.spi.ScanParameters;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,17 @@
import java.util.Collections;
import java.util.List;

import org.hibernate.archive.scan.internal.ClassDescriptorImpl;
import org.hibernate.archive.scan.internal.ScanResultCollector;
import org.hibernate.archive.scan.internal.StandardScanner;
import org.hibernate.archive.scan.spi.AbstractScannerImpl;
import org.hibernate.boot.archive.internal.ArchiveHelper;
import org.hibernate.boot.archive.internal.ExplodedArchiveDescriptor;
import org.hibernate.boot.archive.internal.JarFileBasedArchiveDescriptor;
import org.hibernate.boot.archive.internal.JarProtocolArchiveDescriptor;
import org.hibernate.boot.archive.internal.StandardArchiveDescriptorFactory;
import org.hibernate.boot.archive.scan.internal.ClassDescriptorImpl;
import org.hibernate.boot.archive.scan.internal.ScanResultCollector;
import org.hibernate.boot.archive.scan.internal.StandardScanOptions;
import org.hibernate.boot.archive.scan.internal.StandardScanParameters;
import org.hibernate.boot.archive.scan.internal.StandardScanner;
import org.hibernate.boot.archive.scan.spi.AbstractScannerImpl;
import org.hibernate.boot.archive.scan.spi.ClassDescriptor;
import org.hibernate.boot.archive.scan.spi.MappingFileDescriptor;
import org.hibernate.boot.archive.scan.spi.ScanEnvironment;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@
import jakarta.persistence.EntityManagerFactory;
import jakarta.persistence.Persistence;

import org.hibernate.archive.scan.internal.StandardScanner;
import org.hibernate.boot.archive.scan.internal.StandardScanOptions;
import org.hibernate.boot.archive.scan.internal.StandardScanParameters;
import org.hibernate.boot.archive.scan.internal.StandardScanner;
import org.hibernate.boot.archive.scan.spi.ClassDescriptor;
import org.hibernate.boot.archive.scan.spi.MappingFileDescriptor;
import org.hibernate.boot.archive.scan.spi.ScanEnvironment;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@
import java.util.Arrays;
import java.util.Collections;

import org.hibernate.archive.scan.internal.ClassDescriptorImpl;
import org.hibernate.boot.archive.scan.internal.DisabledScanner;
import org.hibernate.archive.scan.internal.MappingFileDescriptorImpl;
import org.hibernate.archive.scan.internal.PackageDescriptorImpl;
import org.hibernate.archive.scan.internal.ScanResultImpl;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.archive.internal.ByteArrayInputStreamAccess;
import org.hibernate.boot.archive.scan.internal.ClassDescriptorImpl;
import org.hibernate.boot.archive.scan.internal.DisabledScanner;
import org.hibernate.boot.archive.scan.internal.MappingFileDescriptorImpl;
import org.hibernate.boot.archive.scan.internal.PackageDescriptorImpl;
import org.hibernate.boot.archive.scan.internal.ScanResultImpl;
import org.hibernate.boot.archive.scan.spi.ClassDescriptor;
import org.hibernate.boot.archive.scan.spi.MappingFileDescriptor;
import org.hibernate.boot.archive.scan.spi.PackageDescriptor;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ checkstyleMain.exclude '**/module-info.java'
dependencies {
api project( ':hibernate-core' )
api project( ':hibernate-envers' )
implementation project( ':hibernate-scan-jandex' )
//Provide the jakarta.cdi module, as it's required by module jakarta.transaction
//but not provided as transitive dependency of Narayana.
testRuntimeOnly( jakartaLibs.cdi )
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
import org.hibernate.boot.archive.internal.StandardArchiveDescriptorFactory;
import org.hibernate.boot.archive.scan.internal.StandardScanOptions;
import org.hibernate.boot.archive.scan.internal.StandardScanParameters;
import org.hibernate.boot.archive.scan.internal.StandardScanner;
import org.hibernate.archive.scan.internal.StandardScanner;
import org.hibernate.boot.archive.scan.spi.ClassDescriptor;
import org.hibernate.boot.archive.scan.spi.ScanResult;
import org.hibernate.orm.integrationtest.java.module.test.entity.Author;
Expand Down
18 changes: 18 additions & 0 deletions hibernate-scan-jandex/hibernate-scan-jandex.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
description = 'Integrate support for Jandex into Hibernate O/RM'

apply from: rootProject.file( 'gradle/published-java-module.gradle' )


dependencies {
api project( ':hibernate-core' )
api jakartaLibs.jpa

implementation libs.jandex

testImplementation project( ':hibernate-testing' )

}

sourceSets.test.resources {
setSrcDirs( ['src/test/resources'] )
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright Red Hat Inc. and Hibernate Authors
*/
package org.hibernate.boot.archive.scan.internal;
package org.hibernate.archive.scan.internal;

import java.io.Serializable;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright Red Hat Inc. and Hibernate Authors
*/
package org.hibernate.boot.archive.scan.internal;
package org.hibernate.archive.scan.internal;

import java.io.Serializable;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright Red Hat Inc. and Hibernate Authors
*/
package org.hibernate.boot.archive.scan.internal;
package org.hibernate.archive.scan.internal;

import org.hibernate.boot.archive.spi.ArchiveContext;
import org.hibernate.boot.archive.spi.ArchiveEntry;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright Red Hat Inc. and Hibernate Authors
*/
package org.hibernate.boot.archive.scan.internal;
package org.hibernate.archive.scan.internal;

import java.io.Serializable;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright Red Hat Inc. and Hibernate Authors
*/
package org.hibernate.boot.archive.scan.internal;
package org.hibernate.archive.scan.internal;

import java.util.Collections;
import java.util.HashSet;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright Red Hat Inc. and Hibernate Authors
*/
package org.hibernate.boot.archive.scan.internal;
package org.hibernate.archive.scan.internal;

import java.io.Serializable;
import java.util.Set;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright Red Hat Inc. and Hibernate Authors
*/
package org.hibernate.boot.archive.scan.internal;
package org.hibernate.archive.scan.internal;

import org.hibernate.archive.scan.spi.AbstractScannerImpl;
import org.hibernate.boot.archive.internal.StandardArchiveDescriptorFactory;
import org.hibernate.boot.archive.scan.spi.AbstractScannerImpl;
import org.hibernate.boot.archive.spi.ArchiveDescriptorFactory;

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
/*
* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright Red Hat Inc. and Hibernate Authors
*/
package org.hibernate.archive.scan.internal;

import org.hibernate.boot.archive.scan.spi.Scanner;
import org.hibernate.boot.archive.scan.spi.ScannerFactory;
import org.hibernate.boot.archive.spi.ArchiveDescriptorFactory;

public class StandardScannerFactory implements ScannerFactory {
@Override
public Scanner getScanner(ArchiveDescriptorFactory archiveDescriptorFactory) {
if ( archiveDescriptorFactory == null ) {
return new StandardScanner();
}
return new StandardScanner( archiveDescriptorFactory );
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,19 @@
* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright Red Hat Inc. and Hibernate Authors
*/
package org.hibernate.boot.archive.scan.spi;
package org.hibernate.archive.scan.spi;

import java.net.URL;
import java.util.HashMap;
import java.util.Map;

import org.hibernate.boot.archive.scan.internal.NoopEntryHandler;
import org.hibernate.boot.archive.scan.internal.ScanResultCollector;
import org.hibernate.archive.scan.internal.NoopEntryHandler;
import org.hibernate.archive.scan.internal.ScanResultCollector;
import org.hibernate.boot.archive.scan.spi.ScanEnvironment;
import org.hibernate.boot.archive.scan.spi.ScanOptions;
import org.hibernate.boot.archive.scan.spi.ScanParameters;
import org.hibernate.boot.archive.scan.spi.ScanResult;
import org.hibernate.boot.archive.scan.spi.Scanner;
import org.hibernate.boot.archive.spi.ArchiveContext;
import org.hibernate.boot.archive.spi.ArchiveDescriptor;
import org.hibernate.boot.archive.spi.ArchiveDescriptorFactory;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright Red Hat Inc. and Hibernate Authors
*/
package org.hibernate.boot.archive.scan.spi;
package org.hibernate.archive.scan.spi;

import java.io.IOException;
import java.io.InputStream;
Expand All @@ -11,8 +11,9 @@
import jakarta.persistence.Entity;
import jakarta.persistence.MappedSuperclass;

import org.hibernate.boot.archive.scan.internal.ClassDescriptorImpl;
import org.hibernate.boot.archive.scan.internal.ScanResultCollector;
import org.hibernate.archive.scan.internal.ClassDescriptorImpl;
import org.hibernate.archive.scan.internal.ScanResultCollector;
import org.hibernate.boot.archive.scan.spi.ClassDescriptor;
import org.hibernate.boot.archive.spi.ArchiveContext;
import org.hibernate.boot.archive.spi.ArchiveEntry;
import org.hibernate.boot.archive.spi.ArchiveEntryHandler;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright Red Hat Inc. and Hibernate Authors
*/
package org.hibernate.boot.archive.scan.spi;
package org.hibernate.archive.scan.spi;

import org.hibernate.boot.archive.scan.internal.MappingFileDescriptorImpl;
import org.hibernate.boot.archive.scan.internal.ScanResultCollector;
import org.hibernate.archive.scan.internal.MappingFileDescriptorImpl;
import org.hibernate.archive.scan.internal.ScanResultCollector;
import org.hibernate.boot.archive.spi.ArchiveContext;
import org.hibernate.boot.archive.spi.ArchiveEntry;
import org.hibernate.boot.archive.spi.ArchiveEntryHandler;
Expand Down
Loading

0 comments on commit 1fd33a5

Please sign in to comment.