All pastes #801593 Raw Edit

Someone

public text v1 · immutable
#801593 ·published 2007-11-29 12:35 UTC
rendered paste body
package com.netsyncro.wicketmail;

import com.netsyncro.wicketmail.business.LoginDataBean;
import com.netsyncro.wicketmail.business.MailboxConnection;
import com.netsyncro.wicketmail.business.db.AuthorizedRole;
import com.netsyncro.wicketmail.business.db.AuthorizedRolesDao;
import com.netsyncro.wicketmail.business.javamail.JavamailConnection;
import com.netsyncro.wicketmail.business.misc.AccessDeniedException;
import com.netsyncro.wicketmail.business.misc.ConnectionEstablishException;
import com.netsyncro.wicketmail.business.stub.StubMailboxConnection;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.wicket.Request;
import org.apache.wicket.Session;
import org.apache.wicket.Application;
import org.apache.wicket.injection.web.InjectorHolder;
import org.apache.wicket.protocol.http.WebSession;
import org.apache.wicket.spring.injection.annot.SpringBean;

import java.security.DigestException;
import java.security.NoSuchAlgorithmException;


/**
 * Session.
 */
public class WicketmailSession extends WebSession {
    private static final Log log = LogFactory.getLog(WicketmailSession.class);

    // TODO : Dima just take a look that this is the best route to go for now
    private String user;

    private MailboxConnection mailboxConnection;

    public static WicketmailSession get() {
        return (WicketmailSession) Session.get();
    }

    public WicketmailSession(final Request request) {
        super(request);
        // NOTE : This is my attempt, but tosses a 500 error..
        // which points to me needing to create an injector. bla bla.
        //  maybe we want to use google guice injector for this?
        // See AbstractDao for an example
        InjectorHolder.getInjector().inject(this);
    }

    // TODO : Replace this. Old way that works
/*
    public WicketmailSession(Application application, Request request) {
        super(application, request);
        InjectorHolder.getInjector().inject(this);
    }
*/


    public MailboxConnection getMailboxConnection() {
        if (mailboxConnection == null) {
            mailboxConnection = new StubMailboxConnection();
        }
        return mailboxConnection;
    }

    public void login(final LoginDataBean loginDataBean) throws ConnectionEstablishException, AccessDeniedException {
        mailboxConnection = new JavamailConnection();
        mailboxConnection.login(loginDataBean);
    }

    public boolean isUserLoggedIn() {
        return mailboxConnection != null;
    }

    public void logout() {
        mailboxConnection.logout();
        mailboxConnection = null;
    }

    @SpringBean(name = "authorizedRolesDao")
    private AuthorizedRolesDao dao;

    public final boolean authenticate(final String username, final String password) throws DigestException, NoSuchAlgorithmException {
        if (user == null || (null != username && null != password)) {
            if (dao != null) {
                AuthorizedRole authorizedroles = dao.retrieve(username, password);
                if (authorizedroles.getRoleID() != 0) {
                    user = username;
                }
            }
        }

        return user != null;
    }

}