From a7ef4f0a1d3c51ab9f74a8ac4bd695fe84c947eb Mon Sep 17 00:00:00 2001 From: Fabrice Bellingard Date: Mon, 30 May 2011 19:18:32 +0200 Subject: SONAR-2453 Update the way "FALSE-POSITIVE" reviews are managed Add the violation id on a review JSON/XML format so that we don't have to add it later when we implement manual reviews. --- .../src/main/webapp/WEB-INF/app/models/review.rb | 2 ++ .../main/java/org/sonar/wsclient/services/Review.java | 18 ++++++++++++++++++ .../org/sonar/wsclient/services/ReviewCreateQuery.java | 2 +- .../org/sonar/wsclient/services/ReviewDeleteQuery.java | 7 +------ .../java/org/sonar/wsclient/services/ReviewQuery.java | 4 ++++ .../org/sonar/wsclient/services/ReviewUpdateQuery.java | 2 +- .../wsclient/unmarshallers/ReviewUnmarshaller.java | 1 + .../sonar/wsclient/services/ReviewDeleteQueryTest.java | 1 - .../wsclient/unmarshallers/ReviewUnmarshallerTest.java | 1 + .../src/test/resources/reviews/reviews-2.9.json | 2 +- 10 files changed, 30 insertions(+), 10 deletions(-) diff --git a/sonar-server/src/main/webapp/WEB-INF/app/models/review.rb b/sonar-server/src/main/webapp/WEB-INF/app/models/review.rb index d28b1de6a73..e44ce280a55 100644 --- a/sonar-server/src/main/webapp/WEB-INF/app/models/review.rb +++ b/sonar-server/src/main/webapp/WEB-INF/app/models/review.rb @@ -257,6 +257,7 @@ class Review < ActiveRecord::Base xml.severity(severity) xml.resource(resource.kee) if resource xml.line(resource_line) if resource_line && resource_line>0 + xml.violationId(rule_failure_permanent_id) if rule_failure_permanent_id xml.comments do review_comments.each do |comment| xml.comment do @@ -291,6 +292,7 @@ class Review < ActiveRecord::Base json['severity'] = severity json['resource'] = resource.kee if resource json['line'] = resource_line if resource_line && resource_line>0 + json['violationId'] = rule_failure_permanent_id if rule_failure_permanent_id comments = [] review_comments.each do |comment| comments << { diff --git a/sonar-ws-client/src/main/java/org/sonar/wsclient/services/Review.java b/sonar-ws-client/src/main/java/org/sonar/wsclient/services/Review.java index ba17f28d376..596b2763639 100644 --- a/sonar-ws-client/src/main/java/org/sonar/wsclient/services/Review.java +++ b/sonar-ws-client/src/main/java/org/sonar/wsclient/services/Review.java @@ -40,6 +40,7 @@ public class Review extends Model { private String resourceKee = null; private Integer line = null; private Boolean falsePositive = null; + private Long violationId; private List comments = new ArrayList(); /** @@ -243,6 +244,23 @@ public class Review extends Model { this.falsePositive = falsePositive; return this; } + + /** + * @since 2.9 + * @return the violation id + */ + public Long getViolationId() { + return violationId; + } + + /** + * @param id + * the violation id to set + */ + public Review setViolationId(Long violationId) { + this.violationId = violationId; + return this; + } /** * @return the comments diff --git a/sonar-ws-client/src/main/java/org/sonar/wsclient/services/ReviewCreateQuery.java b/sonar-ws-client/src/main/java/org/sonar/wsclient/services/ReviewCreateQuery.java index 96d7a57c66a..f48eb971e19 100644 --- a/sonar-ws-client/src/main/java/org/sonar/wsclient/services/ReviewCreateQuery.java +++ b/sonar-ws-client/src/main/java/org/sonar/wsclient/services/ReviewCreateQuery.java @@ -22,7 +22,7 @@ package org.sonar.wsclient.services; /** * @since 2.9 */ -public class ReviewCreateQuery extends UpdateQuery { +public class ReviewCreateQuery extends CreateQuery { private Long violationId; private String text; diff --git a/sonar-ws-client/src/main/java/org/sonar/wsclient/services/ReviewDeleteQuery.java b/sonar-ws-client/src/main/java/org/sonar/wsclient/services/ReviewDeleteQuery.java index fc919b00ea5..5a217666607 100644 --- a/sonar-ws-client/src/main/java/org/sonar/wsclient/services/ReviewDeleteQuery.java +++ b/sonar-ws-client/src/main/java/org/sonar/wsclient/services/ReviewDeleteQuery.java @@ -22,7 +22,7 @@ package org.sonar.wsclient.services; /** * @since 2.9 */ -public class ReviewDeleteQuery extends CreateQuery { +public class ReviewDeleteQuery extends DeleteQuery { private Long reviewId; private Long commentId; @@ -74,9 +74,4 @@ public class ReviewDeleteQuery extends CreateQuery { appendUrlParameter(url, "comment_id", getCommentId()); return url.toString(); } - - @Override - public Class getModelClass() { - return Review.class; - } } diff --git a/sonar-ws-client/src/main/java/org/sonar/wsclient/services/ReviewQuery.java b/sonar-ws-client/src/main/java/org/sonar/wsclient/services/ReviewQuery.java index a6701d4a18e..800bc048e04 100644 --- a/sonar-ws-client/src/main/java/org/sonar/wsclient/services/ReviewQuery.java +++ b/sonar-ws-client/src/main/java/org/sonar/wsclient/services/ReviewQuery.java @@ -264,6 +264,10 @@ public class ReviewQuery extends Query { return Review.class; } + public static ReviewQuery createForReview(Long id) { + return new ReviewQuery().setId(id); + } + public static ReviewQuery createForResource(Resource resource) { return new ReviewQuery().setResourceKeysOrIds(resource.getId().toString()); } diff --git a/sonar-ws-client/src/main/java/org/sonar/wsclient/services/ReviewUpdateQuery.java b/sonar-ws-client/src/main/java/org/sonar/wsclient/services/ReviewUpdateQuery.java index 328ec295216..244ef0b5b4d 100644 --- a/sonar-ws-client/src/main/java/org/sonar/wsclient/services/ReviewUpdateQuery.java +++ b/sonar-ws-client/src/main/java/org/sonar/wsclient/services/ReviewUpdateQuery.java @@ -22,7 +22,7 @@ package org.sonar.wsclient.services; /** * @since 2.9 */ -public class ReviewUpdateQuery extends CreateQuery { +public class ReviewUpdateQuery extends UpdateQuery { private Long reviewId; private String text; diff --git a/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/ReviewUnmarshaller.java b/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/ReviewUnmarshaller.java index f3fbb3a57e4..3ea023700ea 100644 --- a/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/ReviewUnmarshaller.java +++ b/sonar-ws-client/src/main/java/org/sonar/wsclient/unmarshallers/ReviewUnmarshaller.java @@ -43,6 +43,7 @@ public class ReviewUnmarshaller extends AbstractUnmarshaller { review.setResourceKee(utils.getString(json, "resource")); review.setLine(utils.getInteger(json, "line")); review.setFalsePositive(utils.getBoolean(json, "falsePositive")); + review.setViolationId(utils.getLong(json, "violationId")); review.setType(utils.getString(json, "type")); Object comments = utils.getField(json, "comments"); diff --git a/sonar-ws-client/src/test/java/org/sonar/wsclient/services/ReviewDeleteQueryTest.java b/sonar-ws-client/src/test/java/org/sonar/wsclient/services/ReviewDeleteQueryTest.java index ff2b22dadf8..d78bcf39baf 100644 --- a/sonar-ws-client/src/test/java/org/sonar/wsclient/services/ReviewDeleteQueryTest.java +++ b/sonar-ws-client/src/test/java/org/sonar/wsclient/services/ReviewDeleteQueryTest.java @@ -30,7 +30,6 @@ public class ReviewDeleteQueryTest extends QueryTestCase { public void testAddComment() { ReviewDeleteQuery query = ReviewDeleteQuery.deleteCommentQuery(13L, 2L); assertThat(query.getUrl(), is("/api/reviews/?id=13&comment_id=2&")); - assertThat(query.getModelClass().getName(), is(Review.class.getName())); } } \ No newline at end of file diff --git a/sonar-ws-client/src/test/java/org/sonar/wsclient/unmarshallers/ReviewUnmarshallerTest.java b/sonar-ws-client/src/test/java/org/sonar/wsclient/unmarshallers/ReviewUnmarshallerTest.java index d2c4cc73564..9041c11a06a 100644 --- a/sonar-ws-client/src/test/java/org/sonar/wsclient/unmarshallers/ReviewUnmarshallerTest.java +++ b/sonar-ws-client/src/test/java/org/sonar/wsclient/unmarshallers/ReviewUnmarshallerTest.java @@ -55,6 +55,7 @@ public class ReviewUnmarshallerTest extends UnmarshallerTestCase { assertThat(review.getSeverity(), is("MINOR")); assertThat(review.getResourceKee(), is("org.codehaus.sonar:sonar-channel:org.sonar.channel.CodeReaderConfiguration")); assertThat(review.getLine(), is(33)); + assertThat(review.getViolationId(), is(1L)); List comments = review.getComments(); assertThat(comments.size(), is(4)); Comment comment = comments.get(0); diff --git a/sonar-ws-client/src/test/resources/reviews/reviews-2.9.json b/sonar-ws-client/src/test/resources/reviews/reviews-2.9.json index 707438bbd31..8b1f11c62a8 100644 --- a/sonar-ws-client/src/test/resources/reviews/reviews-2.9.json +++ b/sonar-ws-client/src/test/resources/reviews/reviews-2.9.json @@ -1 +1 @@ -[{"id":3,"createdAt":"2011-04-26T15:44:42+0200","updatedAt":"2011-04-26T15:44:42+0200","author":"admin","assignee":"admin","title":"'static' modifier out of order with the JLS suggestions.","falsePositive":false,"status":"OPEN","severity":"MINOR","resource":"org.codehaus.sonar:sonar-channel:org.sonar.channel.CodeReaderConfiguration","line":33,"comments":[{"id":1,"author":"admin","updatedAt":"2011-04-26T15:44:42+0200","text":"This is a review.
And this is on multiple lines...

