Issue Details (XML | Word | Printable)

Key: SAK-5111
Type: Bug Bug
Status: Closed Closed
Resolution: Fixed
Priority: Critical Critical
Assignee: Chen Wen
Reporter: Raad Al-Rawi
Votes: 1
Watchers: 3
Operations

If you were logged in you would be able to see more operations.
Sakai

Message Center has dependency on Gradebook

Created: 05-Jun-2006 10:44   Updated: 23-Oct-2008 11:16
Component/s: Message Center (Deprecated as of 2.4) - Don't use
Affects Version/s: 2.1.2, 2.1.x
Fix Version/s: 2.1.x, 2.2.0

Time Tracking:
Not Specified

File Attachments: 1. File msgcntr-SAK-5111-2-1-x.diff (221 kB)

Environment: Linux version 2.6.9-1.667smp (gcc version 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)), 2GB RAM, MySQL 4.1.13, Sakai 2.1.2 (2-1-x maintenance branch)

2.6.x Status: None
2.5.x Status: None
2.4.x Status: None


 Description  « Hide
If Message Center is present in a site without the Gradebook tool, it fails to operate properly:

1) If the site previously had MC and contains MC content (i.e. some forums and threads), then displaying the MC tool causes the following error:

Bug Report1 Start ==========================================================

org.sakaiproject.api.kernel.tool.ToolException: javax.faces.el.EvaluationException: Error getting property 'forums' from bean of type org.sakaiproject.tool.messageforums.DiscussionForumTool: java.lang.NullPointerException
    at org.sakaiproject.portal.charon.CharonPortal.forwardTool(CharonPortal.java:1233)
caused by: org.apache.jasper.JasperException: javax.faces.el.EvaluationException: Error getting property 'forums' from bean of type org.sakaiproject.tool.messageforums.DiscussionForumTool: java.lang.NullPointerException
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
caused by: javax.faces.el.EvaluationException: javax.faces.el.EvaluationException: Error getting property 'forums' from bean of type org.sakaiproject.tool.messageforums.DiscussionForumTool: java.lang.NullPointerException
    at com.sun.faces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:154)
caused by: javax.faces.el.EvaluationException: Error getting property 'forums' from bean of type org.sakaiproject.tool.messageforums.DiscussionForumTool: java.lang.NullPointerException
    at com.sun.faces.el.impl.ArraySuffix.evaluate(ArraySuffix.java:167)
caused by: java.lang.NullPointerException
    at org.sakaiproject.tool.messageforums.DiscussionForumTool.getForums(DiscussionForumTool.java:308)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:324)
    at com.sun.faces.el.PropertyResolverImpl.getValue(PropertyResolverImpl.java:79)
    at com.sun.faces.el.impl.ArraySuffix.evaluate(ArraySuffix.java:167)
    at com.sun.faces.el.impl.ComplexValue.evaluate(ComplexValue.java:151)
    at com.sun.faces.el.impl.ExpressionEvaluatorImpl.evaluate(ExpressionEvaluatorImpl.java:243)
    at com.sun.faces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:173)
    at com.sun.faces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:154)
    at javax.faces.component.UIData.getValue(UIData.java:527)
    at javax.faces.component.UIData.getDataModel(UIData.java:856)
    at javax.faces.component.UIData.setRowIndex(UIData.java:379)
    at com.sun.faces.renderkit.html_basic.TableRenderer.encodeBegin(TableRenderer.java:65)
    at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:683)
    at javax.faces.component.UIData.encodeBegin(UIData.java:681)
    at org.sakaiproject.tool.messageforums.jsf.HideDivisionRenderer.encodeChildren(HideDivisionRenderer.java:62)
    at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:701)
    at javax.faces.webapp.UIComponentTag.encodeChildren(UIComponentTag.java:607)
    at javax.faces.webapp.UIComponentTag.doEndTag(UIComponentTag.java:544)
    at org.apache.jsp.jsp.main_jsp._jspx_meth_mf_forumHideDivision_1(org.apache.jsp.jsp.main_jsp:1647)
    at org.apache.jsp.jsp.main_jsp._jspService(org.apache.jsp.jsp.main_jsp:288)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
    at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:322)
    at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:130)
    at org.sakaiproject.jsf.app.SakaiViewHandler.renderView(SakaiViewHandler.java:139)
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87)
    at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:117)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:504)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
    at org.sakaiproject.tool.messageforums.MessageForumsFilePickerServlet.dispatch(MessageForumsFilePickerServlet.java:154)
    at org.sakaiproject.jsf.util.JsfTool.doGet(JsfTool.java:243)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:504)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:359)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
    at org.sakaiproject.component.kernel.tool.ActiveToolComponent$MyActiveTool.forward(ActiveToolComponent.java:333)
    at org.sakaiproject.portal.charon.CharonPortal.forwardTool(CharonPortal.java:1233)
    at org.sakaiproject.portal.charon.CharonPortal.doTool(CharonPortal.java:1185)
    at org.sakaiproject.portal.charon.CharonPortal.doGet(CharonPortal.java:332)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:535)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:307)
    at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:385)
    at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:748)
    at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:678)
    at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:871)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Thread.java:534)

Bug Report1 end ==========================================================

2) If the site had no previous MC content (i.e. no forums) then the MC tool page displays fine. However, clicking "New Forum" produces the following error:

