Skip to content

Commit 4f4c8de

Browse files
mtommilajricher
authored andcommitted
Fix JPA issues to allow using Hibernate
1 parent 375a5f2 commit 4f4c8de

File tree

4 files changed

+31
-53
lines changed

4 files changed

+31
-53
lines changed

openid-connect-common/src/main/java/org/mitre/oauth2/model/AuthenticationHolderEntity.java

Lines changed: 16 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ public class AuthenticationHolderEntity {
6666

6767
private SavedUserAuthentication userAuth;
6868

69-
private Collection<? extends GrantedAuthority> authorities;
69+
private Collection<GrantedAuthority> authorities;
7070

7171
private Set<String> resourceIds;
7272

@@ -116,14 +116,14 @@ public void setAuthentication(OAuth2Authentication authentication) {
116116

117117
// pull apart the request and save its bits
118118
OAuth2Request o2Request = authentication.getOAuth2Request();
119-
setAuthorities(o2Request.getAuthorities());
119+
setAuthorities(o2Request.getAuthorities() == null ? null : new HashSet<>(o2Request.getAuthorities()));
120120
setClientId(o2Request.getClientId());
121-
setExtensions(o2Request.getExtensions());
121+
setExtensions(o2Request.getExtensions() == null ? null : new HashMap<>(o2Request.getExtensions()));
122122
setRedirectUri(o2Request.getRedirectUri());
123-
setRequestParameters(o2Request.getRequestParameters());
124-
setResourceIds(o2Request.getResourceIds());
125-
setResponseTypes(o2Request.getResponseTypes());
126-
setScope(o2Request.getScope());
123+
setRequestParameters(o2Request.getRequestParameters() == null ? null : new HashMap<>(o2Request.getRequestParameters()));
124+
setResourceIds(o2Request.getResourceIds() == null ? null : new HashSet<>(o2Request.getResourceIds()));
125+
setResponseTypes(o2Request.getResponseTypes() == null ? null : new HashSet<>(o2Request.getResponseTypes()));
126+
setScope(o2Request.getScope() == null ? null : new HashSet<>(o2Request.getScope()));
127127
setApproved(o2Request.isApproved());
128128

129129
if (authentication.getUserAuthentication() != null) {
@@ -159,19 +159,15 @@ public void setUserAuth(SavedUserAuthentication userAuth) {
159159
)
160160
@Convert(converter = SimpleGrantedAuthorityStringConverter.class)
161161
@Column(name="authority")
162-
public Collection<? extends GrantedAuthority> getAuthorities() {
162+
public Collection<GrantedAuthority> getAuthorities() {
163163
return authorities;
164164
}
165165

166166
/**
167167
* @param authorities the authorities to set
168168
*/
169-
public void setAuthorities(Collection<? extends GrantedAuthority> authorities) {
170-
if (authorities != null) {
171-
this.authorities = new HashSet<>(authorities);
172-
} else {
173-
this.authorities = null;
174-
}
169+
public void setAuthorities(Collection<GrantedAuthority> authorities) {
170+
this.authorities = authorities;
175171
}
176172

177173
/**
@@ -191,11 +187,7 @@ public Set<String> getResourceIds() {
191187
* @param resourceIds the resourceIds to set
192188
*/
193189
public void setResourceIds(Set<String> resourceIds) {
194-
if (resourceIds != null) {
195-
this.resourceIds = new HashSet<>(resourceIds);
196-
} else {
197-
this.resourceIds = null;
198-
}
190+
this.resourceIds = resourceIds;
199191
}
200192

201193
/**
@@ -247,11 +239,7 @@ public Set<String> getResponseTypes() {
247239
* @param responseTypes the responseTypes to set
248240
*/
249241
public void setResponseTypes(Set<String> responseTypes) {
250-
if (responseTypes != null) {
251-
this.responseTypes = new HashSet<>(responseTypes);
252-
} else {
253-
this.responseTypes = null;
254-
}
242+
this.responseTypes = responseTypes;
255243
}
256244

257245
/**
@@ -264,7 +252,7 @@ public void setResponseTypes(Set<String> responseTypes) {
264252
)
265253
@Column(name="val")
266254
@MapKeyColumn(name="extension")
267-
@Convert(converter=SerializableStringConverter.class)
255+
@Convert(attributeName="value", converter=SerializableStringConverter.class)
268256
public Map<String, Serializable> getExtensions() {
269257
return extensions;
270258
}
@@ -273,11 +261,7 @@ public Map<String, Serializable> getExtensions() {
273261
* @param extensions the extensions to set
274262
*/
275263
public void setExtensions(Map<String, Serializable> extensions) {
276-
if (extensions != null) {
277-
this.extensions = new HashMap<>(extensions);
278-
} else {
279-
this.extensions = null;
280-
}
264+
this.extensions = extensions;
281265
}
282266

283267
/**
@@ -313,11 +297,7 @@ public Set<String> getScope() {
313297
* @param scope the scope to set
314298
*/
315299
public void setScope(Set<String> scope) {
316-
if (scope != null) {
317-
this.scope = new HashSet<>(scope);
318-
} else {
319-
this.scope = null;
320-
}
300+
this.scope = scope;
321301
}
322302

323303
/**
@@ -338,11 +318,7 @@ public Map<String, String> getRequestParameters() {
338318
* @param requestParameters the requestParameters to set
339319
*/
340320
public void setRequestParameters(Map<String, String> requestParameters) {
341-
if (requestParameters != null) {
342-
this.requestParameters = new HashMap<>(requestParameters);
343-
} else {
344-
this.requestParameters = null;
345-
}
321+
this.requestParameters = requestParameters;
346322
}
347323

348324

openid-connect-common/src/main/java/org/mitre/oauth2/model/OAuth2AccessTokenEntity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ public boolean isExpired() {
265265
/**
266266
* @return the idToken
267267
*/
268-
@OneToOne(cascade=CascadeType.ALL) // one-to-one mapping for now
268+
@OneToOne(cascade=CascadeType.ALL, orphanRemoval=true) // one-to-one mapping for now
269269
@JoinColumn(name = "id_token_id")
270270
public OAuth2AccessTokenEntity getIdToken() {
271271
return idToken;

openid-connect-common/src/main/java/org/mitre/oauth2/model/SavedUserAuthentication.java

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public class SavedUserAuthentication implements Authentication {
5454

5555
private String name;
5656

57-
private Collection<? extends GrantedAuthority> authorities;
57+
private Collection<GrantedAuthority> authorities;
5858

5959
private boolean authenticated;
6060

@@ -65,7 +65,7 @@ public class SavedUserAuthentication implements Authentication {
6565
*/
6666
public SavedUserAuthentication(Authentication src) {
6767
setName(src.getName());
68-
setAuthorities(src.getAuthorities());
68+
setAuthorities(new HashSet<>(src.getAuthorities()));
6969
setAuthenticated(src.isAuthenticated());
7070

7171
if (src instanceof SavedUserAuthentication) {
@@ -115,7 +115,7 @@ public String getName() {
115115
)
116116
@Convert(converter = SimpleGrantedAuthorityStringConverter.class)
117117
@Column(name="authority")
118-
public Collection<? extends GrantedAuthority> getAuthorities() {
118+
public Collection<GrantedAuthority> getAuthorities() {
119119
return authorities;
120120
}
121121

@@ -175,12 +175,8 @@ public void setName(String name) {
175175
/**
176176
* @param authorities the authorities to set
177177
*/
178-
public void setAuthorities(Collection<? extends GrantedAuthority> authorities) {
179-
if (authorities != null) {
180-
this.authorities = new HashSet<>(authorities);
181-
} else {
182-
this.authorities = null;
183-
}
178+
public void setAuthorities(Collection<GrantedAuthority> authorities) {
179+
this.authorities = authorities;
184180
}
185181

186182

openid-connect-server/src/main/java/org/mitre/oauth2/repository/impl/JpaOAuth2TokenRepository.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,13 @@ public OAuth2AccessTokenEntity saveAccessToken(OAuth2AccessTokenEntity token) {
9797
public void removeAccessToken(OAuth2AccessTokenEntity accessToken) {
9898
OAuth2AccessTokenEntity found = getAccessTokenByValue(accessToken.getValue());
9999
if (found != null) {
100-
manager.remove(found);
100+
OAuth2AccessTokenEntity accessTokenForIdToken = getAccessTokenForIdToken(found);
101+
if (accessTokenForIdToken != null) {
102+
accessTokenForIdToken.setIdToken(null);
103+
JpaUtil.saveOrUpdate(accessTokenForIdToken.getId(), manager, accessTokenForIdToken);
104+
} else {
105+
manager.remove(found);
106+
}
101107
} else {
102108
throw new IllegalArgumentException("Access token not found: " + accessToken);
103109
}
@@ -231,7 +237,7 @@ public Set<OAuth2AccessTokenEntity> getAccessTokensForResourceSet(ResourceSet rs
231237
@Transactional(value="defaultTransactionManager")
232238
public void clearDuplicateAccessTokens() {
233239

234-
Query query = manager.createQuery("select a.jwt, count(1) as c from OAuth2AccessTokenEntity a GROUP BY a.jwt HAVING c > 1");
240+
Query query = manager.createQuery("select a.jwt, count(1) as c from OAuth2AccessTokenEntity a GROUP BY a.jwt HAVING count(1) > 1");
235241
@SuppressWarnings("unchecked")
236242
List<Object[]> resultList = query.getResultList();
237243
List<JWT> values = new ArrayList<>();
@@ -255,7 +261,7 @@ public void clearDuplicateAccessTokens() {
255261
@Override
256262
@Transactional(value="defaultTransactionManager")
257263
public void clearDuplicateRefreshTokens() {
258-
Query query = manager.createQuery("select a.jwt, count(1) as c from OAuth2RefreshTokenEntity a GROUP BY a.jwt HAVING c > 1");
264+
Query query = manager.createQuery("select a.jwt, count(1) as c from OAuth2RefreshTokenEntity a GROUP BY a.jwt HAVING count(1) > 1");
259265
@SuppressWarnings("unchecked")
260266
List<Object[]> resultList = query.getResultList();
261267
List<JWT> values = new ArrayList<>();

0 commit comments

Comments
 (0)