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 109 Current »

[09:42:48 CDT(-0500)] <RickardAtWork> Quick question. Is it possible to include external CSS files in skin.xml? I've tried <css>http://www.example.com/test.css</css>, but that turns into /uPortal/media/skins/universality/lu/http://www.example.com/test.css
[09:43:57 CDT(-0500)] <RickardAtWork> I looked at the doctype, but there doesn't appear to be any provision for including an external stylesheet.
[09:45:58 CDT(-0500)] <EricDalquist> RickardAtWork: I don't think so
[09:46:02 CDT(-0500)] <EricDalquist> it supports absolute URLs
[09:46:09 CDT(-0500)] <EricDalquist> on the same domain
[09:46:12 CDT(-0500)] <EricDalquist> but not external domains
[09:46:15 CDT(-0500)] <RickardAtWork> Ok
[09:46:20 CDT(-0500)] <EricDalquist> seems like a really good improvement though
[09:46:28 CDT(-0500)] <RickardAtWork> Yea
[09:46:37 CDT(-0500)] <RickardAtWork> Not sure how it would work with aggregation though.
[09:46:39 CDT(-0500)] <EricDalquist> could you create a feature request here: https://issues.jasig.org/browse/UP
[09:46:44 CDT(-0500)] <RickardAtWork> Sure
[09:46:47 CDT(-0500)] <EricDalquist> well it would simply be passed through
[09:46:51 CDT(-0500)] <RickardAtWork> Ok
[09:46:55 CDT(-0500)] <RickardAtWork> I'll do that.
[09:46:57 CDT(-0500)] <EricDalquist> CSS files can't have their path changed at all
[09:47:09 CDT(-0500)] <EricDalquist> since they can do CSS file relative imports of other CSS, images, etc
[09:47:35 CDT(-0500)] <RickardAtWork> True
[09:48:17 CDT(-0500)] <EricDalquist> the aggregator currently combines CSS files that are in the same directory and listed next to each other
[09:48:46 CDT(-0500)] <EricDalquist> so you get different aggregation results for "foo/a.css, foo/b.css, bar/d.css" versus "foo/a.css, bar/d.css, foo/b.css"
[09:48:56 CDT(-0500)] <EricDalquist> the first example gets you 2 CSS files in the output
[09:48:56 CDT(-0500)] <RickardAtWork> Ah, ok.
[09:49:00 CDT(-0500)] <EricDalquist> the second gets your 3
[09:49:13 CDT(-0500)] <EricDalquist> if we didn't honor CSS file ordering styles could change because of overrides
[09:49:27 CDT(-0500)] <EricDalquist> so when you're modifying that file you want to group CSS files by path as much as possible
[09:49:33 CDT(-0500)] <EricDalquist> JS on the other hand doesn't matter
[09:49:40 CDT(-0500)] <EricDalquist> all the JS files are globed into a single file
[09:49:55 CDT(-0500)] <EricDalquist> since for JS all the paths are relative to the page's URL not the JS file's URL
[09:52:28 CDT(-0500)] <RickardAtWork> Which "component" do you suggest I pick for the feature request?
[09:52:37 CDT(-0500)] <EricDalquist> you can leave that blank
[09:52:43 CDT(-0500)] <RickardAtWork> Ok
[09:58:10 CDT(-0500)] <RickardAtWork> https://issues.jasig.org/browse/UP-2887
[09:58:14 CDT(-0500)] <RickardAtWork> Enjoy (smile)
[10:02:26 CDT(-0500)] <EricDalquist> thanks!
[10:02:31 CDT(-0500)] <EricDalquist> I'll get it scheduled for the next release
[10:28:21 CDT(-0500)] <RickardAtWork> Is it possible to get uPortal to output markup that is a bit more tidy? It's kind of difficult to read markup that's on 5 kilobyte long lines. I've changed intent to yes in the xsl:output tag, but it doesn't appear to have any effect.
[10:28:43 CDT(-0500)] <EricDalquist> I don't think it is in 3.2
[10:28:54 CDT(-0500)] <EricDalquist> we have that ability in trunk but that isn't much help :/
[10:29:51 CDT(-0500)] <RickardAtWork> Ok
[10:30:01 CDT(-0500)] <RickardAtWork> I'll run it through tidy manually.
[10:30:36 CDT(-0500)] <athena> EricDalquist: i got import/export working via vanilla servlets friday afternoon
[10:30:43 CDT(-0500)] <EricDalquist> wow
[10:30:45 CDT(-0500)] <EricDalquist> neat
[10:30:51 CDT(-0500)] <athena> yeah
[10:31:02 CDT(-0500)] <athena> so just need to know how we want things to work
[10:31:03 CDT(-0500)] <EricDalquist> do we have permissions defining who can do import/export/delete
[10:31:07 CDT(-0500)] <athena> no
[10:31:09 CDT(-0500)] <athena> so that's one issue
[10:31:36 CDT(-0500)] <athena> in the future we should really figure out a way to have import/export run as the user who's logged in
[10:31:41 CDT(-0500)] <athena> rather than doing everything as the session user
[10:31:56 CDT(-0500)] <EricDalquist> so are they under /api/?
[10:32:03 CDT(-0500)] <athena> yes
[10:32:08 CDT(-0500)] <athena> haven't checked anything in yet
[10:32:16 CDT(-0500)] <athena> (hm, did the last os x update change ant?)
[10:32:36 CDT(-0500)] <EricDalquist> not sure ...
[10:32:43 CDT(-0500)] <EricDalquist> I have my own ant/maven installed
[10:32:48 CDT(-0500)] <athena> yeah, i thought i did
[10:32:48 CDT(-0500)] <athena> weird
[10:32:51 CDT(-0500)] <athena> oh well.
[10:32:54 CDT(-0500)] <athena> anyway, so import/export
[10:33:17 CDT(-0500)] <athena> it seems like longterm what we'd really want is for that portlet to make use of a set of REST services
[10:33:56 CDT(-0500)] <EricDalquist> yup
[10:34:00 CDT(-0500)] <athena> import/export in a running portal could really just mean getting the output from a REST entity service that outputs as xml, or doing a PUT on an XML document
[10:34:03 CDT(-0500)] <athena> that seem reasonable?
[10:34:09 CDT(-0500)] <EricDalquist> yes
[10:34:12 CDT(-0500)] <athena> ok
[10:34:15 CDT(-0500)] <EricDalquist> that seems very reasonable
[10:34:22 CDT(-0500)] <EricDalquist> and all that stuff translates into rest URLs nicely{color}
[10:34:26 CDT(-0500)] <athena> yeah

