2323#include " parser/parser.h"
2424#include " proto/test/v1/proto2/test_all_types.pb.h"
2525#include " proto/test/v1/proto3/test_all_types.pb.h"
26- #include " base/status_macros.h"
2726
2827
2928using absl::Status;
@@ -41,17 +40,20 @@ namespace runtime {
4140
4241class ConformanceServiceImpl {
4342 public:
44- ConformanceServiceImpl (std::unique_ptr<CelExpressionBuilder> builder)
43+ explicit ConformanceServiceImpl (std::unique_ptr<CelExpressionBuilder> builder)
4544 : builder_(std::move(builder)),
4645 proto2Tests_(&google::api::expr::test::v1::proto2::TestAllTypes::
4746 default_instance ()),
4847 proto3Tests_(&google::api::expr::test::v1::proto3::TestAllTypes::
4948 default_instance ()) {}
5049
51- Status Parse (const v1alpha1::ParseRequest* request,
52- v1alpha1::ParseResponse* response) {
50+ void Parse (const v1alpha1::ParseRequest* request,
51+ v1alpha1::ParseResponse* response) {
5352 if (request->cel_source ().empty ()) {
54- return Status (StatusCode::kInvalidArgument , " No source code." );
53+ auto issue = response->add_issues ();
54+ issue->set_message (" No source code" );
55+ issue->set_code (google::rpc::Code::INVALID_ARGUMENT);
56+ return ;
5557 }
5658 auto parse_status = parser::Parse (request->cel_source (), " " );
5759 if (!parse_status.ok ()) {
@@ -63,16 +65,17 @@ class ConformanceServiceImpl {
6365 (out).MergeFrom (parse_status.value ());
6466 response->mutable_parsed_expr ()->CopyFrom (out);
6567 }
66- return absl::OkStatus ();
6768 }
6869
69- Status Check (const v1alpha1::CheckRequest* request,
70- v1alpha1::CheckResponse* response) {
71- return Status (StatusCode::kUnimplemented , " Check is not supported" );
70+ void Check (const v1alpha1::CheckRequest* request,
71+ v1alpha1::CheckResponse* response) {
72+ auto issue = response->add_issues ();
73+ issue->set_message (" Check is not supported" );
74+ issue->set_code (google::rpc::Code::UNIMPLEMENTED);
7275 }
7376
74- Status Eval (const v1alpha1::EvalRequest* request,
75- v1alpha1::EvalResponse* response) {
77+ void Eval (const v1alpha1::EvalRequest* request,
78+ v1alpha1::EvalResponse* response) {
7679 const v1alpha1::Expr* expr = nullptr ;
7780 if (request->has_parsed_expr ()) {
7881 expr = &request->parsed_expr ().expr ();
@@ -87,8 +90,10 @@ class ConformanceServiceImpl {
8790 auto cel_expression_status = builder_->CreateExpression (&out, &source_info);
8891
8992 if (!cel_expression_status.ok ()) {
90- return Status (StatusCode::kInternal ,
91- std::string (cel_expression_status.status ().message ()));
93+ auto issue = response->add_issues ();
94+ issue->set_message (cel_expression_status.status ().ToString ());
95+ issue->set_code (google::rpc::Code::INTERNAL);
96+ return ;
9297 }
9398
9499 auto cel_expression = std::move (cel_expression_status.value ());
@@ -100,7 +105,10 @@ class ConformanceServiceImpl {
100105 (*import_value).MergeFrom (pair.second .value ());
101106 auto import_status = ValueToCelValue (*import_value, &arena);
102107 if (!import_status.ok ()) {
103- return Status (StatusCode::kInternal , import_status.status ().ToString ());
108+ auto issue = response->add_issues ();
109+ issue->set_message (import_status.status ().ToString ());
110+ issue->set_code (google::rpc::Code::INTERNAL);
111+ return ;
104112 }
105113 activation.InsertValue (pair.first , import_status.value ());
106114 }
@@ -111,7 +119,7 @@ class ConformanceServiceImpl {
111119 ->mutable_error ()
112120 ->add_errors ()
113121 ->mutable_message () = eval_status.status ().ToString ();
114- return absl::OkStatus () ;
122+ return ;
115123 }
116124
117125 CelValue result = eval_status.value ();
@@ -124,12 +132,14 @@ class ConformanceServiceImpl {
124132 google::api::expr::v1alpha1::Value export_value;
125133 auto export_status = CelValueToValue (result, &export_value);
126134 if (!export_status.ok ()) {
127- return Status (StatusCode::kInternal , export_status.ToString ());
135+ auto issue = response->add_issues ();
136+ issue->set_message (export_status.ToString ());
137+ issue->set_code (google::rpc::Code::INTERNAL);
138+ return ;
128139 }
129140 auto * result_value = response->mutable_result ()->mutable_value ();
130141 (*result_value).MergeFrom (export_value);
131142 }
132- return absl::OkStatus ();
133143 }
134144
135145 private:
@@ -178,15 +188,23 @@ int RunServer(bool optimize) {
178188 if (cmd == " parse" ) {
179189 v1alpha1::ParseRequest request;
180190 v1alpha1::ParseResponse response;
181- CHECK_OK (JsonStringToMessage (input, &request));
182- CHECK_OK (service.Parse (&request, &response));
183- CHECK_OK (MessageToJsonString (response, &output));
191+ if (!JsonStringToMessage (input, &request).ok ()) {
192+ std::cerr << " Failed to parse JSON" << std::endl;
193+ }
194+ service.Parse (&request, &response);
195+ if (!MessageToJsonString (response, &output).ok ()) {
196+ std::cerr << " Failed to convert to JSON" << std::endl;
197+ }
184198 } else if (cmd == " eval" ) {
185199 v1alpha1::EvalRequest request;
186200 v1alpha1::EvalResponse response;
187- CHECK_OK (JsonStringToMessage (input, &request));
188- CHECK_OK (service.Eval (&request, &response));
189- CHECK_OK (MessageToJsonString (response, &output));
201+ if (!JsonStringToMessage (input, &request).ok ()) {
202+ std::cerr << " Failed to parse JSON" << std::endl;
203+ }
204+ service.Eval (&request, &response);
205+ if (!MessageToJsonString (response, &output).ok ()) {
206+ std::cerr << " Failed to convert to JSON" << std::endl;
207+ }
190208 } else if (cmd.empty ()) {
191209 return 0 ;
192210 } else {
0 commit comments