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;
}