Update AAF Version 1.0.0
[aaf/cadi.git] / client / src / main / java / org / onap / aaf / cadi / client / EnvAccess.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 org.onap.aaf.cadi.client;\r
24 \r
25 import java.io.IOException;\r
26 import java.io.InputStream;\r
27 import java.util.Map.Entry;\r
28 \r
29 import org.onap.aaf.cadi.Access;\r
30 import org.onap.aaf.cadi.Symm;\r
31 \r
32 import java.util.Properties;\r
33 \r
34 import org.onap.aaf.inno.env.Decryptor;\r
35 import org.onap.aaf.inno.env.Env;\r
36 import org.onap.aaf.inno.env.impl.BasicEnv;\r
37 \r
38 public class EnvAccess implements Access {\r
39         private Env env;\r
40 \r
41         /**\r
42          * String Property tag for files/resources that may contain properties.  Can be null.\r
43          * Resources of ClassLoader will be checked first, if exist. Can be null.\r
44          * @param env\r
45          * @param tag\r
46          * @param cl\r
47          * @throws IOException\r
48          */\r
49         public EnvAccess(BasicEnv env, ClassLoader cl) throws IOException {\r
50                 this.env = env;\r
51                 final Symm s = Symm.obtain(this);\r
52                 env.set(new Decryptor() {\r
53                                 private Symm symm = s;\r
54                                 @Override\r
55                                 public String decrypt(String encrypted) {\r
56                                         try {\r
57                                                 return (encrypted!=null && (encrypted.startsWith(Symm.ENC)))\r
58                                                                 ? symm.depass(encrypted)\r
59                                                                 : encrypted;\r
60                                         } catch (IOException e) {\r
61                                                 return "";\r
62                                         }\r
63                                 }\r
64                         }\r
65                 );\r
66         }\r
67 \r
68         \r
69         /**\r
70          * Construct with the Classloader of Env and CADI_PROP_FILES, if possible\r
71          * \r
72          * @param env\r
73          * @throws IOException\r
74          */\r
75         public EnvAccess(BasicEnv env) throws IOException {\r
76                 this(env, env.getClass().getClassLoader());\r
77         }\r
78         \r
79         @Override\r
80         public void log(Level level, Object... elements) {\r
81                 switch(level) {\r
82                         case AUDIT:\r
83                                 env.audit().log(elements);\r
84                                 break;\r
85                         case DEBUG:\r
86                                 env.debug().log(elements);\r
87                                 break;\r
88                         case ERROR:\r
89                                 env.error().log(elements);\r
90                                 break;\r
91                         case INFO:\r
92                                 env.info().log(elements);\r
93                                 break;\r
94                         case INIT:\r
95                                 env.init().log(elements);\r
96                                 break;\r
97                         case WARN:\r
98                                 env.warn().log(elements);\r
99                                 break;\r
100                         default:\r
101                                 break;\r
102                 }\r
103                 \r
104         }\r
105 \r
106         @Override\r
107         public void log(Exception e, Object... elements) {\r
108                 env.error().log(e,elements);\r
109         }\r
110 \r
111         @Override\r
112         public void printf(Level level, String fmt, Object... elements) {\r
113                 if(willLog(level)) {\r
114                         log(level,String.format(fmt, elements));\r
115                 }\r
116         }\r
117 \r
118 \r
119         @Override\r
120         public boolean willLog(Level level) {\r
121                 switch(level) {\r
122                         case AUDIT:\r
123                                 return env.audit().isLoggable();\r
124                         case DEBUG:\r
125                                 return env.debug().isLoggable();\r
126                         case ERROR:\r
127                                 return env.error().isLoggable();\r
128                         case INFO:\r
129                                 return env.info().isLoggable();\r
130                         case INIT:\r
131                                 return env.init().isLoggable();\r
132                         case WARN:\r
133                                 return env.warn().isLoggable();\r
134                         default:\r
135                                 return false;\r
136                 }\r
137         }\r
138 \r
139 \r
140         @Override\r
141         public void setLogLevel(Level level) {\r
142                 // unused\r
143         }\r
144 \r
145         @Override\r
146         public ClassLoader classLoader() {\r
147                 return env.getClass().getClassLoader();\r
148         }\r
149 \r
150         @Override\r
151         public String getProperty(String string, String def) {\r
152                 return env.getProperty(string, def);\r
153         }\r
154         \r
155         @Override\r
156         public void load(InputStream is) throws IOException {\r
157                 Properties props = new Properties();\r
158                 props.load(is);\r
159                 for(Entry<Object, Object> es :props.entrySet()) {\r
160                         env.setProperty(es.getKey().toString(), es.getValue().toString());\r
161                 }\r
162         }\r
163 \r
164         @Override\r
165         public String decrypt(String encrypted, boolean anytext) throws IOException {\r
166                 return env.decryptor().decrypt(encrypted);\r
167         }\r
168 \r
169 }\r