Hi Glenn - That is very smart. I will do that.
Thanks, Josh >From: "Glenn R. Golden" <[EMAIL PROTECTED]> >Reply-To: "Jetspeed Users List" <[EMAIL PROTECTED]> >To: "Jetspeed Users List" <[EMAIL PROTECTED]> >Subject: Re: JR.prop duplicate booleans break... >Date: Wed, 18 Sep 2002 09:54:28 -0400 > >Josh - > >What I do is change the web.xml to point to my own properties file, put in >all my overrides, then include tr.p from my properties file. > >- Glenn > >On Wednesday, September 18, 2002, at 08:37 AM, Josh Hone wrote: > >>Hi Glenn - >> >>No, my version is not very new at all. So my personal properties include >>in TR.p must be before the include of JR.p? >> >>Josh Hone >> >> >>>From: Glenn Golden <[EMAIL PROTECTED]> >>>Reply-To: "Jetspeed Users List" <[EMAIL PROTECTED]> >>>To: 'Jetspeed Users List' <[EMAIL PROTECTED]> >>>Subject: RE: JR.prop duplicate booleans break... >>>Date: Wed, 18 Sep 2002 08:25:24 -0400 >>> >>>Josh - >>> >>>I just recently fixed this for Jetspeed properties (properties aimed at >>>Turbine may not be done in this way), so that you can override the jr.p >>>values in your own resources.properties. Make sure your values come >>>*first*. The first setting will be used. >>> >>>Are you using the latest code from cvs? >>> >>>If you are running with this fix already in, let me know and I'll look >>>into >>>it further. >>> >>>Thanks! >>> >>>Here's the cvs message from that checkin: >>> >>>* * * * * * * * * * * * * * * >>> >>>ggolden 2002/09/09 19:01:27 >>> >>> Modified: src/java/org/apache/jetspeed/services/resources >>> JetspeedResources.java >>> Log: >>> When overriding settings in the JetspeedResources.properties (and >>>TurbineResources.properties), we might want to set a value with our >>> site's setting, a value that is also set in the standard jr.p and tr.p >>>distribution files. It's nice to be able to use these files unchanged so >>>we >>>can keep up easily >>> with Jetspeed development. >>> >>> If the value we are setting is a string, this already works - the >>>first >>>value set to >>> the property is used, so we can just do our settings before the >>>standard >>>files >>> are read in. >>> >>> If the value we are setting is a boolean, long, float, double, or int, >>>this doesn't work - we get class cast exceptions. >>> >>> JetspeedSecurity, which is used by Jetspeed code to access the >>>configuration values, now catches these class cast exceptions, and also >>>takes the calls to getString. If there's an array of values, it will use >>>the first one (it's the combination of the array of values that mess up >>>the >>>reading without this). >>> >>> Note: this only works for Jetspeed properties - turbine properties >>>don't >>>use this >>> code. Only string properties can be overridden by setting your site >>>values first >>> for turbine properties. >>> >>> Note: This code would be best deep inside turbine, but can live here >>>till >>>Turbine >>> handles these cases. >>> >>> Revision Changes Path >>> 1.13 +322 -2 >>>jakarta- >>>jetspeed/src/java/org/apache/jetspeed/services/resources/JetspeedRes >>>ources.java >>> >>> Index: JetspeedResources.java >>> =================================================================== >>> RCS file: >>>/home/cvs/jakarta- >>>jetspeed/src/java/org/apache/jetspeed/services/resources/J >>>etspeedResources.java,v >>> retrieving revision 1.12 >>> retrieving revision 1.13 >>> diff -u -r1.12 -r1.13 >>> --- JetspeedResources.java 26 Jul 2002 01:47:21 -0000 1.12 >>> +++ JetspeedResources.java 10 Sep 2002 02:01:27 -0000 1.13 >>> @@ -55,16 +55,22 @@ >>> package org.apache.jetspeed.services.resources; >>> >>> import org.apache.turbine.services.resources.TurbineResources; >>> +import org.apache.turbine.util.Log; >>> >>> /** >>> * This class defines the Jetspeed properties keys. >>> * All properties can be retrieved using TurbineResources or >>>JetspeedResources >>> - * directly >>> + * directly. >>> + * >>> + * This class also overrides the covers for many of the get routines. >>> It >>>handles the cases >>> + * where we want a single value, perhaps as a boolean or float, but >>>the >>>configuration may have >>> + * an array of values. In these cases, we let the first value >>>override >>>all the others and use it. >>> * >>> * @author <a href="mailto:[EMAIL PROTECTED]">Kevin A. Burton</a> >>> * @author <a href="mailto:[EMAIL PROTECTED]">Rapha�l Luta</a> >>> * @author <a href="mailto:[EMAIL PROTECTED]">Tom Adams</a> >>> * @author <a href="mailto:[EMAIL PROTECTED]">Chris Kimpton</a> >>> + * @author <a href="mailto:[EMAIL PROTECTED]">Glenn R. Golden</a> >>> * @version $Id$ >>> */ >>> public class JetspeedResources extends TurbineResources { >>> @@ -156,7 +162,321 @@ >>> */ >>> public static final String PATH_PANEL_KEY = "select-panel"; >>> >>> + /** >>> + * The purpose of this method is to get the configuration >>>resource >>> + * with the given name as a boolean value. >>> + * >>> + * @param name The resource name. >>> + * @return The value of the named resource as a boolean. >>> + */ >>> + public static boolean getBoolean(String name) >>> + { >>> + try >>> + { >>> + return TurbineResources.getBoolean (name); >>> + } >>> + catch (ClassCastException e) >>> + { >>> + // get the possible list >>> + String[] values = getStringArray(name); >>> + >>> + // try again with the first >>> + if ((values != null) && (values.length > 0)) >>> + return new Boolean(values[0]).booleanValue(); >>> + >>> + // otherwise, just throw the exception >>> + throw e; >>> + } >>> + } >>> + >>> + /** >>> + * The purppose of this method is to get the configuration >>> + * resource with the given name as a boolean value, or a default >>> + * value. >>> + * >>> + * @param name The resource name. >>> + * @param def The default value of the resource. >>> + * @return The value of the named resource as a boolean. >>> + */ >>> + public static boolean getBoolean(String name, >>> + boolean def) >>> + { >>> + try >>> + { >>> + return TurbineResources.getBoolean(name, def); >>> + } >>> + catch (ClassCastException e) >>> + { >>> + // get the possible list >>> + String[] values = getStringArray(name); >>> + >>> + // try again with the first >>> + if ((values != null) && (values.length > 0)) >>> + return new Boolean(values[0]).booleanValue(); >>> + >>> + // otherwise, just throw the exception >>> + throw e; >>> + } >>> + } >>> + >>> + /** >>> + * The purpose of this method is to get the configuration >>>resource >>> + * with the given name as a double. >>> + * >>> + * @param name The resoource name. >>> + * @return The value of the named resource as double. >>> + */ >>> + public static double getDouble(String name) >>> + { >>> + try >>> + { >>> + return TurbineResources.getDouble(name); >>> + } >>> + catch (ClassCastException e) >>> + { >>> + // get the possible list >>> + String[] values = getStringArray(name); >>> + >>> + // try again with the first >>> + if ((values != null) && (values.length > 0)) >>> + return Double.parseDouble(values[0]); >>> + >>> + // otherwise, just throw the exception >>> + throw e; >>> + } >>> + } >>> + >>> + /** >>> + * The purpose of this method is to get the configuration >>>resource >>> + * with the given name as a double, or a default value. >>> + * >>> + * @param name The resource name. >>> + * @param def The default value of the resource. >>> + * @return The value of the named resource as a double. >>> + */ >>> + public static double getDouble(String name, >>> + double def) >>> + { >>> + try >>> + { >>> + return TurbineResources.getDouble(name, def); >>> + } >>> + catch (ClassCastException e) >>> + { >>> + // get the possible list >>> + String[] values = getStringArray(name); >>> + >>> + // try again with the first >>> + if ((values != null) && (values.length > 0)) >>> + return Double.parseDouble(values[0]); >>> + >>> + // otherwise, just throw the exception >>> + throw e; >>> + } >>> + } >>> + >>> + /** >>> + * The purpose of this method is to get the configuration >>>resource >>> + * with the given name as a float. >>> + * >>> + * @param name The resource name. >>> + * @return The value of the resource as a float. >>> + */ >>> + public static float getFloat(String name) >>> + { >>> + try >>> + { >>> + return TurbineResources.getFloat(name); >>> + } >>> + catch (ClassCastException e) >>> + { >>> + // get the possible list >>> + String[] values = getStringArray(name); >>> + >>> + // try again with the first >>> + if ((values != null) && (values.length > 0)) >>> + return Float.parseFloat(values[0]); >>> + >>> + // otherwise, just throw the exception >>> + throw e; >>> + } >>> + } >>> + >>> + /** >>> + * The purpose of this method is to get the configuration >>>resource >>> + * with the given name as a float, or a default value. >>> + * >>> + * @param name The resource name. >>> + * @param def The default value of the resource. >>> + * @return The value of the resource as a float. >>> + */ >>> + public static float getFloat(String name, >>> + float def) >>> + { >>> + try >>> + { >>> + return TurbineResources.getFloat(name, def); >>> + } >>> + catch (ClassCastException e) >>> + { >>> + // get the possible list >>> + String[] values = getStringArray(name); >>> + >>> + // try again with the first >>> + if ((values != null) && (values.length > 0)) >>> + return Float.parseFloat(values[0]); >>> + >>> + // otherwise, just throw the exception >>> + throw e; >>> + } >>> + } >>> + >>> + /** >>> + * The purpose of this method is to get the configuration >>>resource >>> + * with the given name as an integer. >>> + * >>> + * @param name The resource name. >>> + * @return The value of the resource as an integer. >>> + */ >>> + public static int getInt(String name) >>> + { >>> + try >>> + { >>> + return TurbineResources.getInt(name); >>> + } >>> + catch (ClassCastException e) >>> + { >>> + // get the possible list >>> + String[] values = getStringArray(name); >>> + >>> + // try again with the first >>> + if ((values != null) && (values.length > 0)) >>> + return Integer.parseInt(values[0]); >>> + >>> + // otherwise, just throw the exception >>> + throw e; >>> + } >>> + } >>> + >>> + /** >>> + * The purpose of this method is to get the configuration >>>resource >>> + * with the given name as an integer, or a default value. >>> + * >>> + * @param name The resource name. >>> + * @param def The default value of the resource. >>> + * @return The value of the resource as an integer. >>> + */ >>> + public static int getInt(String name, >>> + int def) >>> + { >>> + try >>> + { >>> + return TurbineResources.getInt(name, def); >>> + } >>> + catch (ClassCastException e) >>> + { >>> + // get the possible list >>> + String[] values = getStringArray(name); >>> + >>> + // try again with the first >>> + if ((values != null) && (values.length > 0)) >>> + return Integer.parseInt(values[0]); >>> + >>> + // otherwise, just throw the exception >>> + throw e; >>> + } >>> + } >>> + >>> + /** >>> + * The purpose of this method is to get the configuration >>>resource >>> + * with the given name as a long. >>> + * >>> + * @param name The resource name. >>> + * @return The value of the resource as a long. >>> + */ >>> + public static long getLong(String name) >>> + { >>> + try >>> + { >>> + return TurbineResources.getLong(name); >>> + } >>> + catch (ClassCastException e) >>> + { >>> + // get the possible list >>> + String[] values = getStringArray(name); >>> + >>> + // try again with the first >>> + if ((values != null) && (values.length > 0)) >>> + return Long.parseLong(values[0]); >>> + >>> + // otherwise, just throw the exception >>> + throw e; >>> + } >>> + } >>> + >>> + /** >>> + * The purpose of this method is to get the configuration >>>resource >>> + * with the given name as a long, or a default value. >>> + * >>> + * @param name The resource name. >>> + * @param def The default value of the resource. >>> + * @return The value of the resource as a long. >>> + */ >>> + public static long getLong(String name, >>> + long def) >>> + { >>> + try >>> + { >>> + return TurbineResources.getLong(name, def); >>> + } >>> + catch (ClassCastException e) >>> + { >>> + // get the possible list >>> + String[] values = getStringArray(name); >>> + >>> + // try again with the first >>> + if ((values != null) && (values.length > 0)) >>> + return Long.parseLong(values[0]); >>> + >>> + // otherwise, just throw the exception >>> + throw e; >>> + } >>> + } >>> >>> + /** >>> + * The purpose of this method is to get the configuration >>>resource >>> + * with the given name as a string. >>> + * >>> + * @param name The resource name. >>> + * @return The value of the resource as a string. >>> + */ >>> + public static String getString(String name) >>> + { >>> + // get the possible list >>> + String[] values = getStringArray(name); >>> + if ((values != null) && (values.length > 0)) >>> + return values[0]; >>> >>> + return TurbineResources.getString(name); >>> + } >>> >>> + /** >>> + * The purpose of this method is to get the configuration >>>resource >>> + * with the given name as a string, or a default value. >>> + * >>> + * @param name The resource name. >>> + * @param def The default value of the resource. >>> + * @return The value of the resource as a string. >>> + */ >>> + public static String getString(String name, >>> + String def) >>> + { >>> + // get the possible list >>> + String[] values = getStringArray(name); >>> + if ((values != null) && (values.length > 0)) >>> + return values[0]; >>> + >>> + return TurbineResources.getString(name, def); >>> + } >>> } >>> + >>> >>> >>> >>> >>>-- >>>To unsubscribe, e-mail: >>><mailto:[EMAIL PROTECTED]> >>>For additional commands, e-mail: >>><mailto:[EMAIL PROTECTED]> >>> >>> >>> > -----Original Message----- >>> > From: Josh Hone [mailto:[EMAIL PROTECTED]] >>> > Sent: Tuesday, September 17, 2002 9:58 PM >>> > To: [EMAIL PROTECTED] >>> > Subject: JR.prop duplicate booleans break... >>> > >>> > >>> > Hi all - >>> > >>> > I have noticed that if I have duplicate boolean values for >>> > some properties >>> > that the machine gives you a horrible exception and does not >>> > like it at all. >>> > It says that the value assigned to the property is not >>> > boolean. Here is >>> > what I did: >>> > >>> > I copied some properties from JR.p to my own properties >>> > files. Then I >>> > edited some (for the email config) and restarted everything. >>> > Upon opening >>> > the portal, I encountered the horrible exception for a >>> > property that was >>> > duplicated in both properties files. It was the same both places. I >>> > commented it out and restarted everything. This time I was >>> > able to log in >>> > but again received a Horrible Exception, pointing to a >>> > property that I did >>> > alter. Both times the error message was the same. >>> > >>> > The issue was resolved as I removed the duplicate areas. I >>> > deleted the ones >>> > I changed in my personal file from JR.p. I also deleted the >>> > ones I did not >>> > change from my personal file. Then the system works fine (I >>> > just have to >>> > get out of the firewall...). >>> > >>> > Is this a bug? >>> > >>> > I am interested in this mainly because for an upgrade of a >>> > jetspeed system, >>> > it is much easier to maintain your own properties files. It >>> > gets much >>> > harder when you have to manually go into the default files to >>> > look for >>> > things to edit. Not harder for me personally, but for >>> > whoever after me >>> > looks after this portal. >>> > >>> > Josh Hone >>> > >>> > _________________________________________________________________ >>> > Chat with friends online, try MSN Messenger: http://messenger.msn.com >>> > >>> > >>> > -- >>> > To unsubscribe, e-mail: >>> > <mailto:jetspeed-user-> [EMAIL PROTECTED]> >>> > For >>> > additional commands, >>> > e-mail: <mailto:[EMAIL PROTECTED]> >>> > >>> >>>-- >>>To unsubscribe, e-mail: <mailto:jetspeed-user- >>>[EMAIL PROTECTED]> >>>For additional commands, e-mail: <mailto:jetspeed-user- >>>[EMAIL PROTECTED]> >> >> >> >> >>_________________________________________________________________ >>MSN Photos is the easiest way to share and print your photos: >>http://photos.msn.com/support/worldwide.aspx >> >> >>-- >>To unsubscribe, e-mail: <mailto:jetspeed-user- >>[EMAIL PROTECTED]> >>For additional commands, e-mail: <mailto:jetspeed-user- >>[EMAIL PROTECTED]> >> > >- Glenn > >--------------------------------------------------------------------- >Glenn R. Golden Systems Research Programmer >School of Information University of Michigan >[EMAIL PROTECTED] 734-615-1419 >--------------------------------------------------------------------- > > >-- >To unsubscribe, e-mail: ><mailto:[EMAIL PROTECTED]> >For additional commands, e-mail: ><mailto:[EMAIL PROTECTED]> _________________________________________________________________ MSN Photos is the easiest way to share and print your photos: http://photos.msn.com/support/worldwide.aspx -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
