package org.openbakery.racecontrol.web; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.apache.wicket.authroles.authentication.AuthenticatedWebSession; import org.apache.wicket.authroles.authorization.strategies.role.Roles; import org.apache.wicket.request.Request; import org.apache.wicket.protocol.http.WebSession; import org.openbakery.racecontrol.bean.User; import org.openbakery.racecontrol.plugin.Plugin; import org.openbakery.racecontrol.service.ServiceLocateException; import org.openbakery.racecontrol.service.ServiceLocator; import org.openbakery.racecontrol.service.exception.LoginFailedException; import org.openbakery.racecontrol.web.bean.MenuItem; import org.openbakery.racecontrol.web.bean.Visibility; public class RaceControlSession extends AuthenticatedWebSession { /** * */ private static final long serialVersionUID = -130649300021164196L; private User user; private List<MenuItem> menuItems; public RaceControlSession(Request request) { super(request); user = new User(); } @Override public Roles getRoles() { return null; } @Override public boolean authenticate(String username, String password) { try { getServiceLocator().getLoginService().login(username, password); return true; } catch (LoginFailedException e) { return false; } } public User getUser() { return user; } public void setUser(User user) { this.user = user; } /* * public Object getBean(String name) { * * RaceControlWebApplication application = (RaceControlWebApplication) getApplication(); * * return application.getContext().getBean(name); } */ public ServiceLocator getServiceLocator() { RaceControlWebApplication application = (RaceControlWebApplication) getApplication(); return (ServiceLocator) application.getContext().getBean("serviceLocator"); } public <T extends Object> T getService(Class<T> clazz) { ServiceLocator serviceLocator = getServiceLocator(); try { return (T) serviceLocator.getService(clazz); } catch (ServiceLocateException e) { error("Internal error!"); } return null; } public List<MenuItem> getMenuItems() { // if (menuItems == null) { menuItems = new ArrayList<MenuItem>(); menuItems.add(new MenuItem("Settings", SettingsPage.class, Visibility.AUTHENTICATED, 9)); menuItems.add(new MenuItem("Logout", LogoutPage.class, Visibility.AUTHENTICATED, 10)); for (Plugin plugin : getServiceLocator().getRaceService().getRaceControl().getPlugins()) { menuItems.addAll(plugin.getMenuItems()); } Collections.sort(menuItems); // } return menuItems; } }