[10:34:37 CDT(-0500)] <athena> maybe something like /api/channel/weather.xml?
[10:34:54 CDT(-0500)] <EricDalquist> yeah
[10:35:00 CDT(-0500)] <EricDalquist> do we want to have the file extension?
[10:35:04 CDT(-0500)] <athena> maybe
[10:35:25 CDT(-0500)] <athena> seems like maybe it makes things easier if we decide we want this stuff as JSON in the future? dunno
[10:35:37 CDT(-0500)] <EricDalquist> ah yeah
[10:35:40 CDT(-0500)] <EricDalquist> that makes sense
[10:35:49 CDT(-0500)] <EricDalquist> just pull off the extension in the URL mapping
[10:36:15 CDT(-0500)] <athena> the REST templates support paths like that, which makes it pretty convenient
[10:36:48 CDT(-0500)]

<athena> just do /api/channel/

Unknown macro: {fname}

.xml and map fname as a @PathVariable


[10:36:55 CDT(-0500)] <EricDalquist> nice
[10:37:05 CDT(-0500)]

<EricDalquist> could you do /api/channel/

Unknown macro: {fname}

.

Unknown macro: {format}

[10:37:17 CDT(-0500)] <EricDalquist> and then we just tweak that extension for different formats?
[10:37:45 CDT(-0500)] <athena> well
[10:37:54 CDT(-0500)] <athena> i think we'd want one of the following:
[10:38:19 CDT(-0500)] <athena> 1. if we have really separate logic or different object formats for xml vs. json just separately map the paths to different methods
[10:38:24 CDT(-0500)] <athena> or preferably
[10:38:58 CDT(-0500)] <athena> 2. we wind up having the same base object, which has appropriate XML annotations, and we just use spring's content negotiating view resolver to use the same returned model to output either JSON or XML
[10:39:06 CDT(-0500)] <athena> we don't have a use case for the JSON yet, I don't think
[10:39:07 CDT(-0500)] <EricDalquist> got it
[10:39:08 CDT(-0500)] <EricDalquist> ok
[10:39:23 CDT(-0500)] <athena> we have the JSON list of portlets, but that's that crazy custom thing
[10:39:31 CDT(-0500)] <EricDalquist> yeah{color}
[10:40:21 CDT(-0500)] <athena> any thoughts about what we want to do for permissions? just a single import/export permission or ?

