uPortal IRC Logs-2008-08-07

[00:33:20 EDT(-0400)] * Sememmon points at apetro-_!
[00:34:59 EDT(-0400)] <Sememmon> aw boo.
[00:35:07 EDT(-0400)] <Sememmon> all my coworkers left.
[03:11:36 EDT(-0400)] * atpa8a (n=stfu@static-71-249-199-57.nycmny.east.verizon.net) has joined ##uportal
[07:35:33 EDT(-0400)] * apetro-_ (n=apetro@adsl-75-32-40-98.dsl.chcgil.sbcglobal.net) has joined ##uportal
[08:46:25 EDT(-0400)] * anastasiac (n=team@142.150.154.160) has joined ##uportal
[09:14:13 EDT(-0400)] * athena7 (n=athena7@adsl-99-149-83-32.dsl.wlfrct.sbcglobal.net) has joined ##uportal
[09:55:04 EDT(-0400)] <atpa8a> Favre is a Jet!!!
[10:07:41 EDT(-0400)] * michelled (n=team@142.150.154.197) has joined ##uportal
[10:18:44 EDT(-0400)] * EricDalquist (n=dalquist@bohemia.doit.wisc.edu) has joined ##uportal
[10:50:43 EDT(-0400)] * colinclark (n=colin@142.150.154.101) has joined ##uportal
[11:05:59 EDT(-0400)] * athena7 (n=athena7@adsl-99-149-83-32.dsl.wlfrct.sbcglobal.net) has joined ##uportal
[11:41:13 EDT(-0400)] * anastasiac (n=team@142.150.154.160) has joined ##uportal
[11:50:02 EDT(-0400)] * holdorph (n=holdorph@wsip-98-174-242-39.ph.ph.cox.net) has joined ##uportal
[12:24:14 EDT(-0400)] * awills (n=awills@wsip-98-174-242-39.ph.ph.cox.net) has joined ##uportal
[12:57:11 EDT(-0400)] * EiNZTEiN (n=einztein@205.241.143.3) has joined ##uportal
[13:31:42 EDT(-0400)] * bulloche (n=bulloche@134.250.4.77) has joined ##uportal
[13:34:47 EDT(-0400)] <EricDalquist> gah
[13:35:03 EDT(-0400)] <EricDalquist> I just added a new PropertyPlaceholderConfigurer in our local up3
[13:35:15 EDT(-0400)] <EricDalquist> and it apparently isn't executing ...
[13:35:20 EDT(-0400)] <athena7> oh (sad)
[13:35:21 EDT(-0400)] <EricDalquist> the property is in the file
[13:35:25 EDT(-0400)] <EricDalquist> and the file is there
[13:35:26 EDT(-0400)] * Sememmon blames holdorph
[13:35:32 EDT(-0400)] <EricDalquist> but spring says it can't find the property
[13:35:33 EDT(-0400)] <EricDalquist> (sad)
[13:35:44 EDT(-0400)] <athena7> oh (sad)
[13:35:46 EDT(-0400)] <EricDalquist> oh ... wait
[13:35:54 EDT(-0400)] <EricDalquist> ranting just solved it for me I think!
[13:35:57 EDT(-0400)] <athena7> sweet!
[13:36:04 EDT(-0400)] <EiNZTEiN> oh gosh... I'm back to the uP boat now.... eeek (uP2 that is)
[13:36:17 EDT(-0400)] <EricDalquist> <property name="ignoreUnresolvablePlaceholders" value="true" />
[13:36:18 EDT(-0400)] <EiNZTEiN> our project was archived for a little bit, but it's back on the table (sad)
[13:36:21 EDT(-0400)] <EiNZTEiN> buahhhhh
[13:36:30 EDT(-0400)] <EricDalquist> since I have multiple resolvers ...
[13:36:45 EDT(-0400)] <EricDalquist> I want them to not throw an exception if they don't find the placeholder ...
[13:36:49 EDT(-0400)] <athena7> i spent quite a while beating my head against a failing JPA method this morning and then realized i'd accidentally left it marked readOnly
[13:36:50 EDT(-0400)] <athena7> (sad)
[13:37:12 EDT(-0400)] <EricDalquist> (smile)
[13:37:28 EDT(-0400)] <EricDalquist> oh lennard and I found a nasty performance issue with @Transactional(readOnly=true)
[13:37:46 EDT(-0400)] <EricDalquist> at least against Oracle it still does a commit() when exiting the method
[13:38:03 EDT(-0400)] <Sememmon> lennard needs to hurry up and get back from pto _
[13:38:17 EDT(-0400)] <EricDalquist> we when and removed the readonly transaction annotations from all of the uP3 JPA getters
[13:38:21 EDT(-0400)] <EricDalquist> HUGE improvement
[13:39:36 EDT(-0400)] <EricDalquist> actually ... I should just use one and specify multiple files ...
[13:39:46 EDT(-0400)] <athena7> wow
[13:39:55 EDT(-0400)] <athena7> should i not use readOnly=true then?
[13:40:22 EDT(-0400)] <Sememmon> btw, sorry to join the chan and not introduce myself.. not that it really matters I suppose. I'm the new guy on lennard's team at Unicon. =P
[13:40:47 EDT(-0400)] <Sememmon> figured I'd come see what all this uportal3 business is all about. (wink)
[13:40:53 EDT(-0400)] <EricDalquist> I figured since you were stealing M&Ms from Holdorph
[13:40:58 EDT(-0400)] <Sememmon> hehe..
[13:41:04 EDT(-0400)] <EricDalquist> athena7: yeah we just stopped using it
[13:41:20 EDT(-0400)] <EricDalquist> and just don't mark read only methods transactional
[13:41:32 EDT(-0400)] <EricDalquist> reading into it more it makes some sense
[13:42:11 EDT(-0400)] <EricDalquist> the hibernate layer takes care of that for you
[13:42:25 EDT(-0400)] <EricDalquist> different than plain JDBC where readonly could help things
[13:42:34 EDT(-0400)] <athena7> ah ok
[13:42:40 EDT(-0400)] <athena7> i'll keep that in mind, thanks
[13:43:43 EDT(-0400)] <athena7> i think this stupid portlet finally works
[13:43:52 EDT(-0400)] <EricDalquist> yay stupid portlet!
[13:51:04 EDT(-0400)] <athena7> lol
[13:51:19 EDT(-0400)] <athena7> made the mail portlet persist it's account info to a database
[13:51:27 EDT(-0400)] <EricDalquist> cool
[13:54:07 EDT(-0400)] <athena7> the rss portlet anthony wrote is really pretty cool
[13:54:28 EDT(-0400)] <athena7> he put in some stuff from antisamy to clean up RSS feeds and look for XSS vulnerabilities, too
[13:54:34 EDT(-0400)] <EricDalquist> nice
[13:54:39 EDT(-0400)] <EricDalquist> I need to reply to that
[14:15:52 EDT(-0400)] <athena7> from what i've seen, it's a pretty nice portlet
[14:16:05 EDT(-0400)] <EricDalquist> yeah
[14:16:16 EDT(-0400)] <EricDalquist> and it would be a good replacement for the plumtree one we bundle right now
[14:16:17 EDT(-0400)] <athena7> i think we could wire it up with a set of selectable views so that people could chose between a merged list of stories, tabbed by source, etc.
[14:16:30 EDT(-0400)] <athena7> anthony did some great work and gave me way too much credit (smile)
[14:24:11 EDT(-0400)] <awills> trunk\uportal-portlets-overlay\cas\pom.xml(202)...
[14:24:25 EDT(-0400)]

