You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by cw...@apache.org on 2011/03/28 16:51:41 UTC

svn commit: r1086259 - in /aries/trunk/application/application-utils/src/main/java/org/apache/aries/application: impl/DeploymentMetadataFactoryImpl.java utils/manifest/ManifestProcessor.java

Author: cwilkin
Date: Mon Mar 28 14:51:41 2011
New Revision: 1086259

URL: http://svn.apache.org/viewvc?rev=1086259&view=rev
Log:
ARIES-622: Ensure closing of inputstreams in the manifest processor

Modified:
    aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/impl/DeploymentMetadataFactoryImpl.java
    aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/utils/manifest/ManifestProcessor.java

Modified: aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/impl/DeploymentMetadataFactoryImpl.java
URL: http://svn.apache.org/viewvc/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/impl/DeploymentMetadataFactoryImpl.java?rev=1086259&r1=1086258&r2=1086259&view=diff
==============================================================================
--- aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/impl/DeploymentMetadataFactoryImpl.java (original)
+++ aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/impl/DeploymentMetadataFactoryImpl.java Mon Mar 28 14:51:41 2011
@@ -31,6 +31,7 @@ import org.apache.aries.application.file
 import org.apache.aries.application.management.AriesApplication;
 import org.apache.aries.application.management.BundleInfo;
 import org.apache.aries.application.management.ResolverException;
+import org.apache.aries.application.utils.filesystem.IOUtils;
 import org.apache.aries.application.utils.manifest.ManifestProcessor;
 
 public class DeploymentMetadataFactoryImpl implements DeploymentMetadataFactory
@@ -48,7 +49,7 @@ public class DeploymentMetadataFactoryIm
     try {
       return parseDeploymentMetadata(is);
     } finally {
-      is.close();
+      IOUtils.close(is);
     }
   }
 

Modified: aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/utils/manifest/ManifestProcessor.java
URL: http://svn.apache.org/viewvc/aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/utils/manifest/ManifestProcessor.java?rev=1086259&r1=1086258&r2=1086259&view=diff
==============================================================================
--- aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/utils/manifest/ManifestProcessor.java (original)
+++ aries/trunk/application/application-utils/src/main/java/org/apache/aries/application/utils/manifest/ManifestProcessor.java Mon Mar 28 14:51:41 2011
@@ -34,6 +34,7 @@ import java.util.jar.Manifest;
 import org.apache.aries.application.filesystem.IDirectory;
 import org.apache.aries.application.filesystem.IFile;
 import org.apache.aries.application.utils.AppConstants;
+import org.apache.aries.application.utils.filesystem.IOUtils;
 
 /**
  * This class contains utilities for parsing manifests. It provides methods to
@@ -97,47 +98,52 @@ public class ManifestProcessor
   {
     Manifest man = new Manifest();
     
-    // I'm assuming that we use UTF-8 here, but the jar spec doesn't say.
-    BufferedReader reader = new BufferedReader(new InputStreamReader(in, "UTF-8"));
-    
-    String line;
-    StringBuilder attribute = null;
-    
-    String namedAttribute = null;
-    
-    do {
-      line = reader.readLine();
-
-      // if we get a blank line skip to the next one
-      if (line != null && line.trim().length() == 0) continue;
-      if (line != null && line.charAt(0) == ' ' && attribute != null) {
-        // we have a continuation line, so add to the builder, ignoring the
-        // first character
-        attribute.append(line.trim());
-      } else if (attribute == null) {
-        attribute = new StringBuilder(line.trim());
-      } else if (attribute != null) {
-        // We have fully parsed an attribute
-        int index = attribute.indexOf(":");
-        String attributeName = attribute.substring(0, index).trim();
-        // TODO cope with index + 1 being after the end of attribute
-        String attributeValue = attribute.substring(index + 1).trim();
-        
-        if ("Name".equals(attributeName)) {
-          man.getEntries().put(attributeValue, new Attributes());
-          namedAttribute = attributeValue;
-        } else {
-          if (namedAttribute == null) {
-            man.getMainAttributes().put(new Attributes.Name(attributeName), attributeValue);
+    try
+    {
+      // I'm assuming that we use UTF-8 here, but the jar spec doesn't say.
+      BufferedReader reader = new BufferedReader(new InputStreamReader(in, "UTF-8"));
+      
+      String line;
+      StringBuilder attribute = null;
+      
+      String namedAttribute = null;
+      
+      do {
+        line = reader.readLine();
+  
+        // if we get a blank line skip to the next one
+        if (line != null && line.trim().length() == 0) continue;
+        if (line != null && line.charAt(0) == ' ' && attribute != null) {
+          // we have a continuation line, so add to the builder, ignoring the
+          // first character
+          attribute.append(line.trim());
+        } else if (attribute == null) {
+          attribute = new StringBuilder(line.trim());
+        } else if (attribute != null) {
+          // We have fully parsed an attribute
+          int index = attribute.indexOf(":");
+          String attributeName = attribute.substring(0, index).trim();
+          // TODO cope with index + 1 being after the end of attribute
+          String attributeValue = attribute.substring(index + 1).trim();
+          
+          if ("Name".equals(attributeName)) {
+            man.getEntries().put(attributeValue, new Attributes());
+            namedAttribute = attributeValue;
           } else {
-            man.getAttributes(namedAttribute).put(new Attributes.Name(attributeName), attributeValue);
+            if (namedAttribute == null) {
+              man.getMainAttributes().put(new Attributes.Name(attributeName), attributeValue);
+            } else {
+              man.getAttributes(namedAttribute).put(new Attributes.Name(attributeName), attributeValue);
+            }
           }
+          
+          if (line != null) attribute = new StringBuilder(line.trim());
         }
-        
-        if (line != null) attribute = new StringBuilder(line.trim());
-      }
-    } while (line != null);
-    
+      } while (line != null);
+    }
+    finally {
+      IOUtils.close(in);
+    }
     return man;
   }