LCOV - code coverage report
Current view: top level - server/change - SubmitRequirementsJson.java (source / functions) Hit Total Coverage
Test: _coverage_report.dat Lines: 31 31 100.0 %
Date: 2022-11-19 15:00:39 Functions: 2 2 100.0 %

          Line data    Source code
       1             : // Copyright (C) 2021 The Android Open Source Project
       2             : //
       3             : // Licensed under the Apache License, Version 2.0 (the "License");
       4             : // you may not use this file except in compliance with the License.
       5             : // You may obtain a copy of the License at
       6             : //
       7             : // http://www.apache.org/licenses/LICENSE-2.0
       8             : //
       9             : // Unless required by applicable law or agreed to in writing, software
      10             : // distributed under the License is distributed on an "AS IS" BASIS,
      11             : // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      12             : // See the License for the specific language governing permissions and
      13             : // limitations under the License.
      14             : 
      15             : package com.google.gerrit.server.change;
      16             : 
      17             : import com.google.gerrit.entities.SubmitRequirement;
      18             : import com.google.gerrit.entities.SubmitRequirementExpression;
      19             : import com.google.gerrit.entities.SubmitRequirementExpressionResult;
      20             : import com.google.gerrit.entities.SubmitRequirementResult;
      21             : import com.google.gerrit.extensions.common.SubmitRequirementExpressionInfo;
      22             : import com.google.gerrit.extensions.common.SubmitRequirementResultInfo;
      23             : 
      24             : /**
      25             :  * Produces submit requirements related entities like {@link SubmitRequirementResultInfo}s, which
      26             :  * are serialized to JSON afterwards.
      27             :  */
      28             : public class SubmitRequirementsJson {
      29             :   private SubmitRequirementsJson() {}
      30             : 
      31             :   public static SubmitRequirementResultInfo toInfo(
      32             :       SubmitRequirement req, SubmitRequirementResult result) {
      33         103 :     SubmitRequirementResultInfo info = new SubmitRequirementResultInfo();
      34         103 :     info.name = req.name();
      35         103 :     info.description = req.description().orElse(null);
      36         103 :     if (req.applicabilityExpression().isPresent()) {
      37           1 :       info.applicabilityExpressionResult =
      38           1 :           submitRequirementExpressionToInfo(
      39           1 :               req.applicabilityExpression().get(),
      40           1 :               result.applicabilityExpressionResult().get(),
      41             :               /* hide= */ true); // Always hide applicability expressions on the API
      42             :     }
      43         103 :     if (req.overrideExpression().isPresent() && result.overrideExpressionResult().isPresent()) {
      44           1 :       info.overrideExpressionResult =
      45           1 :           submitRequirementExpressionToInfo(
      46           1 :               req.overrideExpression().get(),
      47           1 :               result.overrideExpressionResult().get(),
      48             :               /* hide= */ false);
      49             :     }
      50         103 :     if (result.submittabilityExpressionResult().isPresent()) {
      51         103 :       info.submittabilityExpressionResult =
      52         103 :           submitRequirementExpressionToInfo(
      53         103 :               req.submittabilityExpression(),
      54         103 :               result.submittabilityExpressionResult().get(),
      55             :               /* hide= */ false);
      56             :     }
      57         103 :     info.status = SubmitRequirementResultInfo.Status.valueOf(result.status().toString());
      58         103 :     info.isLegacy = result.isLegacy();
      59         103 :     return info;
      60             :   }
      61             : 
      62             :   private static SubmitRequirementExpressionInfo submitRequirementExpressionToInfo(
      63             :       SubmitRequirementExpression expression,
      64             :       SubmitRequirementExpressionResult result,
      65             :       boolean hide) {
      66         103 :     SubmitRequirementExpressionInfo info = new SubmitRequirementExpressionInfo();
      67         103 :     info.expression = hide ? null : expression.expressionString();
      68         103 :     info.fulfilled =
      69         103 :         result.status().equals(SubmitRequirementExpressionResult.Status.PASS)
      70         103 :             || result.status().equals(SubmitRequirementExpressionResult.Status.NOT_EVALUATED);
      71         103 :     info.status = SubmitRequirementExpressionInfo.Status.valueOf(result.status().name());
      72         103 :     info.passingAtoms = hide ? null : result.passingAtoms();
      73         103 :     info.failingAtoms = hide ? null : result.failingAtoms();
      74         103 :     info.errorMessage = result.errorMessage().isPresent() ? result.errorMessage().get() : null;
      75         103 :     return info;
      76             :   }
      77             : }

Generated by: LCOV version 1.16+git.20220603.dfeb750