diff options
Diffstat (limited to 'pki/base/common/src/com/netscape/cmscore/base/PropConfigStore.java')
-rw-r--r-- | pki/base/common/src/com/netscape/cmscore/base/PropConfigStore.java | 285 |
1 files changed, 142 insertions, 143 deletions
diff --git a/pki/base/common/src/com/netscape/cmscore/base/PropConfigStore.java b/pki/base/common/src/com/netscape/cmscore/base/PropConfigStore.java index bb3f32b74..e54b19d90 100644 --- a/pki/base/common/src/com/netscape/cmscore/base/PropConfigStore.java +++ b/pki/base/common/src/com/netscape/cmscore/base/PropConfigStore.java @@ -17,6 +17,7 @@ // --- END COPYRIGHT BLOCK --- package com.netscape.cmscore.base; + import java.io.ByteArrayOutputStream; import java.io.FilterOutputStream; import java.io.IOException; @@ -37,22 +38,23 @@ import com.netscape.certsrv.base.EPropertyNotFound; import com.netscape.certsrv.base.IConfigStore; import com.netscape.certsrv.base.ISourceConfigStore; + /** - * A class represents a in-memory configuration store. Note this class takes - * advantage of the recursive nature of property names. The current property - * prefix is kept in mStoreName and the mSource usually points back to another + * A class represents a in-memory configuration store. + * Note this class takes advantage of the recursive nature of + * property names. The current property prefix is kept in + * mStoreName and the mSource usually points back to another * occurance of the same PropConfigStore, with longer mStoreName. IE - * * <PRE> - * cms.ca0.http.service0 -> mSource=PropConfigStore -> - * cms.ca0.http -> mSource=PropConfigStore -> - * cms.ca0 -> mSource=PropConfigStore -> + * cms.ca0.http.service0 -> mSource=PropConfigStore -> + * cms.ca0.http -> mSource=PropConfigStore -> + * cms.ca0 -> mSource=PropConfigStore -> * cms -> mSource=SourceConfigStore -> Properties * </PRE> - * - * The chain ends when the store name is reduced down to it's original value. + * The chain ends when the store name is reduced down to it's original + * value. * <P> - * + * * @version $Revision$, $Date$ */ public class PropConfigStore implements IConfigStore, Cloneable { @@ -74,13 +76,14 @@ public class PropConfigStore implements IConfigStore, Cloneable { */ protected ISourceConfigStore mSource = null; - private static String mDebugType = "CS.cfg"; + private static String mDebugType="CS.cfg"; /** - * Constructs a property configuration store. This must be a brand new store - * without properties. The subclass must be a ISourceConfigStore. + * Constructs a property configuration store. This must + * be a brand new store without properties. The subclass + * must be a ISourceConfigStore. * <P> - * + * * @param storeName property store name * @exception EBaseException failed to create configuration */ @@ -90,11 +93,12 @@ public class PropConfigStore implements IConfigStore, Cloneable { } /** - * Constructs a configuration store. The constructor is a helper class for - * substores. Source is the one that stores all the parameters. Each - * substore only store a substore name, and a reference to the source. + * Constructs a configuration store. The constructor is + * a helper class for substores. Source is the one + * that stores all the parameters. Each substore only + * store a substore name, and a reference to the source. * <P> - * + * * @param storeName store name * @param prop list of properties * @exception EBaseException failed to create configuration @@ -107,7 +111,7 @@ public class PropConfigStore implements IConfigStore, Cloneable { /** * Returns the name of this store. * <P> - * + * * @return store name */ public String getName() { @@ -117,7 +121,7 @@ public class PropConfigStore implements IConfigStore, Cloneable { /** * Retrieves a property from the configuration file. * <P> - * + * * @param name property name * @return property value */ @@ -126,10 +130,10 @@ public class PropConfigStore implements IConfigStore, Cloneable { } /** - * Retrieves a property from the configuration file. Does not prepend the - * config store name to the property. + * Retrieves a property from the configuration file. Does not prepend + * the config store name to the property. * <P> - * + * * @param name property name * @return property value */ @@ -138,10 +142,11 @@ public class PropConfigStore implements IConfigStore, Cloneable { } /** - * Puts a property into the configuration file. The values wont be updated - * to the file until save method is invoked. + * Puts a property into the configuration file. The + * values wont be updated to the file until save + * method is invoked. * <P> - * + * * @param name property name * @param value property value */ @@ -151,17 +156,16 @@ public class PropConfigStore implements IConfigStore, Cloneable { /** * Removes a property from the configuration file. - * + * * @param name property name */ public void remove(String name) { ((SourceConfigStore) mSource).remove(getFullName(name)); - } + } /** * Returns an enumeration of the config store's keys, hidding the store * name. - * * @see java.util.Hashtable#elements * @see java.util.Enumeration */ @@ -174,7 +178,7 @@ public class PropConfigStore implements IConfigStore, Cloneable { /** * Retrieves the hashtable where all the properties are kept. - * + * * @return hashtable */ public Hashtable hashtable() { @@ -195,16 +199,16 @@ public class PropConfigStore implements IConfigStore, Cloneable { } /** - * Fills the given hash table with all key/value pairs in the current config - * store, removing the config store name prefix + * Fills the given hash table with all key/value pairs in the current + * config store, removing the config store name prefix * <P> - * + * * @param h the hashtable */ private synchronized void enumerate(Hashtable h) { Enumeration e = mSource.keys(); // We only want the keys which match the current substore name - // without the current substore prefix. This code works even + // without the current substore prefix. This code works even // if mStoreName is null. String fullName = getFullName(""); int kIndex = fullName.length(); @@ -220,7 +224,7 @@ public class PropConfigStore implements IConfigStore, Cloneable { /** * Reads a config store from an input stream. - * + * * @param in input stream where properties are located * @exception IOException failed to load */ @@ -230,7 +234,7 @@ public class PropConfigStore implements IConfigStore, Cloneable { /** * Stores this config store to the specified output stream. - * + * * @param out outputstream where the properties are saved * @param header optional header information to be saved */ @@ -240,7 +244,7 @@ public class PropConfigStore implements IConfigStore, Cloneable { /** * Retrieves a property value. - * + * * @param name property key * @return property value * @exception EBaseException failed to retrieve value @@ -249,30 +253,28 @@ public class PropConfigStore implements IConfigStore, Cloneable { String str = (String) get(name); if (str == null) { - CMS.traceHashKey(mDebugType, getFullName(name), "<notpresent>"); - throw new EPropertyNotFound(CMS.getUserMessage( - "CMS_BASE_GET_PROPERTY_FAILED", getName() + "." + name)); + CMS.traceHashKey(mDebugType,getFullName(name),"<notpresent>"); + throw new EPropertyNotFound(CMS.getUserMessage("CMS_BASE_GET_PROPERTY_FAILED", getName() + "." + name)); } - // should we check for empty string ? + // should we check for empty string ? // if (str.length() == 0) { - // throw new EPropertyNotDefined(getName() + "." + name); + // throw new EPropertyNotDefined(getName() + "." + name); // } String ret = null; try { ret = new String(str.getBytes(), "UTF8").trim(); } catch (java.io.UnsupportedEncodingException e) { - throw new EBaseException( - CMS.getUserMessage("CMS_BASE_UTF8_NOT_SUPPORTED")); + throw new EBaseException(CMS.getUserMessage("CMS_BASE_UTF8_NOT_SUPPORTED")); } - CMS.traceHashKey(mDebugType, getFullName(name), ret); + CMS.traceHashKey(mDebugType,getFullName(name),ret); return ret; } /** * Retrieves a String from the configuration file. * <P> - * + * * @param name property name * @param defval the default object to return if name does not exist * @return property value @@ -285,13 +287,13 @@ public class PropConfigStore implements IConfigStore, Cloneable { } catch (EPropertyNotFound e) { val = defval; } - CMS.traceHashKey(mDebugType, getFullName(name), val, defval); + CMS.traceHashKey(mDebugType,getFullName(name),val,defval); return val; } /** * Puts property value into this configuration store. - * + * * @param name property key * @param value property value */ @@ -302,19 +304,18 @@ public class PropConfigStore implements IConfigStore, Cloneable { /** * Retrieves a byte array from the configuration file. * <P> - * + * * @param name property name * @exception IllegalArgumentException if name is not set or is null. - * + * * @return property value */ public byte[] getByteArray(String name) throws EBaseException { byte[] arr = getByteArray(name, new byte[0]); if (arr.length == 0) { - CMS.traceHashKey(mDebugType, getFullName(name), "<notpresent>"); - throw new EPropertyNotFound(CMS.getUserMessage( - "CMS_BASE_GET_PROPERTY_FAILED", getName() + "." + name)); + CMS.traceHashKey(mDebugType,getFullName(name),"<notpresent>"); + throw new EPropertyNotFound(CMS.getUserMessage("CMS_BASE_GET_PROPERTY_FAILED", getName() + "." + name)); } return arr; } @@ -322,39 +323,41 @@ public class PropConfigStore implements IConfigStore, Cloneable { /** * Retrieves a byte array from the configuration file. * <P> - * + * * @param name property name - * @param defval the default byte array to return if name does not exist - * + * @param defval the default byte array to return if name does + * not exist + * * @return property value */ - public byte[] getByteArray(String name, byte defval[]) - throws EBaseException { + public byte[] getByteArray(String name, byte defval[]) + throws EBaseException { String str = (String) get(name); - byte returnval; + byte returnval; - if (str == null || str.length() == 0) { - CMS.traceHashKey(mDebugType, getFullName(name), "<notpresent>", - "<bytearray>"); - return defval; - } else { - CMS.traceHashKey(mDebugType, getFullName(name), "<bytearray>", - "<bytearray>"); - return com.netscape.osutil.OSUtil.AtoB(str); - } + if (str == null || str.length() == 0) { + CMS.traceHashKey(mDebugType,getFullName(name), + "<notpresent>","<bytearray>"); + return defval; + } + else { + CMS.traceHashKey(mDebugType,getFullName(name), + "<bytearray>","<bytearray>"); + return com.netscape.osutil.OSUtil.AtoB(str); + } } /** * Puts byte array into this configuration store. - * + * * @param name property key * @param value byte array */ public void putByteArray(String name, byte value[]) { ByteArrayOutputStream output = new ByteArrayOutputStream(); - Base64OutputStream b64 = new Base64OutputStream(new PrintStream( - new FilterOutputStream(output))); + Base64OutputStream b64 = new Base64OutputStream(new + PrintStream(new FilterOutputStream(output))); try { b64.write(value); @@ -364,14 +367,14 @@ public class PropConfigStore implements IConfigStore, Cloneable { // internationalization problems here put(name, output.toString("8859_1")); } catch (IOException e) { - System.out.println("Warning: base-64 encoding of configuration " - + "information failed"); + System.out.println("Warning: base-64 encoding of configuration " + + "information failed"); } } /** * Retrieves boolean-based property value. - * + * * @param name property key * @return boolean value * @exception EBaseException failed to retrieve @@ -380,13 +383,11 @@ public class PropConfigStore implements IConfigStore, Cloneable { String value = (String) get(name); if (value == null) { - CMS.traceHashKey(mDebugType, getFullName(name), "<notpresent>"); - throw new EPropertyNotFound(CMS.getUserMessage( - "CMS_BASE_GET_PROPERTY_FAILED", getName() + "." + name)); + CMS.traceHashKey(mDebugType,getFullName(name),"<notpresent>"); + throw new EPropertyNotFound(CMS.getUserMessage("CMS_BASE_GET_PROPERTY_FAILED", getName() + "." + name)); } if (value.length() == 0) { - throw new EPropertyNotDefined(CMS.getUserMessage( - "CMS_BASE_GET_PROPERTY_NOVALUE", getName() + "." + name)); + throw new EPropertyNotDefined(CMS.getUserMessage("CMS_BASE_GET_PROPERTY_NOVALUE", getName() + "." + name)); } if (value.equalsIgnoreCase("true")) { @@ -394,22 +395,20 @@ public class PropConfigStore implements IConfigStore, Cloneable { } else if (value.equalsIgnoreCase("false")) { return false; } else { - throw new EBaseException(CMS.getUserMessage( - "CMS_BASE_INVALID_PROPERTY_1", getName() + "." + name, - "boolean", "\"true\" or \"false\"")); + throw new EBaseException(CMS.getUserMessage("CMS_BASE_INVALID_PROPERTY_1", getName() + "." + name, "boolean", "\"true\" or \"false\"")); } } /** * Retrieves boolean-based property value. - * + * * @param name property key * @param defval default value * @return boolean value * @exception EBaseException failed to retrieve */ - public boolean getBoolean(String name, boolean defval) - throws EBaseException { + public boolean getBoolean(String name, boolean defval) + throws EBaseException { boolean val; try { @@ -419,14 +418,14 @@ public class PropConfigStore implements IConfigStore, Cloneable { } catch (EPropertyNotDefined e) { val = defval; } - CMS.traceHashKey(mDebugType, getFullName(name), val ? "true" : "false", - defval ? "true" : "false"); + CMS.traceHashKey(mDebugType,getFullName(name), + val?"true":"false", defval?"true":"false"); return val; } /** * Puts boolean value into the configuration store. - * + * * @param name property key * @param value property value */ @@ -440,7 +439,7 @@ public class PropConfigStore implements IConfigStore, Cloneable { /** * Retrieves integer value. - * + * * @param name property key * @return property value * @exception EBaseException failed to retrieve value @@ -449,27 +448,23 @@ public class PropConfigStore implements IConfigStore, Cloneable { String value = (String) get(name); if (value == null) { - CMS.traceHashKey(mDebugType, getFullName(name), "<notpresent>"); - throw new EPropertyNotFound(CMS.getUserMessage( - "CMS_BASE_GET_PROPERTY_FAILED", getName() + "." + name)); + CMS.traceHashKey(mDebugType,getFullName(name),"<notpresent>"); + throw new EPropertyNotFound(CMS.getUserMessage("CMS_BASE_GET_PROPERTY_FAILED", getName() + "." + name)); } if (value.length() == 0) { - throw new EPropertyNotDefined(CMS.getUserMessage( - "CMS_BASE_GET_PROPERTY_NOVALUE", getName() + "." + name)); + throw new EPropertyNotDefined(CMS.getUserMessage("CMS_BASE_GET_PROPERTY_NOVALUE", getName() + "." + name)); } try { - CMS.traceHashKey(mDebugType, getFullName(name), value); + CMS.traceHashKey(mDebugType,getFullName(name), value); return Integer.parseInt(value); } catch (NumberFormatException e) { - throw new EBaseException(CMS.getUserMessage( - "CMS_BASE_INVALID_PROPERTY_1", getName() + "." + name, - "int", "number")); + throw new EBaseException(CMS.getUserMessage("CMS_BASE_INVALID_PROPERTY_1", getName() + "." + name, "int", "number")); } } /** * Retrieves integer value. - * + * * @param name property key * @param defval default value * @return property value @@ -485,13 +480,14 @@ public class PropConfigStore implements IConfigStore, Cloneable { } catch (EPropertyNotDefined e) { val = defval; } - CMS.traceHashKey(mDebugType, getFullName(name), "" + val, "" + defval); + CMS.traceHashKey(mDebugType,getFullName(name), + ""+val,""+defval); return val; } /** * Puts an integer value. - * + * * @param name property key * @param val property value * @exception EBaseException failed to retrieve value @@ -502,7 +498,7 @@ public class PropConfigStore implements IConfigStore, Cloneable { /** * Retrieves big integer value. - * + * * @param name property key * @return property value * @exception EBaseException failed to retrieve value @@ -511,13 +507,11 @@ public class PropConfigStore implements IConfigStore, Cloneable { String value = (String) get(name); if (value == null) { - CMS.traceHashKey(mDebugType, getFullName(name), "<notpresent>"); - throw new EPropertyNotFound(CMS.getUserMessage( - "CMS_BASE_GET_PROPERTY_FAILED", getName() + "." + name)); + CMS.traceHashKey(mDebugType,getFullName(name),"<notpresent>"); + throw new EPropertyNotFound(CMS.getUserMessage("CMS_BASE_GET_PROPERTY_FAILED", getName() + "." + name)); } if (value.length() == 0) { - throw new EPropertyNotDefined(CMS.getUserMessage( - "CMS_BASE_GET_PROPERTY_NOVALUE", getName() + "." + name)); + throw new EPropertyNotDefined(CMS.getUserMessage("CMS_BASE_GET_PROPERTY_NOVALUE", getName() + "." + name)); } try { if (value.startsWith("0x") || value.startsWith("0X")) { @@ -527,22 +521,20 @@ public class PropConfigStore implements IConfigStore, Cloneable { } return new BigInteger(value); } catch (NumberFormatException e) { - throw new EBaseException(CMS.getUserMessage( - "CMS_BASE_INVALID_PROPERTY_1", getName() + "." + name, - "BigInteger", "number")); + throw new EBaseException(CMS.getUserMessage("CMS_BASE_INVALID_PROPERTY_1", getName() + "." + name, "BigInteger", "number")); } } /** * Retrieves integer value. - * + * * @param name property key * @param defval default value * @return property value * @exception EBaseException failed to retrieve value */ - public BigInteger getBigInteger(String name, BigInteger defval) - throws EBaseException { + public BigInteger getBigInteger(String name, BigInteger defval) + throws EBaseException { BigInteger val; try { @@ -557,7 +549,7 @@ public class PropConfigStore implements IConfigStore, Cloneable { /** * Puts a big integer value. - * + * * @param name property key * @param val default value */ @@ -568,33 +560,37 @@ public class PropConfigStore implements IConfigStore, Cloneable { /** * Creates a new sub store. * <P> - * + * * @param name substore name * @return substore */ public IConfigStore makeSubStore(String name) { /* - * String names=(String)mSource.get(getFullName(PROP_SUBSTORES)); - * - * if (names==null) { names=name; } else { names=names+","+name; } - * mSource.put(getFullName(PROP_SUBSTORES), name); + String names=(String)mSource.get(getFullName(PROP_SUBSTORES)); + + if (names==null) { + names=name; + } + else { + names=names+","+name; + } + mSource.put(getFullName(PROP_SUBSTORES), name); */ return new PropConfigStore(getFullName(name), mSource); } /** - * Removes a sub store. - * <p> - * + * Removes a sub store.<p> + * * @param name substore name */ public void removeSubStore(String name) { // this operation is expensive!!! - + Enumeration e = mSource.keys(); // We only want the keys which match the current substore name - // without the current substore prefix. This code works even + // without the current substore prefix. This code works even // if mStoreName is null. String fullName = getFullName(name); int kIndex = fullName.length(); @@ -609,22 +605,20 @@ public class PropConfigStore implements IConfigStore, Cloneable { } /** - * Retrieves a sub store. A substore contains a list of properties and - * substores. For example, - * + * Retrieves a sub store. A substore contains a list + * of properties and substores. For example, * <PRE> * cms.ldap.host=ds.netscape.com * cms.ldap.port=389 * </PRE> - * - * "ldap" is a substore in above example. If the substore property itself is - * set, this method will treat the value as a reference. For example, - * + * "ldap" is a substore in above example. If the + * substore property itself is set, this method + * will treat the value as a reference. For example, * <PRE> - * cms.ldap = kms.ldap + * cms.ldap=kms.ldap * </PRE> * <P> - * + * * @param name substore name * @return substore */ @@ -645,7 +639,7 @@ public class PropConfigStore implements IConfigStore, Cloneable { /** * Retrieves a list of property names. - * + * * @return a list of string-based property names */ public Enumeration getPropertyNames() { @@ -674,7 +668,7 @@ public class PropConfigStore implements IConfigStore, Cloneable { /** * Returns a list of sub store names. * <P> - * + * * @return list of substore names */ public Enumeration getSubStoreNames() { @@ -701,9 +695,10 @@ public class PropConfigStore implements IConfigStore, Cloneable { } /** - * Retrieves the source configuration store where the properties are stored. + * Retrieves the source configuration store where + * the properties are stored. * <P> - * + * * @return source configuration store */ public ISourceConfigStore getSourceConfigStore() { @@ -711,7 +706,8 @@ public class PropConfigStore implements IConfigStore, Cloneable { } /** - * For debugging purposes. Prints properties of this substore. + * For debugging purposes. Prints properties of this + * substore. */ public void printProperties() { Enumeration keys = mSource.keys(); @@ -730,7 +726,7 @@ public class PropConfigStore implements IConfigStore, Cloneable { /** * Converts the substore parameters. - * + * * @param name property name * @return fill property name */ @@ -743,7 +739,7 @@ public class PropConfigStore implements IConfigStore, Cloneable { /** * Cloning of property configuration store. - * + * * @return a new configuration store */ public Object clone() { @@ -755,15 +751,18 @@ public class PropConfigStore implements IConfigStore, Cloneable { Enumeration subs = getSubStoreNames(); while (subs.hasMoreElements()) { - IConfigStore sub = (IConfigStore) subs.nextElement(); - IConfigStore newSub = that.makeSubStore(sub.getName()); + IConfigStore sub = (IConfigStore) + subs.nextElement(); + IConfigStore newSub = that.makeSubStore( + sub.getName()); Enumeration props = sub.getPropertyNames(); while (props.hasMoreElements()) { String n = (String) props.nextElement(); try { - newSub.putString(n, sub.getString(n)); + newSub.putString(n, + sub.getString(n)); } catch (EBaseException ex) { } } |