Created
April 9, 2014 19:56
-
-
Save arey/10308277 to your computer and use it in GitHub Desktop.
No-operation Hibernate Scanner
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.javaetmoi.core.persistence.hibernate; | |
import java.util.Collections; | |
import java.util.Set; | |
import org.hibernate.jpa.boot.archive.internal.StandardArchiveDescriptorFactory; | |
import org.hibernate.jpa.boot.scan.spi.AbstractScannerImpl; | |
import org.hibernate.jpa.boot.scan.spi.ScanOptions; | |
import org.hibernate.jpa.boot.scan.spi.ScanResult; | |
import org.hibernate.jpa.boot.spi.ClassDescriptor; | |
import org.hibernate.jpa.boot.spi.MappingFileDescriptor; | |
import org.hibernate.jpa.boot.spi.PackageDescriptor; | |
import org.hibernate.jpa.boot.spi.PersistenceUnitDescriptor; | |
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; | |
/** | |
* No-operation Hibernate Scanner. | |
* | |
* <p> | |
* Do not scan for any classes, packages or resources inside a persistence unit. Return an empty | |
* ScanResult. To use in conjunction with the Spring LocalContainerEntityManagerFactoryBean and its | |
* setPackagesToScan method.<br> | |
* A specific Hibernate properties has to be set: <code> | |
* hibernate.ejb.resource_scanner=com.javaetmoi.core.persistence.hibernate.NopScanner | |
* </code> | |
* | |
*/ | |
public class NopScanner extends AbstractScannerImpl { | |
public NopScanner() { | |
super(StandardArchiveDescriptorFactory.INSTANCE); | |
} | |
@Override | |
public ScanResult scan(PersistenceUnitDescriptor persistenceUnit, ScanOptions scanOptions) { | |
final ResultCollector resultCollector = new ResultCollector(scanOptions); | |
// Don't scan any archive | |
return ScanResultImpl.from(resultCollector); | |
} | |
private static class ScanResultImpl implements ScanResult { | |
private final Set<PackageDescriptor> packageDescriptorSet; | |
private final Set<ClassDescriptor> classDescriptorSet; | |
private final Set<MappingFileDescriptor> mappingFileSet; | |
private ScanResultImpl(Set<PackageDescriptor> packageDescriptorSet, | |
Set<ClassDescriptor> classDescriptorSet, Set<MappingFileDescriptor> mappingFileSet) { | |
this.packageDescriptorSet = packageDescriptorSet; | |
this.classDescriptorSet = classDescriptorSet; | |
this.mappingFileSet = mappingFileSet; | |
} | |
static ScanResult from(ResultCollector resultCollector) { | |
return new ScanResultImpl( | |
Collections.unmodifiableSet(resultCollector.getPackageDescriptorSet()), | |
Collections.unmodifiableSet(resultCollector.getClassDescriptorSet()), | |
Collections.unmodifiableSet(resultCollector.getMappingFileSet())); | |
} | |
@Override | |
public Set<PackageDescriptor> getLocatedPackages() { | |
return packageDescriptorSet; | |
} | |
@Override | |
public Set<ClassDescriptor> getLocatedClasses() { | |
return classDescriptorSet; | |
} | |
@Override | |
public Set<MappingFileDescriptor> getLocatedMappingFiles() { | |
return mappingFileSet; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment