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

Reply via email to