[jboss-svn-commits] JBL Code SVN: r24748 - in labs/jbossrules/trunk: drools-core/src/main/java/org/drools/agent and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Jan 16 00:56:28 EST 2009


Author: mark.proctor at jboss.com
Date: 2009-01-16 00:56:28 -0500 (Fri, 16 Jan 2009)
New Revision: 24748

Modified:
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/util/ChainedProperties.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/RuleAgent.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/asm/ClassReader.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/asm/ClassFieldInspector.java
Log:
JBRULES-1672 Input streams are not closed when no longer needed
-Applied patch from JIRA to close input streams

Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/util/ChainedProperties.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/util/ChainedProperties.java	2009-01-16 05:31:54 UTC (rev 24747)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/util/ChainedProperties.java	2009-01-16 05:56:28 UTC (rev 24748)
@@ -260,7 +260,9 @@
         }
         Properties properties = new Properties();
         try {
-            properties.load( confURL.openStream() );
+            java.io.InputStream is = confURL.openStream();
+            properties.load( is );
+            is.close();
             chain.add( properties );
         } catch ( IOException e ) {
             //throw new IllegalArgumentException( "Invalid URL to properties file '" + confURL.toExternalForm() + "'" );

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/RuleAgent.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/RuleAgent.java	2009-01-16 05:31:54 UTC (rev 24747)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/RuleAgent.java	2009-01-16 05:56:28 UTC (rev 24748)
@@ -96,9 +96,9 @@
                                                                  URLScanner.class );
                                                         }
                                                     };
-                                                    
-    String               name;
 
+    String                        name;
+
     /**
      * This is true if the rulebase is created anew each time.
      */
@@ -284,7 +284,7 @@
                              listener,
                              ruleBaseConfiguration );
     }
-    
+
     public void setName(String name) {
         this.name = name;
         if ( this.listener != null ) {
@@ -298,11 +298,20 @@
         try {
             props.load( in );
             return props;
-
         } catch ( IOException e ) {
             throw new RuntimeDroolsException( "Unable to load properties. Needs to be the path and name of a config file on your classpath.",
                                               e );
+        } finally {
+            if ( null != in ) {
+                try {
+                    in.close();
+                } catch ( IOException e ) {
+                    throw new RuntimeDroolsException( "Unable to load properties. Could not close InputStream.",
+                                                      e );
+                }
+            }
         }
+
     }
 
     /**
@@ -426,7 +435,7 @@
 
                 default :
                     if ( !inquotes && (c == ' ' || c == '\n' || c == '\r' || c == '\t') ) {
-                        if ( !"".equals(current.trim()) ) { 
+                        if ( !"".equals( current.trim() ) ) {
                             items.add( current );
                             current = "";
                         }
@@ -436,7 +445,7 @@
                     break;
             }
         }
-        if ( !"".equals(current.trim()) ) { 
+        if ( !"".equals( current.trim() ) ) {
             items.add( current );
         }
 
@@ -570,7 +579,7 @@
             }
 
             public void warning(String message,
-                                Object object) { 
+                                Object object) {
             }
 
         };

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/asm/ClassReader.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/asm/ClassReader.java	2009-01-16 05:31:54 UTC (rev 24747)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/asm/ClassReader.java	2009-01-16 05:56:28 UTC (rev 24748)
@@ -276,15 +276,28 @@
         if ( is == null ) {
             throw new IOException( "Class not found" );
         }
-        byte[] b = new byte[is.available()];
-        int len = 0;
-        while ( true ) {
-            final int n = is.read( b,
-                                   len,
-                                   b.length - len );
-            if ( n == -1 ) {
-                if ( len < b.length ) {
-                    final byte[] c = new byte[len];
+        try {
+            byte[] b = new byte[is.available()];
+            int len = 0;
+            while ( true ) {
+                final int n = is.read( b,
+                                       len,
+                                       b.length - len );
+                if ( n == -1 ) {
+                    if ( len < b.length ) {
+                        final byte[] c = new byte[len];
+                        System.arraycopy( b,
+                                          0,
+                                          c,
+                                          0,
+                                          len );
+                        b = c;
+                    }
+                    return b;
+                }
+                len += n;
+                if ( len == b.length ) {
+                    final byte[] c = new byte[b.length + 1000];
                     System.arraycopy( b,
                                       0,
                                       c,
@@ -292,18 +305,14 @@
                                       len );
                     b = c;
                 }
-                return b;
             }
-            len += n;
-            if ( len == b.length ) {
-                final byte[] c = new byte[b.length + 1000];
-                System.arraycopy( b,
-                                  0,
-                                  c,
-                                  0,
-                                  len );
-                b = c;
+        } finally {
+            try {
+                is.close();
+            } catch ( IOException e ) {
+                throw new RuntimeException( "Unable to close InputStream", e);
             }
+
         }
     }
 

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/asm/ClassFieldInspector.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/asm/ClassFieldInspector.java	2009-01-16 05:31:54 UTC (rev 24747)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/asm/ClassFieldInspector.java	2009-01-16 05:56:28 UTC (rev 24748)
@@ -75,6 +75,7 @@
             processClassWithoutByteCode( clazz,
                                          includeFinalMethods );
         }
+        stream.close();
     }
 
     /** Walk up the inheritance hierarchy recursively, reading in fields */
@@ -99,6 +100,7 @@
                 processClassWithoutByteCode( clazz.getSuperclass(),
                                              includeFinalMethods );
             }
+            parentStream.close();
         }
         if ( clazz.isInterface() ) {
             final Class< ? >[] interfaces = clazz.getInterfaces();
@@ -113,6 +115,7 @@
                     processClassWithoutByteCode( interfaces[i],
                                                  includeFinalMethods );
                 }
+                parentStream.close();
             }
         }
     }




More information about the jboss-svn-commits mailing list