system scope ordering consistency
parent
173281f039
commit
c2b9fd4db1
|
@ -20,7 +20,7 @@ import javax.persistence.Table;
|
|||
@Entity
|
||||
@Table(name = "system_scope")
|
||||
@NamedQueries({
|
||||
@NamedQuery(name = "SystemScope.findAll", query = "select s from SystemScope s"),
|
||||
@NamedQuery(name = "SystemScope.findAll", query = "select s from SystemScope s ORDER BY s.id"),
|
||||
@NamedQuery(name = "SystemScope.getByValue", query = "select s from SystemScope s WHERE s.value = :value")
|
||||
})
|
||||
public class SystemScope {
|
||||
|
@ -29,9 +29,15 @@ public class SystemScope {
|
|||
private String value; // scope value
|
||||
private String description; // human-readable description
|
||||
private String icon; // class of the icon to display on the auth page
|
||||
private boolean allowDynReg; // can a dynamically registered client ask for this scope?
|
||||
private boolean defaultScope; // is this a default scope for newly-registered clients?
|
||||
private boolean allowDynReg = false; // can a dynamically registered client ask for this scope?
|
||||
private boolean defaultScope = false; // is this a default scope for newly-registered clients?
|
||||
|
||||
/**
|
||||
* @param input
|
||||
*/
|
||||
public SystemScope(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
/**
|
||||
* @return the id
|
||||
*/
|
||||
|
|
|
@ -15,8 +15,16 @@ public interface SystemScopeService {
|
|||
|
||||
public Set<SystemScope> getAll();
|
||||
|
||||
/**
|
||||
* Get all scopes that are defaulted to new clients on this system
|
||||
* @return
|
||||
*/
|
||||
public Set<SystemScope> getDefaults();
|
||||
|
||||
/**
|
||||
* Get all scopes that are allowed for dynamic registration on this system
|
||||
* @return
|
||||
*/
|
||||
public Set<SystemScope> getDynReg();
|
||||
|
||||
public SystemScope getById(Long id);
|
||||
|
@ -27,8 +35,18 @@ public interface SystemScopeService {
|
|||
|
||||
public SystemScope save(SystemScope scope);
|
||||
|
||||
/**
|
||||
* Translate the set of scope strings into a set of SystemScope objects.
|
||||
* @param scope
|
||||
* @return
|
||||
*/
|
||||
public Set<SystemScope> fromStrings(Set<String> scope);
|
||||
|
||||
/**
|
||||
* Pluck the scope values from the set of SystemScope objects and return a list of strings
|
||||
* @param scope
|
||||
* @return
|
||||
*/
|
||||
public Set<String> toStrings(Set<SystemScope> scope);
|
||||
|
||||
}
|
||||
|
|
|
@ -3,12 +3,11 @@
|
|||
*/
|
||||
package org.mitre.oauth2.repository.impl;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.persistence.EntityManager;
|
||||
import javax.persistence.PersistenceContext;
|
||||
import javax.persistence.PersistenceUnit;
|
||||
import javax.persistence.TypedQuery;
|
||||
|
||||
import org.mitre.oauth2.model.SystemScope;
|
||||
|
@ -37,7 +36,7 @@ public class JpaSystemScopeRepository implements SystemScopeRepository {
|
|||
public Set<SystemScope> getAll() {
|
||||
TypedQuery<SystemScope> query = em.createNamedQuery("SystemScope.findAll", SystemScope.class);
|
||||
|
||||
return new HashSet<SystemScope>(query.getResultList());
|
||||
return new LinkedHashSet<SystemScope>(query.getResultList());
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
*/
|
||||
package org.mitre.oauth2.service.impl;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
@ -31,7 +31,6 @@ public class DefaultSystemScopeService implements SystemScopeService {
|
|||
private SystemScopeRepository repository;
|
||||
|
||||
private Predicate<SystemScope> isDefault = new Predicate<SystemScope>() {
|
||||
|
||||
@Override
|
||||
public boolean apply(@Nullable SystemScope input) {
|
||||
return (input != null && input.isDefaultScope());
|
||||
|
@ -40,7 +39,6 @@ public class DefaultSystemScopeService implements SystemScopeService {
|
|||
|
||||
|
||||
private Predicate<SystemScope> isDynReg = new Predicate<SystemScope>() {
|
||||
|
||||
@Override
|
||||
public boolean apply(@Nullable SystemScope input) {
|
||||
return (input != null && input.isAllowDynReg());
|
||||
|
@ -50,7 +48,18 @@ public class DefaultSystemScopeService implements SystemScopeService {
|
|||
private Function<String, SystemScope> stringToSystemScope = new Function<String, SystemScope>() {
|
||||
@Override
|
||||
public SystemScope apply(@Nullable String input) {
|
||||
return getByValue(input);
|
||||
if (input == null) {
|
||||
return null;
|
||||
} else {
|
||||
SystemScope s = getByValue(input);
|
||||
if (s != null) {
|
||||
// get the real scope if it's available
|
||||
return s;
|
||||
} else {
|
||||
// make a fake one otherwise
|
||||
return new SystemScope(input);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -130,7 +139,7 @@ public class DefaultSystemScopeService implements SystemScopeService {
|
|||
if (scope == null) {
|
||||
return null;
|
||||
} else {
|
||||
return new HashSet<SystemScope>(Collections2.filter(Collections2.transform(scope, stringToSystemScope), Predicates.notNull()));
|
||||
return new LinkedHashSet<SystemScope>(Collections2.filter(Collections2.transform(scope, stringToSystemScope), Predicates.notNull()));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -142,7 +151,7 @@ public class DefaultSystemScopeService implements SystemScopeService {
|
|||
if (scope == null) {
|
||||
return null;
|
||||
} else {
|
||||
return new HashSet<String>(Collections2.filter(Collections2.transform(scope, systemScopeToString), Predicates.notNull()));
|
||||
return new LinkedHashSet<String>(Collections2.filter(Collections2.transform(scope, systemScopeToString), Predicates.notNull()));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue