[Portfolio] Null pointer errors
Maurer, Christopher Wayne
chmaurer at iupui.edu
Wed Mar 25 08:36:44 PDT 2009
I think this bug is what you¹re talking about (or pretty close, at least):
http://jira.sakaiproject.org/jira/browse/SAK-11468
Might be useful if you added your errors to it, that way we¹d have some
current references.
Dealing with the ³Back² button is tricky business, especially when it comes
to these form helpers.
If this is turning into a big headache, feel free to bump up the priority on
the issue (or if permissions don¹t allow it, make the suggestion, and
someone else will).
Chris
On 3/25/09 5:48 AM, "Sander Steeman" <sander at portfolio4u.nl> wrote:
> Dear all,
>
> We have been able to reproduce the stack trace below in our own production
> environment (Sakai 2.5.2) and on nightly build (Maintenance Branch). Here is
> the scenario:
>
> - In Matrices/Wizard click on a link to fill out a form
> (reflection/feedback/evaluation)
> - Start filling out the form
> - Click the browser's "Back" button (presumably because the user wants to
> check something on the previous page -i.e. matrix cell/wizard page)
> - Click again on the link to fill out the form > Stack trace :
>
> caused by: java.lang.NumberFormatException: null
> at java.lang.Integer.parseInt(Integer.java:415)
> at java.lang.Integer.parseInt(Integer.java:497)
> at
> org.theospi.portfolio.matrix.control.ReviewHelperController.handleRequest(Revi
> ewHelperController.java:130)
> at
> org.sakaiproject.metaobj.utils.mvc.impl.servlet.ViewControllerImpl.handle(View
> ControllerImpl.java:78)
> at
> org.springframework.web.servlet.mvc.AbstractCommandController.handleRequestInt
> ernal <http://web.servlet.mvc.AbstractCommandController.handleRequestInternal>
> (AbstractCommandController.java:84)
> at org.springframework.web.servlet.mvc.AbstractController.handleRequest
> <http://web.servlet.mvc.AbstractController.handleRequest>
> (AbstractController.java:153)
> at
> org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle
> <http://web.servlet.mvc.SimpleControllerHandlerAdapter.handle>
> (SimpleControllerHandlerAdapter.java:48)
>
> I couldn't find a JIRA ticket for it. Is it there? Should I file one?
>
> Regards,
>
> Sander Steeman
>
> product manager
> Learning4u (Portfolio4u b.v.)
> Science Park 400
> 1098 XH Amsterdam
> The Netherlands
>
>
> On Wed, Dec 10, 2008 at 8:28 PM, Noah Botimer <botimer at umich.edu> wrote:
>>
>> Hi Marc,
>>
>> There are a couple of exceptions that we have been seeing occasionally but
>> haven't been able to track down yet. This particular one doesn't look
>> familiar, but here are some of the hotspots we're seeing (with a few lines of
>> stack trace for each).
>>
>> Initial inspection points at session/helper stuff for each of these, but
>> reproduction has proven elusive. We'll be looking into these in more detail
>> as time permits. There are likely to be some JIRA tickets to track once we
>> know more.
>>
>> Thanks,
>> -Noah
>>
>>
>> request-path:
>> /portal/tool/6a9c3957-548e-4dd2-00c8-d3d6c6b8ea11/osp.wizard.page.contents.he
>> lper/sakai.metaobj.form.helper/formEditHelper
>> caused by: java.lang.NullPointerException
>> at
>> org.sakaiproject.metaobj.shared.control.EditXmlElementController.fillBackingO
>> bject(EditXmlElementController.java:114)
>> at
>> org.sakaiproject.metaobj.utils.mvc.impl.servlet.FormControllerImpl.formBackin
>> gObject(FormControllerImpl.java:159)
>> at
>> org.springframework.web.servlet.mvc.AbstractFormController.getErrorsForNewFor
>> m <http://web.servlet.mvc.AbstractFormController.getErrorsForNewForm>
>> (AbstractFormController.java:343)
>> at org.springframework.web.servlet.mvc.AbstractFormController.showNewForm
>> <http://web.servlet.mvc.AbstractFormController.showNewForm>
>> (AbstractFormController.java:323)
>>
>> request-path:
>> /portal/tool/ffdbaa61-8404-458b-be4e-784eeecf36d1/osp.wizard.page.contents.he
>> lper/sakai.metaobj.form.helper/formEditHelper
>> caused by: java.lang.NullPointerException
>> at
>> org.sakaiproject.metaobj.shared.model.ElementBean.getType(ElementBean.java:35
>> 4)
>> at
>> org.sakaiproject.metaobj.utils.mvc.impl.MapWrapper.setPropertyValue(MapWrappe
>> r.java:116)
>> at
>> org.sakaiproject.metaobj.utils.mvc.impl.MapWrapper.setPropertyValue(MapWrappe
>> r.java:136)
>> at
>> org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(Abstract
>> PropertyAccessor.java:78)
>> at
>> org.springframework.validation.DataBinder.applyPropertyValues(DataBinder.java
>> :532)
>> at org.springframework.validation.DataBinder.doBind(DataBinder.java:434)
>>
>> request-path:
>> /portal/tool/ffdbaa61-8404-458b-be4e-784eeecf36d1/osp.wizard.page.contents.he
>> lper/sakai.metaobj.form.helper/formCreateHelper.osp
>> caused by: java.lang.NullPointerException
>> at
>> org.sakaiproject.metaobj.shared.mgt.home.StructuredArtifactDefinition.<init>(
>> StructuredArtifactDefinition.java:101)
>> at
>> org.sakaiproject.metaobj.shared.mgt.factories.DbXmlHomeFactoryImpl.createHome
>> (DbXmlHomeFactoryImpl.java:82)
>> at
>> org.sakaiproject.metaobj.shared.mgt.factories.DbXmlHomeFactoryImpl.getHome(Db
>> XmlHomeFactoryImpl.java:58)
>> at
>> org.sakaiproject.metaobj.shared.mgt.factories.DbXmlHomeFactoryImpl.handlesTyp
>> e(DbXmlHomeFactoryImpl.java:46)
>> at
>> org.sakaiproject.metaobj.shared.mgt.HomeFactoryImpl.getHome(HomeFactoryImpl.j
>> ava:64)
>> at
>> org.sakaiproject.metaobj.shared.control.XmlControllerBase.getSchema(XmlContro
>> llerBase.java:219)
>>
>> request-path:
>> /portal/tool/49a87eaa-3e88-4803-bc6b-6da5a1b12321/osp.review.processor.helper
>> /reviewHelper.osp
>> caused by: java.lang.NullPointerException
>> at
>> org.theospi.portfolio.matrix.control.ReviewHelperController.handleRequest(Rev
>> iewHelperController.java:145)
>> at
>> org.sakaiproject.metaobj.utils.mvc.impl.servlet.ViewControllerImpl.handle(Vie
>> wControllerImpl.java:78)
>> at
>> org.springframework.web.servlet.mvc.AbstractCommandController.handleRequestIn
>> ternal
>> <http://web.servlet.mvc.AbstractCommandController.handleRequestInternal>
>> (AbstractCommandController.java:84)
>> at org.springframework.web.servlet.mvc.AbstractController.handleRequest
>> <http://web.servlet.mvc.AbstractController.handleRequest>
>> (AbstractController.java:153)
>> at
>> org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle
>> <http://web.servlet.mvc.SimpleControllerHandlerAdapter.handle>
>> (SimpleControllerHandlerAdapter.java:48)
>>
>> [somewhere in the review helper process]
>> caused by: java.lang.NumberFormatException: null
>> at java.lang.Integer.parseInt(Integer.java:415)
>> at java.lang.Integer.parseInt(Integer.java:497)
>> at
>> org.theospi.portfolio.matrix.control.ReviewHelperController.handleRequest(Rev
>> iewHelperController.java:130)
>> at
>> org.sakaiproject.metaobj.utils.mvc.impl.servlet.ViewControllerImpl.handle(Vie
>> wControllerImpl.java:78)
>> at
>> org.springframework.web.servlet.mvc.AbstractCommandController.handleRequestIn
>> ternal
>> <http://web.servlet.mvc.AbstractCommandController.handleRequestInternal>
>> (AbstractCommandController.java:84)
>> at org.springframework.web.servlet.mvc.AbstractController.handleRequest
>> <http://web.servlet.mvc.AbstractController.handleRequest>
>> (AbstractController.java:153)
>> at
>> org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle
>> <http://web.servlet.mvc.SimpleControllerHandlerAdapter.handle>
>> (SimpleControllerHandlerAdapter.java:48)
>>
>> On Dec 10, 2008, at 2:02 PM, Marc Zaldivar wrote:
>>
>>> All,
>>>
>>> We received a bunch of errors last night that were essentially null pointer
>>> errors. It looks like a majority of them (though not all) came from users
>>> using the Matrix and Portfolio tools from their My Workspace area. I¹m
>>> copying a typical error below. This one points at the ³viewmatrix.osp²
>>> tool, but the most frequent errors came from the
>>> ³sakai.metaobj.form.helper/formEditHelper² or the ³.../formCreateHelper²
>>> tools. We can¹t seem to duplicate the issue on our test machines. It
>>> seems to affect Mac users, Vista users, and XP users, and we got reports
>>> from users using Firefox 3, IE7, Chrome, and Safari (even though we don¹t
>>> support the last two browsers).
>>>
>>> My questions:
>>>
>>> 1. Has there been a known issue with the Matrix/Portfolio tool use from the
>>> My Workspace (filling out forms in a matrix, viewing a matrix, creating a
>>> portfolio, viewing a portfolio)?
>>> 2. Have any of you seen these regular null pointer errors originating from
>>> OSP forms? I didn¹t see anything in the Sakai Jira referencing these.
>>> 3. Does anyone see anything in the report below indicating what the issue
>>> is?
>>> 4.
>>>
>>> Thanks!
>>>
>>> Marc Zaldivar
>>> ====================================
>>> usage-session: 051e9554-06bc-426d-b5b1-ef2e2f420211
>>> stack-trace-digest: 30739E2B5592E037F0B64B56330FFE8610B9E8D2
>>> sakai-version: 2.5.0
>>> service-version: 2.5
>>> app-server: ketchup
>>> user-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.4)
>>> Gecko/2008102920 Firefox/3.0.4
>>> browser-id: Win-Mozilla
>>> IP: 127.0.0.1
>>> request-path:
>>> /xsl-portal/tool/909437e5-8cde-44a3-8c5f-2c1389421dcf/viewMatrix.osp
>>> time: Dec 10, 2008 05:56:55
>>>
>>>
>>> stack trace:
>>>
>>> org.sakaiproject.portal.api.PortalHandlerException:
>>> org.sakaiproject.tool.api.ToolException: Request processing failed; nested
>>> exception is java.lang.NullPointerException
>>> at
>>> org.sakaiproject.portal.charon.SkinnableCharonPortal.doGet(SkinnableCharonPo
>>> rtal.java:892)
>>> caused by: org.sakaiproject.tool.api.ToolException: Request processing
>>> failed; nested exception is java.lang.NullPointerException
>>> at
>>> org.sakaiproject.portal.charon.SkinnableCharonPortal.forwardTool(SkinnableCh
>>> aronPortal.java:1344)
>>> caused by: org.springframework.web.util.NestedServletException
>>> <http://web.util.NestedServletException> : Request processing failed; nested
>>> exception is java.lang.NullPointerException
>>> at org.springframework.web.servlet.FrameworkServlet.doGet
>>> <http://web.servlet.FrameworkServlet.doGet> (FrameworkServlet.java:430)
>>> caused by: java.lang.NullPointerException
>>> at
>>> org.theospi.portfolio.matrix.control.ViewMatrixController.referenceData(View
>>> MatrixController.java:219)
>>> at
>>> org.sakaiproject.metaobj.utils.mvc.impl.servlet.FormControllerImpl.reference
>>> Data(FormControllerImpl.java:115)
>>> at org.springframework.web.servlet.mvc.AbstractFormController.showForm
>>> <http://web.servlet.mvc.AbstractFormController.showForm>
>>> (AbstractFormController.java:559)
>>> at org.springframework.web.servlet.mvc.SimpleFormController.showForm
>>> <http://web.servlet.mvc.SimpleFormController.showForm>
>>> (SimpleFormController.java:198)
>>> at org.springframework.web.servlet.mvc.SimpleFormController.showForm
>>> <http://web.servlet.mvc.SimpleFormController.showForm>
>>> (SimpleFormController.java:175)
>>> at
>>> org.springframework.web.servlet.mvc.AbstractFormController.showNewForm
>>> <http://web.servlet.mvc.AbstractFormController.showNewForm>
>>> (AbstractFormController.java:323)
>>> at
>>> org.springframework.web.servlet.mvc.AbstractFormController.handleRequestInte
>>> rnal <http://web.servlet.mvc.AbstractFormController.handleRequestInternal>
>>> (AbstractFormController.java:263)
>>> at org.springframework.web.servlet.mvc.AbstractController.handleRequest
>>> <http://web.servlet.mvc.AbstractController.handleRequest>
>>> (AbstractController.java:153)
>>> at
>>> org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle
>>> <http://web.servlet.mvc.SimpleControllerHandlerAdapter.handle>
>>> (SimpleControllerHandlerAdapter.java:48)
>>> at org.springframework.web.servlet.DispatcherServlet.doDispatch
>>> <http://web.servlet.DispatcherServlet.doDispatch>
>>> (DispatcherServlet.java:857)
>>> at org.springframework.web.servlet.DispatcherServlet.doService
>>> <http://web.servlet.DispatcherServlet.doService>
>>> (DispatcherServlet.java:792)
>>> at org.springframework.web.servlet.FrameworkServlet.processRequest
>>> <http://web.servlet.FrameworkServlet.processRequest>
>>> (FrameworkServlet.java:475)
>>> at org.springframework.web.servlet.FrameworkServlet.doGet
>>> <http://web.servlet.FrameworkServlet.doGet> (FrameworkServlet.java:430)
>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
>>> FilterChain.java:269)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
>>> ain.java:188)
>>> at
>>> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.
>>> java:691)
>>> at
>>> org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDis
>>> patcher.java:469)
>>> at
>>> org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatch
>>> er.java:403)
>>> at
>>> org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher
>>> .java:301)
>>> at
>>> org.sakaiproject.spring.util.SpringTool.dispatch(SpringTool.java:231)
>>> at org.sakaiproject.spring.util.SpringTool.doGet(SpringTool.java:294)
>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
>>> FilterChain.java:269)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
>>> ain.java:188)
>>> at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:555)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
>>> FilterChain.java:215)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
>>> ain.java:188)
>>> at
>>> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.
>>> java:691)
>>> at
>>> org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDis
>>> patcher.java:469)
>>> at
>>> org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatch
>>> er.java:364)
>>> at
>>> org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher
>>> .java:301)
>>> at
>>> org.sakaiproject.tool.impl.ActiveToolComponent$MyActiveTool.forward(ActiveTo
>>> olComponent.java:459)
>>> at
>>> org.sakaiproject.portal.charon.SkinnableCharonPortal.forwardTool(SkinnableCh
>>> aronPortal.java:1344)
>>> at
>>> org.sakaiproject.portal.charon.handlers.ToolHandler.doTool(ToolHandler.java:
>>> 163)
>>> at
>>> org.sakaiproject.portal.charon.handlers.ToolHandler.doGet(ToolHandler.java:8
>>> 6)
>>> at
>>> org.sakaiproject.portal.charon.SkinnableCharonPortal.doGet(SkinnableCharonPo
>>> rtal.java:892)
>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
>>> FilterChain.java:269)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
>>> ain.java:188)
>>> at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:592)
>>> at
>>> com.rsmart.sakai.kernel.request.BrandRequestFilter.doFilter(BrandRequestFilt
>>> er.java:79)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
>>> FilterChain.java:215)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
>>> ain.java:188)
>>> at
>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
>>> va:210)
>>> at
>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
>>> va:174)
>>> at
>>>
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127>>>
)
>>> at
>>>
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117>>>
)
>>> at
>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
>>> :108)
>>> at
>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
>>> at
>>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
>>> at
>>> org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processC
>>> onnection(Http11BaseProtocol.java:665)
>>> at
>>> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.jav
>>> a:528)
>>> at
>>> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWo
>>> rkerThread.java:81)
>>> at
>>> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.jav
>>> a:685)
>>> at java.lang.Thread.run(Thread.java:595)
>>>
>>>
>>> Tool Placement:
>>> No Placement
>>>
>>>
>>> Request:
>>> : AuthType:null
>>> : CharEncoding:UTF-8
>>> : ContentLength:-1
>>> : ContentType:null
>>> : ContextPath:/xsl-portal
>>> : LocalAddress:127.0.0.1
>>> : LocalName:localhost
>>> : LocalPort:8080
>>> : Method:GET
>>> : PathInfo:/tool/909437e5-8cde-44a3-8c5f-2c1389421dcf/viewMatrix.osp
>>> : Protocol:HTTP/1.1
>>> : QueryString:page_id=30FA0EA54C504429C834B7C3AD2A8A34
>>> : RemoteAddress:127.0.0.1
>>> : RemoteHost:127.0.0.1
>>> : RemotePort:59636
>>> : Requested
>>> URL:https://scholar.vt.edu/xsl-portal/tool/909437e5-8cde-44a3-8c5f-2c1389421
>>> dcf/viewMatrix.osp
>>> : Scheme:https
>>> : ServerName:scholar.vt.edu <http://scholar.vt.edu>
>>> : Headers:
>>> : Header:host:localhost:8080
>>> : Header:user-agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;
>>> rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4
>>> :
>>> Header:accept:text/html,application/xhtml+xml,application/xml;q=0.9,*
>>> /*;q=0.8
>>> : Header:accept-language:en-us,en;q=0.5
>>> : Header:accept-encoding:gzip,deflate
>>> : Header:accept-charset:ISO-8859-1,utf-8;q=0.7,*;q=0.7
>>> :
>>> Header:referer:https://scholar.vt.edu/xsl-portal/tool/909437e5-8cde-4
>>> 4a3-8c5f-2c1389421dcf/osp.wizard.page.contents.helper/sakai.metaobj.form.hel
>>> per/formEditHelper
>>> : Header:cookie:---censored---
>>> : Header:x-forwarded-for:204.119.253.226
>>> : Header:x-forwarded-host:scholar.vt.edu <http://scholar.vt.edu>
>>> : Header:x-forwarded-server:ketchup
>>> : Header:connection:Keep-Alive
>>> : Parameters:
>>> : Parameter:page_id:0:30FA0EA54C504429C834B7C3AD2A8A34
>>> : Attributes:
>>> :
>>> Attribute:tool.url.manager:org.sakaiproject.portal.util.ToolURLManage
>>> rImpl at 3f08a36c
>>> :
>>> Attribute:sakai.session:org.sakaiproject.tool.impl.SessionComponent$M
>>> ySession at 26242c7e
>>> : Attribute:sakai.html.head.css.base:<link
>>> href="/library/skin/tool_base.css" type="text/css" rel="stylesheet"
>>> media="all" />
>>>
>>> :
>>> Attribute:sakai.character.encoding.done:sakai.character.encoding.done
>>> : Attribute:sakai.html.head.js:<script type="text/javascript"
>>> language="JavaScript" src="/library/js/headscripts.js"></script>
>>>
>>> : Attribute:sakai.html.head:<link href="/library/skin/tool_base.css"
>>> type="text/css" rel="stylesheet" media="all" />
>>> <link href="/library/skin/Virginia-Tech/tool.css" type="text/css"
>>> rel="stylesheet" media="all" />
>>> <script type="text/javascript" language="JavaScript"
>>> src="/library/js/headscripts.js"></script>
>>>
>>> : Attribute:sakai.request.native.url:sakai.request.native.url
>>> :
>>> Attribute:sakai.html.body.onload:setMainFrameHeight('Main909437e5x8cd
>>> ex44a3x8c5fx2c1389421dcf');setFocus(focus_path);
>>> : Attribute:sakai.filtered:sakai.filtered
>>> : Attribute:sakai.html.head.css.skin:<link
>>> href="/library/skin/Virginia-Tech/tool.css" type="text/css" rel="stylesheet"
>>> media="all" />
>>>
>>> : Attribute:sakai.html.head.css:<link
>>> href="/library/skin/tool_base.css" type="text/css" rel="stylesheet"
>>> media="all" />
>>> <link href="/library/skin/Virginia-Tech/tool.css" type="text/css"
>>> rel="stylesheet" media="all" />
>>>
>>> Session:
>>> : Created:1228892326942
>>> : LastAccess:1228906615479
>>> : MaxInactive:3600
>>> : Attributes:
>>> : Attribute:portalskin:defaultskin
>>>
>>>
>>>
>>> This automatic notification message was sent by Sakai Collab
>>> (https://collab.sakaiproject.org//portal) from the Project: Portfolio site.
>>> You can modify how you receive notifications at My Workspace > Preferences.
>>>
>>
>>
>>
>>
>> This automatic notification message was sent by Sakai Collab
>> (https://collab.sakaiproject.org//portal) from the Project: Portfolio site.
>> You can modify how you receive notifications at My Workspace > Preferences.
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://collab.sakaiproject.org/pipermail/portfolio/attachments/20090325/02b5ee3f/attachment-0001.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2141 bytes
Desc: not available
Url : http://collab.sakaiproject.org/pipermail/portfolio/attachments/20090325/02b5ee3f/attachment-0001.bin
More information about the portfolio
mailing list