-/**
- * ============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
+\r
+\r
+ // @Override\r
+ public LogTarget fatal() {\r
+ return fatal;\r
+ }\r
+\r
+ // @Override\r
+ public LogTarget error() {\r
+ return error;\r
+ }\r
+\r
+ \r
+ // @Override\r
+ public LogTarget audit() {\r
+ return audit;\r
+ }\r
+\r
+ // @Override\r
+ public LogTarget init() {\r
+ return init;\r
+ }\r
+\r
+ // @Override\r
+ public LogTarget warn() {\r
+ return warn;\r
+ }\r
+\r
+ // @Override\r
+ public LogTarget info() {\r
+ return info;\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
+ // @Override\r
+ public TimeTaken start(String name, int flag) {\r
+ return new TimeTaken(name, flag) {\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(name);\r
+ if (flag != 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