added Id field to DefaultUserInfo object, switched "userId" terminology to "subject"

pull/306/merge
Justin Richer 2013-03-20 14:29:00 -04:00
parent 30c6271e72
commit 8fccbf3483
7 changed files with 45 additions and 46 deletions

View File

@ -33,10 +33,12 @@ import com.google.gson.JsonObject;
@Table(name="user_info") @Table(name="user_info")
@NamedQueries({ @NamedQueries({
@NamedQuery(name="DefaultUserInfo.getAll", query = "select u from DefaultUserInfo u"), @NamedQuery(name="DefaultUserInfo.getAll", query = "select u from DefaultUserInfo u"),
@NamedQuery(name="DefaultUserInfo.getByUsername", query = "select u from DefaultUserInfo u WHERE u.preferredUsername = :username") @NamedQuery(name="DefaultUserInfo.getByUsername", query = "select u from DefaultUserInfo u WHERE u.preferredUsername = :username"),
@NamedQuery(name="DefaultUserInfo.getBySubject", query = "select u from DefaultUserInfo u WHERE u.sub = :sub")
}) })
public class DefaultUserInfo implements UserInfo { public class DefaultUserInfo implements UserInfo {
private Long id;
private String sub; private String sub;
private String preferredUsername; private String preferredUsername;
private String name; private String name;
@ -58,12 +60,25 @@ public class DefaultUserInfo implements UserInfo {
private String birthdate; private String birthdate;
/**
* @return the id
*/
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
public Long getId() {
return id;
}
/**
* @param id the id to set
*/
public void setId(Long id) {
this.id = id;
}
/* (non-Javadoc) /* (non-Javadoc)
* @see org.mitre.openid.connect.model.UserInfo#getUserId() * @see org.mitre.openid.connect.model.UserInfo#getUserId()
*/ */
@Override @Override
@Id @Basic
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="sub") @Column(name="sub")
public String getSub() { public String getSub() {
return sub; return sub;

View File

@ -28,13 +28,13 @@ import org.mitre.openid.connect.model.UserInfo;
public interface UserInfoRepository { public interface UserInfoRepository {
/** /**
* Returns the UserInfo for the given user id * Returns the UserInfo for the given subject
* *
* @param userId * @param sub
* userId the user id of the UserInfo * the subject of the UserInfo
* @return a valid UserInfo if it exists, null otherwise * @return a valid UserInfo if it exists, null otherwise
*/ */
public UserInfo getByUserId(String userId); public UserInfo getBySubject(String sub);
/** /**
* Persists a UserInfo * Persists a UserInfo
@ -52,14 +52,6 @@ public interface UserInfoRepository {
*/ */
public void remove(UserInfo userInfo); public void remove(UserInfo userInfo);
/**
* Removes the UserInfo from the repository for the given user id
*
* @param userId
* the user id for the UserInfo object to remove
*/
public void removeByUserId(String userId);
/** /**
* Return a collection of all UserInfos managed by this repository * Return a collection of all UserInfos managed by this repository
* *

View File

@ -34,13 +34,14 @@ public interface UserInfoService {
public void save(UserInfo userInfo); public void save(UserInfo userInfo);
/** /**
* Get UserInfo for user id * Get UserInfo for the Subject
* *
* @param userId * @param sub
* user id for UserInfo * subject for UserInfo
* @return UserInfo for user id, or null * @return UserInfo for sub, or null
*/ */
public UserInfo getByUserId(String userId); public UserInfo getBySubject(String userId);
/** /**
* Remove the UserInfo * Remove the UserInfo
* *
@ -49,11 +50,11 @@ public interface UserInfoService {
*/ */
public void remove(UserInfo userInfo); public void remove(UserInfo userInfo);
/** /**
* Remove the UserInfo * Get the UserInfo for the given preferredUsername field
* * @param username
* @param userId * @return
* user id for UserInfo to remove
*/ */
public void removeByUserId(String userId); public UserInfo getByUsername(String username);
} }

View File

@ -44,8 +44,11 @@ public class JpaUserInfoRepository implements UserInfoRepository {
@Override @Override
@Transactional @Transactional
public UserInfo getByUserId(String userId) { public UserInfo getBySubject(String sub) {
return manager.find(DefaultUserInfo.class, userId); TypedQuery<DefaultUserInfo> query = manager.createNamedQuery("DefaultUserInfo.getBySubject", DefaultUserInfo.class);
query.setParameter("sub", sub);
return getSingleResult(query.getResultList());
} }
@Override @Override
@ -67,18 +70,6 @@ public class JpaUserInfoRepository implements UserInfoRepository {
} }
} }
@Override
@Transactional
public void removeByUserId(String userId) {
UserInfo found = manager.find(DefaultUserInfo.class, userId);
if (found != null) {
manager.remove(found);
} else {
throw new IllegalArgumentException();
}
}
@Override @Override
@Transactional @Transactional
public Collection<DefaultUserInfo> getAll() { public Collection<DefaultUserInfo> getAll() {

View File

@ -57,8 +57,8 @@ public class DefaultUserInfoService implements UserInfoService {
} }
@Override @Override
public UserInfo getByUserId(String userId) { public UserInfo getBySubject(String userId) {
return userInfoRepository.getByUserId(userId); return userInfoRepository.getBySubject(userId);
} }
@Override @Override
@ -67,8 +67,8 @@ public class DefaultUserInfoService implements UserInfoService {
} }
@Override @Override
public void removeByUserId(String userId) { public UserInfo getByUsername(String username) {
userInfoRepository.removeByUserId(userId); return userInfoRepository.getByUsername(username);
} }
/** /**

View File

@ -87,7 +87,7 @@ public class UserInfoEndpoint {
} }
String userId = p.getName(); String userId = p.getName();
UserInfo userInfo = userInfoService.getByUserId(userId); UserInfo userInfo = userInfoService.getBySubject(userId);
if (userInfo == null) { if (userInfo == null) {
logger.error("getInfo failed; user not found: " + userId); logger.error("getInfo failed; user not found: " + userId);

View File

@ -36,7 +36,7 @@ public class UserInfoInterceptor extends HandlerInterceptorAdapter {
if (p != null && p.getName() != null) { // don't bother checking if we don't have a principal if (p != null && p.getName() != null) { // don't bother checking if we don't have a principal
// try to look up a user based on it // try to look up a user based on it
UserInfo user = userInfoService.getByUserId(p.getName()); UserInfo user = userInfoService.getBySubject(p.getName());
// if we have one, inject it so views can use it // if we have one, inject it so views can use it
if (user != null) { if (user != null) {