/**
* OLAT - Online Learning and Training<br>
* http://www.olat.org
* <p>
* This software is protected by the OLAT software license.<br>
* Use is subject to license terms.<br>
* See LICENSE.TXT in this distribution for details.
* <p>
* Copyright (c) JGS goodsolutions GmbH, Zurich, Switzerland. http://www.goodsolutions.ch <br>
* All rights reserved.
*/
package org.olat.core.test.gui.error;
import org.olat.core.gui.UserRequest;
import org.olat.core.gui.components.Component;
import org.olat.core.gui.components.link.Link;
import org.olat.core.gui.components.link.LinkFactory;
import org.olat.core.gui.components.panel.Panel;
import org.olat.core.gui.components.velocity.VelocityContainer;
import org.olat.core.gui.control.Controller;
import org.olat.core.gui.control.Event;
import org.olat.core.gui.control.WindowControl;
import org.olat.core.gui.control.controller.BasicController;
import org.olat.core.gui.dev.controller.SourceViewController;
import org.olat.core.logging.AssertException;
/**
* Description:<br>
* demo controller which can deliberately cause different kind of errors.<br>
* mainly useful for testing error handling in standard and ajax-mode.<br>
*
*
* @author Felix Jost
*/
public class ErrorDemoController extends BasicController {
private VelocityContainer myContent;
private Panel mainPanel;
private Link npeLink;
private Link assertLink;
private Link renderLink;
/**
* @param ureq
* @param wControl
*/
public ErrorDemoController(UserRequest ureq, WindowControl wControl) {
super(ureq, wControl);
myContent = createVelocityContainer("index");
npeLink = LinkFactory.createLink("command.npe", myContent, this);
assertLink = LinkFactory.createLink("command.assert", myContent, this);
renderLink = LinkFactory.createLink("command.render", myContent, this);
mainPanel = new Panel("homesitepanel");
mainPanel.setContent(myContent);
//add source view control
Controller sourceview = new SourceViewController(ureq, wControl, this.getClass(), myContent);
myContent.put("sourceview", sourceview.getInitialComponent());
putInitialPanel(mainPanel);
}
/**
* @see org.olat.core.gui.control.DefaultController#event(org.olat.core.gui.UserRequest,
* org.olat.core.gui.components.Component, org.olat.core.gui.control.Event)
*/
public void event(UserRequest ureq, Component source, Event event) {
if (source == npeLink){
// cause a nullpointer exception
String s = new String();
s = null;
Class c = s.getClass();
getWindowControl().setInfo("get class of "+c.getName());
} else if (source == assertLink){
// create a assertexception sample
try {
// cause a nullpointer exception
String s = new String();
s = null;
Class c = s.getClass();
getWindowControl().setInfo("get class of "+c.getName());
} catch (Exception e) {
throw new AssertException("this is an assertException with a stacktrace from a NPE", e);
}
} else if (source == renderLink){
myContent.contextPut("obj", this);
}
}
public void doit() {
throw new AssertException("called while rendering, throwing an assertexception now");
}
protected void event(UserRequest ureq, Controller source, Event event) {
// nothing to do
}
/**
* @see org.olat.core.gui.control.DefaultController#doDispose(boolean)
*/
protected void doDispose() {
// nothing to do
}
}