<awills> there's a missing '$' before

Unknown macro: {basedir}

[14:24:41 EDT(-0400)] <EricDalquist> oops :/
[14:24:50 EDT(-0400)] <EricDalquist> that's what I get for copy/paste/commit
[14:25:23 EDT(-0400)] <EricDalquist> sorry about that
[14:25:27 EDT(-0400)] <EricDalquist> will be fixed in just a second
[14:25:56 EDT(-0400)] <awills> np at all... just sending the info where it needss to go (wink)
[14:26:27 EDT(-0400)] <Sememmon> awills: Drooooo
[14:27:29 EDT(-0400)] <awills> hey there
[14:28:45 EDT(-0400)] <Sememmon> awills: another even more difficult to pronounce nick for you to remember.
[14:31:05 EDT(-0400)] <holdorph> awills is the last person allowed to complain about unpronounceable names
[14:36:12 EDT(-0400)] <awills> lol
[14:40:12 EDT(-0400)] * invisibill (i=80876350@gateway/web/ajax/mibbit.com/x-c3bd39c92babc499) has joined ##uportal
[14:43:04 EDT(-0400)] <invisibill> Greetings uPortal devs. I've got a build of uPortal 3.0.1 running with an Oracle backend. Many of the portlets we are going to write will need to connect to a SQL server database. Does uPortal have configuration to set up a datasorce to another db for portlest to use? Maybe to take advantage of the hibernate/spring functionality? Should we make a datasource at the server level?
[14:43:40 EDT(-0400)] <EricDalquist> well portlets run in their own web applications
[14:44:02 EDT(-0400)] <EricDalquist> they can't access any of the datasources, spring configuration or persistence apis that the portal uses
[14:44:12 EDT(-0400)] <EricDalquist> they can do whatever any old web-application could though
[14:44:22 EDT(-0400)] <invisibill> makes sense.
[14:44:34 EDT(-0400)] <EricDalquist> so they would setup their own datasource to the SQL Server instance and use whatever persistence tech they want to
[14:46:20 EDT(-0400)] <invisibill> ok. I was thinking that we would somehow have access to the spring container used by the portal. but I think it makes sense for them not to.
[14:46:38 EDT(-0400)] <EricDalquist> nope, each webapp runs in its own classloader
[14:46:55 EDT(-0400)] <EricDalquist> so the portal's spring container is scoped to the portal's classloader
[14:47:25 EDT(-0400)] <EricDalquist> it may be a little more up front to do that work in each portlet webapp but it is much easier to maintain down the road
[14:47:39 EDT(-0400)] <EricDalquist> many fewer worries about portal upgrades breaking your portlets and such
[14:47:49 EDT(-0400)] <invisibill> so in order to share the CAS or othere authentication information, we will not need to access that through the portal api?
[14:48:19 EDT(-0400)] <EricDalquist> well uPortal 3 can provide a CAS proxy ticket via a USER_INFO attribute
[14:48:29 EDT(-0400)] <EricDalquist> athena7: can explain a bit more there
[14:48:56 EDT(-0400)] <invisibill> ok.
[14:53:03 EDT(-0400)] <athena7> so basically what happens is that the portal requests a proxy ticket for the portlet
[14:53:11 EDT(-0400)] <athena7> and then puts that ticket in the USER_INFO map
[14:53:55 EDT(-0400)] <athena7> from the portlet, you can pull that ticket out of the USER_INFO map, validate it, and request proxy tickets for other external services
[14:54:19 EDT(-0400)] <athena7> so you wind up w/ a proxy chain that goes portal -> portlet -> something else
[15:02:13 EDT(-0400)] <invisibill> and the USER_INFO map is visible within the portlet somewhere?
[15:02:49 EDT(-0400)] <EricDalquist> that is part of the portlet API
[15:03:07 EDT(-0400)] <EricDalquist> http://portals.apache.org/pluto/portlet-1.0-apidocs/javax/portlet/PortletRequest.html#USER_INFO
[15:04:19 EDT(-0400)] <invisibill> I see. I'm needing to re-familiarize myself the the portlet api. Thank you for helping make this more clear.
[15:04:56 EDT(-0400)] <EricDalquist> no problem
[15:08:35 EDT(-0400)] <athena7> you need to make sure you put the cas ticket key name in the portlet.xml as well, by the way
[15:08:51 EDT(-0400)] <invisibill> so it's gonna be something like Map userInfoMap = (Map) request.getAttribute(PortletRequest.USER_INFO); userInfoMap("cas.ticket");?
[15:09:12 EDT(-0400)] <invisibill> userInfoMap.get("cas.ticket");
[15:09:18 EDT(-0400)] <athena7> yes
[15:09:35 EDT(-0400)] <invisibill> is there some standard format for the value?
[15:09:42 EDT(-0400)] <athena7> i forget what the default value is
[15:09:52 EDT(-0400)] <athena7> but i think you can rename it to whatever you'd like in the portlet.xml
[15:09:52 EDT(-0400)] <invisibill> or is just haveing someting there mean that the user is authenticated.
[15:11:01 EDT(-0400)] <EricDalquist> the default value is 'casProxyTicket'
[15:11:31 EDT(-0400)] <EricDalquist> if you want to change you set the proxyTicketKey on the casTicketUserInfoService bean in the portletContainerContext.xml file in uPortal
[15:11:38 EDT(-0400)] <EricDalquist> but really there is no need to change it
[15:12:45 EDT(-0400)] <invisibill> ok. but is the value returned from infoMap.get('casProxyTicket') in some standard format containing creds or is just having a non null value mean the user is authenticated?
[15:13:47 EDT(-0400)] <EricDalquist> it is the CAS ticket for the portlet
[15:13:53 EDT(-0400)] <EricDalquist> which I believe is just a random string
[15:14:44 EDT(-0400)] <invisibill> Ok. I'll have another look at the CAS docs. I've been told though that we may actually try to deploy shibboleth instead of CAS for authentication.
[15:15:15 EDT(-0400)] <EricDalquist> what are you trying to get at in your portlet?
[15:15:18 EDT(-0400)] <EricDalquist> just the userid?
[15:15:29 EDT(-0400)] <EricDalquist> or do you need to do proxied auth to some remote service?
[15:17:58 EDT(-0400)] <invisibill> I think we just want to block access to the portlet if the user is not authenticated. so there will be some default public visibility and then a second level of visiblitiy or more portlets if the user is logged in. It may actuallyl be something we configure within the portal administration I'm thinknig.
[15:18:22 EDT(-0400)] <EricDalquist> yeah
[15:18:27 EDT(-0400)] <EricDalquist> that is beyond the scope of a portlet
[15:18:50 EDT(-0400)] <EricDalquist> but uPortal provides the ability to permission portlets to groups or users
[15:18:59 EDT(-0400)] <EricDalquist> and it will automatically not show the user portlets they aren
[15:19:05 EDT(-0400)] <invisibill> thats key.
[15:19:09 EDT(-0400)] <EricDalquist> 't permissioned to see
[15:19:14 EDT(-0400)] <athena7> well
[15:19:25 EDT(-0400)] <athena7> you could presumably get the cas proxy ticket from the userinfo map
[15:19:26 EDT(-0400)] <athena7> validate it
[15:19:44 EDT(-0400)] <athena7> and decide whether to show content or not depending on whether the ticket is non-null and validating
[15:20:15 EDT(-0400)] <athena7> if your portal is configured to do login with only CAS it might not be that big of an issue though
[15:20:33 EDT(-0400)] <invisibill> does the CAS ticket change value for user XYZ each time she logs in?
[15:20:43 EDT(-0400)] <athena7> you can tell if the user is authenticated to the portal or not by checking for the user id in the portlet request
[15:20:46 EDT(-0400)] <athena7> yes
[15:21:01 EDT(-0400)] <EricDalquist> yeah the value of a cas ticket is meaningless in itself
[15:21:04 EDT(-0400)] <athena7> it's a random string that's only valid for 5 minutes (or whatever your CAS server is configured to allow)
[15:21:04 EDT(-0400)] <invisibill> ok. that's another way.
[15:21:15 EDT(-0400)] <EricDalquist> it is just a random key that you have to talk to the CAS server to find out what it means
[15:21:23 EDT(-0400)] <EricDalquist> or what athena7 said (smile)
[15:21:54 EDT(-0400)] <athena7> so if your portal is going to be mostly just CAS authentication, and all you really want to know is whether the user is logged into the portal
[15:22:02 EDT(-0400)] <athena7> i think you could just do
[15:22:11 EDT(-0400)] <EricDalquist> back in a bit ... meeting time
[15:22:13 EDT(-0400)] <athena7> if (request.getRemoteUser() != null)
[15:22:17 EDT(-0400)] <athena7> cya eric
[15:22:31 EDT(-0400)] <EricDalquist> I think there is an isAuth or authLevel method too
[15:22:35 EDT(-0400)] <invisibill> ok. thanks for help athena7 and EricDalquist
[15:22:51 EDT(-0400)] <athena7> oh i think you're right eric, come to think of it
[15:23:14 EDT(-0400)] <invisibill> I use the same if (request.getRemoteUser() != null) in regular servlets and that has been working nicely so far.
[15:41:56 EDT(-0400)] <athena7> did someone mention a way to link to individual gmail messages?
[16:10:20 EDT(-0400)] * invisibill (i=80876350@gateway/web/ajax/mibbit.com/x-c3bd39c92babc499) has left ##uportal
[16:20:43 EDT(-0400)] * athena7 (n=athena7@adsl-99-149-83-32.dsl.wlfrct.sbcglobal.net) has joined ##uportal
[16:47:07 EDT(-0400)] * michelled (n=team@142.150.154.197) has left ##uportal
[17:17:00 EDT(-0400)] * atpa8a (n=stfu@static-71-249-199-57.nycmny.east.verizon.net) has left ##uportal
[17:32:01 EDT(-0400)] <awills> Still there EricDalquist?
[17:32:40 EDT(-0400)] <EricDalquist> just got back from my 2 hr meeting
[17:32:52 EDT(-0400)] <awills> oh man... better you than me (wink)
[17:33:35 EDT(-0400)] <awills> so I've got a few folks nudging me to contribute the SmartLdap stuff
[17:34:21 EDT(-0400)] <awills> and I'm sitting down to write up a JIRA... I guess I should do it as 2: one for uP, one for GaP
[17:34:41 EDT(-0400)] <EricDalquist> yeah :/
[17:35:39 EDT(-0400)] <awills> what's the viability of committing it to uP w/o a (near-)simultaneos commit to GaP? that's my main anxiety on the subject of SmartLdap
[17:36:31 EDT(-0400)] <EricDalquist> probably good for trunk
[17:36:42 EDT(-0400)] <EricDalquist> for 3.1-p it depends on how much it changes
[17:37:01 EDT(-0400)] <awills> 3.1-p?
[17:37:04 EDT(-0400)] <EricDalquist> sorry
[17:37:06 EDT(-0400)] <EricDalquist> 3.0-p
[17:37:27 EDT(-0400)] <awills> ah, trunk is good enough I think
[17:38:06 EDT(-0400)] <awills> wouldn't bother anyone... nothing would be executed from it w/o changing your compositGroupStore.xml file thing
[17:38:30 EDT(-0400)] <EricDalquist> cool
[17:38:37 EDT(-0400)] <EricDalquist> well trunk and GAP to start
[17:38:50 EDT(-0400)] <EricDalquist> then we can look at just doing a svnmerge back to patches if there is interest
[17:39:35 EDT(-0400)] <awills> that would be fine... and individual institutions can self-service that sort of thing if it comes to it
[17:39:46 EDT(-0400)] <EricDalquist> yup
[20:32:22 EDT(-0400)] * awills (n=awills@wsip-98-174-242-39.ph.ph.cox.net) has left ##uportal