You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@continuum.apache.org by ol...@apache.org on 2008/08/13 02:58:08 UTC
svn commit: r685402 - in /continuum/trunk/continuum-core/src:
main/java/org/apache/maven/continuum/project/builder/
main/java/org/apache/maven/continuum/project/builder/maven/
test/java/org/apache/maven/continuum/core/action/
test/java/org/apache/maven...
Author: olamy
Date: Tue Aug 12 17:58:08 2008
New Revision: 685402
URL: http://svn.apache.org/viewvc?rev=685402&view=rev
Log:
[CONTINUUM-1489] replace use of MungedHttpsURL with commons-httpclient
start some jobs on using httpclient 4.0-alpha4
TODO basic auth and https tests (at the end removing plexus-formica)
Modified:
continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/project/builder/AbstractContinuumProjectBuilder.java
continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/project/builder/maven/MavenTwoContinuumProjectBuilder.java
continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/core/action/CreateProjectsFromMetadataTest.java
continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/project/builder/AbstractContinuumProjectBuilderTest.java
Modified: continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/project/builder/AbstractContinuumProjectBuilder.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/project/builder/AbstractContinuumProjectBuilder.java?rev=685402&r1=685401&r2=685402&view=diff
==============================================================================
--- continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/project/builder/AbstractContinuumProjectBuilder.java (original)
+++ continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/project/builder/AbstractContinuumProjectBuilder.java Tue Aug 12 17:58:08 2008
@@ -19,43 +19,104 @@
* under the License.
*/
-import org.codehaus.plexus.formica.util.MungedHttpsURL;
-import org.codehaus.plexus.logging.AbstractLogEnabled;
-import org.codehaus.plexus.util.FileUtils;
-import org.codehaus.plexus.util.IOUtil;
-import org.codehaus.plexus.util.StringUtils;
-
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
+import java.net.URISyntaxException;
import java.net.URL;
import java.net.UnknownHostException;
+import org.apache.commons.io.IOUtils;
+import org.apache.http.HttpException;
+import org.apache.http.HttpResponse;
+import org.apache.http.HttpVersion;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.conn.ClientConnectionManager;
+import org.apache.http.conn.params.ConnPerRouteBean;
+import org.apache.http.conn.params.HttpConnectionManagerParams;
+import org.apache.http.conn.scheme.PlainSocketFactory;
+import org.apache.http.conn.scheme.Scheme;
+import org.apache.http.conn.scheme.SchemeRegistry;
+import org.apache.http.conn.ssl.SSLSocketFactory;
+import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
+import org.apache.http.params.BasicHttpParams;
+import org.apache.http.params.HttpParams;
+import org.apache.http.params.HttpProtocolParams;
+import org.apache.http.util.EntityUtils;
+import org.codehaus.plexus.logging.AbstractLogEnabled;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
+import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.util.IOUtil;
+import org.codehaus.plexus.util.StringUtils;
+
/**
* @author <a href="mailto:trygvis@inamo.no">Trygve Laugstøl</a>
* @version $Id$
*/
public abstract class AbstractContinuumProjectBuilder
extends AbstractLogEnabled
- implements ContinuumProjectBuilder
+ implements ContinuumProjectBuilder, Initializable
{
private static final String TMP_DIR = System.getProperty( "java.io.tmpdir" );
+
+ private HttpClient httpClient;
+
+
+ public void initialize()
+ throws InitializationException
+ {
+ SchemeRegistry schemeRegistry = new SchemeRegistry();
+ // http scheme
+ schemeRegistry.register( new Scheme( "http", PlainSocketFactory.getSocketFactory(), 80 ) );
+
+ // https scheme
+ schemeRegistry.register( new Scheme( "https", SSLSocketFactory.getSocketFactory(), 443 ) );
+
+ HttpParams params = new BasicHttpParams();
+ // TODO put this values to a configuration way ???
+ HttpConnectionManagerParams.setMaxTotalConnections( params, 30 );
+ HttpConnectionManagerParams.setMaxConnectionsPerRoute( params, new ConnPerRouteBean( 30 ) );
+ HttpProtocolParams.setVersion( params, HttpVersion.HTTP_1_1 );
+
+ ClientConnectionManager cm = new ThreadSafeClientConnManager( params, schemeRegistry );
+ httpClient = new DefaultHttpClient( cm, params );
- protected File createMetadataFile( URL metadata, String username, String password )
- throws IOException
+
+ }
+
+ protected File createMetadataFile( URL metadata, String username, String password, ContinuumProjectBuildingResult result )
+ throws IOException, URISyntaxException, HttpException
{
getLogger().info( "Downloading " + metadata.toExternalForm() );
InputStream is = null;
-
+
if ( metadata.getProtocol().startsWith( "http" ) )
{
- is =
- new MungedHttpsURL( metadata.toExternalForm(), username, password ).getURLConnection().getInputStream();
+ HttpGet httpGet = new HttpGet( metadata.toURI() );
+ HttpResponse httpResponse = httpClient.execute( httpGet );
+
+ // TODO check http return code
+ int res = httpResponse.getStatusLine().getStatusCode();
+ switch (res)
+ {
+ case 401:
+ getLogger().debug( "Error adding project: Unauthorized " + metadata, null );
+ result.addError( ContinuumProjectBuildingResult.ERROR_UNAUTHORIZED );
+ return null;
+ default :
+ }
+ is = IOUtils.toInputStream( EntityUtils.toString( httpResponse.getEntity(), EntityUtils
+ .getContentCharSet( httpResponse.getEntity() ) ) );
+ //is =
+ // new MungedHttpsURL( metadata.toExternalForm(), username, password ).getURLConnection().getInputStream();
}
else
{
@@ -137,7 +198,7 @@
{
try
{
- return createMetadataFile( metadata, username, password );
+ return createMetadataFile( metadata, username, password, result );
}
catch ( FileNotFoundException e )
{
@@ -149,6 +210,11 @@
getLogger().info( "Malformed URL: " + metadata, e );
result.addError( ContinuumProjectBuildingResult.ERROR_MALFORMED_URL );
}
+ catch ( URISyntaxException e )
+ {
+ getLogger().info( "Malformed URL: " + metadata, e );
+ result.addError( ContinuumProjectBuildingResult.ERROR_MALFORMED_URL );
+ }
catch ( UnknownHostException e )
{
getLogger().info( "Unknown host: " + metadata, e );
@@ -159,6 +225,11 @@
getLogger().warn( "Could not download the URL: " + metadata, e );
result.addError( ContinuumProjectBuildingResult.ERROR_UNKNOWN );
}
+ catch ( HttpException e )
+ {
+ getLogger().warn( "Could not download the URL: " + metadata, e );
+ result.addError( ContinuumProjectBuildingResult.ERROR_UNKNOWN );
+ }
return null;
}
Modified: continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/project/builder/maven/MavenTwoContinuumProjectBuilder.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/project/builder/maven/MavenTwoContinuumProjectBuilder.java?rev=685402&r1=685401&r2=685402&view=diff
==============================================================================
--- continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/project/builder/maven/MavenTwoContinuumProjectBuilder.java (original)
+++ continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/project/builder/maven/MavenTwoContinuumProjectBuilder.java Tue Aug 12 17:58:08 2008
@@ -19,9 +19,20 @@
* under the License.
*/
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.net.ConnectException;
+import java.net.MalformedURLException;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+
import org.apache.continuum.dao.LocalRepositoryDao;
import org.apache.continuum.dao.ScheduleDao;
import org.apache.continuum.model.repository.LocalRepository;
+import org.apache.http.HttpException;
import org.apache.maven.continuum.builddefinition.BuildDefinitionService;
import org.apache.maven.continuum.builddefinition.BuildDefinitionServiceException;
import org.apache.maven.continuum.configuration.ConfigurationService;
@@ -40,15 +51,6 @@
import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.util.StringUtils;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.net.ConnectException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.List;
-
/**
* @author <a href="mailto:trygvis@inamo.no">Trygve Laugstøl</a>
* @version $Id$
@@ -149,7 +151,7 @@
try
{
- pomFile = createMetadataFile( url, username, password );
+ pomFile = createMetadataFile( url, username, password, result );
mavenProject = builderHelper.getMavenProject( result, pomFile );
if ( result.hasErrors() )
@@ -163,6 +165,12 @@
result.addError( ContinuumProjectBuildingResult.ERROR_MALFORMED_URL );
return;
}
+ catch ( URISyntaxException e )
+ {
+ getLogger().debug( "Error adding project: Malformed URL " + url, e );
+ result.addError( ContinuumProjectBuildingResult.ERROR_MALFORMED_URL );
+ return;
+ }
catch ( FileNotFoundException e )
{
getLogger().debug( "Error adding project: File not found " + url, e );
@@ -177,19 +185,16 @@
}
catch ( IOException e )
{
- if ( e.getMessage() != null )
- {
- if ( e.getMessage().indexOf( "Server returned HTTP response code: 401" ) >= 0 )
- {
- getLogger().debug( "Error adding project: Unauthorized " + url, e );
- result.addError( ContinuumProjectBuildingResult.ERROR_UNAUTHORIZED );
- return;
- }
- }
getLogger().info( "Error adding project: Unknown error downloading from " + url, e );
result.addError( ContinuumProjectBuildingResult.ERROR_UNKNOWN );
return;
}
+ catch ( HttpException e )
+ {
+ getLogger().info( "Error adding project: Unknown error downloading from " + url, e );
+ result.addError( ContinuumProjectBuildingResult.ERROR_UNKNOWN );
+ return;
+ }
finally
{
if ( pomFile != null && pomFile.exists() )
Modified: continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/core/action/CreateProjectsFromMetadataTest.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/core/action/CreateProjectsFromMetadataTest.java?rev=685402&r1=685401&r2=685402&view=diff
==============================================================================
--- continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/core/action/CreateProjectsFromMetadataTest.java (original)
+++ continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/core/action/CreateProjectsFromMetadataTest.java Tue Aug 12 17:58:08 2008
@@ -87,6 +87,7 @@
return bdt;
}
+ @SuppressWarnings("unchecked")
public void testExecuteWithNonRecursiveMode()
throws Exception
{
Modified: continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/project/builder/AbstractContinuumProjectBuilderTest.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/project/builder/AbstractContinuumProjectBuilderTest.java?rev=685402&r1=685401&r2=685402&view=diff
==============================================================================
--- continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/project/builder/AbstractContinuumProjectBuilderTest.java (original)
+++ continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/project/builder/AbstractContinuumProjectBuilderTest.java Tue Aug 12 17:58:08 2008
@@ -58,7 +58,7 @@
URL url = new URL( "https://someurl/pom.xml" );
String username = "myusername";
String password = "mypassword";
- builder.createMetadataFile( url, username, password );
+ builder.createMetadataFile( url, username, password, new ContinuumProjectBuildingResult() );
}
private class ContinuumProjectBuilder