Improve Pool
[aaf/authz.git] / misc / env / src / main / java / org / onap / aaf / misc / env / impl / BasicEnv.java
index 65fe9d8..8128856 100644 (file)
-/**
- * ============LICENSE_START====================================================
- * org.onap.aaf
- * ===========================================================================
- * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
- * ===========================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END====================================================
- *
- */
-
-package org.onap.aaf.misc.env.impl;
-
-import java.applet.Applet;
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.util.Properties;
-
-import javax.xml.namespace.QName;
-import javax.xml.validation.Schema;
-
-import org.onap.aaf.misc.env.APIException;
-import org.onap.aaf.misc.env.DataFactory;
-import org.onap.aaf.misc.env.Decryptor;
-import org.onap.aaf.misc.env.Encryptor;
-import org.onap.aaf.misc.env.Env;
-import org.onap.aaf.misc.env.EnvJAXB;
-import org.onap.aaf.misc.env.LogTarget;
-import org.onap.aaf.misc.env.StaticSlot;
-import org.onap.aaf.misc.env.StoreImpl;
-import org.onap.aaf.misc.env.TimeTaken;
-import org.onap.aaf.misc.env.TransCreate;
-import org.onap.aaf.misc.env.TransJAXB;
-import org.onap.aaf.misc.env.jaxb.JAXBDF;
-import org.onap.aaf.misc.env.util.Split;
-
-/**
- * An essential Implementation of Env, which will fully function, without any sort
- * of configuration.
- * 
- * Use as a basis for Group level Env, just overriding where needed.
- * @author Jonathan
- *
- */
-public class BasicEnv extends StoreImpl implements EnvJAXB, TransCreate<TransJAXB>{
-       protected LogTarget fatal=LogTarget.SYSERR;
-       protected LogTarget error=LogTarget.SYSERR;
-       protected LogTarget audit=LogTarget.SYSOUT;
-       protected LogTarget init=LogTarget.SYSOUT;
-       protected LogTarget warn=LogTarget.SYSERR;
-       protected LogTarget info=LogTarget.SYSOUT;
-       protected LogTarget debug=LogTarget.NULL;
-       protected LogTarget trace=LogTarget.NULL;
-//     protected Map<String, String> props;
-       
-//     private boolean sysprops;
-
-       public BasicEnv(String ... args) {
-               super(null,args);
-       }
-
-       public BasicEnv(String tag, String[] args) {
-               super(tag, args);
-       }
-       
-
-       /**
-        * Suitable for use in Applets... obtain all the values 
-        * listed for the variable String arg "tags"
-        */
-       public BasicEnv(Applet applet, String ... tags) {
-               super(null, tags);
-//             props = new HashMap<String, String>();
-//             String value;
-//             for(int i=0;i<tags.length;++i) {
-//                     value = applet.getParameter(tags[i]);
-//                     if(value!=null) {
-//                             props.put(tags[i], value);
-//                     }
-//             }
-       }
-
-       public BasicEnv(Properties props) {
-               super(null, props);
-       }
-
-       public BasicEnv(String tag, Properties props) {
-               super(tag, props);
-       }
-
-
-
-       // @Override
-       public LogTarget fatal() {
-               return fatal;
-       }
-
-       // @Override
-       public LogTarget error() {
-               return error;
-       }
-
-       
-       // @Override
-       public LogTarget audit() {
-               return audit;
-       }
-
-       // @Override
-       public LogTarget init() {
-               return init;
-       }
-
-       // @Override
-       public LogTarget warn() {
-               return warn;
-       }
-
-       // @Override
-       public LogTarget info() {
-               return info;
-       }
-
-       // @Override
-       public LogTarget debug() {
-               return debug;
-       }
-
-       public void debug(LogTarget lt) {
-               debug = lt;
-       }
-
-       // @Override
-       public LogTarget trace() {
-               return trace;
-       }
-
-       // @Override
-       public TimeTaken start(String name, int flag) {
-               return new TimeTaken(name, flag) {
-                       /**
-                        * Format to be printed when called upon
-                        */
-                       // @Override
-                       public void output(StringBuilder sb) {
-       
-                               switch(flag) {
-                                       case Env.XML: sb.append("XML "); break;
-                                       case Env.JSON: sb.append("JSON "); break;
-                                       case Env.REMOTE: sb.append("REMOTE "); break;
-                               }
-                               sb.append(name);
-                               if(flag != Env.CHECKPOINT) {
-                                       sb.append(' ');
-                                       sb.append((end-start)/1000000f);
-                                       sb.append("ms");
-                                       if(size>=0) {
-                                               sb.append(" size: ");
-                                               sb.append(Long.toString(size));
-                                       }
-                               }
-                       }
-               };
-       }
-
-       // @Override
-       public String getProperty(String key) {
-               return get(staticSlot(key),null);
-       }
-       
-       public Properties getProperties(String ... filter) {
-               Properties props = new Properties();
-               boolean yes;
-               for(String key : existingStaticSlotNames()) {
-                       if(filter.length>0) {
-                               yes = false;
-                               for(String f : filter) {
-                                       if(key.startsWith(f)) {
-                                               yes = true;
-                                               break;
-                                       }
-                               }
-                       } else {
-                               yes = true;
-                       }
-                       if(yes) {
-                               String value = getProperty(key);
-                               if(value!=null) {
-                                       props.put(key, value);
-                               }
-                       }
-               }
-               return props;
-       }
-       
-       // @Override
-       public String getProperty(String key, String defaultValue) {
-               return get(staticSlot(key),defaultValue);
-       }
-
-       // @Override
-       public String setProperty(String key, String value) {
-               put(staticSlot(key),value==null?null:value.trim());
-               return value;
-       }
-       
-       protected Decryptor decryptor = Decryptor.NULL;
-       protected Encryptor encryptor = Encryptor.NULL;
-
-       
-       public Decryptor decryptor() {
-               return decryptor; 
-       }
-       
-       public void set(Decryptor newDecryptor) {
-               decryptor = newDecryptor;
-       }
-       
-       public Encryptor encryptor() {
-               return encryptor; 
-       }
-       
-       public void set(Encryptor newEncryptor) {
-               encryptor = newEncryptor;
-       }
-
-       
-//     @SuppressWarnings("unchecked")
-       // @Override
-       public <T> DataFactory<T> newDataFactory(Class<?>... classes) throws APIException {
-//             if(String.class.isAssignableFrom(classes[0])) 
-//                     return (DataFactory<T>) new StringDF(this);
-               return new JAXBDF<T>(this,classes);
-       }
-
-//     @SuppressWarnings("unchecked")
-       // @Override
-       public <T> DataFactory<T> newDataFactory(Schema schema, Class<?>... classes) throws APIException {
-//             if(String.class.isAssignableFrom(classes[0])) 
-//                     return (DataFactory<T>) new StringDF(this);
-               return new JAXBDF<T>(this, schema, classes);
-       }
-
-//     @SuppressWarnings("unchecked")
-       // @Override
-       public<T> DataFactory<T> newDataFactory(QName qName, Class<?> ... classes) throws APIException {
-//             if(String.class.isAssignableFrom(classes[0])) 
-//                     return (DataFactory<T>) new StringDF(this);
-               return new JAXBDF<T>(this, qName, classes);
-       }
-
-       // @Override
-       public<T> DataFactory<T> newDataFactory(Schema schema, QName qName, Class<?> ... classes) throws APIException {
-               return new JAXBDF<T>(this, schema, qName, classes);
-       }
-
-       // @Override
-       public BasicTrans newTrans() {
-               return new BasicTrans(this);
-       }
-
-       public void loadFromSystemPropsStartsWith(String ... str) {
-                for(String name : System.getProperties().stringPropertyNames()) {
-                       for(String s : str) {
-                               if(name.startsWith(s)) {
-                                       setProperty(name, System.getProperty(name));
-                               }
-                       }
-               }
-       }
-
-       /**
-        * 
-        * 
-        */
-       public void loadToSystemPropsStartsWith(String ... str) {
-               String value;
-               for(String name : existingStaticSlotNames()) {
-                       for(String s : str) {
-                               if(name.startsWith(s)) {
-                                       if((value = getProperty(name))!=null)
-                                               System.setProperty(name,value);
-                               }
-                       }
-                }
-       }
-       
-       public void loadPropFiles(String tag, ClassLoader classloader) throws IOException {
-               String propfiles = getProperty(tag);
-               if(propfiles!=null) {
-                       for(String pf : Split.splitTrim(File.pathSeparatorChar, propfiles)) {
-                               InputStream is = classloader==null?null:classloader.getResourceAsStream(pf);
-                               if(is==null) {
-                                       File f = new File(pf);
-                                       if(f.exists()) {
-                                               is = new FileInputStream(f);
-                                       }
-                               }
-                               if(is!=null) {
-                                       BufferedReader br = new BufferedReader(new InputStreamReader(is));
-                                       try {
-                                               String line;
-                                               while((line=br.readLine())!=null) {
-                                                       line = line.trim();
-                                                       if(!line.startsWith("#")) {
-                                                               String[] tv = Split.splitTrim('=', line);
-                                                               if(tv.length==2) {
-                                                                       setProperty(tv[0],tv[1]);
-                                                               }
-                                                       }
-                                               }
-                                       } finally {
-                                               try {
-                                                       br.close();
-                                               } catch (IOException e) {
-                                                       error().log(e);
-                                               }
-                                       }
-                               }
-                       }
-               }
-       }
-       
-       /**
-        * Create a StaticSlot, and load it from existing Properties
-        * 
-        * @param name
-        * @param propName
-        * @return
-        */
-       public synchronized StaticSlot staticSlot(String name, final String propName) {
-               StaticSlot ss = staticSlot(name);
-               put(ss,getProperty(propName));
-               return ss;
-       }
-
-
-}
+/**\r
+ * ============LICENSE_START====================================================\r
+ * org.onap.aaf\r
+ * ===========================================================================\r
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.\r
+ * ===========================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * \r
+ *      http://www.apache.org/licenses/LICENSE-2.0\r
+ * \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ============LICENSE_END====================================================\r
+ *\r
+ */\r
+\r
+package org.onap.aaf.misc.env.impl;\r
+\r
+import java.applet.Applet;\r
+import java.io.BufferedReader;\r
+import java.io.File;\r
+import java.io.FileInputStream;\r
+import java.io.IOException;\r
+import java.io.InputStream;\r
+import java.io.InputStreamReader;\r
+import java.util.Properties;\r
+\r
+import javax.xml.namespace.QName;\r
+import javax.xml.validation.Schema;\r
+\r
+import org.onap.aaf.misc.env.APIException;\r
+import org.onap.aaf.misc.env.DataFactory;\r
+import org.onap.aaf.misc.env.Decryptor;\r
+import org.onap.aaf.misc.env.Encryptor;\r
+import org.onap.aaf.misc.env.Env;\r
+import org.onap.aaf.misc.env.EnvJAXB;\r
+import org.onap.aaf.misc.env.LogTarget;\r
+import org.onap.aaf.misc.env.StaticSlot;\r
+import org.onap.aaf.misc.env.StoreImpl;\r
+import org.onap.aaf.misc.env.TimeTaken;\r
+import org.onap.aaf.misc.env.TransCreate;\r
+import org.onap.aaf.misc.env.TransJAXB;\r
+import org.onap.aaf.misc.env.jaxb.JAXBDF;\r
+import org.onap.aaf.misc.env.util.Split;\r
+\r
+/**\r
+ * An essential Implementation of Env, which will fully function, without any sort\r
+ * of configuration.\r
+ * \r
+ * Use as a basis for Group level Env, just overriding where needed.\r
+ * @author Jonathan\r
+ *\r
+ */\r
+public class BasicEnv extends StoreImpl implements EnvJAXB, TransCreate<TransJAXB>{\r
+    protected LogTarget fatal=LogTarget.SYSERR;\r
+    protected LogTarget error=LogTarget.SYSERR;\r
+    protected LogTarget audit=LogTarget.SYSOUT;\r
+    protected LogTarget init=LogTarget.SYSOUT;\r
+    protected LogTarget warn=LogTarget.SYSERR;\r
+    protected LogTarget info=LogTarget.SYSOUT;\r
+    protected LogTarget debug=LogTarget.NULL;\r
+    protected LogTarget trace=LogTarget.NULL;\r
+//    protected Map<String, String> props;\r
+    \r
+//    private boolean sysprops;\r
+\r
+    public BasicEnv(String ... args) {\r
+        super(null,args);\r
+    }\r
+\r
+    public BasicEnv(String tag, String[] args) {\r
+        super(tag, args);\r
+    }\r
+    \r
+\r
+    /**\r
+     * Suitable for use in Applets... obtain all the values \r
+     * listed for the variable String arg "tags"\r
+     */\r
+    public BasicEnv(Applet applet, String ... tags) {\r
+        super(null, tags);\r
+//        props = new HashMap<>();\r
+//        String value;\r
+//        for (int i=0;i<tags.length;++i) {\r
+//            value = applet.getParameter(tags[i]);\r
+//            if (value!=null) {\r
+//                props.put(tags[i], value);\r
+//            }\r
+//        }\r
+    }\r
+\r
+    public BasicEnv(Properties props) {\r
+        super(null, props);\r
+    }\r
+\r
+    public BasicEnv(String tag, Properties props) {\r
+        super(tag, props);\r
+    }\r
+\r
+    @Override\r
+    public LogTarget fatal() {\r
+        return fatal;\r
+    }\r
+\r
+    public void fatal(LogTarget lt) {\r
+        fatal = lt;\r
+    }\r
+\r
+    @Override\r
+    public LogTarget error() {\r
+        return error;\r
+    }\r
+\r
+    public void error(LogTarget lt) {\r
+        error = lt;\r
+    }\r
+    \r
+    @Override\r
+    public LogTarget audit() {\r
+        return audit;\r
+    }\r
+\r
+    public void audit(LogTarget lt) {\r
+        audit = lt;\r
+    }\r
+\r
+    @Override\r
+    public LogTarget init() {\r
+        return init;\r
+    }\r
+\r
+    public void init(LogTarget lt) {\r
+        init = lt;\r
+    }\r
+\r
+    @Override\r
+    public LogTarget warn() {\r
+        return warn;\r
+    }\r
+\r
+    public void warn(LogTarget lt) {\r
+        warn = lt;\r
+    }\r
+\r
+    @Override\r
+    public LogTarget info() {\r
+        return info;\r
+    }\r
+\r
+    public void info(LogTarget lt) {\r
+        info = lt;\r
+    }\r
+\r
+    @Override\r
+    public LogTarget debug() {\r
+        return debug;\r
+    }\r
+\r
+    public void debug(LogTarget lt) {\r
+        debug = lt;\r
+    }\r
+\r
+    @Override\r
+    public LogTarget trace() {\r
+        return trace;\r
+    }\r
+\r
+    public void trace(LogTarget lt) {\r
+        trace = lt;\r
+    }\r
+\r
+    @Override\r
+    public TimeTaken start(String name, int flag, Object ... values) {\r
+        return new TimeTaken(name, flag, values) {\r
+            /**\r
+             * Format to be printed when called upon\r
+             */\r
+            // @Override\r
+            public void output(StringBuilder sb) {\r
+    \r
+                switch(flag) {\r
+                    case Env.XML: sb.append("XML "); break;\r
+                    case Env.JSON: sb.append("JSON "); break;\r
+                    case Env.REMOTE: sb.append("REMOTE "); break;\r
+                }\r
+                sb.append(String.format(name, values));\r
+                if ((flag & Env.CHECKPOINT) != Env.CHECKPOINT) {\r
+                    sb.append(' ');\r
+                    sb.append((end-start)/1000000f);\r
+                    sb.append("ms");\r
+                    if (size>=0) {\r
+                        sb.append(" size: ");\r
+                        sb.append(Long.toString(size));\r
+                    }\r
+                }\r
+            }\r
+        };\r
+    }\r
+\r
+    // @Override\r
+    public String getProperty(String key) {\r
+        return get(staticSlot(key),null);\r
+    }\r
+    \r
+    public Properties getProperties(String ... filter) {\r
+        Properties props = new Properties();\r
+        boolean yes;\r
+        for (String key : existingStaticSlotNames()) {\r
+            if (filter.length>0) {\r
+                yes = false;\r
+                for (String f : filter) {\r
+                    if (key.startsWith(f)) {\r
+                        yes = true;\r
+                        break;\r
+                    }\r
+                }\r
+            } else {\r
+                yes = true;\r
+            }\r
+            if (yes) {\r
+                String value = getProperty(key);\r
+                if (value!=null) {\r
+                    props.put(key, value);\r
+                }\r
+            }\r
+        }\r
+        return props;\r
+    }\r
+    \r
+    // @Override\r
+    public String getProperty(String key, String defaultValue) {\r
+        return get(staticSlot(key),defaultValue);\r
+    }\r
+\r
+    // @Override\r
+    public String setProperty(String key, String value) {\r
+        put(staticSlot(key),value==null?null:value.trim());\r
+        return value;\r
+    }\r
+    \r
+    protected Decryptor decryptor = Decryptor.NULL;\r
+    protected Encryptor encryptor = Encryptor.NULL;\r
+\r
+    \r
+    public Decryptor decryptor() {\r
+        return decryptor; \r
+    }\r
+    \r
+    public void set(Decryptor newDecryptor) {\r
+        decryptor = newDecryptor;\r
+    }\r
+    \r
+    public Encryptor encryptor() {\r
+        return encryptor; \r
+    }\r
+    \r
+    public void set(Encryptor newEncryptor) {\r
+        encryptor = newEncryptor;\r
+    }\r
+\r
+    \r
+//    @SuppressWarnings("unchecked")\r
+    // @Override\r
+    public <T> DataFactory<T> newDataFactory(Class<?>... classes) throws APIException {\r
+//        if (String.class.isAssignableFrom(classes[0])) \r
+//            return (DataFactory<T>) new StringDF(this);\r
+        return new JAXBDF<T>(this,classes);\r
+    }\r
+\r
+//    @SuppressWarnings("unchecked")\r
+    // @Override\r
+    public <T> DataFactory<T> newDataFactory(Schema schema, Class<?>... classes) throws APIException {\r
+//        if (String.class.isAssignableFrom(classes[0])) \r
+//            return (DataFactory<T>) new StringDF(this);\r
+        return new JAXBDF<T>(this, schema, classes);\r
+    }\r
+\r
+//    @SuppressWarnings("unchecked")\r
+    // @Override\r
+    public<T> DataFactory<T> newDataFactory(QName qName, Class<?> ... classes) throws APIException {\r
+//        if (String.class.isAssignableFrom(classes[0])) \r
+//            return (DataFactory<T>) new StringDF(this);\r
+        return new JAXBDF<T>(this, qName, classes);\r
+    }\r
+\r
+    // @Override\r
+    public<T> DataFactory<T> newDataFactory(Schema schema, QName qName, Class<?> ... classes) throws APIException {\r
+        return new JAXBDF<T>(this, schema, qName, classes);\r
+    }\r
+\r
+    // @Override\r
+    public BasicTrans newTrans() {\r
+        return new BasicTrans(this);\r
+    }\r
+\r
+    public void loadFromSystemPropsStartsWith(String ... str) {\r
+         for (String name : System.getProperties().stringPropertyNames()) {\r
+            for (String s : str) {\r
+                if (name.startsWith(s)) {\r
+                    setProperty(name, System.getProperty(name));\r
+                }\r
+            }\r
+        }\r
+    }\r
+\r
+    /**\r
+     * \r
+     * \r
+     */\r
+    public void loadToSystemPropsStartsWith(String ... str) {\r
+        String value;\r
+        for (String name : existingStaticSlotNames()) {\r
+            for (String s : str) {\r
+                if (name.startsWith(s)) {\r
+                    if ((value = getProperty(name))!=null)\r
+                        System.setProperty(name,value);\r
+                }\r
+            }\r
+         }\r
+    }\r
+    \r
+    public void loadPropFiles(String tag, ClassLoader classloader) throws IOException {\r
+        String propfiles = getProperty(tag);\r
+        if (propfiles!=null) {\r
+            for (String pf : Split.splitTrim(File.pathSeparatorChar, propfiles)) {\r
+                InputStream is = classloader==null?null:classloader.getResourceAsStream(pf);\r
+                if (is==null) {\r
+                    File f = new File(pf);\r
+                    if (f.exists()) {\r
+                        is = new FileInputStream(f);\r
+                    }\r
+                }\r
+                if (is!=null) {\r
+                    BufferedReader br = new BufferedReader(new InputStreamReader(is));\r
+                    try {\r
+                        String line;\r
+                        while ((line=br.readLine())!=null) {\r
+                            line = line.trim();\r
+                            if (!line.startsWith("#")) {\r
+                                String[] tv = Split.splitTrim('=', line);\r
+                                if (tv.length==2) {\r
+                                    setProperty(tv[0],tv[1]);\r
+                                }\r
+                            }\r
+                        }\r
+                    } finally {\r
+                        try {\r
+                            br.close();\r
+                        } catch (IOException e) {\r
+                            error().log(e);\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+        }\r
+    }\r
+    \r
+    /**\r
+     * Create a StaticSlot, and load it from existing Properties\r
+     * \r
+     * @param name\r
+     * @param propName\r
+     * @return\r
+     */\r
+    public synchronized StaticSlot staticSlot(String name, final String propName) {\r
+        StaticSlot ss = staticSlot(name);\r
+        put(ss,getProperty(propName));\r
+        return ss;\r
+    }\r
+\r
+\r
+}\r