List of usage examples for org.hibernate.boot.archive.internal ArchiveHelper getBytesFromInputStream
public static byte[] getBytesFromInputStream(InputStream inputStream) throws IOException
From source file:org.jboss.as.jpa.hibernate5.scan.ScannerTests.java
License:Apache License
/*** @Test public void testHttp() throws Exception { URL url = ArchiveHelper.getJarURLFromURLEntry( new URL(//from w w w .ja v a2 s .c o m "jar:http://www.ibiblio.org/maven/hibernate/jars/hibernate-annotations-3.0beta1.jar!/META-INF/persistence.xml" ), "/META-INF/persistence.xml" ); try { URLConnection urlConnection = url.openConnection(); urlConnection.connect(); } catch ( IOException ie ) { //fail silently return; } ArchiveDescriptor archiveDescriptor = VirtualFileSystemArchiveDescriptorFactory.INSTANCE.buildArchiveDescriptor( url ); ScanResultCollector resultCollector = new ScanResultCollector ( new StandardScanOptions() ); archiveDescriptor.visitArchive( new AbstractScannerImpl.ArchiveContextImpl( new PersistenceUnitDescriptorAdapter(), true, resultCollector ) ); assertEquals( 0, resultCollector.getClassDescriptorSet().size() ); assertEquals( 0, resultCollector.getPackageDescriptorSet().size() ); assertEquals( 0, resultCollector.getMappingFileSet().size() ); } @Test public void testInputStreamZippedJar() throws Exception { File defaultPar = buildDefaultPar(); addPackageToClasspath( defaultPar ); final VirtualFile virtualFile = VFS.getChild( defaultPar.getAbsolutePath() ); Closeable closeable = VFS.mountZip( virtualFile, virtualFile, tempFileProvider ); try { ArchiveDescriptor archiveDescriptor = VirtualFileSystemArchiveDescriptorFactory.INSTANCE.buildArchiveDescriptor( defaultPar.toURI().toURL() ); AbstractScannerImpl.ResultCollector resultCollector = new AbstractScannerImpl.ResultCollector( new StandardScanOptions() ); archiveDescriptor.visitArchive( new AbstractScannerImpl.ArchiveContextImpl( new PersistenceUnitDescriptorAdapter(), true, resultCollector ) ); validateResults( resultCollector, ApplicationServer.class, Version.class ); } finally { closeable.close(); } } private void validateResults(AbstractScannerImpl.ResultCollector resultCollector, Class... expectedClasses) throws IOException { assertEquals( 3, resultCollector.getClassDescriptorSet().size() ); for ( Class expectedClass : expectedClasses ) { assertTrue( resultCollector.getClassDescriptorSet().contains( new ClassDescriptorImpl( expectedClass.getName(), null ) ) ); } assertEquals( 2, resultCollector.getMappingFileSet().size() ); for ( MappingFileDescriptor mappingFileDescriptor : resultCollector.getMappingFileSet() ) { assertNotNull( mappingFileDescriptor.getStreamAccess() ); final InputStream stream = mappingFileDescriptor.getStreamAccess().accessInputStream(); assertNotNull( stream ); stream.close(); } } @Test public void testNestedJarProtocol() throws Exception { File defaultPar = buildDefaultPar(); File nestedEar = buildNestedEar( defaultPar ); addPackageToClasspath( nestedEar ); final VirtualFile nestedEarVirtualFile = VFS.getChild( nestedEar.getAbsolutePath() ); Closeable closeable = VFS.mountZip( nestedEarVirtualFile, nestedEarVirtualFile, tempFileProvider ); try { VirtualFile parVirtualFile = nestedEarVirtualFile.getChild( "defaultpar.par" ); Closeable closeable2 = VFS.mountZip( parVirtualFile, parVirtualFile, tempFileProvider ); try { ArchiveDescriptor archiveDescriptor = VirtualFileSystemArchiveDescriptorFactory.INSTANCE.buildArchiveDescriptor( parVirtualFile.toURL() ); AbstractScannerImpl.ResultCollector resultCollector = new AbstractScannerImpl.ResultCollector( new StandardScanOptions() ); archiveDescriptor.visitArchive( new AbstractScannerImpl.ArchiveContextImpl( new PersistenceUnitDescriptorAdapter(), true, resultCollector ) ); validateResults( resultCollector, ApplicationServer.class, Version.class ); } finally { closeable2.close(); } } finally { closeable.close(); } File nestedEarDir = buildNestedEarDir( defaultPar ); final VirtualFile nestedEarDirVirtualFile = VFS.getChild( nestedEarDir.getAbsolutePath() ); try { VirtualFile parVirtualFile = nestedEarDirVirtualFile.getChild( "defaultpar.par" ); closeable = VFS.mountZip( parVirtualFile, parVirtualFile, tempFileProvider ); try { ArchiveDescriptor archiveDescriptor = VirtualFileSystemArchiveDescriptorFactory.INSTANCE.buildArchiveDescriptor( parVirtualFile.toURL() ); AbstractScannerImpl.ResultCollector resultCollector = new AbstractScannerImpl.ResultCollector( new StandardScanOptions() ); archiveDescriptor.visitArchive( new AbstractScannerImpl.ArchiveContextImpl( new PersistenceUnitDescriptorAdapter(), true, resultCollector ) ); validateResults( resultCollector, ApplicationServer.class, Version.class ); } finally { closeable.close(); } } finally { closeable.close(); } } @Test public void testJarProtocol() throws Exception { File war = buildWar(); addPackageToClasspath( war ); final VirtualFile warVirtualFile = VFS.getChild( war.getAbsolutePath() ); Closeable closeable = VFS.mountZip( warVirtualFile, warVirtualFile, tempFileProvider ); try { ArchiveDescriptor archiveDescriptor = VirtualFileSystemArchiveDescriptorFactory.INSTANCE.buildArchiveDescriptor( warVirtualFile.toURL() ); AbstractScannerImpl.ResultCollector resultCollector = new AbstractScannerImpl.ResultCollector( new StandardScanOptions() ); archiveDescriptor.visitArchive( new AbstractScannerImpl.ArchiveContextImpl( new PersistenceUnitDescriptorAdapter(), true, resultCollector ) ); validateResults( resultCollector, org.hibernate.jpa.test.pack.war.ApplicationServer.class, org.hibernate.jpa.test.pack.war.Version.class ); } finally { closeable.close(); } } @Test public void testZippedJar() throws Exception { File defaultPar = buildDefaultPar(); addPackageToClasspath( defaultPar ); final VirtualFile virtualFile = VFS.getChild( defaultPar.getAbsolutePath() ); Closeable closeable = VFS.mountZip( virtualFile, virtualFile, tempFileProvider ); try { ArchiveDescriptor archiveDescriptor = VirtualFileSystemArchiveDescriptorFactory.INSTANCE.buildArchiveDescriptor( virtualFile.toURL() ); AbstractScannerImpl.ResultCollector resultCollector = new AbstractScannerImpl.ResultCollector( new StandardScanOptions() ); archiveDescriptor.visitArchive( new AbstractScannerImpl.ArchiveContextImpl( new PersistenceUnitDescriptorAdapter(), true, resultCollector ) ); validateResults( resultCollector, ApplicationServer.class, Version.class ); } finally { closeable.close(); } } @Test public void testExplodedJar() throws Exception { File explodedPar = buildExplodedPar(); addPackageToClasspath( explodedPar ); String dirPath = explodedPar.getAbsolutePath(); if ( dirPath.endsWith( "/" ) ) { dirPath = dirPath.substring( 0, dirPath.length() - 1 ); } final VirtualFile virtualFile = VFS.getChild( dirPath ); ArchiveDescriptor archiveDescriptor = VirtualFileSystemArchiveDescriptorFactory.INSTANCE.buildArchiveDescriptor( virtualFile.toURL() ); AbstractScannerImpl.ResultCollector resultCollector = new AbstractScannerImpl.ResultCollector( new StandardScanOptions() ); archiveDescriptor.visitArchive( new AbstractScannerImpl.ArchiveContextImpl( new PersistenceUnitDescriptorAdapter(), true, resultCollector ) ); assertEquals( 1, resultCollector.getClassDescriptorSet().size() ); assertEquals( 1, resultCollector.getPackageDescriptorSet().size() ); assertEquals( 1, resultCollector.getMappingFileSet().size() ); assertTrue( resultCollector.getClassDescriptorSet().contains( new ClassDescriptorImpl( Carpet.class.getName(), null ) ) ); for ( MappingFileDescriptor mappingFileDescriptor : resultCollector.getMappingFileSet() ) { assertNotNull( mappingFileDescriptor.getStreamAccess() ); final InputStream stream = mappingFileDescriptor.getStreamAccess().accessInputStream(); assertNotNull( stream ); stream.close(); } } ****************/ @Test public void testGetBytesFromInputStream() throws Exception { File file = buildLargeJar(); long start = System.currentTimeMillis(); InputStream stream = new BufferedInputStream(new FileInputStream(file)); int oldLength = getBytesFromInputStream(stream).length; stream.close(); long oldTime = System.currentTimeMillis() - start; start = System.currentTimeMillis(); stream = new BufferedInputStream(new FileInputStream(file)); int newLength = ArchiveHelper.getBytesFromInputStream(stream).length; stream.close(); long newTime = System.currentTimeMillis() - start; assertEquals(oldLength, newLength); assertTrue(oldTime > newTime); }
From source file:org.jboss.as.jpa.hibernate5.scan.ScannerTests.java
License:Apache License
@Test public void testGetBytesFromZeroInputStream() throws Exception { // Ensure that JarVisitorFactory#getBytesFromInputStream // can handle 0 length streams gracefully. URL emptyTxtUrl = getClass().getResource("/org/hibernate/jpa/test/packaging/empty.txt"); if (emptyTxtUrl == null) { throw new RuntimeException("Bah!"); }/*from www .jav a 2s. c o m*/ InputStream emptyStream = new BufferedInputStream(emptyTxtUrl.openStream()); int length = ArchiveHelper.getBytesFromInputStream(emptyStream).length; assertEquals(length, 0); emptyStream.close(); }