Bug Report2 Start ==========================================================

org.sakaiproject.api.kernel.tool.ToolException: Conversion Error setting value ''{0}'' for ''{1}''.
    at org.sakaiproject.portal.charon.CharonPortal.forwardTool(CharonPortal.java:1233)
caused by: org.apache.jasper.JasperException: Conversion Error setting value ''{0}'' for ''{1}''.
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
caused by: java.lang.IllegalArgumentException: Conversion Error setting value ''{0}'' for ''{1}''.
    at com.sun.faces.util.Util.getSelectItems(Util.java:628)
    at com.sun.faces.renderkit.html_basic.MenuRenderer.getOptionNumber(MenuRenderer.java:488)
    at com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:465)
    at com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:430)
    at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:720)
    at org.sakaiproject.tool.messageforums.jsf.HideDivisionRenderer.encodeChildren(HideDivisionRenderer.java:64)
    at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:701)
    at javax.faces.webapp.UIComponentTag.encodeChildren(UIComponentTag.java:607)
    at javax.faces.webapp.UIComponentTag.doEndTag(UIComponentTag.java:544)
    at org.apache.jsp.jsp.dfReviseForumSettingsAttach_jsp._jspService(org.apache.jsp.jsp.dfReviseForumSettingsAttach_jsp:348)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
    at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:322)
    at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:130)
    at org.sakaiproject.jsf.app.SakaiViewHandler.renderView(SakaiViewHandler.java:139)
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87)
    at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:117)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:504)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
    at org.sakaiproject.tool.messageforums.MessageForumsFilePickerServlet.dispatch(MessageForumsFilePickerServlet.java:154)
    at org.sakaiproject.jsf.util.JsfTool.doGet(JsfTool.java:243)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:504)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:359)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
    at org.sakaiproject.component.kernel.tool.ActiveToolComponent$MyActiveTool.forward(ActiveToolComponent.java:333)
    at org.sakaiproject.portal.charon.CharonPortal.forwardTool(CharonPortal.java:1233)
    at org.sakaiproject.portal.charon.CharonPortal.doTool(CharonPortal.java:1185)
    at org.sakaiproject.portal.charon.CharonPortal.doGet(CharonPortal.java:332)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:535)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:307)
    at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:385)
    at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:748)
    at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:678)
    at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:871)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Thread.java:534)

Bug Report2 End ==========================================================

Adding the Gradebook tool to the site resolves both these errors.


 All   Comments   Work Log   Change History   Subversion Commits   git Commits      Sort Order: Ascending order - Click to sort in descending order
Ray Davis added a comment - 05-Jun-2006 11:44
I don't know what the root cause of this is, but the GradebookService "isGradebookDefined" method might be of interest....

Megan May added a comment - 07-Jun-2006 10:14
I've seen this working on qa3-us (.003 tag). I believe someone corrected this - can you confirm?

Daniel Parry added a comment - 07-Jun-2006 10:36
Yes, I have seen this fixed on the 2.2 version (qa1-uk). Just need to figure out what that fix was and apply it backwards to 2.1.2/x (^_^)

Seth Theriault added a comment - 07-Jun-2006 12:23
Looking at the svn log of:

messageforums-app/src/java/org/sakaiproject/tool/messageforums/DiscussionForumTool.java

it looks as though the fix is in r9618. The 2.1.2 branch was created at r8945.

The FishEye URLs are:

http://source.sakaiproject.org/fisheye/changelog/Sakai?cs=9618
http://source.sakaiproject.org/fisheye/viewrep/Sakai/msgcntr/trunk/messageforums-app/src/java/org/sakaiproject/tool/messageforums/DiscussionForumTool.java

Raad Al-Rawi added a comment - 09-Jun-2006 08:48
I have found a little workaround to this issue for our production site, which is to add Gradebook to each site containing Message Center.
However, in order to avoid an obvious and potentially confusing change, I have added the GB tool to the same page as MC, and placed it in a hidden column (e.g. col 1 on a single col page).

Kristol Hancock added a comment - 21-Jun-2006 10:44
Jarrod, if a site does not have a gradebook, then the instructor should not have the option to post to gradebook. If you need to grey this out in the permissions, that's fine. Just make sure the box is not checked if the gradebook does not exist in the site. This should happen if the gb does not exist when the site is created and if the gb is removed once the site is created. If messages have been graded, this information will not be removed from the gradebook's db, so if the gb is readded, then the messages that have been graded should pick up the grade information again. Let me know if you have any questions. Thanks!

Kristol Hancock added a comment - 21-Jun-2006 11:22
Reassigning to Chen.

Chen Wen added a comment - 22-Jun-2006 15:26
this was resolved for 2.2

Thomas Amsler added a comment - 29-Jun-2006 17:22
What is the revision number where this has been fixed? I am interested in back porting this to Sakai v2.1.x

Thomas Amsler added a comment - 01-Jul-2006 00:48
This is an attempt to back-port the SAK-5111 v2.2 fix (r9618) to Sakai v2.1.x

Megan May added a comment - 31-Jul-2006 16:18
performing JIRA cleanup. This item was in 2.2.0. Thomas, please add the 2.1.x maint branch to this if you have added it

Brian Jorgensen added a comment - 17-Nov-2006 16:03
Fixed in r18224.