]> git.aero2k.de Git - tmp/jakarta-migration.git/blob
65ec7734abb88e6f970588303be7b6435cc65d1f
[tmp/jakarta-migration.git] /
1 /**
2  * This document is a part of the source code and related artifacts
3  * for CollectionSpace, an open source collections management system
4  * for museums and related institutions:
5  *
6  * http://www.collectionspace.org
7  * http://wiki.collectionspace.org
8  *
9  * Copyright © 2009 Regents of the University of California
10  *
11  * Licensed under the Educational Community License (ECL), Version 2.0.
12  * You may not use this file except in compliance with this License.
13  *
14  * You may obtain a copy of the ECL 2.0 License at
15  * https://source.collectionspace.org/collection-space/LICENSE.txt
16  *
17  * Unless required by applicable law or agreed to in writing, software
18  * distributed under the License is distributed on an "AS IS" BASIS,
19  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20  * See the License for the specific language governing permissions and
21  * limitations under the License.
22  */
23  
24 package org.collectionspace.services.client.test;
25
26 import java.util.Arrays;
27 import javax.ws.rs.core.Response;
28
29 import org.slf4j.Logger;
30 import org.slf4j.LoggerFactory;
31
32 /**
33  * ServiceRequestType, identifies types of service requests
34  * and the valid HTTP status codes that can be returned from
35  * each type of request.
36  *
37  * Used by client tests of services.
38  * 
39  * $LastChangedRevision: 566 $
40  * $LastChangedDate$
41  */
42 public enum ServiceRequestType {
43     
44     // Define each of the service request types and their valid HTTP status codes.
45     
46     CREATE {
47         @Override
48         public int[] validStatusCodes() { 
49               final int[] STATUS_CODES = {
50                     Response.Status.CREATED.getStatusCode(),
51                     Response.Status.BAD_REQUEST.getStatusCode(),
52                     Response.Status.FORBIDDEN.getStatusCode(),
53                     Response.Status.CONFLICT.getStatusCode(),
54                     Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()
55               };
56               Arrays.sort(STATUS_CODES);
57               return STATUS_CODES;
58         }
59         @Override
60         public boolean isValidStatusCode(int statusCode) {
61               if (Arrays.binarySearch(CREATE.validStatusCodes(), statusCode) >= 0) {
62                     return true;
63               } else {
64                     return false;
65               }
66         }
67         @Override
68         public String validStatusCodesAsString() {
69               return Arrays.toString(CREATE.validStatusCodes());
70         }
71     },  // Note that commas are required at the end of each enum block, except the last.
72     
73     
74     READ {
75         @Override
76         public int[] validStatusCodes() { 
77               final int[] STATUS_CODES = {
78                     Response.Status.OK.getStatusCode(),
79                     Response.Status.FORBIDDEN.getStatusCode(),
80                     Response.Status.NOT_FOUND.getStatusCode(),
81                     Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()
82               };
83               Arrays.sort(STATUS_CODES);
84               return STATUS_CODES;
85         }
86         @Override
87         public boolean isValidStatusCode(int statusCode) {
88               if (Arrays.binarySearch(READ.validStatusCodes(), statusCode) >= 0) {
89                     return true;
90               } else {
91                     return false;
92               }
93         }
94         @Override
95         public String validStatusCodesAsString() {
96               return Arrays.toString(READ.validStatusCodes());
97         }
98     },
99     
100     
101     READ_MULTIPLE {
102         @Override
103         public int[] validStatusCodes() { 
104               final int[] STATUS_CODES = {
105                     Response.Status.OK.getStatusCode(),
106                     Response.Status.BAD_REQUEST.getStatusCode(),
107                     Response.Status.FORBIDDEN.getStatusCode(),
108                     Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()
109               };
110               Arrays.sort(STATUS_CODES);
111               return STATUS_CODES;
112         }
113         @Override
114         public boolean isValidStatusCode(int statusCode) {
115               if (Arrays.binarySearch(READ_MULTIPLE.validStatusCodes(), statusCode) >= 0) {
116                     return true;
117               } else {
118                     return false;
119               }
120         }
121         @Override
122         public String validStatusCodesAsString() {
123               return Arrays.toString(READ_MULTIPLE.validStatusCodes());
124         }
125     },
126     
127     
128     UPDATE {
129         @Override
130         public int[] validStatusCodes() { 
131               final int[] STATUS_CODES = {
132                     Response.Status.OK.getStatusCode(),
133                     Response.Status.BAD_REQUEST.getStatusCode(),
134                     Response.Status.FORBIDDEN.getStatusCode(),
135                     Response.Status.NOT_FOUND.getStatusCode(),
136                     Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()
137               };
138               Arrays.sort(STATUS_CODES);
139               return STATUS_CODES;
140         }
141         @Override
142         public boolean isValidStatusCode(int statusCode) {
143               if (Arrays.binarySearch(UPDATE.validStatusCodes(), statusCode) >= 0) {
144                     return true;
145               } else {
146                     return false;
147               }
148         }
149         @Override
150         public String validStatusCodesAsString() {
151               return Arrays.toString(UPDATE.validStatusCodes());
152         }
153     },
154     
155     
156     DELETE {
157         @Override
158         public int[] validStatusCodes() { 
159               final int[] STATUS_CODES = {
160                     Response.Status.OK.getStatusCode(),
161                     Response.Status.FORBIDDEN.getStatusCode(),
162                     Response.Status.NOT_FOUND.getStatusCode(),
163                     Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()
164               };
165               Arrays.sort(STATUS_CODES);
166               return STATUS_CODES;
167         }
168         @Override
169         public boolean isValidStatusCode(int statusCode) {
170               if (Arrays.binarySearch(DELETE.validStatusCodes(), statusCode) >= 0) {
171                     return true;
172               } else {
173                     return false;
174               }
175         }
176         @Override
177         public String validStatusCodesAsString() {
178               return Arrays.toString(DELETE.validStatusCodes());
179         }
180     },
181     
182     
183     // Used by guard code.
184     NON_EXISTENT {
185         @Override
186         public int[] validStatusCodes() { 
187               final int[] STATUS_CODES = { 0 };
188               Arrays.sort(STATUS_CODES);
189               return STATUS_CODES;
190         }
191         @Override
192         public boolean isValidStatusCode(int statusCode) {
193               return false;
194         }
195         @Override
196         public String validStatusCodesAsString() {
197               return Arrays.toString(NON_EXISTENT.validStatusCodes());
198         }
199     };
200     
201     // Template methods to be implemented by each ServiceRequestType.
202     
203     public abstract int[] validStatusCodes();
204     
205     public abstract boolean isValidStatusCode(int statusCode);
206     
207     public abstract String validStatusCodesAsString();
208
209 }