History | Log In     View a printable version of the current page.  
Issue Details (XML | Word | Printable)

Key: SAK-11075
Type: Bug Bug
Status: Closed Closed
Resolution: Fixed
Priority: Major Major
Assignee: Karen Tsao
Reporter: Matt Freeburg
Votes: 1
Watchers: 2
Operations

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

Saving/publishing assessment with "final URL" disabled throws null pointer exception

Created: 09-Aug-2007 14:46   Updated: 23-Oct-2008 07:48
Component/s: Tests & Quizzes (Samigo)
Affects Version/s: 2.4.0, 2.4.x, 2.4.1
Fix Version/s: 2.5.0, 2.4.x

Time Tracking:
Not Specified

Environment: oracle
Issue Links:
Duplicate
 

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


 Description  « Hide
Update 8/23: This issue has now been fixed in nightly trunk. Following the test process described below, assessments can now be saved and published regardless of whether the Final Page URL (editable) box has been checked or not in the Assessment Type settings. The error no longer occurs.
------------------


In Tests & Quizzes, creating a new assessment by entering a name and pressing Create (without selecting a type from Choose Existing Assessment Type) results in an error page when you attempt to Save Settings & Publish. The same thing occurs with
just trying to Save Settings, when the assessment has 0 or 1 questions, and with different types of questions.

The assessment will appear in the list of Core Assessments, and new questions can be added, but settings cannot be changed, and it cannot be published. There is no way to change or select the assessment type after pressing Create.

The same process does not produce an error in 2.2, only on 2.4.x (we went straight from 2.2 to 2.4.x).

The process that produces the error and the error message follow.

 - Tests & Quizzes
 - enter a title in Title box
 - press Create
 - select Multiple Choice from Part 1 > Insert New Question
 - enter Point Value (1), Question Text (a), answer text x4 (a), choose Correct Answer A
 - press Save
 - click on Settings
 - press Save Settings & Publish
 - error occurs:

org.sakaiproject.portal.api.PortalHandlerException: org.sakaiproject.tool.api.ToolException
    at org.sakaiproject.portal.charon.handlers.ToolHandler.doPost(ToolHandler.java:63)
caused by: org.sakaiproject.tool.api.ToolException
    at org.sakaiproject.portal.charon.SkinnableCharonPortal.forwardTool(SkinnableCharonPortal.java:1100)
caused by: javax.servlet.ServletException
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
caused by: java.lang.NullPointerException
    at org.sakaiproject.tool.assessment.ui.listener.author.SaveAssessmentSettings.save(SaveAssessmentSettings.java:155)
    at org.sakaiproject.tool.assessment.ui.listener.author.ConfirmPublishAssessmentListener.processAction(ConfirmPublishAssessmentListener.java:255)
    at javax.faces.event.ActionEvent.processListener(ActionEvent.java:57)
    at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:649)
    at javax.faces.component.UICommand.broadcast(UICommand.java:297)
    at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:267)
    at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:381)
    at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:75)
    at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:90)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:555)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:691)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:469)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:403)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
    at org.sakaiproject.jsf.util.SamigoJsfTool.dispatch(SamigoJsfTool.java:230)
    at org.sakaiproject.jsf.util.JsfTool.doPost(JsfTool.java:256)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:691)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:469)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:364)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
    at org.sakaiproject.tool.impl.ActiveToolComponent$MyActiveTool.forward(ActiveToolComponent.java:441)
    at org.sakaiproject.portal.charon.SkinnableCharonPortal.forwardTool(SkinnableCharonPortal.java:1100)
    at org.sakaiproject.portal.charon.handlers.ToolHandler.doTool(ToolHandler.java:163)
    at org.sakaiproject.portal.charon.handlers.ToolHandler.doGet(ToolHandler.java:86)
    at org.sakaiproject.portal.charon.handlers.ToolHandler.doPost(ToolHandler.java:63)
    at org.sakaiproject.portal.charon.SkinnableCharonPortal.doPost(SkinnableCharonPortal.java:943)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:592)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java: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.processConnection(Http11BaseProtocol.java:665)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
    at java.lang.Thread.run(Thread.java:595)

 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Faust Gorham - 21-Aug-2007 11:16
