uPortal IRC Logs-2010-08-17

[00:27:11 CDT(-0500)] * Naenyn (~Naenyn@ip24-56-44-93.ph.ph.cox.net) has joined ##uportal
[01:15:08 CDT(-0500)] * JASIGLogBot (~PircBot@63-246-25-210.contegix.com) has joined ##uportal
[01:15:08 CDT(-0500)] * Topic is 'http://uportal.pastebin.com/ - http://www.ja-sig.org/wiki/display/UPC/uportal+IRC+Logs' set by EricDalquist on 2008-02-27 11:32:13 CST(-0600)
[01:46:30 CDT(-0500)] * Naenyn (~Naenyn@unaffiliated/sememmon) has joined ##uportal
[07:43:11 CDT(-0500)] * JoeMoore (89d880aa@gateway/web/freenode/ip.137.216.128.170) has joined ##uportal
[07:54:55 CDT(-0500)] * jessm (~Jess@c-68-40-84-77.hsd1.mi.comcast.net) has joined ##uportal
[09:29:29 CDT(-0500)] * colinclark (~colin@205.211.168.17) has joined ##uportal
[09:43:57 CDT(-0500)] * lfuller (~sparhk@wsip-72-215-204-133.ph.ph.cox.net) has joined ##uportal
[09:53:43 CDT(-0500)] * holdorph (~holdorph@wsip-72-215-204-133.ph.ph.cox.net) has joined ##uportal
[10:00:43 CDT(-0500)] * bsparks (~bsparks@wsip-72-215-204-133.ph.ph.cox.net) has joined ##uportal
[11:07:59 CDT(-0500)] * colinclark (~colin@205.211.168.17) has joined ##uportal
[11:37:37 CDT(-0500)] * lfuller (~sparhk@wsip-72-215-204-133.ph.ph.cox.net) has joined ##uportal
[11:55:46 CDT(-0500)] * lfuller1 (~sparhk@wsip-72-215-204-133.ph.ph.cox.net) has joined ##uportal
[12:29:00 CDT(-0500)] * EricDalquist (~dalquist@2607:f388:e:0:221:9bff:fe37:e768) has joined ##uportal
[13:00:58 CDT(-0500)] * awills (~awills@dswtemp.tamu.edu) has joined ##uportal
[13:01:42 CDT(-0500)] <awills> i see a lot of good stuff happening in uP 3.3... have we mentioned a plausible release month/quarter yet?
[13:02:05 CDT(-0500)] <EricDalquist> my statement is that historically it has been about 12 months between releases
[13:02:08 CDT(-0500)] <EricDalquist> so early 2011
[13:02:20 CDT(-0500)] <EricDalquist> hopefully we'll have a M1 in not too long
[13:02:26 CDT(-0500)] <awills> nice
[13:02:27 CDT(-0500)] <EricDalquist> but we're doing a 3.2 upgrade locally right now
[13:02:33 CDT(-0500)] <EricDalquist> so I'm kinda swamped (smile)
[13:02:38 CDT(-0500)] <awills> might be an opportunity to line up with the conference
[13:02:40 CDT(-0500)] <EricDalquist> ping athena
[13:03:44 CDT(-0500)] <athena> heya (smile)
[13:03:56 CDT(-0500)] <athena> ok
[13:04:14 CDT(-0500)] <athena> so i was interested in exactly how the Image portlet's speEL implementation works
[13:04:25 CDT(-0500)] <athena> it looks like maybe there are magically named parameters?
[13:04:56 CDT(-0500)] <EricDalquist> right
[13:04:58 CDT(-0500)] <EricDalquist> so I was lazy
[13:05:02 CDT(-0500)] <EricDalquist> and did a quick hack
[13:05:09 CDT(-0500)] <athena> oh ok (smile)
[13:05:10 CDT(-0500)] <EricDalquist> I added that extra little method there
[13:05:16 CDT(-0500)] <EricDalquist> and any parameter you can provide
[13:05:20 CDT(-0500)] <EricDalquist> if you suffix it with -spel
[13:05:23 CDT(-0500)] <EricDalquist> you can pass in an expression
[13:05:29 CDT(-0500)] <athena> it looked like it wasn't really hooked up to the CPD so i was curious as to what the long-term plan was
[13:05:32 CDT(-0500)] <EricDalquist> I wasn't sure if it was going to be possible to overload a single parameter
[13:05:35 CDT(-0500)] <EricDalquist> it wasn't at all
[13:05:39 CDT(-0500)] <EricDalquist> to talk about it here
[13:05:43 CDT(-0500)] <EricDalquist> and figure out a long term plan (smile)
[13:06:16 CDT(-0500)] <athena> gotcha (smile)
[13:06:32 CDT(-0500)] <athena> so i think if we can figure out a way to use a single parameter that would be preferable from a user interface perspective
[13:06:35 CDT(-0500)] <EricDalquist> yes
[13:06:40 CDT(-0500)] <athena> otherwise it's sort of confusing to have everything in duplicate
[13:06:48 CDT(-0500)] <athena> how's this typically handled?
[13:06:49 CDT(-0500)] <EricDalquist> one of the sticking points I had was how to figure out if the passed string should be parsed or not
[13:07:14 CDT(-0500)] <EricDalquist> like for the image path
[13:07:15 CDT(-0500)] <athena> i mean in webflow it sort of seems like certain things are assumed to be regular parameters unless they're contained in a ${ }
[13:07:22 CDT(-0500)] <EricDalquist> right
[13:07:31 CDT(-0500)] <EricDalquist> so that is the downside of using SpEL I think
[13:07:42 CDT(-0500)] <athena> does SpEL not support that?
[13:07:54 CDT(-0500)] <athena> or could we catch all the ${ } blocks w/ a regex and parse them w/ SpEL?
[13:07:58 CDT(-0500)] <EricDalquist> from what I can tell if we had one parameter and you wanted to support both a static string and dynamic code your two config lines would be:
[13:08:25 CDT(-0500)] <EricDalquist> "http://example.com/my.jpg"
[13:08:25 CDT(-0500)] <EricDalquist> request.contextPath + "/my.jpg"
[13:08:28 CDT(-0500)] <EricDalquist> note the quotes
[13:08:32 CDT(-0500)] <EricDalquist> which is annoying
[13:08:33 CDT(-0500)] <athena> yeah
[13:08:34 CDT(-0500)] <EricDalquist> so yeah
[13:08:37 CDT(-0500)] <EricDalquist> that could be done
[13:08:44 CDT(-0500)] <EricDalquist> use regex to capture ${}
[13:08:48 CDT(-0500)]

