@@ -57,7 +57,7 @@ public ShutdownSignalException(boolean hardError,
57
57
boolean initiatedByApplication ,
58
58
Method reason , Object ref )
59
59
{
60
- this (hardError , initiatedByApplication , reason , ref , "" );
60
+ this (hardError , initiatedByApplication , reason , ref , "" , null );
61
61
}
62
62
63
63
/**
@@ -70,19 +70,33 @@ public ShutdownSignalException(boolean hardError,
70
70
*/
71
71
public ShutdownSignalException (boolean hardError ,
72
72
boolean initiatedByApplication ,
73
- Method reason , Object ref , String messagePrefix )
73
+ Method reason , Object ref , String messagePrefix , Throwable cause )
74
74
{
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 ));
79
76
this ._hardError = hardError ;
80
77
this ._initiatedByApplication = initiatedByApplication ;
81
78
this ._reason = reason ;
82
79
// Depending on hardError what we got is either Connection or Channel reference
83
80
this ._ref = ref ;
84
81
}
85
82
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
+
86
100
/** @return true if this signals a connection error, or false if a channel error */
87
101
public boolean isHardError () { return _hardError ; }
88
102
0 commit comments