Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 106 Next »

[07:04:47 CST(-0600)] * EricDalquist (n=dalquist@76.210.63.165) has joined ##uportal
[08:07:37 CST(-0600)] * faizan (n=chatzill@nat01-asb-ext.Rutgers.EDU) has joined ##uportal
[08:07:49 CST(-0600)] <faizan> Good morning
[08:09:18 CST(-0600)] * esm (n=esm@esm.qis.net) has joined ##uportal
[08:28:11 CST(-0600)] <EricDalquist> hey faizan
[08:28:23 CST(-0600)] <EricDalquist> so I have some quick instructions for person directory
[08:28:44 CST(-0600)] <faizan> please go ahead
[08:28:48 CST(-0600)] <EricDalquist> you'll need to get the LdapTemplate library from http://ldaptemplate.sourceforge.net/ and add it to the uPortal 3 project
[08:28:58 CST(-0600)] <faizan> ok
[08:29:12 CST(-0600)] <EricDalquist> then in person-directory.xml you'll want to add your LDAP ConextSource bean like:
[08:29:12 CST(-0600)] <EricDalquist> <bean id="contextSource" class="net.sf.ldaptemplate.support.LdapContextSource">
[08:29:12 CST(-0600)] <EricDalquist> <property name="url" value="ldap://localhost:389" />
[08:29:12 CST(-0600)] <EricDalquist> <property name="base" value="dc=jayway,dc=se" />
[08:29:12 CST(-0600)] <EricDalquist> <property name="userName" value="cn=Manager" />
[08:29:12 CST(-0600)] <EricDalquist> <property name="password" value="secret" />
[08:29:15 CST(-0600)] <EricDalquist> </bean>
[08:29:56 CST(-0600)] <EricDalquist> then replace the JDBC attribute DAO with LdapPersonAttributeDao
[08:30:06 CST(-0600)] <EricDalquist> you can look at the javadocs for it here: http://developer.ja-sig.org/projects/persondirectory/apidocs/org/jasig/services/persondir/support/ldap/LdapPersonAttributeDao.html
[08:30:33 CST(-0600)] <EricDalquist> you'll need to set the contextSource property to reference the conextSource you setup
[08:30:48 CST(-0600)] <EricDalquist> set the query property to the ldap filter string
[08:31:20 CST(-0600)] <EricDalquist> set the ldapAttributesToPortalAttributes Map to tell the DAO which LDAP attributes to retrieve and what their names should be in the portal
[08:31:39 CST(-0600)] <EricDalquist> the setter for the ldapAttributesToPortalAttributes property has some decent javadocs
[08:31:59 CST(-0600)] <faizan> ok
[08:32:01 CST(-0600)] <EricDalquist> I'm @ home right now taking care of some things and I'll be around for another 30 minutes before I catch the bus to work
[08:32:12 CST(-0600)] <faizan> ok
[08:32:25 CST(-0600)] <EricDalquist> let me know if you have questions as you go through that
[08:32:34 CST(-0600)] <faizan> I think we will be busy fixing our vendor branch and the instructions you gave me so far
[08:32:41 CST(-0600)] <faizan> sure
[08:32:42 CST(-0600)] <EricDalquist> ok
[08:35:17 CST(-0600)] <faizan> Eric I am going to use following comand for vendor branch is it correct
[08:35:50 CST(-0600)] <faizan> cvs import -I ! -m "Import JA-SIG uP3 change set 2877" ntg/myrutgers3 JASIG
[08:36:06 CST(-0600)] <EricDalquist> looks like it, give me just a minute to double check what we do here
[08:36:38 CST(-0600)] <faizan> Ok I just ran it without the "!" and nothing gets into CVS probably every thing got ignored
[08:37:04 CST(-0600)] <EricDalquist> cvs import -ko -I ! -m "import of uPortal 2.4.2" module branchname tagname
[08:37:20 CST(-0600)] <EricDalquist> thats on our internal wiki for doing uPortal vendor branch imports
[08:37:44 CST(-0600)] <faizan> Yes Ironically I wrote that doc
[08:37:53 CST(-0600)] <faizan> Have not done for years now and just forgot
[08:38:09 CST(-0600)] <EricDalquist> (smile)
[08:50:29 CST(-0600)] <faizan> jason import is done and every thing is fine I am able to compile
[08:50:35 CST(-0600)] <faizan> Please put your changes back
[08:55:01 CST(-0600)] * jayshao (n=chatzill@nat01-asb-ext.Rutgers.EDU) has joined ##uportal
[08:55:19 CST(-0600)] <jayshao> hey
[08:55:26 CST(-0600)] <jayshao> who's esm?
[08:57:04 CST(-0600)] <EricDalquist> elliot
[08:57:07 CST(-0600)] <EricDalquist> metsger
[08:57:17 CST(-0600)] <jayshao> hey Elliot
[08:57:18 CST(-0600)] <EricDalquist> I'm assuming (smile)
[08:57:23 CST(-0600)] <jayshao> how was Sakai?
[08:59:11 CST(-0600)] <faizan> Eric I think I need the latest Person dir
[08:59:59 CST(-0600)] <EricDalquist> that should have come with the trunk of uP3
[09:00:08 CST(-0600)] * Guest58441 (i=Susan@dhcp130132248116.its.yale.edu) has joined ##uportal
[09:00:08 CST(-0600)] <EricDalquist> it should be a -SNAPSHOT build
[09:00:36 CST(-0600)] <jayshao> hey Susan
[09:00:49 CST(-0600)] <EricDalquist> one thing to note faizan is the package name changes
[09:00:59 CST(-0600)] <EricDalquist> there is no .portal. in the package name any more
[09:01:08 CST(-0600)] <faizan> mmm that might be it
[09:01:26 CST(-0600)] <Guest58441> hey - no idea what i'm doing here - already on overload
[09:01:51 CST(-0600)] <EricDalquist> type '/name susanbramhall' to change your name
[09:02:46 CST(-0600)] <EricDalquist> I think thats the command at least (smile)
[09:03:43 CST(-0600)] <jayshao> Eric – looks like you scared her off... (wink)
[09:03:49 CST(-0600)] <EricDalquist> (sad)
[09:03:52 CST(-0600)] * Guest58441 (i=Susan@dhcp130132248116.its.yale.edu) has joined ##uportal
[09:04:03 CST(-0600)] <faizan> jason I fixed the classpath error for ant do you want me to check in the build.properties file
[09:05:22 CST(-0600)] <EricDalquist> welcome back
[09:05:52 CST(-0600)] <faizan> Eric the jar file name is changed for PD and build.properties should be updated
[09:06:03 CST(-0600)] <EricDalquist> it wasn't?
[09:06:05 CST(-0600)] <EricDalquist> hrm
[09:06:11 CST(-0600)] <faizan> If you want I can go ahead and do it in JA-SIg tree
[09:07:08 CST(-0600)] <EricDalquist> it looks right in SVN to me
[09:07:23 CST(-0600)]

<EricDalquist> rev 2877 has that line as "person-directory.jar=$

Unknown macro: {lib.path}

/person-directory-1.0.0-SNAPSHOT.jar"


