[hibernate-commits] Hibernate SVN: r10535 - in trunk/HibernateExt/ejb/src: java/org/hibernate/ejb java/org/hibernate/ejb/packaging test/org/hibernate/ejb/test/packaging

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Thu Sep 28 21:46:35 EDT 2006


Author: epbernard
Date: 2006-09-28 21:46:32 -0400 (Thu, 28 Sep 2006)
New Revision: 10535

Modified:
   trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/Ejb3Configuration.java
   trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/packaging/JarVisitor.java
   trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/packaging/JarVisitorTest.java
Log:


Modified: trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/Ejb3Configuration.java
===================================================================
--- trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/Ejb3Configuration.java	2006-09-28 21:24:44 UTC (rev 10534)
+++ trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/Ejb3Configuration.java	2006-09-29 01:46:32 UTC (rev 10535)
@@ -913,6 +913,7 @@
 					HibernatePersistence.HBXML_FILES
 			);
 			for ( InputStream is : hbmXmlFiles ) {
+				//addInputStream has the responsibility to close the stream
 				cfg.addInputStream( is );
 			}
 		}

Modified: trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/packaging/JarVisitor.java
===================================================================
--- trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/packaging/JarVisitor.java	2006-09-28 21:24:44 UTC (rev 10534)
+++ trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/packaging/JarVisitor.java	2006-09-29 01:46:32 UTC (rev 10535)
@@ -213,8 +213,8 @@
 		if ( !done ) {
 			//avoid url access and so on
 			if ( filters.size() > 0 ) doProcessElements();
+			done = true;
 		}
-		done = true;
 		return entries;
 	}
 
@@ -234,8 +234,10 @@
 		}
 		else {
 			String name = entryName;
+			boolean accepted = false;
 			for ( FileFilter filter : fileFilters ) {
 				if ( filter.accept( name ) ) {
+					accepted = true;
 					InputStream localIs;
 					if ( filter.getStream() ) {
 						localIs = secondIs;
@@ -251,24 +253,33 @@
 					this.entries[index].add( entry );
 				}
 			}
+			if (!accepted) {
+				//not accepted free resources
+				is.close();
+				secondIs.close();
+			}
 		}
 	}
 
 	private void executeJavaElementFilter(
 			String name, Set<JavaElementFilter> filters, InputStream is, InputStream secondIs
 	) throws IOException {
+		boolean accepted = false;
 		for ( JavaElementFilter filter : filters ) {
 			if ( filter.accept( name ) ) {
-				InputStream localIs;
-				if ( filter.getStream() ) {
-					localIs = secondIs;
-				}
-				else {
-					localIs = null;
-					secondIs.close();
-				}
+				//FIXME cannot currently have a class filtered twice but matching once
+				// need to copy the is
 				boolean match = checkAnnotationMatching( is, filter );
 				if ( match ) {
+					accepted = true;
+					InputStream localIs;
+					if ( filter.getStream() ) {
+						localIs = secondIs;
+					}
+					else {
+						localIs = null;
+						secondIs.close();
+					}
 					log.debug( "Java element filter matched for " + name );
 					Entry entry = new Entry( name, localIs );
 					int index = this.filters.indexOf( filter );
@@ -277,6 +288,10 @@
 				}
 			}
 		}
+		if (!accepted) {
+			is.close();
+			secondIs.close();
+		}
 	}
 
 	private boolean checkAnnotationMatching(InputStream is, JavaElementFilter filter) throws IOException {

Modified: trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/packaging/JarVisitorTest.java
===================================================================
--- trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/packaging/JarVisitorTest.java	2006-09-28 21:24:44 UTC (rev 10534)
+++ trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/packaging/JarVisitorTest.java	2006-09-29 01:46:32 UTC (rev 10535)
@@ -58,6 +58,10 @@
 		assertTrue( entries.contains( entry ) );
 		assertNull( ( (JarVisitor.Entry) entries.iterator().next() ).getInputStream() );
 		assertEquals( 2, jarVisitor.getMatchingEntries()[2].size() );
+		for (JarVisitor.Entry localEntry : (Set<JarVisitor.Entry>) jarVisitor.getMatchingEntries()[2] ) {
+			assertNotNull( localEntry.getInputStream() );
+			localEntry.getInputStream().close();
+		}
 
 //		Set<String> classes = jarVisitor.getClassNames();
 //		assertEquals( 3, classes.size() );
@@ -80,7 +84,10 @@
 		assertTrue( entries.contains( entry ) );
 		assertNull( ( (JarVisitor.Entry) entries.iterator().next() ).getInputStream() );
 		assertEquals( 2, jarVisitor.getMatchingEntries()[2].size() );
-
+		for (JarVisitor.Entry localEntry : (Set<JarVisitor.Entry>) jarVisitor.getMatchingEntries()[2] ) {
+			assertNotNull( localEntry.getInputStream() );
+			localEntry.getInputStream().close();
+		}
 //		Set<String> classes = jarVisitor.getClassNames();
 //		assertEquals( 3, classes.size() );
 //		assertTrue( classes.contains( ApplicationServer.class.getName() ) );
@@ -101,7 +108,10 @@
 
 		JarVisitor.Entry entry = new JarVisitor.Entry( Carpet.class.getName(), null );
 		assertTrue( entries[1].contains( entry ) );
-
+		for (JarVisitor.Entry localEntry : (Set<JarVisitor.Entry>) jarVisitor.getMatchingEntries()[2] ) {
+			assertNotNull( localEntry.getInputStream() );
+			localEntry.getInputStream().close();
+		}
 //		Set<String> classes = jarVisitor.getClassNames();
 //		assertEquals( 2, classes.size() );
 //		assertEquals( 1, jarVisitor.getPackageNames().size() );
@@ -109,7 +119,7 @@
 //		assertTrue( classes.contains( Carpet.class.getName() ) );
 	}
 
-	public void testDuplicateFilterExplodedJar() throws Exception {
+	public void testDuplicateFilterExplodedJarExpectedfail() throws Exception {
 		String jarFileName = "./build/testresources/explodedpar.par";
 		//JarVisitor jarVisitor = new ExplodedJarVisitor( jarFileName, true, true );
 		JarVisitor.Filter[] filters = getFilters();
@@ -122,7 +132,7 @@
 		for ( JarVisitor.Filter filter : filters ) {
 			dupeFilters[index++] = filter;
 		}
-		JarVisitor jarVisitor = new ExplodedJarVisitor( jarFileName, filters );
+		JarVisitor jarVisitor = new ExplodedJarVisitor( jarFileName, dupeFilters );
 		assertEquals( "explodedpar", jarVisitor.getUnqualifiedJarName() );
 		Set[] entries = jarVisitor.getMatchingEntries();
 		assertEquals( 1, entries[1].size() );




More information about the hibernate-commits mailing list