1 /*
2 * Copyright (c) 2007, Fraunhofer-Gesellschaft
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met:
8 *
9 * (1) Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the disclaimer at the end.
11 * Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in
13 * the documentation and/or other materials provided with the
14 * distribution.
15 *
16 * (2) Neither the name of Fraunhofer nor the names of its
17 * contributors may be used to endorse or promote products derived
18 * from this software without specific prior written permission.
19 *
20 * DISCLAIMER
21 *
22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
25 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
26 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
27 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
28 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
29 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
30 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
31 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
32 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33 *
34 */
35 package org.ogf.graap.wsag.client.api;
36
37 import org.ogf.graap.wsag.api.exceptions.ResourceUnavailableException;
38 import org.ogf.graap.wsag.api.exceptions.ResourceUnknownException;
39 import org.ogf.schemas.graap.wsAgreement.AgreementContextType;
40 import org.ogf.schemas.graap.wsAgreement.AgreementPropertiesType;
41 import org.ogf.schemas.graap.wsAgreement.AgreementStateType;
42 import org.ogf.schemas.graap.wsAgreement.GuaranteeTermStateType;
43 import org.ogf.schemas.graap.wsAgreement.ServiceTermStateType;
44 import org.ogf.schemas.graap.wsAgreement.TermTreeType;
45 import org.ogf.schemas.graap.wsAgreement.TerminateInputType;
46
47 /**
48 * Client interface of a agreement service implementation. Each implementation uses a specific remote
49 * technology, depending on the technology a specific remote client is returned.
50 *
51 * @author Oliver Waeldrich
52 */
53 public interface AgreementClient
54 {
55
56 /**
57 * Default builder.
58 */
59 ClientLocator<AgreementClient> FACTORY = new ClientLocator<AgreementClient>( AgreementClient.class );
60
61 /**
62 * Returns the web-service client used for communication with the SLA management server.
63 *
64 * @return the web service client for this service.
65 */
66 RemoteClient getRemoteClient();
67
68 //
69 // from the ArgreementPortType
70 //
71
72 /**
73 * Returns the name of the agreement instance.
74 *
75 * @return the agreement name
76 * @throws ResourceUnknownException
77 * the remote resource is unknown
78 * @throws ResourceUnavailableException
79 * the remote resource is unavailable
80 */
81 String getName() throws ResourceUnknownException, ResourceUnavailableException;
82
83 /**
84 * Returns the id of the agreement instance.
85 *
86 * @return the agreement id
87 * @throws ResourceUnknownException
88 * the remote resource is unknown
89 * @throws ResourceUnavailableException
90 * the remote resource is unavailable
91 */
92 String getAgreementId() throws ResourceUnknownException, ResourceUnavailableException;
93
94 /**
95 * Returns the context of the agreement instance.
96 *
97 * @return the agreement context
98 * @throws ResourceUnknownException
99 * the remote resource is unknown
100 * @throws ResourceUnavailableException
101 * the remote resource is unavailable
102 */
103 AgreementContextType getContext() throws ResourceUnknownException, ResourceUnavailableException;
104
105 /**
106 * Returns the terms of the agreement instance.
107 *
108 * @return the agreement terms
109 * @throws ResourceUnknownException
110 * the remote resource is unknown
111 * @throws ResourceUnavailableException
112 * the remote resource is unavailable
113 */
114 TermTreeType getTerms() throws ResourceUnknownException, ResourceUnavailableException;
115
116 /**
117 * Terminates the agreement instance.
118 *
119 * @param reason
120 * a domain-specific termination reason
121 * @throws ResourceUnknownException
122 * the remote resource is unknown
123 * @throws ResourceUnavailableException
124 * the remote resource is unavailable
125 */
126 void terminate( TerminateInputType reason ) throws ResourceUnknownException, ResourceUnavailableException;
127
128 //
129 // from the ArgreementStatePortType
130 //
131
132 /**
133 * Returns the state of the agreement instance.
134 *
135 * @return the agreement state
136 * @throws ResourceUnknownException
137 * the remote resource is unknown
138 * @throws ResourceUnavailableException
139 * the remote resource is unavailable
140 */
141 AgreementStateType getState() throws ResourceUnknownException, ResourceUnavailableException;
142
143 /**
144 * Returns the state for the individual guarantee terms of the agreement instance.
145 *
146 * @return the guarantee term states
147 *
148 * @throws ResourceUnknownException
149 * the remote resource is unknown
150 * @throws ResourceUnavailableException
151 * the remote resource is unavailable
152 */
153 GuaranteeTermStateType[] getGuaranteeTermStates()
154 throws ResourceUnknownException, ResourceUnavailableException;
155
156 /**
157 * Returns the state for the individual service terms of the agreement instance.
158 *
159 * @return the service term states
160 *
161 * @throws ResourceUnknownException
162 * the remote resource is unknown
163 * @throws ResourceUnavailableException
164 * the remote resource is unavailable
165 */
166 ServiceTermStateType[] getServiceTermStates()
167 throws ResourceUnknownException, ResourceUnavailableException;
168
169 //
170 // from WS resource specification
171 //
172
173 /**
174 * Destroys agreement instance.
175 *
176 * @throws ResourceUnknownException
177 * the remote resource is unknown
178 * @throws ResourceUnavailableException
179 * the remote resource is unavailable
180 */
181 void destroy() throws ResourceUnknownException, ResourceUnavailableException;
182
183 /**
184 * Returns the service description term with the given name.
185 *
186 * @param name
187 * the name of the service description term to retrieve
188 * @return the service description term with the given name
189 * @throws ResourceUnknownException
190 * the remote resource is unknown
191 * @throws ResourceUnavailableException
192 * the remote resource is unavailable
193 */
194 ServiceTermStateType getServiceTermState( String name )
195 throws ResourceUnknownException, ResourceUnavailableException;
196
197 /**
198 * Returns the guarantee term with the given name.
199 *
200 * @param name
201 * the name of the guarantee term to retrieve
202 * @return the guarantee term with the given name
203 * @throws ResourceUnknownException
204 * the remote resource is unknown
205 * @throws ResourceUnavailableException
206 * the remote resource is unavailable
207 */
208 GuaranteeTermStateType getGuaranteeTermState( String name )
209 throws ResourceUnknownException, ResourceUnavailableException;
210
211 /**
212 * Returns the resource properties of the agreement instance.
213 *
214 * @return the agreement resource properties
215 *
216 * @throws ResourceUnknownException
217 * the remote resource is unknown
218 * @throws ResourceUnavailableException
219 * the remote resource is unavailable
220 */
221 AgreementPropertiesType getResourceProperties()
222 throws ResourceUnknownException, ResourceUnavailableException;
223
224 /**
225 * Terminates an agreement.
226 *
227 * @throws ResourceUnknownException
228 * the remote resource is unknown
229 * @throws ResourceUnavailableException
230 * the remote resource is unavailable
231 */
232 void terminate() throws ResourceUnknownException, ResourceUnavailableException;
233
234 /**
235 * Returns a copy of the client.
236 *
237 * @return the cloned AgreementClient
238 *
239 * @throws CloneNotSupportedException
240 * indicates that the client implementation does not support cloning
241 */
242 AgreementClient clone() throws CloneNotSupportedException;
243 }