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