cache.addObject(sf);
}
@Override
public LoginResponse login(LoginRequest request){
LoginResponse response = request.getResponse();
synchronized (sessions) {
UserRIDMW user = users.get(request.getUserName());
if (user == null){
// Just indicate that there was an error, don't provide additional info
response.setResponseType(ResponseTypeEnum.ERROR);
if (request.isTrackingEnabled())
logger.warn("Unknown user: " + request.getUserName());
}
else{
if (!user.getPassword().equals(request.getPassword())){
response.setResponseType(ResponseTypeEnum.ERROR);
if (request.isTrackingEnabled())
logger.warn("Incorrect password for user: " + request.getUserName());
}
else{
SessionRI session = new SessionRI(pluginManager.getCache(),pluginManager.getRequestTracker());
try {
session.setDotName(new DotName("sf." + request.getServletRequest().getSession().getId()));
} catch (DmcValueException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
session.setSessionIDRI(request.getServletRequest().getSession().getId());
session.setSessionHostRI(request.getServletRequest().getRemoteHost());
session.setUserRefRI(user);
// This will create a new GWT Event Service Domain that's named by the session identifier
// The session will be used to forward events and asynchronous responses back to the client
// via this mechanism.
session.initializeEventChannel(servlet);
sessions.put(session.getSessionIDRI(), session);
response.setSessionID(session.getSessionIDRI());
if (request.isTrackingEnabled())
logger.trace("New session created: " + session.getSessionIDRI() + " - for user: " + request.getUserName());
// TODO: proper addition of the entry to the cache