I'm ambivalent about the value of this change to introduce an additional 
default.properties to be parsed prior to cas.properties, which would supersede 
default.properties' values.  It feels like it's adding complexity without 
solving a problem worth solving.

Again, this is:

https://issues.jasig.org/browse/CAS-1084

and

https://github.com/Jasig/cas/pull/23

I'm having trouble empathizing with the problem that this seems to be trying to 
solve.  Updating the cas.properties file on a CAS version upgrade seems like a 
totally reasonable burden on the upgrader.  If CAS started configuring TGT 
timeouts in cas.properties, I wouldn't regard it as too much to ask *upgrading* 
CAS adopters to notice the new properties in the shipping-in-CAS cas.properties 
and either add these to their localized cas.properties or delete their local 
cas.properties and re-fork from the new default.  I don't see having to update 
a local cas.properties that worked with version 3.4 of CAS to provide the 
properties required by 3.5 of CAS as a problem at all, and I don't value 
sparing adopters that particular pain on upgrade.

This is different from making new deployers set these values when they first 
deploy CAS, since new deployers when first deploying CAS don't have an existing 
cas.properties file that would gum up getting the properties and values in the 
cas.properties shipping in CAS.  I would have concern about CAS shipping with 
properties files that don't work.  That's different from CAS shipping with a 
cas.properties that does work but worrying that some adopters won't use that 
working cas.properties.  

In my experience, updating the local cas.properties file on an upgrade to 
include added properties just hasn't felt anything like a real problem, just a 
reasonable upgrade practices checklist item.  On balance, I'd probably rather 
have the fail-init-on-unfulfilled-placeholder behavior than the 
missing-property-is-masked-by-default.properties behavior.


Adding default.properties feels like it's adding some complexity.

Currently: 

Q: "Hey, there's this placeholder 
${cas.securityContext.casProcessingFilterEntryPoint.loginUrl} in 
cas-servlet.xml, where's the value for that set?"
A: In the properties file set in propertyFileConfigurer.xml, which by default 
is /WEB-INF/cas.properties .

After this change

Q: "Hey, there's this placeholder 
${cas.securityContext.casProcessingFilterEntryPoint.loginUrl} in 
cas-servlet.xml, where's the value for that set?"
A: Well, it depends.  in propertyFileConfigurer.xml, there's a list of 
properties files, which by default is /WEB-INF/default.properties and 
/WEB-INF/cas.properties.  The last-parsed value wins.  So, if this property is 
in cas.properties, that's where it's set.  But if it's not in cas.properties, 
then it's the value in default.properties.


It's not the end of the world, but the latter felt harder to explain, and the 
former felt simpler.


Currently, if I fat finger a property name in a local cas.properties, I notice. 
 Under the proposed change, the fat fingering is masked by a default value in 
default.properties.

Will CAS upgrading deployers be more grateful that we spared them having to 
update their cas.properties files on upgrades, or will they be more grateful 
for missing cas.properties properties continuing to fail fast?  It's not clear 
to me that allowing subsets rather than complete sets of properties in 
cas.properties files is worth losing the fail-fast-on-missing-properties 
feature.  Would deployers rather have just one properties file to worry about, 
or would they rather have two and understand what it means for properties to be 
in which and not the other?  It's not clear to me that the complexity is worth 
it.


I think I'm -0 for this change, but I don't think it's very important and I'll 
happily help upgrading adopters to understand the cascading-properties-files 
approach if CAS implements it.

Andrew





On Jan 3, 2012, at 8:18 AM, Scott Battaglia wrote:

> I'm not sure I agree with forcing you to add something.  If we've moved a 
> formerly hard-coded property to now being configurable, you shouldn't have to 
> do anything.  If its a new value, we should have a sensible default without 
> requiring you to choose one (we don't make people set the TGT timeouts when 
> they first deploy CAS).
> 
> 
> On Tue, Jan 3, 2012 at 8:14 AM, Marvin Addison <marvin.addi...@gmail.com> 
> wrote:
> I'm really ambivalent about this approach.  On the one hand it may
> ease the burden of upgrades when new properties are inevitably added.
> On the other hand it may facilitate upgrades inheriting undesirable
> behavior by default.  I personally find it valuable for a deploy to
> break due to a new property missing from out custom cas.properties
> file, which forces me to review the change and consider whether the
> default is in fact desirable.
> 
> M
> 
> --
> You are currently subscribed to cas-dev@lists.jasig.org as: 
> scott.battag...@gmail.com
> To unsubscribe, change settings or access archives, see 
> http://www.ja-sig.org/wiki/display/JSG/cas-dev
> 
> -- 
> You are currently subscribed to cas-dev@lists.jasig.org as: ape...@unicon.net
> To unsubscribe, change settings or access archives, see 
> http://www.ja-sig.org/wiki/display/JSG/cas-dev


-- 
You are currently subscribed to cas-dev@lists.jasig.org as: 
arch...@mail-archive.com
To unsubscribe, change settings or access archives, see 
http://www.ja-sig.org/wiki/display/JSG/cas-dev

Reply via email to