You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm-commits@maven.apache.org by ol...@apache.org on 2011/01/15 10:22:34 UTC
svn commit: r1059276 - in
/maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/cli:
AccuRevCommandLine.java XppStreamConsumer.java
Author: olamy
Date: Sat Jan 15 09:22:32 2011
New Revision: 1059276
URL: http://svn.apache.org/viewvc?rev=1059276&view=rev
Log:
[SCM-588] Filehandle leak in AccuRev provider
Modified:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/cli/AccuRevCommandLine.java
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/cli/XppStreamConsumer.java
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/cli/AccuRevCommandLine.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/cli/AccuRevCommandLine.java?rev=1059276&r1=1059275&r2=1059276&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/cli/AccuRevCommandLine.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/cli/AccuRevCommandLine.java Sat Jan 15 09:22:32 2011
@@ -61,12 +61,12 @@ public class AccuRevCommandLine
private Commandline cl = new Commandline();
- private StreamConsumer systemErr;
-
private StringBuffer commandLines = new StringBuffer();
private StringBuffer errorOutput = new StringBuffer();
+ private StreamConsumer systemErr;
+
private String[] hostArgs = EMPTY_STRING_ARRAY;
private String[] authArgs = EMPTY_STRING_ARRAY;
@@ -247,6 +247,7 @@ public class AccuRevCommandLine
cl = new Commandline();
commandLines = new StringBuffer();
errorOutput = new StringBuffer();
+ systemErr = new ErrorConsumer( getLogger(), errorOutput );
cl.getShell().setQuotedArgumentsEnabled( true );
cl.setExecutable( executable );
@@ -377,9 +378,7 @@ public class AccuRevCommandLine
public void setLogger( ScmLogger logger )
{
-
this.logger = logger;
- this.systemErr = new ErrorConsumer( logger, errorOutput );
}
public ScmLogger getLogger()
@@ -572,11 +571,11 @@ public class AccuRevCommandLine
{
popArgs = new String[] { "pop", "-v", versionSpec, "-L", basedir.getAbsolutePath(), "-R" };
}
- else //this will BARF for pre 4.9.0, but clients are expected to check AccuRevCapability before calling.
+ else
+ // this will BARF for pre 4.9.0, but clients are expected to check AccuRevCapability before calling.
{
popArgs = new String[] { "pop", "-v", versionSpec, "-L", basedir.getAbsolutePath(), "-t", tranSpec, "-R" };
}
-
List<File> poppedFiles = new ArrayList<File>();
return executeCommandLine( basedir, popArgs, elements, FileConsumer.POPULATE_PATTERN, poppedFiles ) ? poppedFiles
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/cli/XppStreamConsumer.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/cli/XppStreamConsumer.java?rev=1059276&r1=1059275&r2=1059276&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/cli/XppStreamConsumer.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/cli/XppStreamConsumer.java Sat Jan 15 09:22:32 2011
@@ -20,6 +20,7 @@ package org.apache.maven.scm.provider.ac
*/
import java.io.IOException;
+import java.io.Reader;
import java.io.Writer;
import java.nio.channels.Channels;
import java.nio.channels.Pipe;
@@ -63,6 +64,8 @@ public abstract class XppStreamConsumer
private int lineCount = 0;
+ private Reader reader;
+
public XppStreamConsumer( ScmLogger logger )
{
@@ -73,9 +76,10 @@ public abstract class XppStreamConsumer
Pipe p = Pipe.open();
SinkChannel sink = p.sink();
SourceChannel source = p.source();
-
writer = Channels.newWriter( sink, Charset.defaultCharset().name() );
- parser.setInput( Channels.newReader( source, Charset.defaultCharset().name() ) );
+ reader = Channels.newReader( source, Charset.defaultCharset().name() );
+ parser.setInput( reader );
+
}
catch ( Exception e )
{
@@ -121,6 +125,16 @@ public abstract class XppStreamConsumer
{
synchronized ( this )
{
+
+ try
+ {
+ reader.close();
+ }
+ catch ( IOException e )
+ {
+ getLogger().warn( "Error closing pipe reader", e );
+ }
+
complete = true;
this.notifyAll();
}