[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