We experienced a similar issue with importing quizzes from last semesters courses into 2.4.x. Seems we cannot publish them either.

This is an issue for us as the semester is about to start and I need to get 41 quizzes published.

Full process:
- Instructor goes into current course (2.4.x - Samigo)
- Instructor goes to site info, import from site.
- Instructor gets old site (from 2.1.x) and imports quizzes.
- Instructor goes to Test and Quizzes in current course, tries to publish it.
user: admin (Sakai Administrator)
email:
usage-session: 02b155a8-fd20-4c0c-00ca-77f4c6437a08
stack-trace-digest: 2834225580829460BC9E993F57A93259E03C624A
sakai-version: 2.4.0
service-version: 2.4.0
app-server: ucmcrops2
user-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6
browser-id: Win-Mozilla
IP: 169.236.252.48
request-path: /portal/tool/9bfff475-6a3d-4f09-80d2-1b67bfe7ea53/jsf/author/authorSettings
time: Aug 21, 2007 11:03:43


stack trace:

org.sakaiproject.portal.api.PortalHandlerException: org.sakaiproject.tool.api.ToolException
    at org.sakaiproject.portal.charon.handlers.ToolHandler.doPost(ToolHandler.java:63)
caused by: org.sakaiproject.tool.api.ToolException
    at org.sakaiproject.portal.charon.SkinnableCharonPortal.forwardTool(SkinnableCharonPortal.java:1099)
caused by: javax.servlet.ServletException
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
caused by: java.lang.NullPointerException
    at org.sakaiproject.tool.assessment.ui.listener.author.SaveAssessmentSettings.save(SaveAssessmentSettings.java:155)
    at org.sakaiproject.tool.assessment.ui.listener.author.SaveAssessmentSettingsListener.processAction(SaveAssessmentSettingsListener.java:229)
    at javax.faces.event.ActionEvent.processListener(ActionEvent.java:57)
    at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:649)
    at javax.faces.component.UICommand.broadcast(UICommand.java:297)
    at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:267)
    at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:381)
    at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:75)
    at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:90)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:555)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:691)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:469)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:403)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
    at org.sakaiproject.jsf.util.SamigoJsfTool.dispatch(SamigoJsfTool.java:230)
    at org.sakaiproject.jsf.util.JsfTool.doPost(JsfTool.java:256)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:691)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:469)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:364)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
    at org.sakaiproject.tool.impl.ActiveToolComponent$MyActiveTool.forward(ActiveToolComponent.java:441)
    at org.sakaiproject.portal.charon.SkinnableCharonPortal.forwardTool(SkinnableCharonPortal.java:1099)
    at org.sakaiproject.portal.charon.handlers.ToolHandler.doTool(ToolHandler.java:163)
    at org.sakaiproject.portal.charon.handlers.ToolHandler.doGet(ToolHandler.java:86)
    at org.sakaiproject.portal.charon.handlers.ToolHandler.doPost(ToolHandler.java:63)
    at org.sakaiproject.portal.charon.SkinnableCharonPortal.doPost(SkinnableCharonPortal.java:942)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:592)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java: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.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:200)
    at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283)
    at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:773)
    at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703)
    at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:895)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
    at java.lang.Thread.run(Thread.java:595)


Tool Placement:
No Placement


