package jdepend.server.service.impl;
import java.rmi.RemoteException;
import java.rmi.server.ServerNotActiveException;
import java.rmi.server.UnicastRemoteObject;
import java.util.UUID;
import jdepend.framework.exception.JDependException;
import jdepend.server.service.session.JDependSession;
import jdepend.server.service.session.JDependSessionService;
import jdepend.server.service.user.UserRepository;
import jdepend.server.service.user.User;
/**
* Session服务
*
* @author wangdg
*
*/
public final class JDependSessionServiceImpl extends UnicastRemoteObject implements JDependSessionService {
public JDependSessionServiceImpl() throws RemoteException {
super();
}
@Override
public long createSession(String name, String password) throws java.rmi.RemoteException {
try {
validate(name, password);
} catch (JDependException e1) {
e1.printStackTrace();
throw new RemoteException(e1.getMessage(), e1);
}
JDependSession session = new JDependSession();
session.setId(UUID.randomUUID().getLeastSignificantBits());
session.setUserName(name);
try {
session.setClient(getClientHost());
} catch (ServerNotActiveException e) {
e.printStackTrace();
}
JDependSessionMgr.getInstance().putSession(session);
return session.getId();
}
@Override
public void removeSession(Long sessionId) throws RemoteException {
JDependSessionMgr.getInstance().removeSession(sessionId);
}
private User validate(String name, String password) throws JDependException {
if (name == null || name.length() == 0) {
throw new JDependException("用户名为空");
}
return UserRepository.findTheUser(name, password);
}
@Override
public boolean isValid(Long sessionId) throws RemoteException {
return JDependSessionMgr.getInstance().isValid(sessionId);
}
}