@@ -40,15 +40,7 @@ internal abstract class JsonRPCPlugin : IAsyncPlugin, IContextMenu
40
40
public List < Result > LoadContextMenus ( Result selectedResult )
41
41
{
42
42
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 ) ;
52
44
}
53
45
54
46
private static readonly JsonSerializerOptions options = new ( )
@@ -65,23 +57,10 @@ private async Task<List<Result>> DeserializedResultAsync(Stream output)
65
57
{
66
58
if ( output == Stream . Null ) return null ;
67
59
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 ) ;
83
62
84
- return null ;
63
+ return ParseResults ( queryResponseModel ) ;
85
64
}
86
65
87
66
private List < Result > DeserializedResult ( string output )
@@ -249,7 +228,7 @@ protected async Task<Stream> ExecuteAsync(ProcessStartInfo startInfo, Cancellati
249
228
await using var source = process . StandardOutput . BaseStream ;
250
229
251
230
var buffer = BufferManager . GetStream ( ) ;
252
-
231
+
253
232
token . Register ( ( ) =>
254
233
{
255
234
// ReSharper disable once AccessToModifiedClosure
@@ -274,30 +253,27 @@ protected async Task<Stream> ExecuteAsync(ProcessStartInfo startInfo, Cancellati
274
253
275
254
token . ThrowIfCancellationRequested ( ) ;
276
255
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
+
277
264
if ( ! process . StandardError . EndOfStream )
278
265
{
279
266
using var standardError = process . StandardError ;
280
267
var error = await standardError . ReadToEndAsync ( ) ;
281
268
282
269
if ( ! string . IsNullOrEmpty ( error ) )
283
270
{
284
- Log . Error ( $ "|JsonRPCPlugin.ExecuteAsync|{ error } ") ;
285
- return Stream . Null ;
271
+ Log . Error ( $ "|{ context . CurrentPluginMetadata . Name } .{ nameof ( ExecuteAsync ) } |{ error } ") ;
286
272
}
287
-
288
- Log . Error ( "|JsonRPCPlugin.ExecuteAsync|Empty standard output and standard error." ) ;
289
- return Stream . Null ;
290
273
}
291
274
292
275
return buffer ;
293
276
}
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
- }
301
277
finally
302
278
{
303
279
process ? . Dispose ( ) ;
@@ -307,20 +283,8 @@ protected async Task<Stream> ExecuteAsync(ProcessStartInfo startInfo, Cancellati
307
283
308
284
public async Task < List < Result > > QueryAsync ( Query query , CancellationToken token )
309
285
{
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 ) ;
324
288
}
325
289
326
290
public virtual Task InitAsync ( PluginInitContext context )
@@ -329,4 +293,4 @@ public virtual Task InitAsync(PluginInitContext context)
329
293
return Task . CompletedTask ;
330
294
}
331
295
}
332
- }
296
+ }
0 commit comments