[09:07:35 CST(-0600)] <jayshao> yes please
[09:08:23 CST(-0600)] <faizan> jason it is there
[09:08:35 CST(-0600)] <faizan> you should be able to build and deploy fine now
[09:09:03 CST(-0600)] <faizan> yes you are right
[09:09:20 CST(-0600)] <faizan> we did not get the build.properties and I had it from the last export
[09:09:24 CST(-0600)] <faizan> sorry about that
[09:09:31 CST(-0600)] <EricDalquist> np
[09:09:37 CST(-0600)] <EricDalquist> I'm heading out to catch the bus
[09:09:42 CST(-0600)] <EricDalquist> back on in ~ 30 minutes
[09:09:45 CST(-0600)] <jayshao> what's the deal with build.properties?
[09:09:51 CST(-0600)] <jayshao> Faizan, can you check that in too?
[09:09:58 CST(-0600)] <jayshao> It's not in the CVS tree.
[09:10:10 CST(-0600)] <faizan> I have added it in our CVS tree
[09:10:15 CST(-0600)] <jayshao> cool. thanx
[09:10:16 CST(-0600)] <jayshao> 1 sec
[09:10:45 CST(-0600)] <faizan> hello susan
[09:13:42 CST(-0600)] <faizan> eric
[09:13:45 CST(-0600)] <faizan> are you there
[09:30:13 CST(-0600)] <jayshao> hey - checked in the db & other changes
[09:40:00 CST(-0600)] * faizan (n=chatzill@nat01-asb-ext.Rutgers.EDU) has joined ##uportal
[09:42:50 CST(-0600)] * EricDalquist (n=dalquist@bohemia.doit.wisc.edu) has joined ##uportal
[09:49:28 CST(-0600)] <EricDalquist> hey faizan & jayshao hows it going?
[09:49:45 CST(-0600)] <jayshao> Faizan's looking at people...
[09:50:03 CST(-0600)] <jayshao> I'm still looking at layouts & portlet publishing...
[09:50:12 CST(-0600)] <jayshao> thinking the data.xml route is going to be simplest...
[09:50:32 CST(-0600)] <faizan> I am going to try it now
[09:51:15 CST(-0600)] <esm> hey jason, yeah it is elliot
[09:51:17 CST(-0600)] <esm> sakai was ok
[09:51:28 CST(-0600)] <esm> /who esm
[09:51:37 CST(-0600)] <esm> esm is just easier to type (smile)
[09:52:45 CST(-0600)] * SusanBramhall (i=Susan@dhcp130132248116.its.yale.edu) has left ##uportal
[09:57:22 CST(-0600)] * deuce (n=deuce@uni1.unicon.net) has joined ##uportal
[10:03:09 CST(-0600)] <esm> <--- lazy
[10:03:13 CST(-0600)] <EricDalquist> ?
[10:03:35 CST(-0600)] <esm> esm == less typing == lazy
[10:03:44 CST(-0600)] <EricDalquist> ah
[10:04:04 CST(-0600)] <EricDalquist> oh I looked at your notes about mvn and uP3
[10:04:10 CST(-0600)] <EricDalquist> we are planning on refactoring the code
[10:04:17 CST(-0600)] <esm> cool
[10:04:25 CST(-0600)] <EricDalquist> and going with a full maven 2 structure
[10:04:49 CST(-0600)] <esm> thats nice, it will be much nicer i think once people warm up to the maven 2 structure
[10:04:52 CST(-0600)] <EricDalquist> the move to SVN was a prereq though so we didn't loose all of the history during the re-org
[10:05:04 CST(-0600)] <esm> yes!
[10:05:22 CST(-0600)] <esm> wait so is up3 trunk being maintained in SVN right now?
[10:05:35 CST(-0600)] <esm> or is it still in CVS?
[10:06:14 CST(-0600)] <EricDalquist> it is in SVN
[10:06:24 CST(-0600)] <EricDalquist> so are PersonDirectory and GroupsAndPermissions
[10:06:35 CST(-0600)] <EricDalquist> the CVS versions have been attic'd
[10:06:46 CST(-0600)] <esm> oh woops, I pulled the trunk from CVS... (smile) guess I'll re-pull it!
[10:06:53 CST(-0600)] <esm> ok
[10:09:16 CST(-0600)] <faizan> I will be back in few minutes
[10:09:59 CST(-0600)] <deuce> svn stinks
[10:10:04 CST(-0600)] <deuce> (smile)
[10:10:07 CST(-0600)] <esm> lol
[10:10:12 CST(-0600)] <EricDalquist> (smile)
[10:12:02 CST(-0600)] <jayshao> so... anyone else looking at uP3?
[10:12:32 CST(-0600)] <EricDalquist> I am
[10:12:33 CST(-0600)] <EricDalquist> (smile)
[10:12:52 CST(-0600)] <esm> sort of? I haven't compiled or installed it
[10:17:57 CST(-0600)] * faizan (n=chatzill@nat01-asb-ext.Rutgers.EDU) has joined ##uportal
[10:27:05 CST(-0600)] <EricDalquist> if anyone else here is interested I'd like to get more feedback on http://www.ja-sig.org/wiki/display/UP3/Maven+2+Migration
[10:27:37 CST(-0600)] <EricDalquist> I'll be adding more comments to it later today but a wholesale move to Maven2 is something I'd like to see in the near future for uP3
[10:35:17 CST(-0600)] * esm checks out trunk from svn
[10:41:44 CST(-0600)] <faizan> eric what is the portlet name
[10:42:15 CST(-0600)] <faizan> I mean portlet that shows the Person attributes
[10:42:26 CST(-0600)] <EricDalquist> I was just going to ask which portlet
[10:42:36 CST(-0600)] <EricDalquist> if you log in as admin it is on the testing tab
[10:42:43 CST(-0600)] <faizan> I read your mind (smile)
[10:43:06 CST(-0600)] <EricDalquist> it doesn't show all user attributes
[10:43:14 CST(-0600)] <EricDalquist> it just shows those described in the portlet spec
[10:43:34 CST(-0600)] <EricDalquist> you can look in lib/portlets at the portlet.xml for the UserAttributePortlet.war for the full list
[10:45:21 CST(-0600)] <faizan> I see only four portlets in that tab
[10:45:41 CST(-0600)] <faizan> two are Test portlet # 1 and 2
[10:45:42 CST(-0600)] <EricDalquist> did you re-init your database from the trunk?
[10:45:48 CST(-0600)] <faizan> yes
[10:45:51 CST(-0600)] <EricDalquist> hrm
[10:46:19 CST(-0600)] <EricDalquist> if you go to the portlet manager do you see a User attributes portlet?
[10:47:43 CST(-0600)] <faizan> nope
[10:47:55 CST(-0600)] <EricDalquist> hrm
[10:47:56 CST(-0600)] <EricDalquist> weird
[10:48:15 CST(-0600)] <faizan> when I did init to portal I got error in some portlet
[10:48:22 CST(-0600)] <faizan> Jason also got that
[10:48:24 CST(-0600)] <EricDalquist> oh ...
[10:48:26 CST(-0600)] <EricDalquist> what is the error?
[10:48:37 CST(-0600)] <faizan> it was complaining about the zip file
[10:48:48 CST(-0600)] <faizan> could not open the archive
[10:49:14 CST(-0600)] <EricDalquist> oh ... I wonder if the UserAttributesPortlet.war go corrupted
[10:49:34 CST(-0600)] <faizan> Jason is going to get the portlet wars and check them in
[10:49:41 CST(-0600)] <jayshao> fixed in CVS
[10:49:45 CST(-0600)] <jayshao> looks like corrupted zips
[10:49:48 CST(-0600)] <faizan> ok let me see
[10:51:04 CST(-0600)] <EricDalquist> looks like the war is OK in SVN
[10:52:24 CST(-0600)] <jayshao> yeah, just our CVS seems to have issues - I replaced the WARS with the copies frm SVN trunk
[10:52:51 CST(-0600)] * dalman (n=think@jaded.cynicism.com) has joined ##uportal
[10:56:13 CST(-0600)] <faizan> jason I am getting same error
[10:56:17 CST(-0600)] <faizan> did you get it working
[10:56:37 CST(-0600)] <EricDalquist> is your CVS repo treating the WAR file as text instead of binary?
[10:58:41 CST(-0600)] <faizan> I just fiexed it
[10:58:54 CST(-0600)] <faizan> it was treating it as ASCII
[10:59:17 CST(-0600)] <EricDalquist> ah the joys of CVS
[10:59:34 CST(-0600)] <jayshao> Faizan - was it the repo or your Eclipse settings?
[11:00:11 CST(-0600)] <faizan> hold on
[11:01:08 CST(-0600)] <jayshao> Eric - is that a bug where the Error Portlet changes the title of a portlet window to read "uPortal 3 Error Portlet"
[11:01:27 CST(-0600)] <EricDalquist> yeah
[11:01:32 CST(-0600)] <EricDalquist> I thought peter had fixed it
[11:01:36 CST(-0600)] <EricDalquist> but apparently not
[11:02:11 CST(-0600)] <jayshao> there a JIRA issues already, or you want a new one?
[11:02:26 CST(-0600)] <EricDalquist> there should be one already
[11:02:32 CST(-0600)] <EricDalquist> it may need to be re-opened
[11:03:10 CST(-0600)] <EricDalquist> http://www.ja-sig.org/issues/browse/UPT-251
[11:03:25 CST(-0600)] <EricDalquist> I'll just create a new one
[11:03:51 CST(-0600)] <jayshao> k
[11:05:26 CST(-0600)] <esm> EricDalquist: wrt m2 - do you plan to put mock and test objects in <project>/src/test/java versus mixing them in with their "real" counterparts in <project>/src/main/java?
[11:06:11 CST(-0600)] <faizan> jason you can sync with our local cvs if you had portlet deployment problem
[11:06:22 CST(-0600)] <faizan> Yes the property needs to be fixed in eclipse
[11:06:27 CST(-0600)] <EricDalquist> ok I just re-opened 251
[11:07:05 CST(-0600)] <EricDalquist> esm yes
[11:07:21 CST(-0600)] <EricDalquist> I also thought about actually creating a seperate mock sub-project
[11:07:31 CST(-0600)] <EricDalquist> since we're ending up with a lot of mock objects
[11:08:23 CST(-0600)] <esm> yeah that might be a good idea
[11:08:43 CST(-0600)] <esm> just want to make sure that when the tests execute they have access to the mock project
[11:08:55 CST(-0600)] <esm> which, they should, if the <dependency> to the mock project is there
[11:09:04 CST(-0600)] <EricDalquist> yeah, exactly
[11:09:12 CST(-0600)] <EricDalquist> the mock project would be a test time dependency
[11:09:18 CST(-0600)] <esm> eggsactly
[11:10:00 CST(-0600)] <faizan> Eric the UserAtrribute portlet did not show up in the portlet manager
[11:10:11 CST(-0600)] <faizan> Do I need to publish it
[11:10:20 CST(-0600)] <EricDalquist> you may need to
[11:10:33 CST(-0600)] <EricDalquist> I had it published in the data.xml that was in the trunk
[11:10:50 CST(-0600)] <EricDalquist> but the WAR not being there may have caused issues
[11:11:45 CST(-0600)] <faizan> No I have the war file and I did run initportal target again
[11:14:35 CST(-0600)] <faizan> You have to guide me how I can publish the portlet
[11:14:47 CST(-0600)] <faizan> I dont see its entry in the data.xml
[11:15:15 CST(-0600)] <EricDalquist> are you sure you're using the data.xml from the trunk?
[11:16:15 CST(-0600)] <faizan> Jason have you replaced the data.xml with the old version
[11:16:17 CST(-0600)] <jayshao> maybe not - I think I overwrote it.
[11:16:22 CST(-0600)] <jayshao> it's possible, let me check.
[11:16:40 CST(-0600)] <faizan> mmm yes that is what I see the code I exported has the entry in there
[11:17:39 CST(-0600)] <faizan> there are lot of differences jason
[11:18:03 CST(-0600)] <faizan> I think replace with the vendor branch version and then add your stuff back
[11:24:58 CST(-0600)] <esm> EricDalquist: fyi my stream of conscienceness re m2, and when they are solidified I will update the m2 migration page: http://www.ja-sig.org/wiki/x/k00
[11:26:06 CST(-0600)] <EricDalquist> cool
[11:38:01 CST(-0600)] <faizan> Eric I see the portlet but I did not get any attribute
[11:38:10 CST(-0600)] <faizan> I was logged in as "faizan"
[11:38:28 CST(-0600)] <EricDalquist> well it only displayes attributes described in the portlet spec
[11:39:00 CST(-0600)] <EricDalquist> so your person directory needs to expose attributes with those names or you need to map your the attributes to those names for the portlet application definition
[11:39:15 CST(-0600)] <faizan> It says "This user does not have any user attributes"
[11:39:18 CST(-0600)] <EricDalquist> do you have person-directory.xml all configured?
[11:39:38 CST(-0600)] <EricDalquist> again, it can not see random attributes
[11:39:45 CST(-0600)] <EricDalquist> this is a limitation of portlets
[11:39:56 CST(-0600)] <EricDalquist> they have to explicitly declare which attributes they want
[11:40:05 CST(-0600)] <EricDalquist> lets go through this bit by bit
[11:40:17 CST(-0600)] <EricDalquist> do you have person-directory.xml all configured? If so what does it look like?
[11:41:45 CST(-0600)] <faizan> do you want me to send you the file
[11:41:48 CST(-0600)] <faizan> let me email you
[11:41:51 CST(-0600)] <EricDalquist> ok
[11:43:25 CST(-0600)] <EricDalquist> so there are some steps to this attributes process
[11:43:49 CST(-0600)] <EricDalquist> person directory is configured with some data source that it uses to get attributes from
[11:44:08 CST(-0600)] <EricDalquist> the person directory configuration lets you map attribute names from your source to names to use internally to the portal
[11:44:27 CST(-0600)] <faizan> correct
[11:44:31 CST(-0600)] <EricDalquist> a portlet that wants to see user attributes declares the names explicitly in its portlet.xml
[11:44:37 CST(-0600)] <faizan> you should have the file by now
[11:45:29 CST(-0600)] <EricDalquist> in uportal 2 the names in portlet.xml and in your person directory config had to match
[11:46:03 CST(-0600)] <EricDalquist> in uPortal 3 they don't have to match, in the portlet application definition (configured in portlet manager) you can map the attribute names the portlet expects to the attribute names the portal provides
[11:46:14 CST(-0600)] <EricDalquist> looking at your XML the portlet doesn't expect any of those attributes
[11:46:18 CST(-0600)] <EricDalquist> for example:
[11:46:58 CST(-0600)] <EricDalquist> actually
[11:47:03 CST(-0600)] <EricDalquist> it looks like you did provide those
[11:47:04 CST(-0600)] <EricDalquist> hrm
[11:47:09 CST(-0600)] <EricDalquist> now comes debugging I guess (smile)
[11:47:12 CST(-0600)] <EricDalquist> just a minute
[11:48:16 CST(-0600)] <faizan> ok
[11:50:46 CST(-0600)] <EricDalquist> if you can attach a debugger you can watch PersonDirectoryMappedUserAttributeProvider#getMappedUserAttributes when you view that attributes portlet
[11:51:29 CST(-0600)] <EricDalquist> line 113 gets the user attributes from person directory so you can look at the Map to verify it actually got the content
[11:52:16 CST(-0600)] <EricDalquist> lines 118 through 136 should be copying attributes from the person directory map into a map for the portlet, using the mapped names if there are any
[11:52:30 CST(-0600)] <EricDalquist> I'm going to go and add more logging to all of this code
[11:53:15 CST(-0600)] <faizan> ok let me debug
[11:53:29 CST(-0600)] <EricDalquist> thanks
[11:58:08 CST(-0600)] <faizan> I see entries in the map
[11:58:18 CST(-0600)] <EricDalquist> with the correct values?
[11:58:20 CST(-0600)] <EricDalquist> hrm
[11:58:31 CST(-0600)] <EricDalquist> are they getting translated into the Map returned by that method?
[12:00:41 CST(-0600)] <faizan> one minute please
[12:05:31 CST(-0600)] <EricDalquist> hey esm do you know how to get the javadocs produced by maven to link to external javadocs (like those for the JDK, spring, etc..)?
[12:07:19 CST(-0600)] <esm> EricDalquist: you mean the site produced by maven?
[12:08:02 CST(-0600)] <EricDalquist> well with Javadoc you can give it URLs to Javadocs for pacakges you use and it will generate links in your Javadocs to those
[12:08:21 CST(-0600)] <EricDalquist> so if you have it the URL to the JDK's javadocs your String references would be links to the Javadoc for String
[12:08:43 CST(-0600)]

