[AAF-21] Updated Copyright Headers for AAF
[aaf/authz.git] / authz-service / src / main / java / com / att / authz / service / api / API_NS.java
1 /*******************************************************************************\r
2  * ============LICENSE_START====================================================\r
3  * * org.onap.aaf\r
4  * * ===========================================================================\r
5  * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.\r
6  * * ===========================================================================\r
7  * * Licensed under the Apache License, Version 2.0 (the "License");\r
8  * * you may not use this file except in compliance with the License.\r
9  * * You may obtain a copy of the License at\r
10  * * \r
11  *  *      http://www.apache.org/licenses/LICENSE-2.0\r
12  * * \r
13  *  * Unless required by applicable law or agreed to in writing, software\r
14  * * distributed under the License is distributed on an "AS IS" BASIS,\r
15  * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
16  * * See the License for the specific language governing permissions and\r
17  * * limitations under the License.\r
18  * * ============LICENSE_END====================================================\r
19  * *\r
20  * * ECOMP is a trademark and service mark of AT&T Intellectual Property.\r
21  * *\r
22  ******************************************************************************/\r
23 package com.att.authz.service.api;\r
24 \r
25 import static com.att.authz.layer.Result.OK;\r
26 import static com.att.cssa.rserv.HttpMethods.DELETE;\r
27 import static com.att.cssa.rserv.HttpMethods.GET;\r
28 import static com.att.cssa.rserv.HttpMethods.POST;\r
29 import static com.att.cssa.rserv.HttpMethods.PUT;\r
30 \r
31 import javax.servlet.http.HttpServletRequest;\r
32 import javax.servlet.http.HttpServletResponse;\r
33 \r
34 import com.att.aft.dme2.internal.jetty.http.HttpStatus;\r
35 import com.att.authz.env.AuthzTrans;\r
36 import com.att.authz.facade.AuthzFacade;\r
37 import com.att.authz.layer.Result;\r
38 import com.att.authz.service.AuthAPI;\r
39 import com.att.authz.service.Code;\r
40 import com.att.authz.service.mapper.Mapper.API;\r
41 import com.att.dao.aaf.cass.NsType;\r
42 import com.att.dao.aaf.cass.Status;\r
43 \r
44 public class API_NS {\r
45         private static final String FULL = "full";\r
46         private static final String TRUE = "true";\r
47 \r
48         public static void init(AuthAPI authzAPI, AuthzFacade facade) throws Exception {\r
49                 /**\r
50                  * puts a new Namespace in Authz DB\r
51                  * \r
52                  * TESTCASES: TC_NS1, TC_NSdelete1\r
53                  */\r
54                 authzAPI.route(POST,"/authz/ns",API.NS_REQ, new Code(facade,"Create a Namespace",true) {\r
55                                         @Override\r
56                                         public void handle(\r
57                                                         AuthzTrans trans,\r
58                                                         HttpServletRequest req, \r
59                                                         HttpServletResponse resp) throws Exception {\r
60                                                 NsType nst = NsType.fromString(req.getParameter("type"));\r
61                                                 Result<Void> r = context.requestNS(trans, req, resp,nst);\r
62                                                         \r
63                                                 switch(r.status) {\r
64                                                         case OK:\r
65                                                                 resp.setStatus(HttpStatus.CREATED_201); \r
66                                                                 break;\r
67                                                         case Status.ACC_Future:\r
68                                                                 resp.setStatus(HttpStatus.ACCEPTED_202); \r
69                                                                 break;\r
70                                                         default:\r
71                                                                 context.error(trans,resp,r);\r
72                                                 }\r
73                                         }\r
74                                 }\r
75                 );\r
76                 \r
77                 /**\r
78                  * removes a Namespace from Authz DB\r
79                  * \r
80                  * TESTCASES: TC_NS1, TC_NSdelete1\r
81                  */\r
82                 authzAPI.route(DELETE,"/authz/ns/:ns",API.VOID, new Code(facade,"Delete a Namespace",true) {\r
83                                 @Override\r
84                                 public void handle(\r
85                                                 AuthzTrans trans,\r
86                                                 HttpServletRequest req, \r
87                                                 HttpServletResponse resp) throws Exception {\r
88                                         Result<Void> r = context.deleteNS(trans, req, resp, pathParam(req,":ns"));\r
89                                         switch(r.status) {\r
90                                                 case OK:\r
91                                                         resp.setStatus(HttpStatus.OK_200); \r
92                                                         break;\r
93                                                 default:\r
94                                                         context.error(trans,resp,r);\r
95                                         }\r
96                                 }\r
97                         }\r
98                 );\r
99 \r
100                 /**\r
101                  * Add an Admin in NS in Authz DB\r
102                  * \r
103                  * TESTCASES: TC_NS1\r
104                  */\r
105                 authzAPI.route(POST,"/authz/ns/:ns/admin/:id",API.VOID, new Code(facade,"Add an Admin to a Namespace",true) {\r
106                         @Override\r
107                         public void handle(\r
108                                 AuthzTrans trans,\r
109                                 HttpServletRequest req, \r
110                                 HttpServletResponse resp) throws Exception {\r
111                                 Result<Void> r = context.addAdminToNS(trans, resp, pathParam(req,":ns"), pathParam(req,":id"));\r
112                                         switch(r.status) {\r
113                                                 case OK:\r
114                                                         resp.setStatus(HttpStatus.CREATED_201); \r
115                                                         break;\r
116                                                 case Status.ACC_Future:\r
117                                                         resp.setStatus(HttpStatus.ACCEPTED_202); \r
118                                                         break;\r
119                                                 default:\r
120                                                         context.error(trans,resp,r);\r
121                                         }\r
122                                 }\r
123                         }\r
124                 );\r
125         \r
126                 /**\r
127                  * Removes an Admin from Namespace in Authz DB\r
128                  * \r
129                  * TESTCASES: TC_NS1\r
130                  */\r
131                 authzAPI.route(DELETE,"/authz/ns/:ns/admin/:id",API.VOID, new Code(facade,"Remove an Admin from a Namespace",true) {\r
132                         @Override\r
133                         public void handle(\r
134                                 AuthzTrans trans,\r
135                                 HttpServletRequest req, \r
136                                 HttpServletResponse resp) throws Exception {\r
137                                         Result<Void> r = context.delAdminFromNS(trans, resp, pathParam(req,":ns"), pathParam(req,":id"));\r
138                                         switch(r.status) {\r
139                                                 case OK:\r
140                                                         resp.setStatus(HttpStatus.OK_200); \r
141                                                         break;\r
142                                                 default:\r
143                                                         context.error(trans,resp,r);\r
144                                         }\r
145                                 }\r
146                         }\r
147                 );\r
148 \r
149         /**\r
150          * Add an Admin in NS in Authz DB\r
151          * \r
152          * TESTCASES: TC_NS1\r
153          */\r
154                 authzAPI.route(POST,"/authz/ns/:ns/responsible/:id",API.VOID, new Code(facade,"Add a Responsible Identity to a Namespace",true) {\r
155                         @Override\r
156                         public void handle(\r
157                                 AuthzTrans trans,\r
158                                 HttpServletRequest req, \r
159                                 HttpServletResponse resp) throws Exception {\r
160                                 Result<Void> r = context.addResponsibilityForNS(trans, resp, pathParam(req,":ns"), pathParam(req,":id"));\r
161                                         switch(r.status) {\r
162                                                 case OK:\r
163                                                         resp.setStatus(HttpStatus.CREATED_201); \r
164                                                         break;\r
165                                                 case Status.ACC_Future:\r
166                                                         resp.setStatus(HttpStatus.ACCEPTED_202); \r
167                                                         break;\r
168                                                 default:\r
169                                                         context.error(trans,resp,r);\r
170                                         }\r
171                                 }\r
172                         }\r
173                 );\r
174 \r
175 \r
176                 /**\r
177                  * \r
178                  */\r
179                 authzAPI.route(GET,"/authz/nss/:id",API.NSS, new Code(facade,"Return Information about Namespaces", true) {\r
180                         @Override\r
181                         public void handle(\r
182                                 AuthzTrans trans, \r
183                                 HttpServletRequest req, \r
184                                 HttpServletResponse resp) throws Exception {\r
185                                         Result<Void> r = context.getNSsByName(trans, resp, pathParam(req,":id"));\r
186                                         switch(r.status) {\r
187                                                 case OK:\r
188                                                         resp.setStatus(HttpStatus.OK_200); \r
189                                                         break;\r
190                                                 default:\r
191                                                         context.error(trans,resp,r);\r
192                                         }\r
193                                 }\r
194                         }\r
195                 );      \r
196                 \r
197                 /**\r
198                  * Get all Namespaces where user is an admin\r
199                  */\r
200                 authzAPI.route(GET,"/authz/nss/admin/:user",API.NSS, new Code(facade,"Return Namespaces where User is an Admin", true) {\r
201                         @Override\r
202                         public void handle(\r
203                                 AuthzTrans trans, \r
204                                 HttpServletRequest req, \r
205                                 HttpServletResponse resp) throws Exception {\r
206                                         Result<Void> r = context.getNSsByAdmin(trans, resp, pathParam(req,":user"),TRUE.equals(req.getParameter(FULL)));\r
207                                         switch(r.status) {\r
208                                                 case OK:\r
209                                                         resp.setStatus(HttpStatus.OK_200); \r
210                                                         break;\r
211                                                 default:\r
212                                                         context.error(trans,resp,r);\r
213                                         }\r
214                                 }\r
215                         }\r
216                 );\r
217                 \r
218                 /**\r
219                  * Get all Namespaces where user is a responsible party\r
220                  */\r
221                 authzAPI.route(GET,"/authz/nss/responsible/:user",API.NSS, new Code(facade,"Return Namespaces where User is Responsible", true) {\r
222                         @Override\r
223                         public void handle(\r
224                                 AuthzTrans trans, \r
225                                 HttpServletRequest req, \r
226                                 HttpServletResponse resp) throws Exception {\r
227                                         Result<Void> r = context.getNSsByResponsible(trans, resp, pathParam(req,":user"),TRUE.equals(req.getParameter(FULL)));\r
228                                         switch(r.status) {\r
229                                                 case OK:\r
230                                                         resp.setStatus(HttpStatus.OK_200); \r
231                                                         break;\r
232                                                 default:\r
233                                                         context.error(trans,resp,r);\r
234                                         }\r
235                                 }\r
236                         }\r
237                 );\r
238 \r
239                 /**\r
240                  * Get all Namespaces where user is an admin or owner\r
241                  */\r
242                 authzAPI.route(GET,"/authz/nss/either/:user",API.NSS, new Code(facade,"Return Namespaces where User Admin or Owner", true) {\r
243                         @Override\r
244                         public void handle(\r
245                                 AuthzTrans trans, \r
246                                 HttpServletRequest req, \r
247                                 HttpServletResponse resp) throws Exception {\r
248                                         Result<Void> r = context.getNSsByEither(trans, resp, pathParam(req,":user"),TRUE.equals(req.getParameter(FULL)));\r
249                                         switch(r.status) {\r
250                                                 case OK:\r
251                                                         resp.setStatus(HttpStatus.OK_200); \r
252                                                         break;\r
253                                                 default:\r
254                                                         context.error(trans,resp,r);\r
255                                         }\r
256                                 }\r
257                         }\r
258                 );\r
259 \r
260                 /**\r
261                  * Get all children Namespaces\r
262                  */\r
263                 authzAPI.route(GET,"/authz/nss/children/:id",API.NSS, new Code(facade,"Return Child Namespaces", true) {\r
264                         @Override\r
265                         public void handle(\r
266                                 AuthzTrans trans, \r
267                                 HttpServletRequest req, \r
268                                 HttpServletResponse resp) throws Exception {\r
269                                         Result<Void> r = context.getNSsChildren(trans, resp, pathParam(req,":id"));\r
270                                         switch(r.status) {\r
271                                                 case OK:\r
272                                                         resp.setStatus(HttpStatus.OK_200); \r
273                                                         break;\r
274                                                 default:\r
275                                                         context.error(trans,resp,r);\r
276                                         }\r
277                                 }\r
278                         }\r
279                 );\r
280 \r
281                 /**\r
282                  * Set a description of a Namespace\r
283                  */\r
284                 authzAPI.route(PUT,"/authz/ns",API.NS_REQ,new Code(facade,"Set a Description for a Namespace",true) {\r
285                         @Override\r
286                         public void handle(\r
287                                         AuthzTrans trans, \r
288                                         HttpServletRequest req,\r
289                                         HttpServletResponse resp) throws Exception {\r
290                                 \r
291                                 Result<Void> r = context.updateNsDescription(trans, req, resp);\r
292                                 switch(r.status) {\r
293                                         case OK: \r
294                                                 resp.setStatus(HttpStatus.OK_200); \r
295                                                 break;\r
296                                         default:\r
297                                                 context.error(trans,resp,r);\r
298                                 }\r
299                         }\r
300                 });     \r
301         \r
302                 /**\r
303                  * Removes an Owner from Namespace in Authz DB\r
304                  * \r
305                  * TESTCASES: TC_NS1\r
306                  */\r
307                 authzAPI.route(DELETE,"/authz/ns/:ns/responsible/:id",API.VOID, new Code(facade,"Remove a Responsible Identity from Namespace",true) {\r
308                         @Override\r
309                         public void handle(\r
310                                 AuthzTrans trans,\r
311                                 HttpServletRequest req, \r
312                                 HttpServletResponse resp) throws Exception {\r
313                                         Result<Void> r = context.delResponsibilityForNS(trans, resp, pathParam(req,":ns"), pathParam(req,":id"));\r
314                                         switch(r.status) {\r
315                                                 case OK:\r
316                                                         resp.setStatus(HttpStatus.OK_200); \r
317                                                         break;\r
318                                                 default:\r
319                                                         context.error(trans,resp,r);\r
320                                         }\r
321                                 }\r
322                         }\r
323                 );\r
324 \r
325                 authzAPI.route(POST,"/authz/ns/:ns/attrib/:key/:value",API.VOID, new Code(facade,"Add an Attribute from a Namespace",true) {\r
326                         @Override\r
327                         public void handle(AuthzTrans trans, HttpServletRequest req, HttpServletResponse resp) throws Exception {\r
328                                         Result<Void> r = context.createAttribForNS(trans, resp, \r
329                                                 pathParam(req,":ns"), \r
330                                                 pathParam(req,":key"),\r
331                                                 pathParam(req,":value"));\r
332                                         switch(r.status) {\r
333                                                 case OK:\r
334                                                         resp.setStatus(HttpStatus.CREATED_201); \r
335                                                         break;\r
336                                                 default:\r
337                                                         context.error(trans,resp,r);\r
338                                         }\r
339                                 }\r
340                         }\r
341                 );\r
342 \r
343                 authzAPI.route(GET,"/authz/ns/attrib/:key",API.KEYS, new Code(facade,"get Ns Key List From Attribute",true) {\r
344                         @Override\r
345                         public void handle(AuthzTrans trans, HttpServletRequest req, HttpServletResponse resp) throws Exception {\r
346                                         Result<Void> r = context.readNsByAttrib(trans, resp, pathParam(req,":key"));\r
347                                         switch(r.status) {\r
348                                                 case OK:\r
349                                                         resp.setStatus(HttpStatus.OK_200); \r
350                                                         break;\r
351                                                 default:\r
352                                                         context.error(trans,resp,r);\r
353                                         }\r
354                                 }\r
355                         }\r
356                 );\r
357 \r
358                 authzAPI.route(PUT,"/authz/ns/:ns/attrib/:key/:value",API.VOID, new Code(facade,"update an Attribute from a Namespace",true) {\r
359                         @Override\r
360                         public void handle(AuthzTrans trans, HttpServletRequest req, HttpServletResponse resp) throws Exception {\r
361                                         Result<Void> r = context.updAttribForNS(trans, resp, \r
362                                                 pathParam(req,":ns"), \r
363                                                 pathParam(req,":key"),\r
364                                                 pathParam(req,":value"));\r
365                                         switch(r.status) {\r
366                                                 case OK:\r
367                                                         resp.setStatus(HttpStatus.OK_200); \r
368                                                         break;\r
369                                                 default:\r
370                                                         context.error(trans,resp,r);\r
371                                         }\r
372                                 }\r
373                         }\r
374                 );\r
375                 \r
376                 authzAPI.route(DELETE,"/authz/ns/:ns/attrib/:key",API.VOID, new Code(facade,"delete an Attribute from a Namespace",true) {\r
377                         @Override\r
378                         public void handle(AuthzTrans trans, HttpServletRequest req, HttpServletResponse resp) throws Exception {\r
379                                         Result<Void> r = context.delAttribForNS(trans, resp, \r
380                                                 pathParam(req,":ns"), \r
381                                                 pathParam(req,":key"));\r
382                                         switch(r.status) {\r
383                                                 case OK:\r
384                                                         resp.setStatus(HttpStatus.OK_200); \r
385                                                         break;\r
386                                                 default:\r
387                                                         context.error(trans,resp,r);\r
388                                         }\r
389                                 }\r
390                         }\r
391                 );\r
392 \r
393         }\r
394         \r
395         \r
396 }\r