55import com .thoughtworks .go .plugin .api .task .JobConsoleLogger ;
66import com .tw .go .plugin .common .*;
77import org .json .JSONObject ;
8+ import org .json .JSONArray ;
9+ import org .json .JSONException ;
810
911import java .security .GeneralSecurityException ;
1012import java .util .Map ;
@@ -44,12 +46,21 @@ public Result execute() throws Exception {
4446// log(" Requesting project's quality gate anonymously.");
4547// }
4648
47- // get quality gate details
49+ //get quality gate details
4850 JSONObject result = sonarClient .getProjectWithQualityGateDetails (sonarProjectKey );
51+ JSONObject project = (JSONObject ) result .get ("projectStatus" );
52+ JSONArray periods = (JSONArray ) project .get ("periods" );
53+ JSONObject lastPeriod = (JSONObject ) periods .get (periods .length () - 1 );
54+
55+ String lastDate = (String ) lastPeriod .get ("date" );
56+ String lastVersion = (String ) lastPeriod .get ("parameter" );
4957
5058 if (!("" .equals (stageName )) && !("" .equals (jobName )) && !("" .equals (jobCounter ))) {
5159 String scheduledTime = getScheduledTime ();
52- String resultDate = result .getString ("date" );
60+
61+
62+
63+ String resultDate = lastDate ;
5364 resultDate = new StringBuilder (resultDate ).insert (resultDate .length ()-2 , ":" ).toString ();
5465
5566 int timeout = 0 ;
@@ -64,15 +75,15 @@ public Result execute() throws Exception {
6475
6576 timeout = timeout + timeoutTime ;
6677
67- resultDate = result . getString ( "date" ) ;
78+ resultDate = lastDate ;
6879 resultDate = new StringBuilder (resultDate ).insert (resultDate .length ()-2 , ":" ).toString ();
6980
7081 if (timeout > timeLimit ) {
7182
7283 log ("No new scan has been found !" );
7384
74- log ("Date of Sonar scan: " + result . getString ( "date" ) );
75- log ("Version of Sonar scan: " + result . getString ( "version" ) );
85+ log ("Date of Sonar scan: " + lastDate );
86+ log ("Version of Sonar scan: " + lastVersion );
7687
7788 return new Result (false , "Failed to get a newer quality gate for " + sonarProjectKey
7889 + ". The present quality gate is older than the start of the Sonar scan task." );
@@ -82,31 +93,27 @@ public Result execute() throws Exception {
8293
8394 }
8495
85- log ("Date of Sonar scan: " + result . getString ( "date" ) );
86- log ("Version of Sonar scan: " + result . getString ( "version" ) );
96+ log ("Date of Sonar scan: " + lastDate );
97+ log ("Version of Sonar scan: " + lastVersion );
8798
8899 SonarParser parser = new SonarParser (result );
89100
90101 // check that a quality gate is returned
91- JSONObject qgDetails = parser .GetQualityGateDetails ();
92-
93- String qgResult = qgDetails .getString ("level" );
102+ String qgResult = parser .getProjectQualityGateStatus ();
94103
95104 // get result issues
96105 return parseResult (qgResult , issueTypeFail );
97106
98107 }
99108 else {
100109
101- log ("Date of Sonar scan: " + result . getString ( "date" ) );
102- log ("Version of Sonar scan: " + result . getString ( "version" ) );
110+ log ("Date of Sonar scan: " + lastDate );
111+ log ("Version of Sonar scan: " + lastVersion );
103112
104113 SonarParser parser = new SonarParser (result );
105114
106115 // check that a quality gate is returned
107- JSONObject qgDetails = parser .GetQualityGateDetails ();
108-
109- String qgResult = qgDetails .getString ("level" );
116+ String qgResult = parser .getProjectQualityGateStatus ();
110117
111118 // get result issues
112119 return parseResult (qgResult , issueTypeFail );
@@ -178,5 +185,4 @@ protected int compareDates(String date1, String date2)
178185 protected String getPluginLogPrefix (){
179186 return "[SonarQube Quality Gate Plugin] " ;
180187 }
181-
182188}
0 commit comments