Wouhou!!!!!"},{"id":2,"author":"admin","updatedAt":"2011-04-26T17:10:19+0200","text":"Bold on multiple line?"},{"id":3,"author":"admin","updatedAt":"2011-04-26T17:11:02+0200","text":"And the bullets:
  • 1 bullet
  • \n
  • 2 bullets
"},{"id":4,"author":"admin","updatedAt":"2011-04-26T17:27:37+0200","text":"Wazzaa"}]},{"id":9,"createdAt":"2011-04-27T14:37:20+0200","updatedAt":"2011-04-27T14:37:20+0200","author":"admin","title":"New exception is thrown in catch block, original stack trace may be lost","falsePositive":true,"status":"OPEN","severity":"MAJOR","resource":"org.codehaus.sonar:sonar-channel:org.sonar.channel.CodeReader","line":84,"comments":[{"id":5,"author":"admin","updatedAt":"2011-04-27T14:37:20+0200","text":"Wazzaaaa"}]}] \ No newline at end of file +[{"id":3,"createdAt":"2011-04-26T15:44:42+0200","updatedAt":"2011-04-26T15:44:42+0200","author":"admin","assignee":"admin","title":"'static' modifier out of order with the JLS suggestions.","falsePositive":false,"status":"OPEN","severity":"MINOR","resource":"org.codehaus.sonar:sonar-channel:org.sonar.channel.CodeReaderConfiguration","line":33,"violationId":1,"comments":[{"id":1,"author":"admin","updatedAt":"2011-04-26T15:44:42+0200","text":"This is a review.
And this is on multiple lines...

Wouhou!!!!!"},{"id":2,"author":"admin","updatedAt":"2011-04-26T17:10:19+0200","text":"Bold on multiple line?"},{"id":3,"author":"admin","updatedAt":"2011-04-26T17:11:02+0200","text":"And the bullets:
  • 1 bullet
  • \n
  • 2 bullets
"},{"id":4,"author":"admin","updatedAt":"2011-04-26T17:27:37+0200","text":"Wazzaa"}]},{"id":9,"createdAt":"2011-04-27T14:37:20+0200","updatedAt":"2011-04-27T14:37:20+0200","author":"admin","title":"New exception is thrown in catch block, original stack trace may be lost","falsePositive":true,"status":"OPEN","severity":"MAJOR","resource":"org.codehaus.sonar:sonar-channel:org.sonar.channel.CodeReader","line":84,"violationId":2,"comments":[{"id":5,"author":"admin","updatedAt":"2011-04-27T14:37:20+0200","text":"Wazzaaaa"}]}] \ No newline at end of file -- cgit v1.2.3