d42aaf552d4421069a99fa6faefef84c8684895d
[aaf/authz.git] / cadi / core / src / main / java / org / onap / aaf / cadi / util / UserChainManip.java
1 /**
2  * ============LICENSE_START====================================================
3  * org.onap.aaf
4  * ===========================================================================
5  * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
6  * ===========================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END====================================================
19  *
20  */
21
22 package org.onap.aaf.cadi.util;
23
24 import org.onap.aaf.cadi.UserChain;
25
26 public class UserChainManip {
27     /** 
28         Build an element in the correct format for UserChain.
29         Format:<APP>:<ID>:<protocol>[:AS][,<APP>:<ID>:<protocol>]*
30         @see UserChain
31     */ 
32     public static StringBuilder build(StringBuilder sb, String app, String id, UserChain.Protocol proto, boolean as) {
33         boolean mayAs;
34         if (!(mayAs=sb.length()==0)) {
35             sb.append(',');
36         }
37         sb.append(app);
38         sb.append(':');
39         sb.append(id);
40         sb.append(':');
41         sb.append(proto.name());
42         if (as && mayAs) {
43             sb.append(":AS");
44         }
45         return sb;
46     }
47     
48     public static String idToNS(String id) {
49         if (id==null) {
50             return "";
51         } else {
52             StringBuilder sb = new StringBuilder();
53             char c;
54             int end;
55             boolean first = true;
56             for (int idx = end = id.length()-1;idx>=0;--idx) {
57                 if ((c = id.charAt(idx))=='@' || c=='.')  {
58                     if (idx<end) {
59                         if (first) {
60                             first = false;
61                         } else {
62                             sb.append('.');
63                         }
64                         for (int i=idx+1;i<=end;++i) {
65                             sb.append(id.charAt(i));
66                         }
67                     }
68                     end=idx-1;
69                     if (c=='@') {
70                         break;
71                     }
72                 }
73             }
74             return sb.toString();
75         }
76     }
77 }