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]>
