mirror of
https://github.com/spring-projects/spring-framework.git
synced 2026-09-21 21:39:05 +00:00
Polishing
This commit is contained in:
+2
-1
@@ -204,8 +204,9 @@ public class LocalContainerEntityManagerFactoryBean extends AbstractEntityManage
|
||||
/**
|
||||
* Set the {@link ManagedClassNameFilter} to apply on entity classes discovered
|
||||
* using {@linkplain #setPackagesToScan(String...) classpath scanning}.
|
||||
* @param managedClassNameFilter the predicate to filter entity classes
|
||||
* @param managedClassNameFilter a predicate to filter entity classes
|
||||
* @since 6.1.4
|
||||
* @see DefaultPersistenceUnitManager#setManagedClassNameFilter
|
||||
*/
|
||||
public void setManagedClassNameFilter(ManagedClassNameFilter managedClassNameFilter) {
|
||||
this.internalPersistenceUnitManager.setManagedClassNameFilter(managedClassNameFilter);
|
||||
|
||||
+1
-1
@@ -238,7 +238,7 @@ public class DefaultPersistenceUnitManager
|
||||
/**
|
||||
* Set the {@link ManagedClassNameFilter} to apply on entity classes discovered
|
||||
* using {@linkplain #setPackagesToScan(String...) classpath scanning}.
|
||||
* @param managedClassNameFilter the predicate to filter entity classes
|
||||
* @param managedClassNameFilter a predicate to filter entity classes
|
||||
* @since 6.1.4
|
||||
*/
|
||||
public void setManagedClassNameFilter(ManagedClassNameFilter managedClassNameFilter) {
|
||||
|
||||
+2
-1
@@ -22,12 +22,13 @@ package org.springframework.orm.jpa.persistenceunit;
|
||||
*
|
||||
* @author Stephane Nicoll
|
||||
* @since 6.1.4
|
||||
* @see DefaultPersistenceUnitManager#setManagedClassNameFilter
|
||||
*/
|
||||
@FunctionalInterface
|
||||
public interface ManagedClassNameFilter {
|
||||
|
||||
/**
|
||||
* Test if the given clas name matches the filter.
|
||||
* Test if the given class name matches the filter.
|
||||
* @param className the fully qualified class name of the persistent type to test
|
||||
* @return {@code true} if the class name matches
|
||||
*/
|
||||
|
||||
+20
-12
@@ -83,17 +83,26 @@ public final class PersistenceManagedTypesScanner {
|
||||
private final ManagedClassNameFilter managedClassNameFilter;
|
||||
|
||||
|
||||
/**
|
||||
* Create a new {@code PersistenceManagedTypesScanner} for the given resource loader.
|
||||
* @param resourceLoader the {@code ResourceLoader} to use
|
||||
*/
|
||||
public PersistenceManagedTypesScanner(ResourceLoader resourceLoader) {
|
||||
this(resourceLoader, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new {@code PersistenceManagedTypesScanner} for the given resource loader.
|
||||
* @param resourceLoader the {@code ResourceLoader} to use
|
||||
* @param managedClassNameFilter an optional predicate to filter entity classes
|
||||
* @since 6.1.4
|
||||
*/
|
||||
public PersistenceManagedTypesScanner(ResourceLoader resourceLoader,
|
||||
@Nullable ManagedClassNameFilter managedClassNameFilter) {
|
||||
|
||||
this.resourcePatternResolver = ResourcePatternUtils.getResourcePatternResolver(resourceLoader);
|
||||
this.componentsIndex = CandidateComponentsIndexLoader.loadIndex(resourceLoader.getClassLoader());
|
||||
this.managedClassNameFilter = (managedClassNameFilter != null ? managedClassNameFilter
|
||||
: className -> true);
|
||||
}
|
||||
|
||||
public PersistenceManagedTypesScanner(ResourceLoader resourceLoader) {
|
||||
this(resourceLoader, null);
|
||||
this.managedClassNameFilter = (managedClassNameFilter != null ? managedClassNameFilter : className -> true);
|
||||
}
|
||||
|
||||
|
||||
@@ -126,13 +135,12 @@ public final class PersistenceManagedTypesScanner {
|
||||
String pattern = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX +
|
||||
ClassUtils.convertClassNameToResourcePath(pkg) + CLASS_RESOURCE_PATTERN;
|
||||
Resource[] resources = this.resourcePatternResolver.getResources(pattern);
|
||||
MetadataReaderFactory readerFactory = new CachingMetadataReaderFactory(this.resourcePatternResolver);
|
||||
MetadataReaderFactory factory = new CachingMetadataReaderFactory(this.resourcePatternResolver);
|
||||
for (Resource resource : resources) {
|
||||
try {
|
||||
MetadataReader reader = readerFactory.getMetadataReader(resource);
|
||||
MetadataReader reader = factory.getMetadataReader(resource);
|
||||
String className = reader.getClassMetadata().getClassName();
|
||||
if (matchesEntityTypeFilter(reader, readerFactory)
|
||||
&& this.managedClassNameFilter.matches(className)) {
|
||||
if (matchesEntityTypeFilter(reader, factory) && this.managedClassNameFilter.matches(className)) {
|
||||
scanResult.managedClassNames.add(className);
|
||||
if (scanResult.persistenceUnitRootUrl == null) {
|
||||
URL url = resource.getURL();
|
||||
@@ -168,9 +176,9 @@ public final class PersistenceManagedTypesScanner {
|
||||
* Check whether any of the configured entity type filters matches
|
||||
* the current class descriptor contained in the metadata reader.
|
||||
*/
|
||||
private boolean matchesEntityTypeFilter(MetadataReader reader, MetadataReaderFactory readerFactory) throws IOException {
|
||||
private boolean matchesEntityTypeFilter(MetadataReader reader, MetadataReaderFactory factory) throws IOException {
|
||||
for (TypeFilter filter : entityTypeFilters) {
|
||||
if (filter.match(reader, readerFactory)) {
|
||||
if (filter.match(reader, factory)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user