170 CriteriaBuilder builder =
entityManager.getCriteriaBuilder();
171 CriteriaQuery<PermissionTicketEntity> querybuilder = builder.createQuery(PermissionTicketEntity.class);
172 Root<PermissionTicketEntity> root = querybuilder.from(PermissionTicketEntity.class);
174 querybuilder.select(root.get(
"id"));
176 List<Predicate> predicates =
new ArrayList();
178 if (resourceServerId != null) {
179 predicates.add(builder.equal(root.get(
"resourceServer").get(
"id"), resourceServerId));
182 attributes.forEach((name, value) -> {
183 if (PermissionTicket.ID.equals(name)) {
184 predicates.add(root.get(name).in(value));
185 }
else if (PermissionTicket.SCOPE.equals(name)) {
186 predicates.add(root.join(
"scope").get(
"id").in(value));
187 }
else if (PermissionTicket.SCOPE_IS_NULL.equals(name)) {
188 if (Boolean.valueOf(value)) {
189 predicates.add(builder.isNull(root.get(
"scope")));
191 predicates.add(builder.isNotNull(root.get(
"scope")));
193 }
else if (PermissionTicket.RESOURCE.equals(name)) {
194 predicates.add(root.join(
"resource").get(
"id").in(value));
195 }
else if (PermissionTicket.OWNER.equals(name)) {
196 predicates.add(builder.equal(root.get(
"owner"), value));
197 }
else if (PermissionTicket.REQUESTER.equals(name)) {
198 predicates.add(builder.equal(root.get(
"requester"), value));
199 }
else if (PermissionTicket.GRANTED.equals(name)) {
200 if (Boolean.valueOf(value)) {
201 predicates.add(builder.isNotNull(root.get(
"grantedTimestamp")));
203 predicates.add(builder.isNull(root.get(
"grantedTimestamp")));
205 }
else if (PermissionTicket.REQUESTER_IS_NULL.equals(name)) {
206 predicates.add(builder.isNull(root.get(
"requester")));
207 }
else if (PermissionTicket.POLICY_IS_NOT_NULL.equals(name)) {
208 predicates.add(builder.isNotNull(root.get(
"policy")));
209 }
else if (PermissionTicket.POLICY.equals(name)) {
210 predicates.add(root.join(
"policy").get(
"id").in(value));
212 throw new RuntimeException(
"Unsupported filter [" + name +
"]");
216 querybuilder.where(predicates.toArray(
new Predicate[predicates.size()])).orderBy(builder.asc(root.get(
"resource").get(
"id")));
220 if (firstResult != -1) {
221 query.setFirstResult(firstResult);
224 if (maxResult != -1) {
225 query.setMaxResults(maxResult);
228 List<String> result = query.getResultList();
229 List<PermissionTicket> list =
new LinkedList<>();
232 for (String
id : result) {
233 PermissionTicket ticket = ticketStore.
findById(
id, resourceServerId);
234 if (Objects.nonNull(ticket)) {
PermissionTicketStore getPermissionTicketStore()
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
final EntityManager entityManager
Definition: JPAPermissionTicketStore.java:48
PermissionTicket findById(String id, String resourceServerId)
final AuthorizationProvider provider
Definition: JPAPermissionTicketStore.java:49