1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.mina.core.write;
21
22 import java.io.IOException;
23 import java.util.ArrayList;
24 import java.util.Collection;
25 import java.util.Collections;
26 import java.util.LinkedHashMap;
27 import java.util.List;
28 import java.util.Set;
29
30 import org.apache.mina.util.MapBackedSet;
31
32
33
34
35
36
37 public class WriteException extends IOException {
38
39 private static final long serialVersionUID = -4174407422754524197L;
40
41 private final List<WriteRequest> requests;
42
43
44
45
46 public WriteException(WriteRequest request) {
47 super();
48 this.requests = asRequestList(request);
49 }
50
51
52
53
54 public WriteException(WriteRequest request, String s) {
55 super(s);
56 this.requests = asRequestList(request);
57 }
58
59
60
61
62 public WriteException(WriteRequest request, String message, Throwable cause) {
63 super(message);
64 initCause(cause);
65 this.requests = asRequestList(request);
66 }
67
68
69
70
71 public WriteException(WriteRequest request, Throwable cause) {
72 initCause(cause);
73 this.requests = asRequestList(request);
74 }
75
76
77
78
79 public WriteException(Collection<WriteRequest> requests) {
80 super();
81 this.requests = asRequestList(requests);
82 }
83
84
85
86
87 public WriteException(Collection<WriteRequest> requests, String s) {
88 super(s);
89 this.requests = asRequestList(requests);
90 }
91
92
93
94
95 public WriteException(Collection<WriteRequest> requests, String message, Throwable cause) {
96 super(message);
97 initCause(cause);
98 this.requests = asRequestList(requests);
99 }
100
101
102
103
104 public WriteException(Collection<WriteRequest> requests, Throwable cause) {
105 initCause(cause);
106 this.requests = asRequestList(requests);
107 }
108
109
110
111
112 public List<WriteRequest> getRequests() {
113 return requests;
114 }
115
116
117
118
119 public WriteRequest getRequest() {
120 return requests.get(0);
121 }
122
123 private static List<WriteRequest> asRequestList(Collection<WriteRequest> requests) {
124 if (requests == null) {
125 throw new NullPointerException("requests");
126 }
127 if (requests.isEmpty()) {
128 throw new IllegalArgumentException("requests is empty.");
129 }
130
131
132 Set<WriteRequest> newRequests = new MapBackedSet<WriteRequest>(new LinkedHashMap<WriteRequest, Boolean>());
133 for (WriteRequest r: requests) {
134 newRequests.add(r.getOriginalRequest());
135 }
136
137 return Collections.unmodifiableList(new ArrayList<WriteRequest>(newRequests));
138 }
139
140 private static List<WriteRequest> asRequestList(WriteRequest request) {
141 if (request == null) {
142 throw new NullPointerException("request");
143 }
144
145 List<WriteRequest> requests = new ArrayList<WriteRequest>(1);
146 requests.add(request.getOriginalRequest());
147 return Collections.unmodifiableList(requests);
148 }
149 }