<athena> what we really want is probably $

Unknown macro: {request.contextPath}

/my.jpg


[13:08:55 CDT(-0500)] <athena> which is of course harder to implement
[13:08:58 CDT(-0500)] <EricDalquist> right
[13:09:00 CDT(-0500)] <EricDalquist> but not that much harder
[13:09:32 CDT(-0500)] <athena> and then presumably we just adopt whatever convention is typically used for escaping ${ } in case you really want that in the text
[13:09:49 CDT(-0500)] <EricDalquist> probably like JSTL
[13:09:53 CDT(-0500)] <EricDalquist> which is annoying but works
[13:10:04 CDT(-0500)] <athena> yeah
[13:10:04 CDT(-0500)]

<EricDalquist> ${"$

Unknown macro: {"}

[13:10:10 CDT(-0500)] <athena> and wouldn't be used all that often
[13:10:21 CDT(-0500)] <EricDalquist> yeah
[13:10:31 CDT(-0500)] <athena> do we have ${ } in any important parameters right now? could we have an initial implementation that didn't support escaping?
[13:11:16 CDT(-0500)] <athena> happen to know of a good regex for matching ${ }?
[13:13:05 CDT(-0500)] <EricDalquist> \${([^}]*)}
[13:13:16 CDT(-0500)] <EricDalquist> that captures everything inbetween the curlies
[13:13:21 CDT(-0500)] <athena> fantastic (smile)
[13:13:28 CDT(-0500)] <athena> ok
[13:13:46 CDT(-0500)] <athena> so i created an initial provider yesterday in org.jasig.portal.spring.spel
[13:13:47 CDT(-0500)] <EricDalquist> should be able to create a matcher and run through the string using next() or whatever the regex api is named
[13:13:54 CDT(-0500)] <athena> is that what we want to use or do you have a better package suggestion?
[13:13:57 CDT(-0500)] <athena> makes sense
[13:14:24 CDT(-0500)] <athena> i'm also thinking that we're going to need interface methods for both PortalRequest and HttpServletRequest?
[13:14:36 CDT(-0500)] <athena> since the ajax targets don't really have a portal request
[13:16:35 CDT(-0500)] <EricDalquist> yeah
[13:16:59 CDT(-0500)] <EricDalquist> one option is using: http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/web/context/request/WebRequest.html
[13:17:17 CDT(-0500)] <EricDalquist> you can have that provided to your method using @RequestMapping
[13:17:23 CDT(-0500)] <athena> maybe given this complex regex parsing we also want methods for things like actually parsing and returning the updated string rather than just returning a parser
[13:17:30 CDT(-0500)] <EricDalquist> right
[13:17:36 CDT(-0500)] <EricDalquist> we probably want a more '
[13:17:43 CDT(-0500)] <EricDalquist> magic' API
[13:17:43 CDT(-0500)] <athena> oh interesting
[13:17:58 CDT(-0500)] <EricDalquist> String spelProvider.evaluate(String)
[13:18:15 CDT(-0500)] <EricDalquist> where evaluate does the regex then evaluation of each ${} then reassembly
[13:18:48 CDT(-0500)] <EricDalquist> yeah WebRequest + RequestAttributes gets you pretty much everything
[13:18:58 CDT(-0500)] <EricDalquist> I think the only thing you can't get are the portlet namespace & preferences
[13:20:09 CDT(-0500)] <athena> sounds great
[13:20:24 CDT(-0500)] <EricDalquist> but the evaluate method could get those
[13:20:38 CDT(-0500)] <EricDalquist> since with a little instanceof check you can get the native portlet request if availabler
[13:20:38 CDT(-0500)] <athena> makes sense
[13:20:51 CDT(-0500)] <athena> yeah, that does make sense
[13:21:08 CDT(-0500)] <athena> my thought is to try and create an initial implementation that doens't provide anything special from the requests
[13:21:12 CDT(-0500)] <athena> and we can add to it later
[13:21:15 CDT(-0500)] <athena> it'll at least get us started
[13:21:21 CDT(-0500)] <EricDalquist> sounds good
[14:54:32 CDT(-0500)] * bsparks (~bsparks@wsip-72-215-204-133.ph.ph.cox.net) has joined ##uportal
[16:04:02 CDT(-0500)] * lfuller (~sparhk@wsip-72-215-204-133.ph.ph.cox.net) has joined ##uportal
[20:05:12 CDT(-0500)] * lfuller (~sparhk@ip68-98-56-21.ph.ph.cox.net) has joined ##uportal