Request:
: AuthType:null
: CharEncoding:UTF-8
: ContentLength:750
: ContentType:application/x-www-form-urlencoded
: ContextPath:/portal
: LocalAddress:null
: LocalName:ucmcrops.ucmerced.edu
: LocalPort:443
: Mehthod:POST
: PathInfo:/tool/9bfff475-6a3d-4f09-80d2-1b67bfe7ea53/jsf/author/authorSettings
: Protocol:HTTP/1.1
: QueryString:null
: RemoteAddress:169.236.252.48
: RemoteHost:169.236.252.48
: RemotePort:-1
: RemoteUser:admin
: RequestedSession:6c4f30f1-2470-4053-00ff-a399386e6021.ucmcrops2
: Requested URL:https://ucmcrops.ucmerced.edu/portal/tool/9bfff475-6a3d-4f09-80d2-1b67bfe7ea53/jsf/author/authorSettings
: Scheme:https
: ServerName:ucmcrops.ucmerced.edu
: Headers:
: Header:host:ucmcrops.ucmerced.edu
: Header:user-agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6
: Header:accept:application/x-shockwave-flash,text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
: 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:Keep-Alive:300
: Header:connection:keep-alive
: Header:referer:https://ucmcrops.ucmerced.edu/portal/tool/9bfff475-6a3d-4f09-80d2-1b67bfe7ea53/jsf/author/editAssessment
: Header:cookie:JSESSIONID=6c4f30f1-2470-4053-00ff-a399386e6021.ucmcrops2
: Header:content-type:application/x-www-form-urlencoded
: Header:content-length:750
: Parameters:
: Parameter:assessmentSettingsAction:_id304:0:Save Settings
: Parameter:assessmentSettingsAction:endDate:0:
: Parameter:assessmentSettingsAction:0:assessmentSettingsAction
: Parameter:assessmentSettingsAction:intro:_id39_textinput_current_status:0:firsttime
: Parameter:assessmentSettingsAction:_idcl:0:
: Parameter:assessmentSettingsAction:feedbackDelivery:0:1
: Parameter:assessmentSettingsAction:assessmentId:0:1167
: Parameter:assessmentSettingsAction:startDate:0:08/07/2006 11:39:58 AM
: Parameter:assessmentSettingsAction:intro:assessment_title:0:TestExam
: Parameter:assessmentSettingsAction:_id100:0:ECON 195 001 W07
: Parameter:assessmentSettingsAction:intro:assessment_author:0:
: Parameter:assessmentSettingsAction:feedbackDate:0:
: Parameter:assessmentSettingsAction:intro:_id39_textinput:0:
: Parameter:assessmentSettingsAction:lateHandling:0:1
: Parameter:assessmentSettingsAction:feedbackAuthoring:0:1
: Attributes:
: Attribute:tool.url.manager:org.sakaiproject.portal.util.ToolURLManagerImpl@20dde72c
: Attribute:sakai.session:org.sakaiproject.tool.impl.SessionComponent$MySession@9c78cd45
: 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/default/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('Main9bfff475x6a3dx4f09x80d2x1b67bfe7ea53');setFocus(focus_path);
: Attribute:sakai.filtered:sakai.filtered
: Attribute:sakai.html.head.css.skin:<link href="/library/skin/default/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/default/tool.css" type="text/css" rel="stylesheet" media="all" />

Session:
: Created:1187714960557
: LastAccess:1187719423842
: MaxInactive:3600
: Attributes:
: Attribute:portalskin:defaultskin



Lydia Li - 21-Aug-2007 12:09
When you log in as an admin, do you see a 'Default Assessment Type" listed under the 'Assessment Types"? When a user doesn't select any assessment types, the default one will be used. The Default Template has an ID = 1 (in sam_assessmentbase_t). It should be installed along with 6 other assessment types as part of a sql script when you first installed Samigo. Let me know what you find out.

Lydia Li - 21-Aug-2007 15:28
We were finally able to reproduce it if we uncheck the 'Final Page URL' setting in the 'Default Assessment Type" . Can you see if that resolves your problem?

This problem applies to all assessment types. We will fix this in 2.5.

Lydia Li - 21-Aug-2007 15:30
we will also fix this in 2.4.x after it's verified .

Karen Tsao - 21-Aug-2007 15:48
commit -m "SAK-11075" C:/sakai/sam/samigo-app/src/java/org/sakaiproject/tool/assessment/ui/listener/author/SaveAssessmentSettings.java
    Sending sakai/sam/samigo-app/src/java/org/sakaiproject/tool/assessment/ui/listener/author/SaveAssessmentSettings.java
    Transmitting file data ...
    Committed revision 34226.

Matt Freeburg - 23-Aug-2007 14:16
Updated the description to reflect testing after the fix on nightly trunk. Looks good to be merged into 2.4.x.

Karen Tsao - 23-Aug-2007 14:31
For 2.4.x:

$ svn commit -m "SAK-11075"
Sending samigo-app\src\java\org\sakaiproject\tool\assessment\ui\listener\author\SaveAssessmentSettings.java
Transmitting file data .
Committed revision 34327.

Karen Tsao - 23-Aug-2007 14:32
Per Matt, the fix has been verified. Close the bug.