@@ -453,221 +453,172 @@ private LifecyclePrintWriter(PrintWriter delegate, StandardServletAsyncWebReques
453453
454454 @ Override
455455 public void flush () {
456- int level = this .asyncWebRequest .tryObtainLock ();
457- if (level > -1 ) {
458- try {
459- this .delegate .flush ();
460- }
461- finally {
462- releaseLock (level );
463- }
464- }
456+ invokeWithLock (this .delegate ::flush );
465457 }
466458
467- @ Override
468- public void close () {
459+ private void invokeWithLock (Runnable runnable ) {
469460 int level = this .asyncWebRequest .tryObtainLock ();
470461 if (level > -1 ) {
471462 try {
472- this . delegate . close ();
463+ runnable . run ();
473464 }
474465 finally {
475- releaseLock (level );
466+ if (level > 0 ) {
467+ this .asyncWebRequest .stateLock .unlock ();
468+ }
476469 }
477470 }
478471 }
479472
480473 @ Override
481- public boolean checkError () {
482- return this .delegate . checkError ( );
474+ public void close () {
475+ invokeWithLock ( this .delegate :: close );
483476 }
484477
485478 @ Override
486479 public void write (int c ) {
487- int level = this .asyncWebRequest .tryObtainLock ();
488- if (level > -1 ) {
489- try {
490- this .delegate .write (c );
491- }
492- finally {
493- releaseLock (level );
494- }
495- }
480+ invokeWithLock (() -> this .delegate .write (c ));
496481 }
497482
498483 @ Override
499484 public void write (char [] buf , int off , int len ) {
500- int level = this .asyncWebRequest .tryObtainLock ();
501- if (level > -1 ) {
502- try {
503- this .delegate .write (buf , off , len );
504- }
505- finally {
506- releaseLock (level );
507- }
508- }
485+ invokeWithLock (() -> this .delegate .write (buf , off , len ));
509486 }
510487
511488 @ Override
512489 public void write (char [] buf ) {
513- this . delegate . write (buf );
490+ write (buf , 0 , buf . length );
514491 }
515492
516493 @ Override
517494 public void write (String s , int off , int len ) {
518- int level = this .asyncWebRequest .tryObtainLock ();
519- if (level > -1 ) {
520- try {
521- this .delegate .write (s , off , len );
522- }
523- finally {
524- releaseLock (level );
525- }
526- }
495+ invokeWithLock (() -> this .delegate .write (s , off , len ));
527496 }
528497
529498 @ Override
530499 public void write (String s ) {
531- this .delegate .write (s );
532- }
533-
534- private void releaseLock (int level ) {
535- if (level > 0 ) {
536- this .asyncWebRequest .stateLock .unlock ();
537- }
500+ write (s , 0 , s .length ());
538501 }
539502
540503 // Plain delegates
541504
542505 @ Override
543506 public void print (boolean b ) {
544- this . delegate . print ( b );
507+ write ( String . valueOf ( b ) );
545508 }
546509
547510 @ Override
548511 public void print (char c ) {
549- this . delegate . print (c );
512+ write (c );
550513 }
551514
552515 @ Override
553516 public void print (int i ) {
554- this . delegate . print ( i );
517+ write ( String . valueOf ( i ) );
555518 }
556519
557520 @ Override
558521 public void print (long l ) {
559- this . delegate . print ( l );
522+ write ( String . valueOf ( l ) );
560523 }
561524
562525 @ Override
563526 public void print (float f ) {
564- this . delegate . print ( f );
527+ write ( String . valueOf ( f ) );
565528 }
566529
567530 @ Override
568531 public void print (double d ) {
569- this . delegate . print ( d );
532+ write ( String . valueOf ( d ) );
570533 }
571534
572535 @ Override
573536 public void print (char [] s ) {
574- this . delegate . print (s );
537+ write (s );
575538 }
576539
577540 @ Override
578541 public void print (String s ) {
579- this . delegate . print ( s );
542+ write ( String . valueOf ( s ) );
580543 }
581544
582545 @ Override
583546 public void print (Object obj ) {
584- this . delegate . print (obj );
547+ write ( String . valueOf (obj ) );
585548 }
586549
587550 @ Override
588551 public void println () {
589- this .delegate . println ( );
552+ invokeWithLock ( this .delegate :: println );
590553 }
591554
592555 @ Override
593556 public void println (boolean x ) {
594- this .delegate .println (x );
557+ invokeWithLock (() -> this .delegate .println (x ) );
595558 }
596559
597560 @ Override
598561 public void println (char x ) {
599- this .delegate .println (x );
562+ invokeWithLock (() -> this .delegate .println (x ) );
600563 }
601564
602565 @ Override
603566 public void println (int x ) {
604- this .delegate .println (x );
567+ invokeWithLock (() -> this .delegate .println (x ) );
605568 }
606569
607570 @ Override
608571 public void println (long x ) {
609- this .delegate .println (x );
572+ invokeWithLock (() -> this .delegate .println (x ) );
610573 }
611574
612575 @ Override
613576 public void println (float x ) {
614- this .delegate .println (x );
577+ invokeWithLock (() -> this .delegate .println (x ) );
615578 }
616579
617580 @ Override
618581 public void println (double x ) {
619- this .delegate .println (x );
582+ invokeWithLock (() -> this .delegate .println (x ) );
620583 }
621584
622585 @ Override
623586 public void println (char [] x ) {
624- this .delegate .println (x );
587+ invokeWithLock (() -> this .delegate .println (x ) );
625588 }
626589
627590 @ Override
628591 public void println (String x ) {
629- this .delegate .println (x );
592+ invokeWithLock (() -> this .delegate .println (x ) );
630593 }
631594
632595 @ Override
633596 public void println (Object x ) {
634- this .delegate .println (x );
597+ invokeWithLock (() -> this .delegate .println (x ) );
635598 }
636599
637600 @ Override
638601 public PrintWriter printf (String format , Object ... args ) {
639- return this . delegate . printf (format , args );
602+ return format (format , args );
640603 }
641604
642605 @ Override
643606 public PrintWriter printf (Locale l , String format , Object ... args ) {
644- return this . delegate . printf ( l , format , args );
607+ return format ( format , args );
645608 }
646609
647610 @ Override
648611 public PrintWriter format (String format , Object ... args ) {
649- return this .delegate .format (format , args );
612+ invokeWithLock (() -> this .delegate .format (format , args ));
613+ return this ;
650614 }
651615
652616 @ Override
653617 public PrintWriter format (Locale l , String format , Object ... args ) {
654- return this .delegate .format (l , format , args );
655- }
656-
657- @ Override
658- public PrintWriter append (CharSequence csq ) {
659- return this .delegate .append (csq );
618+ invokeWithLock (() -> this .delegate .format (format , args ));
619+ return this ;
660620 }
661621
662- @ Override
663- public PrintWriter append (CharSequence csq , int start , int end ) {
664- return this .delegate .append (csq , start , end );
665- }
666-
667- @ Override
668- public PrintWriter append (char c ) {
669- return this .delegate .append (c );
670- }
671622 }
672623
673624
0 commit comments