下面列出了怎么用org.hibernate.boot.archive.spi.InputStreamAccess的API类实例代码及写法,或者点击链接到github查看源代码。
public Binding bind(InputStreamAccess xmlInputStreamAccess) {
LOG.tracef( "reading mappings from InputStreamAccess : %s", xmlInputStreamAccess.getStreamName() );
final Origin origin = new Origin( SourceType.INPUT_STREAM, xmlInputStreamAccess.getStreamName() );
InputStream xmlInputStream = xmlInputStreamAccess.accessInputStream();
try {
return new InputStreamXmlSource( origin, xmlInputStream, false ).doBind( mappingBinder );
}
finally {
try {
xmlInputStream.close();
}
catch (IOException e) {
LOG.debugf( "Unable to close InputStream obtained from InputStreamAccess : " + xmlInputStreamAccess.getStreamName() );
}
}
}
@Substitute
public Binding bind(InputStreamAccess xmlInputStreamAccess) {
return null;
}
@Override
public InputStreamAccess getStreamAccess() {
return new UrlInputStreamAccess(
Thread.currentThread().getContextClassLoader().getResource(name.replace('.', '/') + ".class"));
}
public PackageDescriptorImpl(String name, InputStreamAccess streamAccess) {
this.name = name;
this.streamAccess = streamAccess;
}
@Override
public InputStreamAccess getStreamAccess() {
return streamAccess;
}
public ClassDescriptorImpl(String name, Categorization categorization, InputStreamAccess streamAccess) {
this.name = name;
this.categorization = categorization;
this.streamAccess = streamAccess;
}
@Override
public InputStreamAccess getStreamAccess() {
return streamAccess;
}
public MappingFileDescriptorImpl(String name, InputStreamAccess streamAccess) {
this.name = name;
this.streamAccess = streamAccess;
}
@Override
public InputStreamAccess getStreamAccess() {
return streamAccess;
}
private void processDirectory(
File directory,
String path,
ArchiveContext context) {
if ( directory == null ) {
return;
}
final File[] files = directory.listFiles();
if ( files == null ) {
return;
}
path = path == null ? "" : path + "/";
for ( final File localFile : files ) {
if ( !localFile.exists() ) {
// should never happen conceptually, but...
continue;
}
if ( localFile.isDirectory() ) {
processDirectory( localFile, path + localFile.getName(), context );
continue;
}
final String name = localFile.getAbsolutePath();
final String relativeName = path + localFile.getName();
final InputStreamAccess inputStreamAccess = new FileInputStreamAccess( name, localFile );
final ArchiveEntry entry = new ArchiveEntry() {
@Override
public String getName() {
return name;
}
@Override
public String getNameWithinArchive() {
return relativeName;
}
@Override
public InputStreamAccess getStreamAccess() {
return inputStreamAccess;
}
};
context.obtainArchiveEntryHandler( entry ).handleEntry( entry, context );
}
}
/**
* Read metadata from an {@link java.io.InputStream} access
*
* @param xmlInputStreamAccess Access to an input stream containing a DOM.
*
* @return this (for method chaining purposes)
*/
public MetadataSources addInputStream(InputStreamAccess xmlInputStreamAccess) {
xmlBindings.add( getXmlMappingBinderAccess().bind( xmlInputStreamAccess ) );
return this;
}
/**
* Retrieves access to the InputStream for the class file.
*
* @return Access to the InputStream for the class file.
*/
InputStreamAccess getStreamAccess();
/**
* Retrieves access to the InputStream for the {@code package-info.class} file.
*
* @return Access to the InputStream for the {@code package-info.class} file.
*/
public InputStreamAccess getStreamAccess();
/**
* Retrieves access to the InputStream for the mapping file.
*
* @return Access to the InputStream for the mapping file.
*/
public InputStreamAccess getStreamAccess();