[10:40:36 CDT(-0500)] <athena> guess we could have a permission that targets each entity type
[10:40:39 CDT(-0500)] <EricDalquist> hrm
[10:40:48 CDT(-0500)] <EricDalquist> yeah that would probably be the most useful
[10:41:01 CDT(-0500)] <athena> really wish we were just relying on normal portal permissions for this stuff
[10:41:08 CDT(-0500)] <EricDalquist> oh do we want to be specific about create vs update?
[10:41:12 CDT(-0500)] <EricDalquist> can't we?
[10:41:20 CDT(-0500)] <athena> from inside the portal, our crn stuff really obscures a lot
[10:41:23 CDT(-0500)] <athena> well, not really
[10:41:34 CDT(-0500)] <athena> the existing import/export portlet code just calls the crn scripts
[10:41:41 CDT(-0500)] <athena> which run everything as the system user
[10:41:51 CDT(-0500)] <EricDalquist> (sad)
[10:41:57 CDT(-0500)] <athena> and don't do any permissions checking anyway
[10:41:58 CDT(-0500)] <athena> yeah
[10:42:31 CDT(-0500)] <athena> i really think eventually we'd be better off dropping some of this stuff in favor of having XML-annotated classes, or XML mappers, or something like that
[10:43:01 CDT(-0500)] <athena> and then let command-line import be a crn wrapper or whatever around that stuff, and not use crn much from within the running portal
[10:43:04 CDT(-0500)] <EricDalquist> right
[10:43:14 CDT(-0500)] <EricDalquist> I'd like to get to the point where we have XML annotated objects
[10:43:19 CDT(-0500)] <athena> yeaah
[10:43:32 CDT(-0500)] <EricDalquist> and the import uses XSLT to migrate from old data formats to new data forms
[10:43:33 CDT(-0500)] <athena> we'd still need a way to handle outdated import formats, of course
[10:43:37 CDT(-0500)] <athena> yes
[10:43:44 CDT(-0500)] <athena> i think that'd be great
[10:43:49 CDT(-0500)] <EricDalquist> get the XML, read the version attribute then run an XSL
[10:43:58 CDT(-0500)] <athena> not that the current setup hasn't been a huge improvement over nothing at all (smile)
[10:44:02 CDT(-0500)] <EricDalquist> right
[10:44:12 CDT(-0500)] <athena> but it'd be great to be able to use some of the nice new XML annotations and such
[10:44:26 CDT(-0500)] <athena> maybe we can slowly start moving stuff over in the background
[10:44:38 CDT(-0500)] <athena> like when we write the new portlet class
[10:45:15 CDT(-0500)] <EricDalquist> I haven't really played with those
[10:45:18 CDT(-0500)] <EricDalquist> where are they from?
[10:45:44 CDT(-0500)] <athena> hmm
[10:45:54 CDT(-0500)] <athena> i think a lot of the ones i've used are JAXB?
[10:45:58 CDT(-0500)] <EricDalquist> ah ok
[10:46:06 CDT(-0500)] <EricDalquist> oh I went through and fixed our xml escaping issues in trunk ... that was a few hours of pain :/
[10:46:16 CDT(-0500)] <athena> i saw - thanks for doing that (smile)
[10:46:23 CDT(-0500)] <EricDalquist> I have a note to email the dev list to be careful about that in the future
[10:46:26 CDT(-0500)] <athena> yeah
[10:46:42 CDT(-0500)] <athena> i think we'd previously been most concerned about stuff visible to end users
[10:46:50 CDT(-0500)] <athena> but better to handle it properly for everyone
[10:46:56 CDT(-0500)] <athena> esp with our new delegated stuff
[10:47:18 CDT(-0500)] <EricDalquist> yaeh
[10:47:43 CDT(-0500)] <EricDalquist> really anything that gets written to the page needs to be escaped
[10:47:52 CDT(-0500)] <EricDalquist> unless there is a very explicit need otherwise
[10:47:54 CDT(-0500)] <athena> yeah
[10:48:03 CDT(-0500)] <EricDalquist> I even wrapped things that I knew were numbers
[10:48:06 CDT(-0500)] <EricDalquist> better to be consistent
[10:48:11 CDT(-0500)] <athena> and it's annoying that you can default xml escaping for the c:out tag and such, but not for ${}
[10:48:22 CDT(-0500)] <athena> shawn bayern was kind of horrified about that, by the way (smile)
[10:48:44 CDT(-0500)] <RickardAtWork> Tip for viewing messy markup: https://addons.mozilla.org/en-US/firefox/addon/249/
[10:48:46 CDT(-0500)] <athena> better to just wrap it i guess - never know if a data type might change
[10:49:01 CDT(-0500)] <athena> looks like a nice mod RickardAtWork - thanks!
[10:49:11 CDT(-0500)] <RickardAtWork> It doesn't say in the description, but it has tidy build in.
[10:49:14 CDT(-0500)] <athena> i frequently use the web developer tools plugin to inspect HTML elements in the portal too
[10:51:11 CDT(-0500)] <RickardAtWork> Speaking of messy markup, the script tags created for js files from skin.xml have content (commented out CDATA blocks) even though they have the src attribute.
[10:51:21 CDT(-0500)] <RickardAtWork> For example: <script src="/ResourceServingWebapp/rs/jquery-plugins/cookie/1.0/jquery.cookie-1.0.min.js" type="text/javascript">
[10:51:25 CDT(-0500)] <RickardAtWork> </script>
[10:51:29 CDT(-0500)] <RickardAtWork> Er
[10:51:35 CDT(-0500)] <RickardAtWork> Wrong
[10:52:03 CDT(-0500)] <EricDalquist> yeah, that is an artifact of the XML -> HTML serializer
[10:52:19 CDT(-0500)] <EricDalquist> the JS should still load correctly
[10:52:22 CDT(-0500)] <RickardAtWork> Can't remember how to type a slash in IRC (smile)
[10:52:32 CDT(-0500)] <EricDalquist> just put a space before it
[10:52:43 CDT(-0500)] <RickardAtWork> Ok
[10:52:51 CDT(-0500)] <RickardAtWork> It works, but it's not very pretty.
[10:52:58 CDT(-0500)] <RickardAtWork> That is the JS includes.
[10:53:20 CDT(-0500)] <RickardAtWork> Then again, I'm extremely anal about these things.
[10:53:38 CDT(-0500)] <EricDalquist> (smile)
[10:54:00 CDT(-0500)] <EricDalquist> yeah the code that generates it has to stick a cdata space in there or the serializer writes out a self-closing script tag
[10:54:05 CDT(-0500)] <EricDalquist> which fails to load the JS on IE
[10:54:21 CDT(-0500)] <RickardAtWork> Ah, ok.
[10:59:48 CDT(-0500)] <athena> hmm, so speaking of permissions
[11:00:00 CDT(-0500)] <athena> i'd like to integrate the attribute swapper into the user management portlet
[11:00:23 CDT(-0500)] <athena> but it sounds like you guys have some permission-related use cases that you wanted to make sure we handledd
[11:00:35 CDT(-0500)] <EricDalquist> right
[11:00:43 CDT(-0500)] <EricDalquist> we have several of them published
[11:00:54 CDT(-0500)] <EricDalquist> with varying sets of attributes the target user can actually set
[11:01:02 CDT(-0500)] <EricDalquist> we do that via portlet preferences right now
[11:01:08 CDT(-0500)] <athena> is there a way we might be able to handle your use case with permissions rather than with portlet preferences?
[11:01:22 CDT(-0500)] <EricDalquist> yeah, the flow would need updating
[11:01:27 CDT(-0500)] <EricDalquist> but it would be reasonable I think
[11:01:34 CDT(-0500)] <EricDalquist> you'd have to be able to list the user attributes in the permission
[11:01:48 CDT(-0500)] <athena> well
[11:01:50 CDT(-0500)] <EricDalquist> entity X can modify attribute(s) Y
[11:02:11 CDT(-0500)] <athena> i think probably we're going to need to have a permission that encompasses viewing and editing particular attributes
[11:03:07 CDT(-0500)] <athena> i think we talked about having something like "entity X can view/modify user Y", combined with "entity X can view/modify user attribute Z"
[11:03:10 CDT(-0500)] <athena> (is that right?)
[11:03:20 CDT(-0500)] <EricDalquist> yeah
[11:03:35 CDT(-0500)] <athena> maybe we could similarly have something that sets some sort of "swap" permission on individual attributes?
[11:03:37 CDT(-0500)] <EricDalquist> are you thinking two different permissions? view & modify? or a combined perm?
[11:03:45 CDT(-0500)] <athena> two, i think?
[11:03:49 CDT(-0500)] <EricDalquist> ok good
[11:04:01 CDT(-0500)] <athena> figure we can set all of them to reasonable defaults
[11:04:03 CDT(-0500)] <EricDalquist> since like we would permission our help desk with view permissions
[11:04:13 CDT(-0500)] <EricDalquist> but we don't want them modifying or swapping anything
[11:04:15 CDT(-0500)] <athena> and hopefully w/ the new permissions portlet it gets easier to change them
[11:04:15 CDT(-0500)] <athena> yeah
[11:04:18 CDT(-0500)] <athena> that makes a lot of sense
[11:04:35 CDT(-0500)] <athena> so just having a "swap" permission for each attribute would do it?
[11:04:49 CDT(-0500)] <EricDalquist> yeah
[11:04:54 CDT(-0500)] <athena> ok (smile)
[11:05:05 CDT(-0500)] <athena> i think that's the only thing that uses the person lookup workflow right now
[11:05:40 CDT(-0500)] <athena> well, the only other thing besides the user management portlet
[11:05:57 CDT(-0500)] <athena> i'd kind of like to clean it up so that you don't wind up seeing the user attributes listed twice
[11:06:27 CDT(-0500)] <athena> (right now you see a page summarizing the user, then once you select the user, you see the user management portlet's main view for that user)
[11:06:51 CDT(-0500)] <athena> do you think it'd make sense to have a swap attributes button on the main user summary page for the user management portlet?
[11:06:53 CDT(-0500)] <EricDalquist> yeah
[11:06:59 CDT(-0500)] <athena> ok
[11:07:06 CDT(-0500)] <athena> if we do that i think we can eliminate that extra page
[11:07:11 CDT(-0500)] <EricDalquist> that's good
[11:07:12 CDT(-0500)] <EricDalquist> fewer clicks
[11:07:19 CDT(-0500)] <athena> and then hopefully eventually we can get some UE attention on the person selection workflow
[11:07:20 CDT(-0500)] <athena> yeah
[11:07:31 CDT(-0500)] <athena> well we could probably even do search and such via ajax if we wanted
[11:10:50 CDT(-0500)] <EricDalquist> yeah
[11:10:59 CDT(-0500)] <athena> do we have a JIRA already for moving the import/export portlet to spring webflow?
[11:11:11 CDT(-0500)] <EricDalquist> not yet
[11:11:17 CDT(-0500)] <athena> ok, i can create one
[11:11:40 CDT(-0500)] <EricDalquist> you saw that nickb got the fragment admin portlets switched over
[11:11:44 CDT(-0500)] <athena> yes (smile)
[11:11:45 CDT(-0500)] <athena> very nice
[11:13:15 CDT(-0500)] <athena> https://issues.jasig.org/browse/UP-2888
[11:13:50 CDT(-0500)] <athena> if we get some coop votes for that it might be a bit easier to finish it off
[11:13:56 CDT(-0500)] <EricDalquist> yeah
[11:21:45 CDT(-0500)] <athena> hm
[11:21:54 CDT(-0500)] <athena> person flow doesn't actually work anymore (tongue)
[11:22:35 CDT(-0500)] <EricDalquist> huh
[11:22:37 CDT(-0500)] <EricDalquist> that's no good
[11:22:40 CDT(-0500)] <athena> no
[11:23:04 CDT(-0500)] <athena> heh
[11:23:18 CDT(-0500)] <athena> think it's the result of the fn:escape stuff
[11:23:25 CDT(-0500)] <athena> http://localhost:8080/uPortal/p/user-administration.ctf5/max/action.uP?pltP__eventId=selectAndGo&amp;amp;pltP_execution=e1s3
[11:23:35 CDT(-0500)] <EricDalquist> yeah it could be
[11:23:37 CDT(-0500)] <athena> escaping URLs is probably a little over-zealous?
[11:23:39 CDT(-0500)] <EricDalquist> I tried to be careful
[11:23:42 CDT(-0500)] <EricDalquist> yes
[11:23:45 CDT(-0500)] <EricDalquist> they shouldn't be
[11:23:52 CDT(-0500)] <athena> ah ok, i can set those back then
[11:23:58 CDT(-0500)] <EricDalquist> but there are likely a few other places where I accidentally set it
[11:23:59 CDT(-0500)] <EricDalquist> yeah
[11:24:03 CDT(-0500)] <athena> no worries (smile)
[11:24:11 CDT(-0500)]

<EricDalquist> I did a regex search for $

Unknown macro: {.*}

esentially


[11:24:14 CDT(-0500)] <athena> ah
[11:24:19 CDT(-0500)] <EricDalquist> and had a regex replacement for matches
[11:24:27 CDT(-0500)] <athena> should probably make sure we do some testing in 3.2.x before we cut another release?
[11:24:28 CDT(-0500)] <EricDalquist> and went through each match to say yes/no
[11:24:37 CDT(-0500)] <EricDalquist> well 3.2 was A LOT easier
[11:24:42 CDT(-0500)] <EricDalquist> there were only about 100 matches
[11:24:44 CDT(-0500)] <athena> gotcha
[11:24:50 CDT(-0500)] <EricDalquist> in trunk there were 1020+ matches
[11:25:03 CDT(-0500)] <athena> eep.
[11:25:44 CDT(-0500)] <EricDalquist> yeah
[11:25:52 CDT(-0500)] <athena> well, i can go through and do some testing
[11:25:56 CDT(-0500)] <athena> found a lot of issues in this file
[11:26:09 CDT(-0500)] <EricDalquist> thanks ... yeah I've tested a bit
[11:26:16 CDT(-0500)] <athena> sure (smile)
[11:26:16 CDT(-0500)] <EricDalquist> but I know I haven't hit every JSP we have
[11:26:27 CDT(-0500)] <athena> probably don't want to be escaping tests either?
[11:27:11 CDT(-0500)] <EricDalquist> nope
[11:27:18 CDT(-0500)] <EricDalquist> sounds like I missed reviewing that file (tongue)
[11:27:21 CDT(-0500)] <athena> lol
[11:27:29 CDT(-0500)] <athena> it's not used by as much stuff anymore
[11:27:39 CDT(-0500)] <athena> so if you didn't try the user management portlet you might not have hit it
[11:28:49 CDT(-0500)] <athena> do we want to be escaping spring flow keys?
[11:28:58 CDT(-0500)] <EricDalquist> nope
[11:29:01 CDT(-0500)] <athena> ok
[11:29:11 CDT(-0500)] <EricDalquist> the only things that should be escaped are values written directly to the page
[11:29:17 CDT(-0500)] <athena> ok
[11:29:22 CDT(-0500)] <EricDalquist> url parameters, tests, urls shouldn't be
[11:29:33 CDT(-0500)] <EricDalquist> even arguments to other tags shouldn't be
[11:29:38 CDT(-0500)] <athena> right
[11:29:40 CDT(-0500)] <EricDalquist> it is up to the tag for esacpign
[11:29:42 CDT(-0500)] <athena> or variable assignments
[11:29:47 CDT(-0500)] <EricDalquist> yup
[11:29:53 CDT(-0500)] <EricDalquist> like all the spring: and form: tags do XML escaping
[11:30:02 CDT(-0500)] <athena> yeah
[11:30:20 CDT(-0500)] <EricDalquist> the thing I didn't review was making sure we are JS escaping all of the places we write into <script> blocks
[11:30:24 CDT(-0500)] <athena> oook that looks better
[11:30:30 CDT(-0500)] <athena> i can take a look at some of that
[11:41:42 CDT(-0500)] <EricDalquist> PeopleSoft's SOAP web service endpoints don't actually follow the SOAP spec ...
[11:41:45 CDT(-0500)] <EricDalquist> (sad)
[11:46:36 CDT(-0500)] <athena> oh ick (sad)
[11:46:46 CDT(-0500)] <EricDalquist> it returns HTTP 200 for faults
[11:47:14 CDT(-0500)] <athena> neat (tongue)
[11:47:53 CDT(-0500)] <EricDalquist> which means spring WS client doesn't know it is a fault
[11:47:57 CDT(-0500)] <athena> (sad)
[11:48:07 CDT(-0500)] <EricDalquist> also searching for a user record and getting no results is returned as a fault
[11:48:44 CDT(-0500)] <EricDalquist> wishes we could retroactively be like "No you don't actually support SOAP" and get some restitution for them not actually following through on that part of their spec
[11:49:23 CDT(-0500)] <athena> no kidding
[14:58:16 CDT(-0500)] <EricDalquist> hrm ... we may have just seen the issue with the guest user dissapearing ...
[15:03:21 CDT(-0500)] * EricDalquist cannot wait for all of our DB access to be via jpa
[15:03:26 CDT(-0500)] <EricDalquist> and have actual FK constraints
[15:10:06 CDT(-0500)] <athena> yes (smile)
[15:10:18 CDT(-0500)] <athena> so how much do we have left on JSR-286 stuff?
[15:10:41 CDT(-0500)] <EricDalquist> getting events to contribute to the render URL correctly
[15:10:49 CDT(-0500)] <EricDalquist> caching
[15:10:56 CDT(-0500)] <EricDalquist> those are the big ones
[15:11:05 CDT(-0500)] <EricDalquist> once that's done I'll have to sit down and re-read the spec
[15:11:12 CDT(-0500)] <EricDalquist> I also have access to the 286 TCK
[15:11:23 CDT(-0500)] <EricDalquist> so eventually when we get to RC land I can try getting that working against uPortal
[15:12:56 CDT(-0500)] <athena> cool (smile)
[15:26:52 CDT(-0500)] <athena> EricDalquist: i'm a bit confused about some of the code in PersonLookupHelperImpl
[15:27:01 CDT(-0500)] <EricDalquist> ok
[15:27:03 CDT(-0500)] <athena> it looks like it takes the results of the person search query
[15:27:10 CDT(-0500)] <athena> then puts it into a sorted map
[15:27:14 CDT(-0500)] <EricDalquist> line?
[15:27:17 CDT(-0500)] <athena> which in effect eliminates duplicate entries
[15:27:48 CDT(-0500)] <EricDalquist> er line #
[15:27:58 CDT(-0500)] <athena> look like around 144
[15:28:13 CDT(-0500)] <athena> bottom of doPersonQuery
[15:28:33 CDT(-0500)] <EricDalquist> ah ok
[15:28:51 CDT(-0500)] <EricDalquist> yeah I think it assumes that the Set of IPersonAttributes object will be unique for usernames
[15:29:37 CDT(-0500)] <athena> so if you search for username=student, you get one result back from the local person service, and one from the UP_USERS table
[15:29:56 CDT(-0500)] <EricDalquist> hrm the context should be configured to merge those two
[15:31:12 CDT(-0500)] <athena> ok, so we should really only be getting one result?
[15:31:22 CDT(-0500)] <EricDalquist> yeah
[15:31:35 CDT(-0500)] <athena> maybe i misconfigured something when i replaced the local search service then
[15:32:01 CDT(-0500)] <EricDalquist> yeah that configuration is really way too complex (sad)
[15:33:15 CDT(-0500)] <athena> looks like right now the two sources are in the list for the property personAttributeDaos
[15:33:24 CDT(-0500)] <athena> is something not quite right there?
[15:33:40 CDT(-0500)] <EricDalquist> and that is on a merging dao?
[15:33:52 CDT(-0500)] <athena> looks like
[15:33:56 CDT(-0500)] <athena> mergedPersonAttributeDao
[15:34:15 CDT(-0500)] <EricDalquist> is this committed in trunk?
[15:34:34 CDT(-0500)] <athena> yep
[15:34:37 CDT(-0500)] <athena> been there for a bit
[15:34:46 CDT(-0500)] <EricDalquist> ok ,... taking a look ...
[15:36:31 CDT(-0500)] <athena> does it merged based on name?
[15:36:38 CDT(-0500)] <EricDalquist> I think it does it based on an attribute
[15:36:43 CDT(-0500)] <EricDalquist> <bean id="usernameAttributeProvider" class="org.jasig.services.persondir.support.SimpleUsernameAttributeProvider">
[15:36:43 CDT(-0500)] <EricDalquist> <property name="usernameAttribute" value="username" />
[15:36:43 CDT(-0500)] <EricDalquist> </bean>
[15:36:55 CDT(-0500)] <EricDalquist> If I remember correctly it merges based on the attribute specified there
[15:36:57 CDT(-0500)] <athena> ok, i can check if those are the same
[15:37:13 CDT(-0500)] <EricDalquist> so if the objects coming back from the JPA store don't have a username attribute set they may not merge
[15:38:17 CDT(-0500)] <athena> gotcha
[15:40:06 CDT(-0500)] <athena> ok, i think that's it
[15:40:25 CDT(-0500)] <athena> i think right now our implementation assigns the username attribute to the "name" field of the IPersonAttributes object
[15:40:38 CDT(-0500)] <athena> but doesn't also add it as a user attribute
[15:40:57 CDT(-0500)] <EricDalquist> person directory has all these esoteric issues because of trying to maintain compatibility
[15:41:03 CDT(-0500)] <EricDalquist> this is one of those (sad)
[15:41:09 CDT(-0500)] <athena> i'm not quite sure how we'd do that without additionally persisting it as a user attribute
[15:41:39 CDT(-0500)] <EricDalquist> :/
[15:42:11 CDT(-0500)] <athena> i mean i guess we could add something like the resultAttributeMapping where we assign the user name / other attributes additional keys
[15:42:17 CDT(-0500)] <athena> or something
[15:42:30 CDT(-0500)] <athena> but w/ the JPA model, not quite sure how we'd make sure those don't get persisted back
[15:43:48 CDT(-0500)] <EricDalquist> yeah I'm not sure either
[15:44:02 CDT(-0500)] <athena> guess maybe we need two user attribute maps
[15:44:11 CDT(-0500)] <athena> one w/ the real database-persisted attributes
[15:44:23 CDT(-0500)] <EricDalquist> it may be better to not tie that API directly to person directory
[15:44:28 CDT(-0500)] <athena> and another that is just in-memory only and is mapped somehow for the real one
[15:44:31 CDT(-0500)] <EricDalquist> and have the JPA User Dao be uPortal specific
[15:44:43 CDT(-0500)] <EricDalquist> then a simple person directory wrapper around it
[15:44:43 CDT(-0500)] <athena> well, it is
[15:44:56 CDT(-0500)] <EricDalquist> that uses one of the IPersonAttributes impls that does the name/attribute mapping already
[15:44:57 CDT(-0500)] <athena> yeah, perhaps
[15:45:01 CDT(-0500)] <athena> have it just not implement that API anymore
[15:45:05 CDT(-0500)] <EricDalquist> yeah
[15:45:35 CDT(-0500)] <athena> is there an existing implementation that would be a good candidate?
[15:46:11 CDT(-0500)] <EricDalquist> of the dao?
[15:46:29 CDT(-0500)] <EricDalquist> I'm not sure ... it has been a long time since I've looked at that code
[15:46:37 CDT(-0500)] <athena> sorry, to use for the name/attribute mapping
[15:46:43 CDT(-0500)] <EricDalquist> oh
[15:46:45 CDT(-0500)] <EricDalquist> um
[15:46:48 CDT(-0500)] <EricDalquist> I think there is
[15:47:40 CDT(-0500)] <EricDalquist> http://developer.jasig.org/projects/person-directory/1.5.0-SNAPSHOT/apidocs/org/jasig/services/persondir/support/AttributeNamedPersonImpl.html
[15:47:41 CDT(-0500)] <EricDalquist> or
[15:47:44 CDT(-0500)] <EricDalquist> http://developer.jasig.org/projects/person-directory/1.5.0-SNAPSHOT/apidocs/org/jasig/services/persondir/support/NamedPersonImpl.html
[15:48:01 CDT(-0500)] <athena> hm
[15:48:15 CDT(-0500)] <athena> we're already using that, i'm pretty sure
[15:48:34 CDT(-0500)] <athena> guess maybe what we need is one of the person attribute DAOs to base our wrapper of hte JPA service on?
[15:48:45 CDT(-0500)] <athena> i guess that's probably what provides all the result attribute mapping and such?
[15:48:56 CDT(-0500)] <EricDalquist> yeah
[15:49:12 CDT(-0500)] <EricDalquist> there is an abstract DAO for sources that can do searching
[15:50:29 CDT(-0500)] <athena> AbstractQueyrPersonAttributeDao maybe?
[15:50:33 CDT(-0500)] <EricDalquist> yeah
[15:50:36 CDT(-0500)] <athena> ok
[15:50:39 CDT(-0500)] <athena> i'll take a look at that
[15:50:45 CDT(-0500)] <athena> see if we can get this working a bit better
[15:51:08 CDT(-0500)] <athena> i didn't even realize the merging was broken until i started rewriting that method as REST service
[15:51:33 CDT(-0500)] <EricDalquist> (smile)
[15:52:19 CDT(-0500)] <athena> might want to not have ILocalAccountPerson extend IPersonAttributes anymore either
[15:56:31 CDT(-0500)] <EricDalquist> yeah]
[15:56:36 CDT(-0500)] <EricDalquist> just to avoid the confusion
[15:56:53 CDT(-0500)] <athena> what kidn of object is the QueryBuilder supposed to be?
[15:57:47 CDT(-0500)] <EricDalquist> anything you want
[15:58:04 CDT(-0500)] <EricDalquist> it is just used to add data to in one callback
[15:58:11 CDT(-0500)] <EricDalquist> then passed into another callback to actually execute the query
[15:58:42 CDT(-0500)] <athena> hm
[15:58:52 CDT(-0500)] <athena> so i just implement something specific to whatever i'm writing?
[15:58:58 CDT(-0500)] <EricDalquist> yeah
[15:59:02 CDT(-0500)] <athena> ok
[15:59:21 CDT(-0500)] <EricDalquist> so the way it works is appendAttributeToQuery will be called N times, where N is the number of attributes in the query that your DAO understands
[15:59:41 CDT(-0500)] <EricDalquist> after that is all done that same QB object is passed into getPeopleForQuery
[15:59:46 CDT(-0500)] <EricDalquist> where you actually run the query
[16:00:09 CDT(-0500)] <athena> gotcha
[16:00:12 CDT(-0500)] <athena> makes sense
[16:00:19 CDT(-0500)] <athena> so probably we just need it to be some sort of map-like thing
[16:00:34 CDT(-0500)] <athena> or maybe even just a map
[16:00:58 CDT(-0500)] <EricDalquist> yah
[16:01:01 CDT(-0500)] <athena> ok
[16:01:27 CDT(-0500)] <EricDalquist> for example the SQL dao uses it to build a where clause
[16:01:36 CDT(-0500)] <EricDalquist> and the LDAP dao uses it to build a Spring-LDAP query object
[16:04:47 CDT(-0500)] <athena> makes sense
[16:04:48 CDT(-0500)] <athena> (smile)
[16:27:42 CDT(-0500)] <EricDalquist> athena: with subscribed tabs
[16:27:49 CDT(-0500)] <EricDalquist> can you restrict who can subscribe to a tab?
[16:27:56 CDT(-0500)] <athena> yes
[16:28:08 CDT(-0500)] <athena> that was one of the modifications we made to the yale code
[16:28:10 CDT(-0500)] <EricDalquist> using the other evaluators
[16:28:15 CDT(-0500)] <EricDalquist> I'm assuming
[16:28:18 CDT(-0500)] <athena> it's controlled w/ uportal permissions
[16:28:25 CDT(-0500)] <EricDalquist> ah ok
[16:28:29 CDT(-0500)] <athena> yep
[16:28:47 CDT(-0500)] <athena> so the owner is UP_FRAGMENT
[16:28:52 CDT(-0500)] <EricDalquist> got it
[16:28:53 CDT(-0500)] <athena> and the activity is FRAGMENT_SUBSCRIBE
[16:29:05 CDT(-0500)] <athena> you assign that to a user on a fragment owner or group of fragment owners
[16:30:04 CDT(-0500)] <EricDalquist> ok
[17:07:00 CDT(-0500)] <Bananobot> I'm installing uPortal on another server and failing again. It's version 3.2.4, and everything is going great until I try to log in with CAS. It says "CAS is Unavailable / There was an error trying to complete your request. Please notify your support desk or try again." In cas.log, there are a few lines that say "WARN [TP-Processor3] Nov/02 15:00:11,449 support.ResourceBundleMessageSource.[] - ResourceBundle [default] not found for MessageSource: C
[17:07:00 CDT(-0500)] <Bananobot> an't find bundle for base name default, locale en_US"
[17:07:33 CDT(-0500)] <athena> not really sure offhand - i don't think we'd changed anything in CAS
[17:07:59 CDT(-0500)] <Bananobot> I installed this version successfully on my person computer a while ago.
[17:08:13 CDT(-0500)] <Bananobot> So I must have some configuration wrong or something. But I'm not sure where to look.
[17:08:31 CDT(-0500)] <athena> i'm not quite sure what would cause that, to be honest
[17:16:26 CDT(-0500)] <Bananobot> Oh
[17:16:41 CDT(-0500)] <Bananobot> This is one of the issues I had before. It's related to memory allocation in Tomcat.
[17:16:47 CDT(-0500)] <Bananobot> Hooray for JASIGLogBot
[17:29:13 CDT(-0500)] <Bananobot> Still getting an error (sad)
[17:30:35 CDT(-0500)] <Bananobot> I'll try stop/starting it rather than restarting
[17:31:57 CDT(-0500)] <Bananobot> Nope
[17:35:10 CDT(-0500)] <bjagg> Banaobot: I got the same error when I tried to use lib/catalina-jmx-remote.jar ?
[17:36:16 CDT(-0500)] <bjagg> I had the same error until I added LocalStrings.properties to it, manually
[18:21:12 CDT(-0500)] <Bananobot> I redownloaded uPortal, reconfigured everything, and ran initportal. Now it's working fine. So, it must have been something I screwed up somewhere.
[18:21:47 CDT(-0500)] <athena> glad it's working now at least (smile)

  • No labels