You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ol...@apache.org on 2011/11/26 23:51:20 UTC
svn commit: r1206629 - in
/maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker:
./ github/ patching/ patching/github/
Author: olamy
Date: Sat Nov 26 22:51:18 2011
New Revision: 1206629
URL: http://svn.apache.org/viewvc?rev=1206629&view=rev
Log:
refactor to be able to support more patch system providers: reviewboard github is not the only system in our world
Added:
maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/
maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/PatchRepository.java (with props)
maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/PatchRepositoryException.java (with props)
maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/PatchRepositoryRequest.java (with props)
maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/PatchRepositoryResult.java (with props)
maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/github/
maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/github/GitHubPatchRepository.java (contents, props changed)
- copied, changed from r1206628, maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/github/PullRequest.java
maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/github/GithubPatchRepositoryResult.java (with props)
Removed:
maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/github/PullRequest.java
Modified:
maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/AbstractPatchMojo.java
maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/PullRequestToJiraMojo.java
Modified: maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/AbstractPatchMojo.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/AbstractPatchMojo.java?rev=1206629&r1=1206628&r2=1206629&view=diff
==============================================================================
--- maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/AbstractPatchMojo.java (original)
+++ maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/AbstractPatchMojo.java Sat Nov 26 22:51:18 2011
@@ -21,6 +21,7 @@ package org.apache.maven.plugins.patchtr
import org.apache.commons.lang.StringUtils;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.patchtracker.patching.PatchRepository;
import org.apache.maven.plugins.patchtracker.tracking.PatchTracker;
import org.apache.maven.plugins.patchtracker.tracking.PatchTrackerRequest;
import org.apache.maven.project.MavenProject;
@@ -110,9 +111,14 @@ public abstract class AbstractPatchMojo
protected String password;
/**
- * @parameter expression="${patch.system}" default-value=""
+ * @parameter expression="${patch.issueSystem}" default-value=""
*/
- protected String system;
+ protected String issueSystem;
+
+ /**
+ * @parameter expression="${patch.patchSystem}" default-value="${project.patchManagement.system}"
+ */
+ protected String patchSystem;
/**
* @parameter expression="${patch.summary}" default-value=""
@@ -321,9 +327,9 @@ public abstract class AbstractPatchMojo
String value = project.getIssueManagement() == null ? "" : project.getIssueManagement().getSystem();
// cli must win !
- if ( StringUtils.isNotEmpty( system ) )
+ if ( StringUtils.isNotEmpty( issueSystem ) )
{
- value = system;
+ value = issueSystem;
}
try
@@ -337,6 +343,28 @@ public abstract class AbstractPatchMojo
}
}
+ protected String getPatchRepositorySystem()
+ throws MojoExecutionException
+ {
+ String value = project.getProperties().getProperty( "project.patchManagement.system" );
+
+ // cli must win !
+ if ( StringUtils.isNotEmpty( patchSystem ) )
+ {
+ value = patchSystem;
+ }
+
+ try
+ {
+ return getValue( value, "path repository system id ?", Arrays.asList( "github" ), true,
+ "you must configure a patch system or at least use interactive mode", "github", false );
+ }
+ catch ( PrompterException e )
+ {
+ throw new MojoExecutionException( e.getMessage(), e );
+ }
+ }
+
protected String getValue( String currentValue, String message, List<String> possibleValues, boolean mandatory,
String errorMessage, String defaultValue, boolean passwordPrompt )
throws PrompterException, MojoExecutionException
@@ -421,6 +449,16 @@ public abstract class AbstractPatchMojo
return (PatchTracker) plexusContainer.lookup( PatchTracker.class.getName(), system );
}
+ protected PatchRepository getPatchRepository()
+ throws MojoExecutionException, ComponentLookupException
+ {
+ String system = getPatchRepositorySystem();
+
+ getLog().debug( "patch repository system:" + system );
+
+ return (PatchRepository) plexusContainer.lookup( PatchRepository.class.getName(), system );
+ }
+
public void contextualize( Context context )
throws ContextException
{
Modified: maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/PullRequestToJiraMojo.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/PullRequestToJiraMojo.java?rev=1206629&r1=1206628&r2=1206629&view=diff
==============================================================================
--- maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/PullRequestToJiraMojo.java (original)
+++ maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/PullRequestToJiraMojo.java Sat Nov 26 22:51:18 2011
@@ -18,24 +18,19 @@ package org.apache.maven.plugins.patchtr
* under the License.
*/
-import org.apache.commons.io.IOUtils;
-import org.apache.http.HttpResponse;
-import org.apache.http.client.ClientProtocolException;
-import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.plugins.patchtracker.github.PullRequest;
+import org.apache.maven.plugins.patchtracker.patching.PatchRepository;
+import org.apache.maven.plugins.patchtracker.patching.PatchRepositoryException;
+import org.apache.maven.plugins.patchtracker.patching.PatchRepositoryRequest;
+import org.apache.maven.plugins.patchtracker.patching.PatchRepositoryResult;
import org.apache.maven.plugins.patchtracker.tracking.PatchTracker;
import org.apache.maven.plugins.patchtracker.tracking.PatchTrackerException;
import org.apache.maven.plugins.patchtracker.tracking.PatchTrackerRequest;
import org.apache.maven.plugins.patchtracker.tracking.PatchTrackerResult;
-import org.codehaus.jackson.map.DeserializationConfig;
-import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
-import java.io.IOException;
-
/**
* @author Olivier Lamy
@@ -47,7 +42,7 @@ public class PullRequestToJiraMojo
{
/**
- * github user/organization : github.com/apache use apache
+ * for github user/organization : github.com/apache use apache
*
* @parameter expression="${patch.pullrequest.user}" default-value=""
*/
@@ -84,49 +79,36 @@ public class PullRequestToJiraMojo
// format curl -v https://api.github.com/repos/apache/directmemory/pulls/1
try
{
+ PatchRepositoryRequest patchRepositoryRequest =
+ new PatchRepositoryRequest().setUrl( githubApiUrl ).setRepository( repo ).setId(
+ pullRequestId ).setOrganization( user );
- String url = githubApiUrl + "/" + user + "/" + repo + "/pulls/" + pullRequestId;
- getLog().debug( "url" + url );
-
- HttpGet httpGet = new HttpGet( url );
-
- HttpResponse httpResponse = defaultHttpClient.execute( httpGet );
-
- ObjectMapper objectMapper = new ObjectMapper();
-
- // we don't parse all stuff
- objectMapper.configure( DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false );
+ PatchRepository patchRepository = getPatchRepository();
- String response = IOUtils.toString( httpResponse.getEntity().getContent() );
-
- getLog().debug( "response:" + response );
-
- PullRequest pullRequest = objectMapper.reader( PullRequest.class ).readValue( response );
-
- getLog().debug( "pullRequest:" + pullRequest.toString() );
+ PatchRepositoryResult result = patchRepository.getPatch( patchRepositoryRequest, getLog() );
PatchTrackerRequest patchTrackerRequest = buidPatchTrackerRequest( false );
- patchTrackerRequest.setSummary( pullRequest.getTitle() );
+ patchTrackerRequest.setSummary( result.getTitle() );
- patchTrackerRequest.setDescription( pullRequest.getBody() + ". url: " + pullRequest.getPatch_url() );
+ patchTrackerRequest.setDescription( result.getDescription() + ". url: " + result.getPatchUrl() );
- patchTrackerRequest.setPatchContent( getPatchContent( pullRequest ) );
+ patchTrackerRequest.setPatchContent( result.getPatchContent() );
+
+ getLog().debug( "patchTrackerRequest:" + patchTrackerRequest.toString() );
PatchTracker patchTracker = getPatchTracker();
- PatchTrackerResult result = patchTracker.createPatch( patchTrackerRequest );
- getLog().info( "issue created with id:" + result.getPatchId() + ", url:" + result.getPatchUrl() );
- }
- catch ( ClientProtocolException e )
- {
- throw new MojoExecutionException( e.getMessage(), e );
+ PatchTrackerResult patchTrackerResult = patchTracker.createPatch( patchTrackerRequest );
+ getLog().info( "issue created with id:" + patchTrackerResult.getPatchId() + ", url:"
+ + patchTrackerResult.getPatchUrl() );
+
}
- catch ( IOException e )
+ catch ( ComponentLookupException e )
{
throw new MojoExecutionException( e.getMessage(), e );
}
- catch ( ComponentLookupException e )
+ catch ( PatchRepositoryException e )
{
throw new MojoExecutionException( e.getMessage(), e );
}
@@ -136,13 +118,4 @@ public class PullRequestToJiraMojo
}
}
- protected String getPatchContent( PullRequest pullRequest )
- throws IOException, ClientProtocolException
- {
- HttpGet httpGet = new HttpGet( pullRequest.getPatch_url() );
-
- HttpResponse httpResponse = defaultHttpClient.execute( httpGet );
-
- return IOUtils.toString( httpResponse.getEntity().getContent() );
- }
}
Added: maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/PatchRepository.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/PatchRepository.java?rev=1206629&view=auto
==============================================================================
--- maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/PatchRepository.java (added)
+++ maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/PatchRepository.java Sat Nov 26 22:51:18 2011
@@ -0,0 +1,31 @@
+package org.apache.maven.plugins.patchtracker.patching;
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.plugin.logging.Log;
+
+/**
+ * @author Olivier Lamy
+ */
+public interface PatchRepository
+{
+
+ PatchRepositoryResult getPatch( PatchRepositoryRequest patchRepositoryRequest, Log log )
+ throws PatchRepositoryException;
+}
Propchange: maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/PatchRepository.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/PatchRepository.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/PatchRepositoryException.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/PatchRepositoryException.java?rev=1206629&view=auto
==============================================================================
--- maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/PatchRepositoryException.java (added)
+++ maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/PatchRepositoryException.java Sat Nov 26 22:51:18 2011
@@ -0,0 +1,31 @@
+package org.apache.maven.plugins.patchtracker.patching;
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/**
+ * @author Olivier Lamy
+ */
+public class PatchRepositoryException
+ extends Exception
+{
+ public PatchRepositoryException( String message, Throwable throwable )
+ {
+ super( message, throwable );
+ }
+}
Propchange: maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/PatchRepositoryException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/PatchRepositoryException.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/PatchRepositoryRequest.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/PatchRepositoryRequest.java?rev=1206629&view=auto
==============================================================================
--- maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/PatchRepositoryRequest.java (added)
+++ maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/PatchRepositoryRequest.java Sat Nov 26 22:51:18 2011
@@ -0,0 +1,113 @@
+package org.apache.maven.plugins.patchtracker.patching;
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.Serializable;
+
+/**
+ * @author Olivier Lamy
+ */
+public class PatchRepositoryRequest
+ implements Serializable
+{
+ /**
+ * for github user/organization : github.com/apache use apache
+ */
+ protected String organization;
+
+ /**
+ * for github repo : github.com/apache/maven-3 use maven-3
+ */
+ protected String repository;
+
+ /**
+ * for github pull request id
+ *
+ * @parameter expression="${patch.pullrequest.id}" default-value=""
+ */
+ protected String id;
+
+
+ /**
+ * for github api url https://api.github.com/repos
+ */
+ protected String url;
+
+ public PatchRepositoryRequest()
+ {
+ // no op
+ }
+
+ public String getOrganization()
+ {
+ return organization;
+ }
+
+ public PatchRepositoryRequest setOrganization( String organization )
+ {
+ this.organization = organization;
+ return this;
+ }
+
+ public String getRepository()
+ {
+ return repository;
+ }
+
+ public PatchRepositoryRequest setRepository( String repository )
+ {
+ this.repository = repository;
+ return this;
+ }
+
+ public String getId()
+ {
+ return id;
+ }
+
+ public PatchRepositoryRequest setId( String id )
+ {
+ this.id = id;
+ return this;
+ }
+
+ public String getUrl()
+ {
+ return url;
+ }
+
+ public PatchRepositoryRequest setUrl( String url )
+ {
+ this.url = url;
+ return this;
+ }
+
+ @Override
+ public String toString()
+ {
+ final StringBuilder sb = new StringBuilder();
+ sb.append( "PatchRepositoryRequest" );
+ sb.append( "{organization='" ).append( organization ).append( '\'' );
+ sb.append( ", repository='" ).append( repository ).append( '\'' );
+ sb.append( ", id='" ).append( id ).append( '\'' );
+ sb.append( ", url='" ).append( url ).append( '\'' );
+ sb.append( '}' );
+ return sb.toString();
+ }
+}
Propchange: maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/PatchRepositoryRequest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/PatchRepositoryRequest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/PatchRepositoryResult.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/PatchRepositoryResult.java?rev=1206629&view=auto
==============================================================================
--- maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/PatchRepositoryResult.java (added)
+++ maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/PatchRepositoryResult.java Sat Nov 26 22:51:18 2011
@@ -0,0 +1,112 @@
+package org.apache.maven.plugins.patchtracker.patching;
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.Serializable;
+
+/**
+ * @author Olivier Lamy
+ */
+public class PatchRepositoryResult
+ implements Serializable
+{
+ private String title;
+
+ private String htmlUrl;
+
+ private String patchUrl;
+
+ private String description;
+
+ private String patchContent;
+
+ public PatchRepositoryResult()
+ {
+ // no op
+ }
+
+ public String getTitle()
+ {
+ return title;
+ }
+
+ public PatchRepositoryResult setTitle( String title )
+ {
+ this.title = title;
+ return this;
+ }
+
+ public String getHtmlUrl()
+ {
+ return htmlUrl;
+ }
+
+ public PatchRepositoryResult setHtmlUrl( String htmlUrl )
+ {
+ this.htmlUrl = htmlUrl;
+ return this;
+ }
+
+ public String getPatchUrl()
+ {
+ return patchUrl;
+ }
+
+ public PatchRepositoryResult setPatchUrl( String patchUrl )
+ {
+ this.patchUrl = patchUrl;
+ return this;
+ }
+
+ public String getDescription()
+ {
+ return description;
+ }
+
+ public PatchRepositoryResult setDescription( String description )
+ {
+ this.description = description;
+ return this;
+ }
+
+ public String getPatchContent()
+ {
+ return patchContent;
+ }
+
+ public PatchRepositoryResult setPatchContent( String patchContent )
+ {
+ this.patchContent = patchContent;
+ return this;
+ }
+
+ @Override
+ public String toString()
+ {
+ final StringBuilder sb = new StringBuilder();
+ sb.append( "PatchRepositoryResult" );
+ sb.append( "{title='" ).append( title ).append( '\'' );
+ sb.append( ", htmlUrl='" ).append( htmlUrl ).append( '\'' );
+ sb.append( ", patchUrl='" ).append( patchUrl ).append( '\'' );
+ sb.append( ", description='" ).append( description ).append( '\'' );
+ sb.append( ", patchContent='" ).append( patchContent ).append( '\'' );
+ sb.append( '}' );
+ return sb.toString();
+ }
+}
Propchange: maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/PatchRepositoryResult.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/PatchRepositoryResult.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Copied: maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/github/GitHubPatchRepository.java (from r1206628, maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/github/PullRequest.java)
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/github/GitHubPatchRepository.java?p2=maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/github/GitHubPatchRepository.java&p1=maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/github/PullRequest.java&r1=1206628&r2=1206629&rev=1206629&view=diff
==============================================================================
--- maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/github/PullRequest.java (original)
+++ maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/github/GitHubPatchRepository.java Sat Nov 26 22:51:18 2011
@@ -1,4 +1,4 @@
-package org.apache.maven.plugins.patchtracker.github;
+package org.apache.maven.plugins.patchtracker.patching.github;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@@ -18,14 +18,97 @@ package org.apache.maven.plugins.patchtr
* under the License.
*/
-import java.io.Serializable;
+import org.apache.commons.io.IOUtils;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.ClientProtocolException;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.maven.plugin.logging.Log;
+import org.apache.maven.plugins.patchtracker.patching.PatchRepository;
+import org.apache.maven.plugins.patchtracker.patching.PatchRepositoryException;
+import org.apache.maven.plugins.patchtracker.patching.PatchRepositoryRequest;
+import org.apache.maven.plugins.patchtracker.patching.PatchRepositoryResult;
+import org.codehaus.jackson.JsonProcessingException;
+import org.codehaus.jackson.Version;
+import org.codehaus.jackson.map.DeserializationConfig;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.codehaus.jackson.map.module.SimpleModule;
+
+import java.io.IOException;
/**
* @author Olivier Lamy
+ * @plexus.component role="org.apache.maven.plugins.patchtracker.patching.PatchRepository" role-hint="github"
*/
-public class PullRequest
- implements Serializable
+public class GitHubPatchRepository
+ implements PatchRepository
{
+ DefaultHttpClient defaultHttpClient = new DefaultHttpClient();
+
+ public PatchRepositoryResult getPatch( PatchRepositoryRequest patchRepositoryRequest, Log log )
+ throws PatchRepositoryException
+ {
+ try
+ {
+ String url = patchRepositoryRequest.getUrl() + "/" + patchRepositoryRequest.getOrganization() + "/"
+ + patchRepositoryRequest.getRepository() + "/pulls/" + patchRepositoryRequest.getId();
+ log.debug( "url" + url );
+
+ HttpGet httpGet = new HttpGet( url );
+
+ HttpResponse httpResponse = defaultHttpClient.execute( httpGet );
+
+ String response = IOUtils.toString( httpResponse.getEntity().getContent() );
+
+ log.debug( "response:" + response );
+
+ PatchRepositoryResult patchRepositoryResult = fromJson( response );
+
+ log.debug( "patchRepositoryResult:" + patchRepositoryResult );
+
+ patchRepositoryResult.setPatchContent( getPatchContent( patchRepositoryResult ) );
+
+ log.debug( "pullRequest:" + patchRepositoryResult.toString() );
+ return patchRepositoryResult;
+ }
+ catch ( IOException e )
+ {
+ throw new PatchRepositoryException( e.getMessage(), e );
+ }
+ }
+
+ protected String getPatchContent( PatchRepositoryResult pullRequest )
+ throws IOException, ClientProtocolException
+ {
+ HttpGet httpGet = new HttpGet( pullRequest.getPatchUrl() );
+
+ HttpResponse httpResponse = defaultHttpClient.execute( httpGet );
+
+ return IOUtils.toString( httpResponse.getEntity().getContent() );
+ }
+
+ /**
+ * parse json from gitbut see http://developer.github.com/v3/pulls/
+ *
+ * @param jsonContent
+ * @return
+ * @throws IOException
+ * @throws JsonProcessingException
+ */
+ protected PatchRepositoryResult fromJson( String jsonContent )
+ throws IOException, JsonProcessingException
+ {
+ ObjectMapper objectMapper = new ObjectMapper();
+
+ // we don't parse all stuff
+ // se json format below or documentation
+ objectMapper.configure( DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false );
+
+ //objectMapper.
+
+ return objectMapper.reader( GithubPatchRepositoryResult.class ).readValue( jsonContent );
+ }
+
/**
* json format
* <p/>
@@ -163,69 +246,4 @@ public class PullRequest
* }
*/
- private String title;
-
- private String html_url;
-
- private String patch_url;
-
- private String body;
-
- public PullRequest()
- {
- // no op
- }
-
- public String getTitle()
- {
- return title;
- }
-
- public void setTitle( String title )
- {
- this.title = title;
- }
-
- public String getHtml_url()
- {
- return html_url;
- }
-
- public void setHtml_url( String html_url )
- {
- this.html_url = html_url;
- }
-
- public String getPatch_url()
- {
- return patch_url;
- }
-
- public void setPatch_url( String patch_url )
- {
- this.patch_url = patch_url;
- }
-
- public String getBody()
- {
- return body;
- }
-
- public void setBody( String body )
- {
- this.body = body;
- }
-
- @Override
- public String toString()
- {
- final StringBuilder sb = new StringBuilder();
- sb.append( "PullRequest" );
- sb.append( "{title='" ).append( title ).append( '\'' );
- sb.append( ", html_url='" ).append( html_url ).append( '\'' );
- sb.append( ", patch_url='" ).append( patch_url ).append( '\'' );
- sb.append( ", body='" ).append( body ).append( '\'' );
- sb.append( '}' );
- return sb.toString();
- }
}
Propchange: maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/github/GitHubPatchRepository.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/github/GitHubPatchRepository.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/github/GithubPatchRepositoryResult.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/github/GithubPatchRepositoryResult.java?rev=1206629&view=auto
==============================================================================
--- maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/github/GithubPatchRepositoryResult.java (added)
+++ maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/github/GithubPatchRepositoryResult.java Sat Nov 26 22:51:18 2011
@@ -0,0 +1,40 @@
+package org.apache.maven.plugins.patchtracker.patching.github;
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.plugins.patchtracker.patching.PatchRepositoryResult;
+import org.codehaus.jackson.annotate.JsonProperty;
+
+/**
+ * use jackson annotation to map field to json attributes
+ *
+ * @author Olivier Lamy
+ */
+public class GithubPatchRepositoryResult
+ extends PatchRepositoryResult
+{
+ @JsonProperty( "html_url" )
+ private String htmlUrl;
+
+ @JsonProperty( "patch_url" )
+ private String patchUrl;
+
+ @JsonProperty( "body" )
+ private String description;
+}
Propchange: maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/github/GithubPatchRepositoryResult.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/patching/github/GithubPatchRepositoryResult.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision