1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 package dk.sosi.seal.model;
30
31 import dk.sosi.seal.SOSIFactory;
32 import dk.sosi.seal.model.dombuilders.SAMLReplyDOMBuilder;
33 import dk.sosi.seal.vault.CredentialVault;
34 import org.w3c.dom.Document;
35
36
37
38
39
40
41
42
43 public class Reply extends Message {
44
45 private String requestID;
46 private String flowStatus;
47 private String faultCode;
48 private String faultString;
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 public Reply(String dgwsVersion, String requestID, String flowID, String flowStatus, SOSIFactory factory) {
64
65 super(dgwsVersion, flowID, factory);
66 this.requestID = requestID;
67 this.flowStatus = flowStatus;
68 this.isFault = false;
69 }
70
71 public Reply(String dgwsVersion, String requestID, String flowID, String faultCode, String faultString, SOSIFactory factory) {
72
73 super(dgwsVersion, flowID, factory);
74 this.requestID = requestID;
75 this.isFault = true;
76 this.faultCode = faultCode;
77 this.faultString = faultString;
78 }
79
80
81
82
83
84 public String getRequestID() {
85
86 return requestID;
87 }
88
89
90
91
92 public String getFlowStatus() {
93
94 if (isFault()) {
95
96 throw new ModelException("The reply represents a Fault. No FlowStatus available");
97 }
98 return flowStatus;
99 }
100
101
102
103
104 public void setFlowStatus(String flowStatus) {
105
106 this.flowStatus = flowStatus;
107 }
108
109
110
111
112 public void setRequestID(String reqID) {
113
114 requestID = reqID;
115 }
116
117 public boolean isFault() {
118
119 return isFault;
120 }
121
122 public String getFaultCode() {
123 if (!isFault()) {
124 throw new ModelException("The reply is not a Fault. No FaultCode available");
125 }
126 return (faultCode==null)?"":faultCode;
127 }
128
129 public String getFaultString() {
130 if (!isFault()) {
131 throw new ModelException("The reply is not a Fault. No FaultString available");
132 }
133 return (faultString==null)?"":faultString;
134 }
135
136 public void setIDCard(IDCard idCard) {
137 if(isFault())
138 throw new ModelException("IDCards cannot be attached to error replies");
139 super.setIDCard(idCard);
140 }
141
142
143
144
145 public boolean equals(Object obj) {
146
147 if (!super.equals(obj) || obj.getClass() != getClass())
148 return false;
149 Reply reply = (Reply) obj;
150 if (!getRequestID().equals(reply.getRequestID()))
151 return false;
152 if (isFault()) {
153 if (!getFaultCode().equals(reply.getFaultCode()))
154 return false;
155 if (!getFaultString().equals(reply.getFaultString()))
156 return false;
157 } else {
158 if (!getFlowStatus().equals(reply.getFlowStatus()))
159 return false;
160 }
161 return true;
162 }
163
164
165
166
167 protected Document regenerateDOM(Document doc, CredentialVault vault) {
168
169 return new SAMLReplyDOMBuilder(doc, this, vault).buildDOMDocument();
170 }
171 }