<esm> you mean when linking using the

Unknown macro: {@link <to some class>}

notation?


[12:08:55 CST(-0600)] <esm> hmm
[12:09:48 CST(-0600)] * esm checks the m2 javadoc plugin
[12:10:34 CST(-0600)] <EricDalquist> http://java.sun.com/j2se/1.4.2/docs/tooldocs/solaris/javadoc.html#link
[12:10:38 CST(-0600)] <EricDalquist> thats the feature I'm talking about
[12:12:17 CST(-0600)] <esm> http://maven.apache.org/plugins/maven-javadoc-plugin/javadoc-mojo.html#links
[12:13:06 CST(-0600)] <esm> i think you have to put that in the <configuration> element of the javadoc plugin in your pom
[12:13:15 CST(-0600)] <esm> let me test it out on a local project here, one sec
[12:13:22 CST(-0600)] <EricDalquist> ah that would make sence
[12:13:25 CST(-0600)] <EricDalquist> sense
[12:13:45 CST(-0600)] * EricDalquist can't spell ... thats why I code (compilers are like super spell checkers!)
[12:14:52 CST(-0600)] <esm> i wrote a command-line spell checker that submits the word to google and returns suggested spellings
[12:14:58 CST(-0600)] <esm> (smile)
[12:15:33 CST(-0600)] <EricDalquist> if gaim had a better IRC UI I would just use it and it has a nice inline spell checker
[12:15:34 CST(-0600)] <esm> was faster than opening up google in a browser or copy and pasting into word
[12:15:39 CST(-0600)] <EricDalquist> (smile)
[12:15:45 CST(-0600)] <deuce> does it also return google's sponsored ads?
[12:15:46 CST(-0600)] <esm> yeah (smile)
[12:15:54 CST(-0600)] <esm> not the last time i used it
[12:15:56 CST(-0600)] <EricDalquist> so when it says type ArrayList do I just do a csv of links?
[12:16:05 CST(-0600)] <esm> I think the mapping is
[12:16:36 CST(-0600)] <esm> if it can pluralize it would be: <links><link>url1</link><link>url2</link></links>
[12:16:48 CST(-0600)] <EricDalquist> cool, thanks
[12:16:49 CST(-0600)] <esm> otherwise i think arraylists are mapped as csv or spaces
[12:19:09 CST(-0600)] <faizan> Eric do you have a minute
[12:19:14 CST(-0600)] <EricDalquist> yup
[12:19:26 CST(-0600)] <faizan> Attributes are not getting translated
[12:19:32 CST(-0600)] <faizan> lets do debug together
[12:19:34 CST(-0600)] <EricDalquist> ok
[12:19:41 CST(-0600)] <faizan> I have a break point at line 113
[12:20:19 CST(-0600)] <EricDalquist> ok
[12:20:48 CST(-0600)] <EricDalquist> then next thing I would check is if the userAttributes set has data in it
[12:20:57 CST(-0600)] <EricDalquist> that should be the set of attributes the portlet is expecting
[12:21:22 CST(-0600)] <faizan> yes it does
[12:21:28 CST(-0600)] <esm> (eric: it pluralizes, so <links><link>http://foo</link></links> works for me)
[12:21:46 CST(-0600)] <EricDalquist> sweet, thanks
[12:21:47 CST(-0600)] <EricDalquist> ok
[12:22:07 CST(-0600)] <EricDalquist> as you walk through that for loop
[12:22:14 CST(-0600)] <faizan> I can see keys something like "user.home-info.telecom.fax.comment"
[12:22:25 CST(-0600)] <EricDalquist> does line 126 or 129 return any data?
[12:23:25 CST(-0600)] <EricDalquist> that should be the attribute value for the key requested
[12:23:47 CST(-0600)] <faizan> nope
[12:23:54 CST(-0600)] <faizan> I get null
[12:24:06 CST(-0600)] <faizan> it goes to line 128 because of null I guess
[12:24:10 CST(-0600)] <EricDalquist> ok, well you will for quite a few since the portlet is asking for a lot of data and you only have a few of them mapped
[12:24:40 CST(-0600)] <EricDalquist> in userAttributeValues do you see the all the keys you mapped to from person directory?
[12:24:54 CST(-0600)] <EricDalquist> like user.name.given and user.name.family?
[12:31:21 CST(-0600)] <faizan> sorry Bill was here
[12:31:43 CST(-0600)] <EricDalquist> np
[12:31:49 CST(-0600)] * jayshao (n=chatzill@nat01-asb-ext.Rutgers.EDU) has joined ##uportal
[12:32:02 CST(-0600)] <faizan> user.name.family gives me null
[12:32:11 CST(-0600)] <EricDalquist> hrm
[12:32:19 CST(-0600)] <EricDalquist> thats pointing to an issue with person directory
[12:32:31 CST(-0600)] <EricDalquist> well
[12:32:33 CST(-0600)] <EricDalquist> just a sec
[12:33:44 CST(-0600)] <EricDalquist> does the sn property have a value?
[12:34:55 CST(-0600)] <faizan> you mean in the mapping file
[12:34:58 CST(-0600)] <faizan> sn has sn
[12:35:08 CST(-0600)] <EricDalquist> no, in the Map
[12:35:22 CST(-0600)] <EricDalquist> if user.name.family gives you null does sn give you null as well?
[12:35:43 CST(-0600)] <faizan> <entry key="sn">
[12:35:45 CST(-0600)] <faizan> <set>
[12:35:46 CST(-0600)] <faizan> <value>sn</value>
[12:35:48 CST(-0600)] <faizan> <value>user.name.family</value>
[12:35:49 CST(-0600)] <faizan> </set>
[12:35:57 CST(-0600)] <faizan> Let me drill throuh it
[12:36:03 CST(-0600)] <EricDalquist> thanks
[12:40:53 CST(-0600)] <EricDalquist> actually I think there is a litte bit of a bug in PersonDirectoryMappedUserAttributeProvider
[12:41:03 CST(-0600)] <EricDalquist> let me write up a test case and then I may have a patch for you
[12:44:10 CST(-0600)] <faizan> ok
[12:44:25 CST(-0600)] <EricDalquist> right now it doesn't pass attributes with null values through
[12:44:30 CST(-0600)] <EricDalquist> which it should be doing
[12:44:59 CST(-0600)] <EricDalquist> finding out if person directory is actually returing an sn for you would be good though
[12:46:15 CST(-0600)] <faizan> I added code to print all the values then I will search it
[12:46:21 CST(-0600)] <EricDalquist> ok
[12:48:02 CST(-0600)] <faizan> nope there is no sn entry
[12:48:24 CST(-0600)] <EricDalquist> so then the next question is the LDAP DAO returning correctly
[12:48:24 CST(-0600)] <faizan> I think it is only returning what is in the portlet.xml
[12:48:38 CST(-0600)] <EricDalquist> do you see any warnings in your logs?
[12:48:46 CST(-0600)] <EricDalquist> person directory has nothing to do with portlets
[12:49:46 CST(-0600)] <faizan> wow
[12:49:48 CST(-0600)] <faizan> here it is
[12:49:52 CST(-0600)] <faizan> WARN [pool-1-thread-1] support.MergingPersonAttributeDaoImpl Dec/12 13:45:47.431 - Recovering From Exception thrown by DAO: org.jasig.services.persondir.support.ldap.LdapPersonAttributeDao@efc9fb
[12:49:53 CST(-0600)] <faizan> net.sf.ldaptemplate.BadLdapGrammarException: Invalid search filter; nested exception is javax.naming.directory.InvalidSearchFilterException: number exceeds argument list: 0; remaining name ''
[12:49:55 CST(-0600)] <faizan> Caused by:
[12:49:56 CST(-0600)] <faizan> javax.naming.directory.InvalidSearchFilterException: number exceeds argument list: 0; remaining name ''
[12:49:58 CST(-0600)] <faizan> at com.sun.jndi.toolkit.dir.SearchFilter.format(SearchFilter.java:586)
[12:49:59 CST(-0600)] <faizan> at com.sun.jndi.ldap.LdapCtx.c_search(LdapCtx.java:1743)
[12:50:01 CST(-0600)] <faizan> at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_search(ComponentDirContext.java:394)
[12:50:02 CST(-0600)] <faizan> at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:376)
[12:50:04 CST(-0600)] <faizan> at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:358)
[12:50:06 CST(-0600)] <faizan> at javax.naming.directory.InitialDirContext.search(InitialDirContext.java:267)
[12:50:07 CST(-0600)] <faizan> at org.jasig.services.persondir.support.ldap.QuerySearchExecutor.executeSearch(QuerySearchExecutor.java:59)
[12:50:08 CST(-0600)] <faizan> at net.sf.ldaptemplate.LdapTemplate.search(LdapTemplate.java:198)
[12:50:10 CST(-0600)] <faizan> at org.jasig.services.persondir.support.ldap.LdapPersonAttributeDao.getUserAttributesIfNeeded(LdapPersonAttributeDao.java:104)
[12:50:11 CST(-0600)] <faizan> at org.jasig.services.persondir.support.AbstractQueryPersonAttributeDao.getUserAttributes(AbstractQueryPersonAttributeDao.java:57)
[12:50:14 CST(-0600)] <faizan> at org.jasig.services.persondir.support.MergingPersonAttributeDaoImpl.getAttributesFromDao(MergingPersonAttributeDaoImpl.java:35)
[12:50:17 CST(-0600)] <faizan> at org.jasig.services.persondir.support.AbstractAggregatingDefaultQueryPersonAttributeDao.getUserAttributes(AbstractAggregatingDefaultQueryPersonAttributeDao.java:74)
[12:50:20 CST(-0600)] <faizan> at org.jasig.services.persondir.support.CachingPersonAttributeDaoImpl.getUserAttributes(CachingPersonAttributeDaoImpl.java:208)
[12:50:23 CST(-0600)] <faizan> at org.jasig.services.persondir.support.AbstractDefaultAttributePersonAttributeDao.getUserAttributes(AbstractDefaultAttributePersonAttributeDao.java:56)
[12:50:26 CST(-0600)] <faizan> at org.jasig.portal.portlet.userattributes.PersonDirectoryMappedUserAttributeProvider.getMappedUserAttributes(PersonDirectoryMappedUserAttributeProvider.java:113)
[12:50:29 CST(-0600)] <faizan> at org.jasig.portal.portlet.userattributes.PersonDirectoryMappedUserAttributeProvider.getMappedUserAttributes(PersonDirectoryMappedUserAttributeProvider.java:81)
[12:50:32 CST(-0600)] <faizan> at org.jasig.portal.portlet.userattributes.MappedUserAttributeProviderWrapper.getMappedUserAttributes(MappedUserAttributeProviderWrapper.java:37)
[12:50:35 CST(-0600)] <faizan> at org.jasig.portal.portlet.userattributes.CachingMappedUserAttributeProvider.getMappedUserAttributes(CachingMappedUserAttributeProvider.java:63)
[12:50:38 CST(-0600)] <faizan> at org.jasig.portal.portlet.rendering.PortletHttpServletRequestWrapper.getAttribute(PortletHttpServletRequestWrapper.java:106)
[12:50:41 CST(-0600)] <faizan> at org.apache.pluto.core.impl.PortletRequestImpl.getAttribute(PortletRequestImpl.java:278)
[12:50:43 CST(-0600)] <faizan> at org.jasig.portlet.userattr.mvc.ViewUserAttributesController.handleRenderRequestInternal(ViewUserAttributesController.java:26)
[12:50:46 CST(-0600)] <faizan> at org.springframework.web.portlet.mvc.AbstractController.handleRenderRequest(AbstractController.java:222)
[12:50:48 CST(-0600)] <faizan> at org.springframework.web.portlet.mvc.SimpleControllerHandlerAdapter.handleRender(SimpleControllerHandlerAdapter.java:52)
[12:50:51 CST(-0600)] <faizan> at org.springframework.web.portlet.DispatcherPortlet.doRenderService(DispatcherPortlet.java:717)
[12:50:53 CST(-0600)] <faizan> at org.springframework.web.portlet.FrameworkPortlet.processRequest(FrameworkPortlet.java:421)
[12:50:55 CST(-0600)] <faizan> at org.springframework.web.portlet.FrameworkPortlet.doDispatch(FrameworkPortlet.java:391)
[12:50:57 CST(-0600)] <faizan> at javax.portlet.GenericPortlet.render(GenericPortlet.java:163)
[12:50:59 CST(-0600)] <faizan> at org.apache.pluto.core.PortletServlet.dispatch(PortletServlet.java:218)
[12:52:28 CST(-0600)] <EricDalquist> oi
[12:52:44 CST(-0600)]

