@@ -57,7 +57,7 @@ public ShutdownSignalException(boolean hardError,
5757 boolean initiatedByApplication ,
5858 Method reason , Object ref )
5959 {
60- this (hardError , initiatedByApplication , reason , ref , "" );
60+ this (hardError , initiatedByApplication , reason , ref , "" , null );
6161 }
6262
6363 /**
@@ -70,19 +70,33 @@ public ShutdownSignalException(boolean hardError,
7070 */
7171 public ShutdownSignalException (boolean hardError ,
7272 boolean initiatedByApplication ,
73- Method reason , Object ref , String messagePrefix )
73+ Method reason , Object ref , String messagePrefix , Throwable cause )
7474 {
75- super (messagePrefix + (initiatedByApplication
76- ? ("clean " + (hardError ? "connection" : "channel" ) + " shutdown" )
77- : ((hardError ? "connection" : "channel" ) + " error" ))
78- + "; reason: " + reason );
75+ super (composeMessage (hardError , initiatedByApplication , reason , messagePrefix , cause ));
7976 this ._hardError = hardError ;
8077 this ._initiatedByApplication = initiatedByApplication ;
8178 this ._reason = reason ;
8279 // Depending on hardError what we got is either Connection or Channel reference
8380 this ._ref = ref ;
8481 }
8582
83+ private static String composeMessage (boolean hardError , boolean initiatedByApplication ,
84+ Method reason , String messagePrefix , Throwable cause ) {
85+ final String connectionOrChannel = hardError ? "connection" : "channel" ;
86+ final String appInitiated = "clean " + connectionOrChannel + " shutdown" ;
87+ final String nonAppInitiated = connectionOrChannel + " error" ;
88+ final String explanation = initiatedByApplication ? appInitiated : nonAppInitiated ;
89+
90+ StringBuilder result = new StringBuilder (messagePrefix ).append (explanation );
91+ if (reason != null ) {
92+ result .append ("; protocol method: " ).append (reason );
93+ }
94+ if (cause != null ) {
95+ result .append ("; cause: " ).append (cause );
96+ }
97+ return result .toString ();
98+ }
99+
86100 /** @return true if this signals a connection error, or false if a channel error */
87101 public boolean isHardError () { return _hardError ; }
88102
0 commit comments