From 4878e88d4ffe7a4eebb38553f6d85ba961a9be93 Mon Sep 17 00:00:00 2001 From: Justin Richer Date: Tue, 24 Feb 2015 17:41:05 -0500 Subject: [PATCH] added list all by owner --- .../openid/connect/model/ResourceSet.java | 7 ++++++ .../connect/service/ResourceSetService.java | 4 ++++ .../repository/ResourceSetRepository.java | 4 ++++ .../impl/JpaResourceSetRepository.java | 10 ++++++++ .../impl/DefaultResourceSetService.java | 7 ++++++ .../web/ResourceSetRegistrationEndpoint.java | 24 +++++++++++++++++++ 6 files changed, 56 insertions(+) diff --git a/openid-connect-common/src/main/java/org/mitre/openid/connect/model/ResourceSet.java b/openid-connect-common/src/main/java/org/mitre/openid/connect/model/ResourceSet.java index 5b59e5825..4c2e6ab49 100644 --- a/openid-connect-common/src/main/java/org/mitre/openid/connect/model/ResourceSet.java +++ b/openid-connect-common/src/main/java/org/mitre/openid/connect/model/ResourceSet.java @@ -28,12 +28,19 @@ import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; import javax.persistence.Table; @Entity @Table(name = "resource_set") +@NamedQueries ( + @NamedQuery(name = ResourceSet.QUERY_BY_OWNER, query = "select r from ResourceSet r where r.owner = :owner") +) public class ResourceSet { + public static final String QUERY_BY_OWNER = "ResourceSet.queryByOwner"; + private Long id; private String name; private String uri; diff --git a/openid-connect-common/src/main/java/org/mitre/openid/connect/service/ResourceSetService.java b/openid-connect-common/src/main/java/org/mitre/openid/connect/service/ResourceSetService.java index 6fe09dab8..3e0ca0c7d 100644 --- a/openid-connect-common/src/main/java/org/mitre/openid/connect/service/ResourceSetService.java +++ b/openid-connect-common/src/main/java/org/mitre/openid/connect/service/ResourceSetService.java @@ -16,6 +16,8 @@ *******************************************************************************/ package org.mitre.openid.connect.service; +import java.util.Collection; + import org.mitre.openid.connect.model.ResourceSet; /** @@ -35,4 +37,6 @@ public interface ResourceSetService { public void remove(ResourceSet rs); + public Collection getAllForOwner(String owner); + } diff --git a/openid-connect-server/src/main/java/org/mitre/openid/connect/repository/ResourceSetRepository.java b/openid-connect-server/src/main/java/org/mitre/openid/connect/repository/ResourceSetRepository.java index 668f950a5..188f630ff 100644 --- a/openid-connect-server/src/main/java/org/mitre/openid/connect/repository/ResourceSetRepository.java +++ b/openid-connect-server/src/main/java/org/mitre/openid/connect/repository/ResourceSetRepository.java @@ -17,6 +17,8 @@ package org.mitre.openid.connect.repository; +import java.util.Collection; + import org.mitre.openid.connect.model.ResourceSet; /** @@ -31,4 +33,6 @@ public interface ResourceSetRepository { public void remove(ResourceSet rs); + public Collection getAllForOwner(String owner); + } diff --git a/openid-connect-server/src/main/java/org/mitre/openid/connect/repository/impl/JpaResourceSetRepository.java b/openid-connect-server/src/main/java/org/mitre/openid/connect/repository/impl/JpaResourceSetRepository.java index 49430c034..bb0245c2f 100644 --- a/openid-connect-server/src/main/java/org/mitre/openid/connect/repository/impl/JpaResourceSetRepository.java +++ b/openid-connect-server/src/main/java/org/mitre/openid/connect/repository/impl/JpaResourceSetRepository.java @@ -17,8 +17,11 @@ package org.mitre.openid.connect.repository.impl; +import java.util.Collection; + import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; +import javax.persistence.TypedQuery; import org.mitre.openid.connect.model.ResourceSet; import org.mitre.openid.connect.repository.ResourceSetRepository; @@ -61,4 +64,11 @@ public class JpaResourceSetRepository implements ResourceSetRepository { } } + @Override + public Collection getAllForOwner(String owner) { + TypedQuery query = em.createNamedQuery(ResourceSet.QUERY_BY_OWNER, ResourceSet.class); + query.setParameter("owner", owner); + return query.getResultList(); + } + } diff --git a/openid-connect-server/src/main/java/org/mitre/openid/connect/service/impl/DefaultResourceSetService.java b/openid-connect-server/src/main/java/org/mitre/openid/connect/service/impl/DefaultResourceSetService.java index 267eebca2..3a7cbdf2f 100644 --- a/openid-connect-server/src/main/java/org/mitre/openid/connect/service/impl/DefaultResourceSetService.java +++ b/openid-connect-server/src/main/java/org/mitre/openid/connect/service/impl/DefaultResourceSetService.java @@ -17,6 +17,8 @@ package org.mitre.openid.connect.service.impl; +import java.util.Collection; + import org.mitre.openid.connect.model.ResourceSet; import org.mitre.openid.connect.repository.ResourceSetRepository; import org.mitre.openid.connect.service.ResourceSetService; @@ -77,6 +79,11 @@ public class DefaultResourceSetService implements ResourceSetService { public void remove(ResourceSet rs) { repository.remove(rs); } + + @Override + public Collection getAllForOwner(String owner) { + return repository.getAllForOwner(owner); + } diff --git a/openid-connect-server/src/main/java/org/mitre/openid/connect/web/ResourceSetRegistrationEndpoint.java b/openid-connect-server/src/main/java/org/mitre/openid/connect/web/ResourceSetRegistrationEndpoint.java index c414e4424..af24c99da 100644 --- a/openid-connect-server/src/main/java/org/mitre/openid/connect/web/ResourceSetRegistrationEndpoint.java +++ b/openid-connect-server/src/main/java/org/mitre/openid/connect/web/ResourceSetRegistrationEndpoint.java @@ -20,11 +20,16 @@ import static org.mitre.util.JsonUtils.getAsLong; import static org.mitre.util.JsonUtils.getAsString; import static org.mitre.util.JsonUtils.getAsStringSet; +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; + import org.mitre.oauth2.service.SystemScopeService; import org.mitre.openid.connect.config.ConfigurationPropertiesBean; import org.mitre.openid.connect.model.ResourceSet; import org.mitre.openid.connect.service.ResourceSetService; import org.mitre.openid.connect.view.HttpCodeView; +import org.mitre.openid.connect.view.JsonEntityView; import org.mitre.openid.connect.view.JsonErrorView; import org.mitre.openid.connect.view.ResourceSetEntityAbbreviatedView; import org.mitre.openid.connect.view.ResourceSetEntityView; @@ -199,6 +204,25 @@ public class ResourceSetRegistrationEndpoint { } } + + @RequestMapping(method = RequestMethod.GET, produces = MimeTypeUtils.APPLICATION_JSON_VALUE) + public String listResourceSets(Model m, Authentication auth) { + ensureOAuthScope(auth); + + String owner = auth.getName(); + + Collection resourceSets = resourceSetService.getAllForOwner(owner); + + // build the entity here and send to the display + + Set ids = new HashSet<>(); + for (ResourceSet resourceSet : resourceSets) { + ids.add(resourceSet.getId().toString()); // add them all as strings so that gson renders them properly + } + + m.addAttribute("entity", ids); + return JsonEntityView.VIEWNAME; + } private void ensureOAuthScope(Authentication auth) { // if auth is OAuth, make sure we've got the right scope