<faizan> does it say the query filter (rutgersEduRCPID=

Unknown macro: {0}

) is not good


[12:52:47 CST(-0600)] <EricDalquist> ok, so there is something up with the Ldap dao config
[12:53:24 CST(-0600)] <EricDalquist> no I think the argument array being passed to the dao is messed up
[12:53:49 CST(-0600)] <faizan> sounds like a bug in the code
[12:54:02 CST(-0600)] <EricDalquist> not sure if it is that or a config issue
[12:54:06 CST(-0600)] <EricDalquist> give me a few minutes to figure it out
[12:54:11 CST(-0600)] <faizan> ok
[12:58:59 CST(-0600)] <EricDalquist> ok I think I have it
[12:59:29 CST(-0600)] <EricDalquist> hrm maybe not
[13:00:01 CST(-0600)] <EricDalquist> can you check PersonDirectory out of SVN so we can step through some code in there?
[13:00:39 CST(-0600)] <EricDalquist> actually
[13:00:45 CST(-0600)] <EricDalquist> sorry about all this
[13:00:55 CST(-0600)] <EricDalquist> might have just found the bug
[13:02:00 CST(-0600)] <faizan> oh
[13:02:07 CST(-0600)] <faizan> so I dont need to do anything for now
[13:02:47 CST(-0600)] <EricDalquist> not yet
[13:10:25 CST(-0600)] <EricDalquist> ok, found the bug
[13:10:34 CST(-0600)] <EricDalquist> working on the test case and fix right now
[13:10:48 CST(-0600)] <EricDalquist> I should have a patched person directory jar for you in about 15 minutes
[13:12:21 CST(-0600)] <faizan> you are the man
[13:24:43 CST(-0600)] <EricDalquist> faizan can you get jason back on irc?
[13:35:30 CST(-0600)] <EricDalquist> faizan I emailed you a patched pd jar
[13:35:39 CST(-0600)] <EricDalquist> give that a try
[13:39:36 CST(-0600)] <faizan> I am back sorry I was with my manager
[13:39:42 CST(-0600)] <EricDalquist> np
[13:39:51 CST(-0600)] <faizan> do you want me to get jason back online
[13:39:55 CST(-0600)] <EricDalquist> sure
[13:40:57 CST(-0600)] <faizan> Jason will be in soon
[13:41:02 CST(-0600)] <EricDalquist> ok
[13:41:03 CST(-0600)] <faizan> his system keep crashing
[13:41:09 CST(-0600)] <EricDalquist> no fun
[13:41:21 CST(-0600)] <EricDalquist> well lets hope that patched jar fixes your problems
[13:43:17 CST(-0600)] <faizan> do I need to do anything else
[13:43:26 CST(-0600)] <faizan> just drop the jar
[13:43:31 CST(-0600)] <EricDalquist> that should be it
[13:46:03 CST(-0600)] <EricDalquist> awe crap ... I messed up the patch (smile)
[13:47:11 CST(-0600)] <faizan> It did not work
[13:47:20 CST(-0600)] <faizan> oh what happened
[13:47:51 CST(-0600)] <EricDalquist> I messed up some logic in my test
[13:47:54 CST(-0600)] <EricDalquist> so the test passed
[13:48:06 CST(-0600)] <faizan> (smile)
[13:48:17 CST(-0600)] <EricDalquist> but the code was still wrong
[13:48:39 CST(-0600)] <faizan> Kool I should put my pulled hair back (smile)
[13:48:56 CST(-0600)] <EricDalquist> yup
[13:48:59 CST(-0600)] <EricDalquist> its my fault
[13:49:04 CST(-0600)] <EricDalquist> another 10 minutes
[13:49:10 CST(-0600)] <faizan> No problem
[13:57:30 CST(-0600)] <EricDalquist> ok
[13:57:35 CST(-0600)] <EricDalquist> just emailed you try # 2
[13:57:45 CST(-0600)] <EricDalquist> I have to run to a meeting from 2 - 3 cst
[13:57:57 CST(-0600)] <EricDalquist> I'll read the chat log when I get back
[13:58:24 CST(-0600)] <faizan> Ok
[13:58:34 CST(-0600)] <faizan> are you leaving right now
[14:04:15 CST(-0600)] * jayshao (n=chatzill@nat01-asb-ext.Rutgers.EDU) has joined ##uportal
[14:13:42 CST(-0600)] <faizan> Eric: The second patch did not work either. I am getting the mappeduserAttributes "null"
[14:19:51 CST(-0600)] <esm> anyone know if the up3 roadmap presentation from atlanta is in the wiki?
[14:23:39 CST(-0600)] <esm> nvm: found it http://www.ja-sig.org/wiki/x/sks
[14:27:18 CST(-0600)] <faizan> ERIC: userAttributeValues is null, so it return on line 115
[15:04:51 CST(-0600)] <jayshao> working?
[15:06:01 CST(-0600)] <EricDalquist> hey faizan
[15:06:11 CST(-0600)] <faizan> yes Eric
[15:06:15 CST(-0600)] <EricDalquist> so now no exceptions in the log
[15:06:16 CST(-0600)] <faizan> Sorry it did not work
[15:06:21 CST(-0600)] <faizan> nope
[15:06:22 CST(-0600)] <EricDalquist> but null is returned?
[15:06:28 CST(-0600)] <faizan> No warning related to PD
[15:06:32 CST(-0600)] <faizan> yes
[15:06:48 CST(-0600)] <EricDalquist> ok ... can you get the PersonDirectory source from svn and we'll do some debugging in there
[15:06:54 CST(-0600)] <faizan> I have some warning related echache though but it has nothing to do with PD
[15:07:31 CST(-0600)] <faizan> do you want me to checkout from svn
[15:07:48 CST(-0600)] <EricDalquist> yes please
[15:08:28 CST(-0600)] <faizan> oh I see what you want to do
[15:08:54 CST(-0600)] <faizan> so if I just export the latest code and setup project in my eclipse that will be fine
[15:10:03 CST(-0600)] <EricDalquist> yeah
[15:10:07 CST(-0600)] <EricDalquist> then we can debug pd stuff
[15:10:35 CST(-0600)] <EricDalquist> brb
[15:13:36 CST(-0600)] <EricDalquist> actually
[15:13:49 CST(-0600)] <EricDalquist> do you have the userName property of the IUser object being set to RCPID yet?
[15:14:08 CST(-0600)] <EricDalquist> if not it will be running that LDAP query with your portal username
[15:15:28 CST(-0600)] <faizan> Oh no
[15:15:35 CST(-0600)] <EricDalquist> so
[15:15:39 CST(-0600)] <EricDalquist> it probably is working
[15:15:51 CST(-0600)] <faizan> where I need to set it
[15:15:54 CST(-0600)] <EricDalquist> what we will need to do is write a custom impl of IUserDao for rutgers
[15:16:06 CST(-0600)] <jayshao> we shouldn't really need that
[15:16:11 CST(-0600)] <jayshao> for this go we can skip the RCPID remapping
[15:16:14 CST(-0600)] <EricDalquist> you can check out UserDaoImpl to see what is going on right now
[15:16:18 CST(-0600)] <faizan> right
[15:16:20 CST(-0600)] <jayshao> we do query LDAP with a portal user DN
[15:16:20 CST(-0600)] <EricDalquist> ok, that would be even easier
[15:16:23 CST(-0600)] <jayshao> not user credentials
[15:16:31 CST(-0600)] <jayshao> and we can query on NetID
[15:16:38 CST(-0600)] <EricDalquist> then you just need to change your ldap query to work with a netid isntead of rcpid
[15:17:19 CST(-0600)]

