From 88dfb5313003eb9ba246cab3cfa700ad5c0137de Mon Sep 17 00:00:00 2001 From: jcardus Date: Thu, 8 Jul 2021 02:15:00 +0100 Subject: remove stream api assume permissions are of same type --- .../traccar/api/resource/PermissionsResource.java | 37 +++++++--------------- 1 file changed, 12 insertions(+), 25 deletions(-) diff --git a/src/main/java/org/traccar/api/resource/PermissionsResource.java b/src/main/java/org/traccar/api/resource/PermissionsResource.java index d6048d81b..ef1e16e29 100644 --- a/src/main/java/org/traccar/api/resource/PermissionsResource.java +++ b/src/main/java/org/traccar/api/resource/PermissionsResource.java @@ -17,13 +17,9 @@ package org.traccar.api.resource; import java.sql.SQLException; -import java.util.HashSet; +import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; -import java.util.Objects; -import java.util.Set; -import java.util.stream.Collectors; -import java.util.stream.Stream; import javax.ws.rs.Consumes; import javax.ws.rs.DELETE; @@ -61,25 +57,11 @@ public class PermissionsResource extends BaseResource { permission.getPropertyClass(), getUserId(), permission.getPropertyId()); } - private void refreshPermissions(List> entities) { - Set ownerProperty = new HashSet<>(); - entities.stream() - .map(e -> { - try { - return new Permission(e); - } catch (ClassNotFoundException classNotFoundException) { - classNotFoundException.printStackTrace(); - return null; - } - }) - .filter(Objects::nonNull) - .filter(p -> ownerProperty.add(p.getOwnerClass().getName() + p.getPropertyClass().getName())) - .forEach(p -> Context.getPermissionsManager().refreshPermissions(p)); - } - @POST public Response add(LinkedHashMap entity) throws SQLException, ClassNotFoundException { - return add(Stream.of(entity).collect(Collectors.toList())); + List> list = new ArrayList<>(); + list.add(entity); + return add(list); } @Path("bulk") @@ -94,13 +76,17 @@ public class PermissionsResource extends BaseResource { LogAction.link(getUserId(), permission.getOwnerClass(), permission.getOwnerId(), permission.getPropertyClass(), permission.getPropertyId()); } - refreshPermissions(entities); + // we assume all permissions are of same type so we use the first one for refreshing + if (!entities.isEmpty()) + Context.getPermissionsManager().refreshPermissions(new Permission(entities.get(0))); return Response.noContent().build(); } @DELETE public Response remove(LinkedHashMap entity) throws SQLException, ClassNotFoundException { - return remove(Stream.of(entity).collect(Collectors.toList())); + List> list = new ArrayList<>(); + list.add(entity); + return remove(list); } @DELETE @@ -115,7 +101,8 @@ public class PermissionsResource extends BaseResource { LogAction.unlink(getUserId(), permission.getOwnerClass(), permission.getOwnerId(), permission.getPropertyClass(), permission.getPropertyId()); } - refreshPermissions(entities); + if (!entities.isEmpty()) + Context.getPermissionsManager().refreshPermissions(new Permission(entities.get(0))); return Response.noContent().build(); } } -- cgit v1.2.3