[AAF-21] Initial code import
[aaf/cadi.git] / aaf / src / main / java / com / att / cadi / aaf / client / Examples.java
1 /*******************************************************************************\r
2  * ============LICENSE_START====================================================\r
3  * * org.onap.aai\r
4  * * ===========================================================================\r
5  * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.\r
6  * * Copyright © 2017 Amdocs\r
7  * * ===========================================================================\r
8  * * Licensed under the Apache License, Version 2.0 (the "License");\r
9  * * you may not use this file except in compliance with the License.\r
10  * * You may obtain a copy of the License at\r
11  * * \r
12  *  *      http://www.apache.org/licenses/LICENSE-2.0\r
13  * * \r
14  *  * Unless required by applicable law or agreed to in writing, software\r
15  * * distributed under the License is distributed on an "AS IS" BASIS,\r
16  * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
17  * * See the License for the specific language governing permissions and\r
18  * * limitations under the License.\r
19  * * ============LICENSE_END====================================================\r
20  * *\r
21  * * ECOMP is a trademark and service mark of AT&T Intellectual Property.\r
22  * *\r
23  ******************************************************************************/\r
24 package com.att.cadi.aaf.client;\r
25 \r
26 \r
27 import java.lang.reflect.InvocationTargetException;\r
28 import java.lang.reflect.Method;\r
29 import java.util.GregorianCalendar;\r
30 \r
31 import aaf.v2_0.Approval;\r
32 import aaf.v2_0.Approvals;\r
33 import aaf.v2_0.CredRequest;\r
34 import aaf.v2_0.Keys;\r
35 import aaf.v2_0.NsRequest;\r
36 import aaf.v2_0.Nss;\r
37 import aaf.v2_0.Nss.Ns;\r
38 import aaf.v2_0.Perm;\r
39 import aaf.v2_0.PermKey;\r
40 import aaf.v2_0.PermRequest;\r
41 import aaf.v2_0.Perms;\r
42 import aaf.v2_0.Pkey;\r
43 import aaf.v2_0.Request;\r
44 import aaf.v2_0.Role;\r
45 import aaf.v2_0.RoleKey;\r
46 import aaf.v2_0.RolePermRequest;\r
47 import aaf.v2_0.RoleRequest;\r
48 import aaf.v2_0.Roles;\r
49 import aaf.v2_0.UserRole;\r
50 import aaf.v2_0.UserRoleRequest;\r
51 import aaf.v2_0.UserRoles;\r
52 import aaf.v2_0.Users;\r
53 import aaf.v2_0.Users.User;\r
54 \r
55 import com.att.inno.env.APIException;\r
56 import com.att.inno.env.Data;\r
57 import com.att.inno.env.Data.TYPE;\r
58 import com.att.inno.env.util.Chrono;\r
59 import com.att.rosetta.env.RosettaDF;\r
60 import com.att.rosetta.env.RosettaEnv;\r
61 \r
62 public class Examples {\r
63         public static <C> String print(RosettaEnv env, String nameOrContentType, boolean optional) throws APIException, SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {\r
64                 // Discover ClassName\r
65                 String className = null;\r
66                 String version = null;\r
67                 TYPE type = TYPE.JSON; // default\r
68                 if(nameOrContentType.startsWith("application/")) {\r
69                         for(String ct : nameOrContentType.split("\\s*,\\s*")) {\r
70                                 for(String elem : ct.split("\\s*;\\s*")) {\r
71                                         if(elem.endsWith("+json")) {\r
72                                                 type = TYPE.JSON;\r
73                                                 className = elem.substring(elem.indexOf('/')+1, elem.length()-5);\r
74                                         } else if(elem.endsWith("+xml")) {\r
75                                                 type = TYPE.XML;\r
76                                                 className = elem.substring(elem.indexOf('/')+1, elem.length()-4);\r
77                                         } else if(elem.startsWith("version=")) {\r
78                                                 version = elem.substring(8);\r
79                                         }\r
80                                 }\r
81                                 if(className!=null && version!=null)break;\r
82                         }\r
83                         if(className==null) {\r
84                                 throw new APIException(nameOrContentType + " does not contain Class Information");\r
85                         }\r
86                 } else {\r
87                         className = nameOrContentType;\r
88                 }\r
89                 \r
90                 // No Void.class in aaf.v2_0 package causing errors when trying to use a newVoidv2_0\r
91                 // method similar to others in this class. This makes it work, but is it right?\r
92                 if ("Void".equals(className)) return "";\r
93                                 \r
94                 if("1.1".equals(version)) {\r
95                         version = "v1_0";\r
96                 } else if(version!=null) {\r
97                         version = "v" + version.replace('.', '_');\r
98                 } else {\r
99                         version = "v2_0";\r
100                 }\r
101                 \r
102                 Class<?> cls;\r
103                 try {\r
104                         cls = Examples.class.getClassLoader().loadClass("aaf."+version+'.'+className);\r
105                 } catch (ClassNotFoundException e) {\r
106                         throw new APIException(e);\r
107                 }\r
108                 \r
109                 Method meth;\r
110                 try {\r
111                         meth = Examples.class.getDeclaredMethod("new"+cls.getSimpleName()+version,boolean.class);\r
112                 } catch (Exception e) {\r
113                         throw new APIException("ERROR: " + cls.getName() + " does not have an Example in Code.  Request from AAF Developers");\r
114                 }\r
115                 \r
116                 RosettaDF<C> df = env.newDataFactory(cls);\r
117                 df.option(Data.PRETTY);\r
118                 \r
119                 Object data = meth.invoke(null,optional);\r
120                 \r
121                 @SuppressWarnings("unchecked")\r
122                 String rv = df.newData().load((C)data).out(type).asString();\r
123 //              Object obj = df.newData().in(type).load(rv).asObject();\r
124                 return rv;\r
125         }\r
126         \r
127         /*\r
128          *  Set Base Class Request (easier than coding over and over)\r
129          */\r
130         private static void setOptional(Request req) {\r
131                 GregorianCalendar gc = new GregorianCalendar();\r
132                 req.setStart(Chrono.timeStamp(gc));\r
133                 gc.add(GregorianCalendar.MONTH, 6);\r
134                 req.setEnd(Chrono.timeStamp(gc));\r
135 //              req.setForce("false");\r
136                 \r
137         }\r
138         \r
139         @SuppressWarnings("unused")\r
140         private static Request newRequestv2_0(boolean optional) {\r
141                 Request r = new Request();\r
142                 setOptional(r);\r
143                 return r;\r
144         }\r
145         @SuppressWarnings("unused")\r
146         private static RolePermRequest newRolePermRequestv2_0(boolean optional) {\r
147                 RolePermRequest rpr = new RolePermRequest();\r
148                 Pkey pkey = new Pkey();\r
149                 pkey.setType("com.att.myns.mytype");\r
150                 pkey.setInstance("myInstance");\r
151                 pkey.setAction("myAction");\r
152                 rpr.setPerm(pkey);\r
153                 rpr.setRole("com.att.myns.myrole");\r
154                 if(optional)setOptional(rpr);\r
155                 return rpr;\r
156         }\r
157         \r
158         @SuppressWarnings("unused")\r
159         private static Roles newRolesv2_0(boolean optional) {\r
160                 Role r;\r
161                 Pkey p;\r
162                 Roles rs = new Roles();\r
163                 rs.getRole().add(r = new Role());\r
164                 r.setName("com.att.myns.myRole");\r
165                 r.getPerms().add(p = new Pkey());\r
166                 p.setType("com.att.myns.myType");\r
167                 p.setInstance("myInstance");\r
168                 p.setAction("myAction");\r
169                 \r
170                 r.getPerms().add(p = new Pkey());\r
171                 p.setType("com.att.myns.myType");\r
172                 p.setInstance("myInstance");\r
173                 p.setAction("myOtherAction");\r
174                 \r
175                 rs.getRole().add(r = new Role());\r
176                 r.setName("com.att.myns.myOtherRole");\r
177                 r.getPerms().add(p = new Pkey());\r
178                 p.setType("com.att.myns.myOtherType");\r
179                 p.setInstance("myInstance");\r
180                 p.setAction("myAction");\r
181                 \r
182                 r.getPerms().add(p = new Pkey());\r
183                 p.setType("com.att.myns.myOthertype");\r
184                 p.setInstance("myInstance");\r
185                 p.setAction("myOtherAction");\r
186 \r
187                 return rs;\r
188         }\r
189         \r
190         \r
191         @SuppressWarnings("unused")\r
192         private static PermRequest newPermRequestv2_0(boolean optional) {\r
193                 PermRequest pr = new PermRequest();\r
194                 pr.setType("com.att.myns.myType");\r
195                 pr.setInstance("myInstance");\r
196                 pr.setAction("myAction");\r
197                 if(optional) {\r
198                         pr.setDescription("Short and meaningful verbiage about the Permission");\r
199                         \r
200                         setOptional(pr);\r
201                 }\r
202                 return pr;\r
203         }\r
204         \r
205         @SuppressWarnings("unused")\r
206         private static Perm newPermv2_0(boolean optional) {\r
207                 Perm pr = new Perm();\r
208                 pr.setType("com.att.myns.myType");\r
209                 pr.setInstance("myInstance");\r
210                 pr.setAction("myAction");\r
211                 pr.getRoles().add("com.att.myns.myRole");\r
212                 pr.getRoles().add("com.att.myns.myRole2");\r
213                 pr.setDescription("This is my description, and I'm sticking with it");\r
214                 if(optional) {\r
215                         pr.setDescription("Short and meaningful verbiage about the Permission");\r
216                 }\r
217                 return pr;\r
218         }\r
219 \r
220 \r
221         @SuppressWarnings("unused")\r
222         private static PermKey newPermKeyv2_0(boolean optional) {\r
223                 PermKey pr = new PermKey();\r
224                 pr.setType("com.att.myns.myType");\r
225                 pr.setInstance("myInstance");\r
226                 pr.setAction("myAction");\r
227                 return pr;\r
228         }\r
229         \r
230         @SuppressWarnings("unused")\r
231         private static Perms newPermsv2_0(boolean optional) {\r
232                 Perms perms = new Perms();\r
233                 Perm p;\r
234                 perms.getPerm().add(p=new Perm());\r
235                 p.setType("com.att.myns.myType");\r
236                 p.setInstance("myInstance");\r
237                 p.setAction("myAction");\r
238                 p.getRoles().add("com.att.myns.myRole");\r
239                 p.getRoles().add("com.att.myns.myRole2");\r
240                 \r
241 \r
242                 perms.getPerm().add(p=new Perm());\r
243                 p.setType("com.att.myns.myOtherType");\r
244                 p.setInstance("myInstance");\r
245                 p.setAction("myOtherAction");\r
246                 p.getRoles().add("com.att.myns.myRole");\r
247                 p.getRoles().add("com.att.myns.myRole2");\r
248 \r
249                 return perms;\r
250                 \r
251         }\r
252         \r
253         @SuppressWarnings("unused")\r
254         private static UserRoleRequest newUserRoleRequestv2_0(boolean optional) {\r
255                 UserRoleRequest urr = new UserRoleRequest();\r
256                 urr.setRole("com.att.myns.myRole");\r
257                 urr.setUser("ab1234@csp.att.com");\r
258                 if(optional) setOptional(urr);\r
259                 return urr;\r
260         }\r
261         \r
262         @SuppressWarnings("unused")\r
263         private static NsRequest newNsRequestv2_0(boolean optional) {\r
264                 NsRequest nr = new NsRequest();\r
265                 nr.setName("com.att.myns");\r
266                 nr.getResponsible().add("ab1234@csp.att.com");\r
267                 nr.getResponsible().add("cd5678@csp.att.com");\r
268                 nr.getAdmin().add("zy9876@csp.att.com");\r
269                 nr.getAdmin().add("xw5432@csp.att.com");                \r
270                 if(optional) {\r
271                         nr.setDescription("This is my Namespace to set up");\r
272                         nr.setType("APP");\r
273                         setOptional(nr);\r
274                 }\r
275                 return nr;\r
276         }\r
277         \r
278         \r
279         @SuppressWarnings("unused")\r
280         private static Nss newNssv2_0(boolean optional) {\r
281                 Ns ns;\r
282                 \r
283                 Nss nss = new Nss();\r
284                 nss.getNs().add(ns = new Nss.Ns());\r
285                 ns.setName("com.att.myns");\r
286                 ns.getResponsible().add("ab1234@csp.att.com");\r
287                 ns.getResponsible().add("cd5678@csp.att.com");\r
288                 ns.getAdmin().add("zy9876@csp.att.com");\r
289                 ns.getAdmin().add("xw5432@csp.att.com");\r
290                 ns.setDescription("This is my Namespace to set up");\r
291                 \r
292                 nss.getNs().add(ns = new Nss.Ns());\r
293                 ns.setName("com.att.myOtherNs");\r
294                 ns.getResponsible().add("ab1234@csp.att.com");\r
295                 ns.getResponsible().add("cd5678@csp.att.com");\r
296                 ns.getAdmin().add("zy9876@csp.att.com");\r
297                 ns.getAdmin().add("xw5432@csp.att.com");                \r
298                         \r
299                 return nss;\r
300         }\r
301         @SuppressWarnings("unused")\r
302         private static RoleRequest newRoleRequestv2_0(boolean optional) {\r
303                 RoleRequest rr = new RoleRequest();\r
304                 rr.setName("com.att.myns.myRole");\r
305                 if(optional) {\r
306                         rr.setDescription("This is my Role");\r
307                         setOptional(rr);\r
308                 }\r
309                 return rr;\r
310         }\r
311 \r
312         @SuppressWarnings("unused")\r
313         private static CredRequest newCredRequestv2_0(boolean optional) {\r
314                 CredRequest cr = new CredRequest();\r
315                 cr.setId("myID@fully.qualified.domain");\r
316                 if(optional) {\r
317                         cr.setType(2);\r
318                         cr.setEntry("0x125AB256344CE");\r
319                 } else {\r
320                         cr.setPassword("This is my provisioned password");\r
321                 }\r
322 \r
323                 return cr;\r
324         }\r
325         \r
326         @SuppressWarnings("unused")\r
327         private static Users newUsersv2_0(boolean optional) {\r
328                 User user;\r
329         \r
330                 Users users = new Users();\r
331                 users.getUser().add(user = new Users.User());\r
332                 user.setId("ab1234@csp.att.com");       \r
333                 GregorianCalendar gc = new GregorianCalendar();\r
334                 user.setExpires(Chrono.timeStamp(gc));\r
335                 \r
336                 users.getUser().add(user = new Users.User());\r
337                 user.setId("zy9876@csp.att.com");       \r
338                 user.setExpires(Chrono.timeStamp(gc));  \r
339                         \r
340                 return users;\r
341         }\r
342 \r
343         @SuppressWarnings("unused")\r
344         private static Role newRolev2_0(boolean optional) {\r
345                 Role r = new Role();\r
346                 Pkey p;\r
347                 r.setName("com.att.myns.myRole");\r
348                 r.getPerms().add(p = new Pkey());\r
349                 p.setType("com.att.myns.myType");\r
350                 p.setInstance("myInstance");\r
351                 p.setAction("myAction");\r
352 \r
353         return r;\r
354     }\r
355 \r
356         @SuppressWarnings("unused")\r
357         private static RoleKey newRoleKeyv2_0(boolean optional) {\r
358                 RoleKey r = new RoleKey();\r
359                 Pkey p;\r
360                 r.setName("com.att.myns.myRole");\r
361         return r;\r
362     }\r
363 \r
364         @SuppressWarnings("unused")\r
365         private static Keys newKeysv2_0(boolean optional) {\r
366                 Keys ks = new Keys();\r
367                 ks.getKey().add("Reponse 1");\r
368                 ks.getKey().add("Response 2");\r
369         return ks;\r
370     }\r
371 \r
372         @SuppressWarnings("unused")\r
373         private static UserRoles newUserRolesv2_0(boolean optional) {\r
374                 UserRoles urs = new UserRoles();\r
375                 UserRole ur = new UserRole();\r
376                 ur.setUser("xy1234");\r
377                 ur.setRole("com.test.myapp.myRole");\r
378                 ur.setExpires(Chrono.timeStamp());\r
379                 urs.getUserRole().add(ur);\r
380                 \r
381                 ur = new UserRole();\r
382                 ur.setUser("yx4321");\r
383                 ur.setRole("com.test.yourapp.yourRole");\r
384                 ur.setExpires(Chrono.timeStamp());\r
385                 urs.getUserRole().add(ur);\r
386         return urs;\r
387     }\r
388 \r
389 \r
390         @SuppressWarnings("unused")\r
391         private static Approvals newApprovalsv2_0(boolean optional) {\r
392                 Approvals as = new Approvals();\r
393                 Approval a = new Approval();\r
394                 a.setApprover("MyApprover");\r
395                 a.setId("MyID");\r
396                 a.setMemo("My memo (and then some)");\r
397                 a.setOperation("MyOperation");\r
398                 a.setStatus("MyStatus");\r
399                 a.setTicket("MyTicket");\r
400                 a.setType("MyType");\r
401                 a.setUpdated(Chrono.timeStamp());\r
402                 a.setUser("MyUser");\r
403                 as.getApprovals().add(a);\r
404                 a = new Approval();\r
405                 a.setApprover("MyApprover2");\r
406                 a.setId("MyID2");\r
407                 a.setMemo("My memo (and then some)2");\r
408                 a.setOperation("MyOperation2");\r
409                 a.setStatus("MyStatus2");\r
410                 a.setTicket("MyTicket2");\r
411                 a.setType("MyType2");\r
412                 a.setUpdated(Chrono.timeStamp());\r
413                 a.setUser("MyUser2");\r
414                 as.getApprovals().add(a);\r
415         return as;\r
416     }\r
417 \r
418         @SuppressWarnings("unused")\r
419         private static Approval newApprovalv2_0(boolean optional) {\r
420                 Approval a = new Approval();\r
421                 a.setApprover("MyApprover");\r
422                 a.setId("MyID");\r
423                 a.setMemo("My memo (and then some)");\r
424                 a.setOperation("MyOperation");\r
425                 a.setStatus("MyStatus");\r
426                 a.setTicket("MyTicket");\r
427                 a.setType("MyType");\r
428                 a.setUpdated(Chrono.timeStamp());\r
429                 a.setUser("MyUser");\r
430         return a;\r
431     }\r
432 \r
433         \r
434 \r
435         @SuppressWarnings("unused")\r
436         private static aaf.v2_0.Error newErrorv2_0(boolean optional) {\r
437                 aaf.v2_0.Error err = new aaf.v2_0.Error();\r
438                 err.setMessageId("SVC1403");\r
439                 err.setText("MyText %s, %s: The last three digits are usually the HTTP Code");\r
440                 err.getVariables().add("Variable 1");\r
441                 err.getVariables().add("Variable 2");\r
442                 return err;\r
443         }\r
444 \r
445 }\r