Getting beyond milliseconds for timeouts feels like it will be more usable for 
administrators configuring CAS servers.  Which is to say, I agree with the 
improvement intention articulated in CAS-1104. [1]  Will anyone miss being able 
to define timeouts in partial seconds, or is the milliseconds-centric approach 
just adding three zeros to the end of each configuration value?  I expect the 
latter.

There are some spots where minutes or even hours would be desirable as 
configuration units.

Yet, XML durations feels a complicated pill to swallow.  They'd end up looking 
something like

PT5M

for five minutes, a reasonable time to live for a service ticket,  but 
accidentally omitting the T

P5M

would mean five months, which is decidedly too long for a service ticket to 
remain valid.



This [2] looks beautifully literate:

    <bean id="grantingTicketExpirationPolicy" 
class="org.jasig.cas.ticket.support.TicketGrantingTicketExpirationPolicy" 
      p:maxTimeToLiveInSeconds="28800"
     p:timeToKillInSeconds="7200"/>

Units are obviously seconds (says so right in the name).

And yet, those values look like they really want to be hours, in that all the 
numbers of seconds here are multiples of 3600.


I thought what Dima did here [2] was pretty interesting:

    <util:constant id="SECONDS" 
static-field="java.util.concurrent.TimeUnit.SECONDS"/>
    <bean id="serviceTicketExpirationPolicy" 
class="org.jasig.cas.ticket.support.MultiTimeUseOrTimeoutExpirationPolicy"
      c:numberOfUses="1" c:timeToKill="10" c:timeUnit-ref="SECONDS"/>

That also reasonably literately says 10 seconds, without having to prepend 
anything with "P" and get any "T"s into the right spot.


So maybe the former should be

    <util:constant id="SECONDS" 
static-field="java.util.concurrent.TimeUnit.SECONDS"/>
    <util:constant id="MINUTES" 
static-field="java.util.concurrent.TimeUnit.MINUTES"/>
    <util:constant id="HOURS" 
static-field="java.util.concurrent.TimeUnit.HOURS"/>

    <bean id="grantingTicketExpirationPolicy" 
class="org.jasig.cas.ticket.support.TicketGrantingTicketExpirationPolicy" 
     p:maxTimeToLiveUnit-ref="HOURS" 
     p:maxTimeToLive="8"
     p:timeToKillUnit-ref="HOURS"
     p:timeToKill="2"/>


And then, going after preferring constructor arguments [3] rather than 
properties for required set-once configuration, and making use of that 
beautiful c: prefix [4] to keep it literate:


    <bean id="grantingTicketExpirationPolicy" 
class="org.jasig.cas.ticket.support.TicketGrantingTicketExpirationPolicy" 
     c:maxTimeToLiveUnit-ref="HOURS" 
     c:maxTimeToLive="8"
     c:timeToKillUnit-ref="HOURS"
     c:timeToKill="2"/>



How's that?  We get units, it's constructor-injected, and the XML configuration 
remains literate.

If something like that does meet all the needs, then it ought to be doable to 
find all the places where custom CAS code is currently configured in 
milliseconds and instead accept a TimeUnit and a long. I'd think that can be 
nailed for 3.5, how many such configuration points can there possibly be?  I'm 
willing to hunt them down and nail them if this solution is going to otherwise 
fly.

And I do think it's an improvement over configuration in milliseconds.

Andrew

[1]: https://issues.jasig.org/browse/CAS-1104

[2]: 
https://github.com/Jasig/cas/blob/cbe1fa57ecda5c20ef892378c4742d5d528aa305/cas-server-webapp/src/main/webapp/WEB-INF/spring-configuration/ticketExpirationPolicies.xml

[3]: 
https://github.com/Jasig/cas/commit/11709f8294beb4cb1ffd699ca5cce6c14ef4383f

[4]: 
http://static.springsource.org/spring/docs/3.1.0.M1/spring-framework-reference/html/beans.html#beans-c-namespace



On Mar 13, 2012, at 10:00 AM, Marvin S. Addison wrote:

> Some recent commits have added additional properties/constructors to a
> couple ExpirationPolicy components that will be leveraged in the default
> Spring contexts for 3.5 and presumably future releases that change the
> default time interval from ms to s:
> 
> https://github.com/Jasig/cas/commit/11709f8294beb4cb1ffd699ca5cce6c14ef4383f
> https://github.com/Jasig/cas/commit/a08f601e71b0abf98f5cda666144bce09c957638
> 
> While this may provide consistency for the expiration policies that are
> configured by default, the other ExpirationPolicy components still use
> milliseconds. Moreover, we have used ms fairly consistently for time
> intervals throughout the CAS codebase.
> 
> The intent to increase convenience and clarity of time intervals for
> deployers is laudable and reasonable, but the changes above don't go
> nearly far enough. If tight timelines are limiting the scope of changes to a 
> few components, then it would be better to wait until we have the time and 
> resources to develop a flexible time interval facility and apply it 
> consistently. XML durations, http://www.w3.org/TR/xmlschema-2/#duration, are 
> one of a number of reasonable standards we might consider.
> 
> I strongly recommend that we do no further harm with capricious
> component interface changes and tackle the issue thoroughly and
> consistently after the 3.5 release. I propose a Jira issue to track
> that effort and link it with the two issues behind the changes above.
> 
> M
> 
> -- 
> 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