<faizan> that mean it should be (netid=

Unknown macro: {0}

)


[15:17:33 CST(-0600)]

<jayshao> uid=

Unknown macro: {0}

for RULink, I think


[15:18:10 CST(-0600)] <faizan> you are right I just checked in the ldap it is uid
[15:23:44 CST(-0600)] <faizan> ERIC ~@ we got it working
[15:24:12 CST(-0600)] <EricDalquist> YAY!
[15:24:20 CST(-0600)] <faizan> YAHOOOOOOOOOOOO
[15:24:22 CST(-0600)] <faizan> hahaha
[15:24:36 CST(-0600)] <EricDalquist> I'll have a uP3 patch for you to allow null attributes through shortly
[15:24:37 CST(-0600)] <faizan> it only gave me three values my name and the email address
[15:24:47 CST(-0600)] <faizan> ok
[15:24:55 CST(-0600)] <EricDalquist> well those are the only three you mapped to the portlet's user attributes
[15:24:58 CST(-0600)] <faizan> Should we post a message about this on the dev list
[15:25:15 CST(-0600)] <EricDalquist> you should be able to edit the portlet application in the portlet manager and do some dynamic mappings
[15:25:46 CST(-0600)] <faizan> let me try that
[15:26:26 CST(-0600)] <EricDalquist> then you won't need the special mappings in your person-directory.xml
[15:26:40 CST(-0600)] <EricDalquist> you just tell uPortal how the portlet's attributes and the portal's attributes map to each other
[15:26:51 CST(-0600)] <faizan> really
[15:26:57 CST(-0600)] <EricDalquist> yup
[15:27:26 CST(-0600)] <EricDalquist> there will eventually be the same functionality for portlet states, window modes and security roles
[15:27:52 CST(-0600)] <faizan> What was the problem that fixed by your patch
[15:28:34 CST(-0600)] <EricDalquist> the problem that the patch I'm working on fixes is that attributes that come back from PD with a null value are not included in the Map for the portlet
[15:28:47 CST(-0600)] <EricDalquist> what should happen is the attribute is in the Map for the portlet with a null value
[15:29:37 CST(-0600)] <faizan> I was asking about the previous patch
[15:29:40 CST(-0600)] <jayshao> so it works?
[15:29:47 CST(-0600)] <faizan> yes 100%
[15:29:57 CST(-0600)] <EricDalquist> oh
[15:30:15 CST(-0600)] <faizan> Eric I think I will post the message to dev list it is important to let others know about this effort
[15:30:27 CST(-0600)] <EricDalquist> the big uP3 patch included this mapping logic, the configuration was already there
[15:30:33 CST(-0600)] <EricDalquist> sounds like a great plan faizan
[15:30:43 CST(-0600)] <EricDalquist> I really appreaciate you guys getting this setup
[15:31:10 CST(-0600)] <faizan> We are with you
[15:31:22 CST(-0600)] <faizan> one quick question
[15:31:46 CST(-0600)] <EricDalquist> ok
[15:31:50 CST(-0600)] <faizan> do I need to add dynamic attributes as preferences
[15:32:08 CST(-0600)] <EricDalquist> oh ... they are configured on the portlet application not the portlet
[15:32:37 CST(-0600)] <faizan> I am confused
[15:32:50 CST(-0600)] <faizan> you mean portlet.xml
[15:32:53 CST(-0600)] <EricDalquist> so
[15:32:59 CST(-0600)] <EricDalquist> in the portlet manager
[15:33:08 CST(-0600)] <EricDalquist> click the Manage Portlet Applications button
[15:33:30 CST(-0600)] <EricDalquist> then click on the User Attributes portlet application
[15:33:39 CST(-0600)] <jayshao> this gets to my confusion too.
[15:33:40 CST(-0600)] <EricDalquist> one of the tabs on the left should be for user attributes
[15:33:43 CST(-0600)] <EricDalquist> yeah
[15:33:51 CST(-0600)] <jayshao> so we have deployed portlets
[15:33:53 CST(-0600)] <EricDalquist> this whole thing is ugly
[15:34:03 CST(-0600)] <jayshao> which map one-to-many to a number of "portlet applications"
[15:34:04 CST(-0600)] <EricDalquist> A portlet.xml represents a portlet application
[15:34:21 CST(-0600)] <EricDalquist> there can be many portlets defined in one portlet.xml those are portlets
[15:34:21 CST(-0600)] <jayshao> which are user subscribeable instances of a particular portlet?
[15:34:37 CST(-0600)] <jayshao> right
[15:34:56 CST(-0600)] <EricDalquist> portlets are subscribable
[15:35:40 CST(-0600)] <jayshao> ok... so your PortletApplication basically maps a portlet defined in a portlet.xml?
[15:35:51 CST(-0600)] <jayshao> or is the WAR file?
[15:35:56 CST(-0600)] <EricDalquist> it is the WAR file
[15:36:20 CST(-0600)] <jayshao> k. so if I have multiple portlets defined in one WAR in portlets.xml
[15:36:26 CST(-0600)] <jayshao> those show up as multiple portlets
[15:36:36 CST(-0600)] <jayshao> under the "Portlet Application"
[15:36:41 CST(-0600)] <jayshao> yes?
[15:36:41 CST(-0600)] <EricDalquist> yup
[15:36:52 CST(-0600)] <jayshao> okay... so when I want to add another instance of a webproxy...
[15:37:02 CST(-0600)] <jayshao> I add another portlet under the WebProxyPortlet application?
[15:37:12 CST(-0600)] <jayshao> which is effectively the same as editing the portlet.xml to add another portlet?
[15:37:18 CST(-0600)] <jayshao> except layered in by uP3?
[15:37:20 CST(-0600)] <jayshao> yes?
[15:37:21 CST(-0600)] <EricDalquist> yeah
[15:37:45 CST(-0600)] <EricDalquist> you're adding another portlet definition which is associated with the portlet application definition you added it from
[15:37:51 CST(-0600)] <jayshao> okay, so if I want multiple subscribeable portlets I define multiple portlets
[15:38:03 CST(-0600)] <jayshao> what if I wanted to deploy multiple instances with different preferences?
[15:38:04 CST(-0600)] <EricDalquist> we really need some discussion and help on simplifying the underlying code
[15:38:09 CST(-0600)] <EricDalquist> same thing
[15:38:14 CST(-0600)] * esm agrees
[15:38:22 CST(-0600)] <esm> its complicated
[15:38:31 CST(-0600)] <esm> s/ts/t's/
[15:38:40 CST(-0600)] <jayshao> heh
[15:38:49 CST(-0600)] <EricDalquist> the reason the portlet applications are there is some information, user attributes, window states, portlet modes, security roles, are defined for all portlets in one portlet.xml
[15:38:49 CST(-0600)] <jayshao> so in the GUI, if I click on the hyperlink for a PortletApplication
[15:38:58 CST(-0600)] <EricDalquist> you are editing that application
[15:39:09 CST(-0600)] <jayshao> ahh... how do I add another portlet under it?
[15:39:19 CST(-0600)] <EricDalquist> so if you have the following:
[15:39:26 CST(-0600)] <EricDalquist> WebProxyPortlet
[15:39:30 CST(-0600)] <EricDalquist> +---WebProxyPortlet
[15:39:40 CST(-0600)] <EricDalquist> the top entry is the app
[15:40:11 CST(-0600)] <EricDalquist> the bottom entry is a portlet deployment, click the + icon on the far right of the second entry to create a new WebProxyPortlet portlet definition
[15:40:37 CST(-0600)] <EricDalquist> I never even thought about how ugly this was until I needed to explain it (smile)
[15:40:46 CST(-0600)] <esm> yeah the abstraction leaks i think
[15:40:50 CST(-0600)] <EricDalquist> yeah
[15:41:15 CST(-0600)] <faizan> Thanks for explaining it
[15:41:17 CST(-0600)] <EricDalquist> I guess the question is do we need to expose the portlet application portion
[15:41:20 CST(-0600)] <esm> right
[15:41:31 CST(-0600)] <EricDalquist> or do we just do that behind the scenes
[15:41:33 CST(-0600)] <esm> e.g. the pluto OM doesn't map well to end-user stuff
[15:41:43 CST(-0600)] <EricDalquist> and have a 1 to 1 maping of portAppDefs to portDefs
[15:42:01 CST(-0600)] <jayshao> ahhh
[15:42:13 CST(-0600)] <EricDalquist> that could end up being a resource waste if you have hundreds of portlets though
[15:42:33 CST(-0600)] <EricDalquist> especially if your portal is mainly made up of WebProxy & XSLT
[15:43:13 CST(-0600)] <esm> hm
[15:43:45 CST(-0600)] <EricDalquist> plus do you really want to re-map your user attributes every time you publish a portlet from the same app
[15:44:11 CST(-0600)] <EricDalquist> I feel this needs to be a multi day meeting with devs and UI folks
[15:45:05 CST(-0600)] <esm> si. it may be helpful to have a thin layer between the framework and the pluto om, which may be especially as you go thru the pluto upgrade process
[15:45:17 CST(-0600)] <esm> especially helpful*
[15:45:37 CST(-0600)] <EricDalquist> hrm
[15:45:44 CST(-0600)] <EricDalquist> what would that layer do?
[15:46:11 CST(-0600)] * esm grins as he hasn't looked at the code
[15:46:15 CST(-0600)] <EricDalquist> (smile)
[15:47:04 CST(-0600)] <esm> i'm thinking that the attribute mapping, for example, could be a framework object that maps to portletappdef?
[15:47:06 CST(-0600)] <esm> i dunno
[15:47:27 CST(-0600)] <esm> i should really install this thing
[15:47:36 CST(-0600)] <EricDalquist> lol
[15:47:54 CST(-0600)] <esm> <-- pay no attention to this guy
[15:56:17 CST(-0600)] <jayshao> so - getting back to the question of how to have multiple webproxy portlets
[15:56:52 CST(-0600)] <EricDalquist> (smile)
[15:57:04 CST(-0600)] <EricDalquist> ok, lets try walking through this
[15:57:07 CST(-0600)] <jayshao> k
[15:57:11 CST(-0600)] <EricDalquist> in just one minute (smile)
[15:58:16 CST(-0600)] <jayshao> k
[15:59:59 CST(-0600)] <EricDalquist> ok
[16:00:02 CST(-0600)] <EricDalquist> so go to the portlet manager
[16:00:41 CST(-0600)] <EricDalquist> select "Manage portlet applications"
[16:01:04 CST(-0600)] <jayshao> think I managed one
[16:01:20 CST(-0600)] <jayshao> although the title still says "Authenticated Web Proxy"
[16:01:38 CST(-0600)] <EricDalquist> on the indented WebProxyPortlet click the + icon on the far right
[16:01:44 CST(-0600)] <EricDalquist> thats should create a new WebProxyPortlet
[16:01:52 CST(-0600)] <jayshao> k.
[16:02:55 CST(-0600)] <jayshao> k
[16:02:56 CST(-0600)] <faizan> Guys I will be leaving. I have a squash match tonight
[16:03:08 CST(-0600)] <faizan> I have posted the message on dev list
[16:03:17 CST(-0600)] <faizan> should I post it also on user list
[16:03:22 CST(-0600)] <EricDalquist> sure
[16:03:39 CST(-0600)] <jayshao> I'm thinking keep it to the dev list for now
[16:03:41 CST(-0600)] <faizan> ok I am going to post same message on user list
[16:03:47 CST(-0600)] <jayshao> post a summary to the user list around the end of the week
[16:03:53 CST(-0600)] <jayshao> of where we've got, etc
[16:03:56 CST(-0600)] <EricDalquist> that sounds better
[16:04:05 CST(-0600)] <jayshao> did you check in your changes?
[16:04:13 CST(-0600)] <faizan> Actually the message more like marketing type
[16:04:18 CST(-0600)] <faizan> check it first
[16:04:36 CST(-0600)] <faizan> I am going to do right now and then I will be gone
[16:04:40 CST(-0600)] <jayshao> k.
[16:05:04 CST(-0600)] <jayshao> I still think post the message to developers and follow up with an overall, maybe weekly summary to users
[16:05:49 CST(-0600)] <faizan> allright I will leave it as Jason suggested
[16:07:36 CST(-0600)] <faizan> good night
[16:07:50 CST(-0600)] <EricDalquist> night
[16:08:27 CST(-0600)] <jayshao> night
[16:08:34 CST(-0600)] <jayshao> k. I was able to add some webproxy portlets
[16:08:40 CST(-0600)] <EricDalquist> cool
[16:08:58 CST(-0600)] <esm> configuring now... lesse if i can get it installed by 5:30
[16:09:03 CST(-0600)] <esm> (smile)
[16:09:16 CST(-0600)] <EricDalquist> lol
[16:09:22 CST(-0600)] <EricDalquist> hopefully it won't take that long
[16:09:31 CST(-0600)] <esm> i gotta download mysql drivers etc
[16:09:33 CST(-0600)] <EricDalquist> ah
[16:09:35 CST(-0600)] <esm> mirror site is slow
[16:09:41 CST(-0600)] <EricDalquist> oh and you're EST right?
[16:09:45 CST(-0600)] <esm> yeah
[16:09:48 CST(-0600)] <EricDalquist> I'm thinking it is only 4:08
[16:09:49 CST(-0600)] <esm> gmt+5 now iirc
[16:09:56 CST(-0600)] <jayshao> there's that whole DBLoader thing to get right too...
[16:10:07 CST(-0600)] <EricDalquist> uhg
[16:10:09 CST(-0600)] * esm plugs his ears
[16:10:13 CST(-0600)] <EricDalquist> I can't wait for that to go away
[16:10:46 CST(-0600)] <jayshao> heh
[16:10:55 CST(-0600)] <jayshao> so – one of my portlets is stack tracing
[16:11:02 CST(-0600)] <jayshao> is * not a good value for the url rewriting?
[16:11:16 CST(-0600)] <EricDalquist> needs to be a valid regex
[16:11:19 CST(-0600)] <EricDalquist> .*
[16:11:47 CST(-0600)] <jayshao> ahhh... right...
[16:13:07 CST(-0600)] <jayshao> hmm... NPE somewhere?
[16:13:15 CST(-0600)] <jayshao> lessee if I take the rewriting out...
[16:13:46 CST(-0600)] <EricDalquist> http://developer.ja-sig.org/projects/webproxyportlet/configuration.html
[16:14:06 CST(-0600)] <EricDalquist> that top set of 5 attributes is a minimal config
[16:14:36 CST(-0600)] <EricDalquist> the sPortletUrl and sListType prefs need to have the same number of values
[16:14:43 CST(-0600)] <EricDalquist> sorry
[16:14:49 CST(-0600)] <EricDalquist> sPortletState not sListType
[16:14:58 CST(-0600)] <jayshao> ahhh... gotcha.
[16:15:02 CST(-0600)] <EricDalquist> so the sPortletUrl and sPortletState prefs need to have the same number of values
[16:15:06 CST(-0600)] <jayshao> well, it at leasts renders without it
[16:15:09 CST(-0600)] <jayshao> k. makes sense
[16:15:25 CST(-0600)] <jayshao> still says "Authenticated Web Proxy" even though I provided titles though
[16:15:40 CST(-0600)] <EricDalquist> in the layout?
[16:15:44 CST(-0600)] <jayshao> yeah.
[16:16:04 CST(-0600)] <EricDalquist> yeah there are still some issues there related to locale resolution
[16:16:21 CST(-0600)] <EricDalquist> there might be a jira issue for that already
[16:16:25 CST(-0600)] <EricDalquist> if not can you create one?
[16:16:34 CST(-0600)] <jayshao> k.
[16:16:54 CST(-0600)] <jayshao> so... if I want to add these definitions straight into data.xml - what tables do I need to touch?
[16:17:42 CST(-0600)] <EricDalquist> port_def
[16:17:46 CST(-0600)] <EricDalquist> port_ent
[16:17:48 CST(-0600)] <EricDalquist> port_win
[16:17:52 CST(-0600)] <EricDalquist> port_pref
[16:17:55 CST(-0600)] <EricDalquist> port_pref_val
[16:18:00 CST(-0600)] <EricDalquist> and the layouts
[16:18:07 CST(-0600)] <jayshao> ahh... the layouts...
[16:18:29 CST(-0600)] <EricDalquist> so ... there is this nice tree of portlet objects, I'll try to describe it via IRC
[16:18:40 CST(-0600)] <EricDalquist> a portlet.xml is equal to a PortAppDeployment
[16:18:56 CST(-0600)] <EricDalquist> it contains multiple PortDeps (one for each <portlet> tag in it)
[16:19:18 CST(-0600)] <EricDalquist> the portlet manager creates a PortAppDefinition based on a PortAppDep
[16:19:28 CST(-0600)] <jayshao> k
[16:19:34 CST(-0600)] <EricDalquist> the portlet manager creates a PortDef based on a PortAppDef and PortDep
[16:19:50 CST(-0600)] <EricDalquist> when you subscribe to a portlet the following is created:
[16:20:10 CST(-0600)] <EricDalquist> a PortAppEnt based on the PortAppDef and your UserId (if one does not already exist)
[16:20:36 CST(-0600)] <EricDalquist> a PortEnt based on the PortAppEnt and PortDef
[16:20:43 CST(-0600)] <EricDalquist> a PortWin based on the PortEnt
[16:20:52 CST(-0600)] <EricDalquist> lots of fun huh?
[16:21:04 CST(-0600)] <EricDalquist> so Deployment objects represent file system information (portlet.xml)
[16:21:26 CST(-0600)] <EricDalquist> Definitions represent administrative configurations of Deployments
[16:21:39 CST(-0600)] <EricDalquist> Entities are subscriptions to Defnitions by a User
[16:21:48 CST(-0600)] <EricDalquist> and Windows are views into an Entity
[16:22:08 CST(-0600)] <EricDalquist> in theory you could have multiple Windows for one Entity, there is currently no way to do that (and probably never will be)
[16:22:15 CST(-0600)] <EricDalquist> confused yet?
[16:22:27 CST(-0600)] <esm> i think there's a diagram on pluto's site
[16:22:36 CST(-0600)] <EricDalquist> that would be handy
[16:22:44 CST(-0600)] <esm> (i don't think it is good)
[16:23:40 CST(-0600)] <esm> http://portals.apache.org/pluto/images/v101/Relations.jpg from http://portals.apache.org/pluto/v101/developer/integrate.html
[16:23:49 CST(-0600)] <jayshao> k
[16:23:53 CST(-0600)] <jayshao> I think I have the gist.
[16:23:55 CST(-0600)] <esm> sec 3.3 is the portlet om
[16:24:04 CST(-0600)] <jayshao> so... port_def contains administratively deployed portlets
[16:24:13 CST(-0600)] <jayshao> port_ent contains user subscribed portlet instances
[16:24:16 CST(-0600)] <EricDalquist> yeah
[16:24:29 CST(-0600)] <EricDalquist> and port_win contains the windows that are references by the layouts
[16:24:33 CST(-0600)] <jayshao> port_win represents window level view settings - e.g. you could have 2 windows showing different views on the same portlets
[16:24:40 CST(-0600)] <EricDalquist> yup
[16:24:43 CST(-0600)] <jayshao> like a selector & a view pane or something
[16:24:46 CST(-0600)] <EricDalquist> yup
[16:24:56 CST(-0600)] <jayshao> currently what's split between port_ent & port_win
[16:24:57 CST(-0600)] <EricDalquist> windows track request parameters, state & mode
[16:25:09 CST(-0600)] <EricDalquist> entity track user modified portlet preferences
[16:25:24 CST(-0600)] <jayshao> so port_win covers minimized state, view/edit, etc.
[16:25:28 CST(-0600)] <EricDalquist> yeah
[16:25:34 CST(-0600)] <jayshao> so I could edit that to force a portlet to start minimized
[16:25:41 CST(-0600)] <EricDalquist> and the last set of request parameters sent to the portlet (its state)
[16:25:47 CST(-0600)] <EricDalquist> in theory
[16:25:50 CST(-0600)] <jayshao> is that persisted by default?
[16:25:56 CST(-0600)] <EricDalquist> although I don't think our UI deals nicely with that right now
[16:26:00 CST(-0600)] <EricDalquist> no
[16:26:09 CST(-0600)] <jayshao> port_pref & port_pref_val are the configured preferences for a portlet?
[16:26:16 CST(-0600)] <EricDalquist> I actually tried starting a portlet in minimized
[16:26:28 CST(-0600)] <EricDalquist> the portlet code executes in the correct state
[16:26:50 CST(-0600)] <EricDalquist> there is part of the layout pipeline that needs to be updated to make sure the layout is getting the right attributes
[16:27:13 CST(-0600)] <EricDalquist> right now that code is event based, it changes the values on the portlet state/mode change events
[16:27:24 CST(-0600)] <jayshao> ahh..
[16:27:36 CST(-0600)] <jayshao> so – port_pref & port_pref_val are the configured preferences for a portlet? not user modifications though.
[16:27:43 CST(-0600)] <EricDalquist> both
[16:27:59 CST(-0600)] <jayshao> how are they separated/keyed?
[16:28:00 CST(-0600)] <EricDalquist> if you look at port_pref there is a port_def_id column and a port_ent_id column
[16:28:17 CST(-0600)] <jayshao> ahhh... so I can target either the template, or a particular user
[16:28:22 CST(-0600)] <EricDalquist> yup
[16:28:25 CST(-0600)] <jayshao> based on the port_ent_id
[16:28:34 CST(-0600)] <EricDalquist> yup
[16:28:46 CST(-0600)] <jayshao> and layouts... hmmm...
[16:29:43 CST(-0600)] <EricDalquist> every time I have to go through there it makes me want to write the import/export tools
[16:29:46 CST(-0600)] <jayshao> well, that looks straightforward
[16:29:50 CST(-0600)] <jayshao> minus the CDATA
[16:30:07 CST(-0600)] <EricDalquist> but I need to start a discussion about what those XML files should look like
[16:30:12 CST(-0600)] <jayshao> heh
[16:30:22 CST(-0600)] <EricDalquist> the CDATA in the layout is just to allow those <sequence> tags to be executed
[16:30:25 CST(-0600)] <jayshao> maybe we can findout what jetspeed/liferay use and crib theirs?
[16:30:28 CST(-0600)] <jayshao> (wink)
[16:30:32 CST(-0600)] <EricDalquist> (smile)
[16:30:37 CST(-0600)] <EricDalquist> it would be good to go look
[16:30:49 CST(-0600)] <jayshao> would give us import/export from competing projects too (smile)
[16:31:08 CST(-0600)] <jayshao> so if I add these to the template user, will they show up one other users layouts?
[16:31:15 CST(-0600)] <jayshao> If I add user entries & permissions?
[16:31:24 CST(-0600)] <EricDalquist> yes
[16:31:38 CST(-0600)] <EricDalquist> as long as the user doesn't have their own layout already
[16:31:48 CST(-0600)] <jayshao> right - SLM basics
[16:31:56 CST(-0600)] <deuce> go slm
[16:32:17 CST(-0600)] <jayshao> who's dalman?
[16:32:31 CST(-0600)] <EricDalquist> no idea
[16:32:52 CST(-0600)] <EricDalquist> a /who doesn't help much (smile)
[16:33:25 CST(-0600)] <jayshao> I dig the hostname though
[16:33:31 CST(-0600)] <EricDalquist> yeah
[16:33:45 CST(-0600)] <jayshao> okay – I think I'm going to tackle this tomorrow morning
[16:33:52 CST(-0600)] <EricDalquist> sounds good
[16:33:59 CST(-0600)] <jayshao> I'm taking a 1/2 day though, but I'll ping you to let you know how I make out
[16:34:03 CST(-0600)] <EricDalquist> ok
[16:34:06 CST(-0600)] <EricDalquist> I am too actually
[16:34:08 CST(-0600)] <jayshao> many db refreshes later...
[16:34:12 CST(-0600)] <jayshao> morning or afternoon?
[16:34:16 CST(-0600)] <EricDalquist> I'll be around until about 12:30pm CST
[16:34:21 CST(-0600)] <EricDalquist> then back on in the evening for a bit
[16:34:28 CST(-0600)] <jayshao> k. I know Faizan might not be in until afternoon
[16:34:33 CST(-0600)] <jayshao> hope he checked in his changes...
[16:34:45 CST(-0600)] <jayshao> then we can look at getting GAPS configured...
[16:34:52 CST(-0600)] <EricDalquist> yup
[16:35:01 CST(-0600)] <EricDalquist> I'll see about getting that re-built tonight if Dan doesn't first
[16:35:12 CST(-0600)] <jayshao> sweet, that would be great
[16:35:17 CST(-0600)] <jayshao> myrutgers3 - here we come
[16:35:52 CST(-0600)] <EricDalquist> (big grin)
[16:36:12 CST(-0600)] <jayshao> well, myrutgers3 .8pre anyway...
[16:36:28 CST(-0600)] <EricDalquist> lol
[16:36:31 CST(-0600)] <EricDalquist> have a good night
[16:36:56 CST(-0600)] <jayshao> u2
[16:36:58 CST(-0600)] <jayshao> later
[16:39:39 CST(-0600)] <esm> so primary key lengths are limited to 500 bytes in mysql < 4.2.1 so having trouble with initportal
[16:39:52 CST(-0600)] <esm> er < 4.1.2
[16:39:52 CST(-0600)] <EricDalquist> hrm
[16:39:59 CST(-0600)] <esm> it is in gap
[16:40:03 CST(-0600)] <esm> taking a deeper look
[16:40:03 CST(-0600)] <EricDalquist> ok
[16:41:53 CST(-0600)] <EricDalquist> I'm not sure where the GAP tables are created from :
[16:46:12 CST(-0600)] <EricDalquist> I'll do some digging too
[16:49:58 CST(-0600)] <esm> its spring loaded
[16:50:18 CST(-0600)] <esm> starting wtih o.j.gap.db.DbInit
[16:50:46 CST(-0600)] <EricDalquist> uhg he has the creates hard coded in the java code
[16:50:47 CST(-0600)] <EricDalquist> no fun
[16:51:03 CST(-0600)] <esm> mysql> show tables like '%GAP%';
[16:51:03 CST(-0600)] <esm> ------------------------------
[16:51:03 CST(-0600)] <esm> | Tables_in_uportaldev (%GAP%) |
[16:51:03 CST(-0600)] <esm> ------------------------------
[16:51:03 CST(-0600)] <esm> | GAP_ENTITY_TYPE |
[16:51:04 CST(-0600)] <esm> | GAP_INVALIDATION |
[16:51:06 CST(-0600)] <esm> | GAP_LOCK |
[16:51:08 CST(-0600)] <esm> | GAP_SEQUENCE |
[16:51:09 CST(-0600)] <esm> ------------------------------
[16:51:12 CST(-0600)] <esm> 4 rows in set (0.00 sec)
[16:51:14 CST(-0600)] <esm> mysql>
[16:51:16 CST(-0600)] <esm> yeah
[16:51:35 CST(-0600)] <EricDalquist> AbstractJdbcEntityInvalidationDao.java
[16:51:35 CST(-0600)] <EricDalquist> AbstractJdbcEntityTypeDao.java
[16:51:35 CST(-0600)] <EricDalquist> AbstractJdbcEntityLockDao.java
[16:51:35 CST(-0600)] <EricDalquist> AbstractJdbcIncrementingSequenceDao.java
[16:52:16 CST(-0600)] * EricDalquist thinks a hibernate DAO layer should be coming for this
[16:57:28 CST(-0600)] * esm nods
[16:57:52 CST(-0600)] <EricDalquist> I'll see about fixing that later tonight
[16:59:19 CST(-0600)] <esm> the error is throw from one of the classes that implement getCreateTableSql
[16:59:53 CST(-0600)] <esm> likely this is a mysql-specific issue
[16:59:56 CST(-0600)] <EricDalquist> Can you create an issue http://www.ja-sig.org/issues/ against the GAP project and assign it to me?
[16:59:57 CST(-0600)] <EricDalquist> probably
[17:00:08 CST(-0600)] <EricDalquist> and include the stack trace?
[17:00:29 CST(-0600)] <esm> sure
[17:00:37 CST(-0600)] <EricDalquist> thanks
[17:00:44 CST(-0600)] <esm> thank you (wink)
[17:00:59 CST(-0600)] <EricDalquist> you can always try the quick start for now (smile)
[17:01:09 CST(-0600)] * esm nods
[17:02:30 CST(-0600)] <esm> hmm quick question before i create the issue
[17:02:36 CST(-0600)] <esm> i see this further up in my scrollback
[17:02:59 CST(-0600)] <esm> [java] WARN [main] dbloader.DbLoader Dec/12 17:51:21.985 - No mapping found for database with information:
[17:02:59 CST(-0600)] <esm> [java] <dbName>MySQL</dbName>
[17:02:59 CST(-0600)] <esm> [java] <dbVersion>4.0.21-standard-log</dbVersion>
[17:02:59 CST(-0600)] <esm> [java] <driverName>MySQL-AB JDBC Driver</driverName>
[17:02:59 CST(-0600)] <esm> [java] <driverVersion>mysql-connector-java-3.1.14 ( $Date: 2006-10-18 17:40:15 +0200 (Wed, 18 Oct 2006) $, $Revision: 5888 $ )</driverVersion>
[17:04:05 CST(-0600)] * esm (n=esm@esm.qis.net) has joined ##uportal
[17:04:24 CST(-0600)] <esm> silly flood protection
[17:04:30 CST(-0600)] <EricDalquist> (smile)
[17:04:30 CST(-0600)] <esm> not condusive to copy and paste
[17:04:37 CST(-0600)] <EricDalquist> well I got the jist
[17:04:38 CST(-0600)] <esm> um so anyway is the lack of the mapping a problem
[17:04:43 CST(-0600)] <EricDalquist> that shouldn't affect the GAP stuff
[17:04:49 CST(-0600)] <esm> i have a feeling that the gap stuff would still happen
[17:04:50 CST(-0600)] <EricDalquist> since it has its own DBLoader code
[17:04:51 CST(-0600)] <esm> yeah
[17:04:52 CST(-0600)] <esm> ok
[17:05:05 CST(-0600)] <EricDalquist> it may affect the uP3 dbloader though
[17:08:12 CST(-0600)] <esm> yeah. so what GAP versio nshould I pick: unknown or 1.0 Alpha
[17:08:22 CST(-0600)] <esm> nothing is tagged in GAP svn and no version indigator on the jar in up3
[17:08:33 CST(-0600)] <EricDalquist> unknown
[17:08:34 CST(-0600)] <EricDalquist> I guess
[17:08:35 CST(-0600)] <esm> kk
[17:18:57 CST(-0600)] <esm> k I'm out will dig more tomorrow - i suspect a unicode issue/mysql bug but will see
[17:19:07 CST(-0600)] <esm> issue is GAP-28
[17:19:17 CST(-0600)] <EricDalquist> thanks, catch you tomorrow
[17:21:31 CST(-0600)] <esm> np ttyl
[18:10:02 CST(-0600)] * EricDalquist (n=dalquist@76.210.63.165) has joined ##uportal

  • No labels