@@ -146,6 +146,7 @@ public static TerminalBuilder builder() {
146
146
private int codepage ;
147
147
private Boolean system ;
148
148
private SystemOutput systemOutput ;
149
+ private String provider ;
149
150
private String providers ;
150
151
private Boolean jna ;
151
152
private Boolean jansi ;
@@ -192,6 +193,11 @@ public TerminalBuilder systemOutput(SystemOutput systemOutput) {
192
193
return this ;
193
194
}
194
195
196
+ public TerminalBuilder provider (String provider ) {
197
+ this .provider = provider ;
198
+ return this ;
199
+ }
200
+
195
201
public TerminalBuilder providers (String providers ) {
196
202
this .providers = providers ;
197
203
return this ;
@@ -369,17 +375,20 @@ private Terminal doBuild() throws IOException {
369
375
Charset encoding = computeEncoding ();
370
376
String type = computeType ();
371
377
372
- String forcedProvider = System .getProperty (PROP_PROVIDER , null );
378
+ String provider = this .provider ;
379
+ if (provider == null ) {
380
+ provider = System .getProperty (PROP_PROVIDER , null );
381
+ }
373
382
374
383
boolean forceDumb =
375
384
(DumbTerminal .TYPE_DUMB .equals (type ) || type != null && type .startsWith (DumbTerminal .TYPE_DUMB_COLOR ))
376
- || (forcedProvider != null && forcedProvider .equals (PROP_PROVIDER_DUMB ));
385
+ || (provider != null && provider .equals (PROP_PROVIDER_DUMB ));
377
386
Boolean dumb = this .dumb ;
378
387
if (dumb == null ) {
379
388
dumb = getBoolean (PROP_DUMB , null );
380
389
}
381
390
IllegalStateException exception = new IllegalStateException ("Unable to create a terminal" );
382
- List <TerminalProvider > providers = getProviders (forcedProvider , exception );
391
+ List <TerminalProvider > providers = getProviders (provider , exception );
383
392
Terminal terminal = null ;
384
393
if ((system != null && system ) || (system == null && in == null && out == null )) {
385
394
if (system != null
@@ -409,10 +418,10 @@ private Terminal doBuild() throws IOException {
409
418
&& System .getProperty (PROP_TYPE ) == null ) {
410
419
type = "xterm-256color" ;
411
420
}
412
- for (TerminalProvider provider : providers ) {
421
+ for (TerminalProvider prov : providers ) {
413
422
if (terminal == null ) {
414
423
try {
415
- terminal = provider .sysTerminal (
424
+ terminal = prov .sysTerminal (
416
425
name ,
417
426
type ,
418
427
ansiPassThrough ,
@@ -422,7 +431,7 @@ private Terminal doBuild() throws IOException {
422
431
paused ,
423
432
systemStream );
424
433
} catch (Throwable t ) {
425
- Log .debug ("Error creating " + provider .name () + " based terminal: " , t .getMessage (), t );
434
+ Log .debug ("Error creating " + prov .name () + " based terminal: " , t .getMessage (), t );
426
435
exception .addSuppressed (t );
427
436
}
428
437
}
@@ -466,13 +475,13 @@ private Terminal doBuild() throws IOException {
466
475
}
467
476
}
468
477
} else {
469
- for (TerminalProvider provider : providers ) {
478
+ for (TerminalProvider prov : providers ) {
470
479
if (terminal == null ) {
471
480
try {
472
- terminal = provider .newTerminal (
481
+ terminal = prov .newTerminal (
473
482
name , type , in , out , encoding , signalHandler , paused , attributes , size );
474
483
} catch (Throwable t ) {
475
- Log .debug ("Error creating " + provider .name () + " based terminal: " , t .getMessage (), t );
484
+ Log .debug ("Error creating " + prov .name () + " based terminal: " , t .getMessage (), t );
476
485
exception .addSuppressed (t );
477
486
}
478
487
}
@@ -605,18 +614,18 @@ public Charset computeEncoding() {
605
614
return encoding ;
606
615
}
607
616
608
- public List <TerminalProvider > getProviders (String forcedProvider , IllegalStateException exception ) {
617
+ public List <TerminalProvider > getProviders (String provider , IllegalStateException exception ) {
609
618
List <TerminalProvider > providers = new ArrayList <>();
610
619
// Check ffm provider
611
- checkProvider (forcedProvider , exception , providers , ffm , PROP_FFM , PROP_PROVIDER_FFM );
620
+ checkProvider (provider , exception , providers , ffm , PROP_FFM , PROP_PROVIDER_FFM );
612
621
// Check jni provider
613
- checkProvider (forcedProvider , exception , providers , jni , PROP_JNI , PROP_PROVIDER_JNI );
622
+ checkProvider (provider , exception , providers , jni , PROP_JNI , PROP_PROVIDER_JNI );
614
623
// Check jansi provider
615
- checkProvider (forcedProvider , exception , providers , jansi , PROP_JANSI , PROP_PROVIDER_JANSI );
624
+ checkProvider (provider , exception , providers , jansi , PROP_JANSI , PROP_PROVIDER_JANSI );
616
625
// Check jna provider
617
- checkProvider (forcedProvider , exception , providers , jna , PROP_JNA , PROP_PROVIDER_JNA );
626
+ checkProvider (provider , exception , providers , jna , PROP_JNA , PROP_PROVIDER_JNA );
618
627
// Check exec provider
619
- checkProvider (forcedProvider , exception , providers , exec , PROP_EXEC , PROP_PROVIDER_EXEC );
628
+ checkProvider (provider , exception , providers , exec , PROP_EXEC , PROP_PROVIDER_EXEC );
620
629
// Order providers
621
630
List <String > order = Arrays .asList (
622
631
(this .providers != null ? this .providers : System .getProperty (PROP_PROVIDERS , PROP_PROVIDERS_DEFAULT ))
@@ -631,21 +640,21 @@ public List<TerminalProvider> getProviders(String forcedProvider, IllegalStateEx
631
640
}
632
641
633
642
private void checkProvider (
634
- String forcedProvider ,
643
+ String provider ,
635
644
IllegalStateException exception ,
636
645
List <TerminalProvider > providers ,
637
646
Boolean load ,
638
647
String property ,
639
648
String name ) {
640
- Boolean doLoad = forcedProvider != null ? (Boolean ) name .equals (forcedProvider ) : load ;
649
+ Boolean doLoad = provider != null ? (Boolean ) name .equals (provider ) : load ;
641
650
if (doLoad == null ) {
642
651
doLoad = getBoolean (property , true );
643
652
}
644
653
if (doLoad ) {
645
654
try {
646
- TerminalProvider provider = TerminalProvider .load (name );
647
- provider .isSystemStream (SystemStream .Output );
648
- providers .add (provider );
655
+ TerminalProvider prov = TerminalProvider .load (name );
656
+ prov .isSystemStream (SystemStream .Output );
657
+ providers .add (prov );
649
658
} catch (Throwable t ) {
650
659
Log .debug ("Unable to load " + name + " provider: " , t );
651
660
exception .addSuppressed (t );
0 commit comments