@@ -40,15 +40,7 @@ internal abstract class JsonRPCPlugin : IAsyncPlugin, IContextMenu
4040 public List < Result > LoadContextMenus ( Result selectedResult )
4141 {
4242 var output = ExecuteContextMenu ( selectedResult ) ;
43- try
44- {
45- return DeserializedResult ( output ) ;
46- }
47- catch ( Exception e )
48- {
49- Log . Exception ( $ "|JsonRPCPlugin.LoadContextMenus|Exception on result <{ selectedResult } >", e ) ;
50- return null ;
51- }
43+ return DeserializedResult ( output ) ;
5244 }
5345
5446 private static readonly JsonSerializerOptions options = new ( )
@@ -65,23 +57,10 @@ private async Task<List<Result>> DeserializedResultAsync(Stream output)
6557 {
6658 if ( output == Stream . Null ) return null ;
6759
68- try
69- {
70- var queryResponseModel =
71- await JsonSerializer . DeserializeAsync < JsonRPCQueryResponseModel > ( output , options ) ;
72-
73- return ParseResults ( queryResponseModel ) ;
74- }
75- catch ( JsonException e )
76- {
77- Log . Exception ( GetType ( ) . FullName , "Unexpected Json Input" , e ) ;
78- }
79- finally
80- {
81- await output . DisposeAsync ( ) ;
82- }
60+ var queryResponseModel =
61+ await JsonSerializer . DeserializeAsync < JsonRPCQueryResponseModel > ( output , options ) ;
8362
84- return null ;
63+ return ParseResults ( queryResponseModel ) ;
8564 }
8665
8766 private List < Result > DeserializedResult ( string output )
@@ -249,7 +228,7 @@ protected async Task<Stream> ExecuteAsync(ProcessStartInfo startInfo, Cancellati
249228 await using var source = process . StandardOutput . BaseStream ;
250229
251230 var buffer = BufferManager . GetStream ( ) ;
252-
231+
253232 token . Register ( ( ) =>
254233 {
255234 // ReSharper disable once AccessToModifiedClosure
@@ -274,30 +253,27 @@ protected async Task<Stream> ExecuteAsync(ProcessStartInfo startInfo, Cancellati
274253
275254 token . ThrowIfCancellationRequested ( ) ;
276255
256+ if ( buffer . Length == 0 )
257+ {
258+ var errorMessage = process . StandardError . EndOfStream ?
259+ "Empty JSONRPC Response" :
260+ await process . StandardError . ReadToEndAsync ( ) ;
261+ throw new InvalidDataException ( $ "{ context . CurrentPluginMetadata . Name } |{ errorMessage } ") ;
262+ }
263+
277264 if ( ! process . StandardError . EndOfStream )
278265 {
279266 using var standardError = process . StandardError ;
280267 var error = await standardError . ReadToEndAsync ( ) ;
281268
282269 if ( ! string . IsNullOrEmpty ( error ) )
283270 {
284- Log . Error ( $ "|JsonRPCPlugin.ExecuteAsync|{ error } ") ;
285- return Stream . Null ;
271+ Log . Error ( $ "|{ context . CurrentPluginMetadata . Name } .{ nameof ( ExecuteAsync ) } |{ error } ") ;
286272 }
287-
288- Log . Error ( "|JsonRPCPlugin.ExecuteAsync|Empty standard output and standard error." ) ;
289- return Stream . Null ;
290273 }
291274
292275 return buffer ;
293276 }
294- catch ( Exception e )
295- {
296- Log . Exception (
297- $ "|JsonRPCPlugin.ExecuteAsync|Exception for filename <{ startInfo . FileName } > with argument <{ startInfo . Arguments } >",
298- e ) ;
299- return Stream . Null ;
300- }
301277 finally
302278 {
303279 process ? . Dispose ( ) ;
@@ -307,20 +283,8 @@ protected async Task<Stream> ExecuteAsync(ProcessStartInfo startInfo, Cancellati
307283
308284 public async Task < List < Result > > QueryAsync ( Query query , CancellationToken token )
309285 {
310- try
311- {
312- var output = await ExecuteQueryAsync ( query , token ) ;
313- return await DeserializedResultAsync ( output ) ;
314- }
315- catch ( OperationCanceledException )
316- {
317- return null ;
318- }
319- catch ( Exception e )
320- {
321- Log . Exception ( $ "|JsonRPCPlugin.Query|Exception when query <{ query } >", e ) ;
322- return null ;
323- }
286+ var output = await ExecuteQueryAsync ( query , token ) ;
287+ return await DeserializedResultAsync ( output ) ;
324288 }
325289
326290 public virtual Task InitAsync ( PluginInitContext context )
@@ -329,4 +293,4 @@ public virtual Task InitAsync(PluginInitContext context)
329293 return Task . CompletedTask ;
330294 }
331295 }
332- }
296+ }
0 commit comments