@Override public Response handle(Request request) { final ListDeviceRequest req = (ListDeviceRequest) request.getBody(); final List<DeviceVO> devices = deviceDao.list(req.getName(), req.getNamePattern(), req.getNetworkId(), req.getNetworkName(), req.getSortField(), req.isSortOrderAsc(), req.getTake(), req.getSkip(), req.getPrincipal()); return Response.newBuilder() .withBody(new ListDeviceResponse(devices)) .buildSuccess(); } }
public CompletableFuture<List<DeviceVO>> list(String name, String namePattern, Long networkId, String networkName, String sortField, String sortOrderAsc, Integer take, Integer skip, HivePrincipal principal) { ListDeviceRequest listDeviceRequest = new ListDeviceRequest(); listDeviceRequest.setName(name); listDeviceRequest.setNamePattern(namePattern); listDeviceRequest.setNetworkId(networkId); listDeviceRequest.setNetworkName(networkName); listDeviceRequest.setSortField(sortField); listDeviceRequest.setSortOrder(sortOrderAsc); listDeviceRequest.setTake(take); listDeviceRequest.setSkip(skip); listDeviceRequest.setPrincipal(principal); return list(listDeviceRequest); }
public static ListDeviceRequest createListDeviceRequest(JsonObject request, HivePrincipal principal) { ListDeviceRequest listDeviceRequest = new GsonBuilder().excludeFieldsWithModifiers(Modifier.PROTECTED) .create() .fromJson(request, ListDeviceRequest.class); listDeviceRequest.setTake(Optional.ofNullable(listDeviceRequest.getTake()).orElse(DEFAULT_TAKE)); listDeviceRequest.setSkip(Optional.ofNullable(listDeviceRequest.getSkip()).orElse(DEFAULT_SKIP)); listDeviceRequest.setPrincipal(principal); return listDeviceRequest; }
@HiveWebsocketAuth @PreAuthorize("isAuthenticated() and hasPermission(null, 'GET_DEVICE')") public void processDeviceList(JsonObject request, WebSocketSession session) throws HiveException { HivePrincipal principal = (HivePrincipal) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); ListDeviceRequest listDeviceRequest = ListDeviceRequest.createListDeviceRequest(request, principal); String sortField = Optional.ofNullable(listDeviceRequest.getSortField()).map(String::toLowerCase).orElse(null); if (sortField != null && !NAME.equalsIgnoreCase(sortField) && !STATUS.equalsIgnoreCase(sortField) && !NETWORK.equalsIgnoreCase(sortField)) { logger.error("Unable to proceed device list request. Invalid sortField."); throw new HiveException(Messages.INVALID_REQUEST_PARAMETERS, BAD_REQUEST.getStatusCode()); } WebSocketResponse response = new WebSocketResponse(); if (!principal.areAllNetworksAvailable() && (principal.getNetworkIds() == null || principal.getNetworkIds().isEmpty()) || !principal.areAllDeviceTypesAvailable() && (principal.getDeviceTypeIds() == null || principal.getDeviceTypeIds().isEmpty())) { logger.warn("Unable to get list for empty devices"); response.addValue(DEVICES, Collections.<DeviceVO>emptyList(), DEVICES_LISTED); webSocketClientHandler.sendMessage(request, response, session); } else { deviceService.list(listDeviceRequest) .thenAccept(devices -> { logger.debug("Device list request proceed successfully"); response.addValue(DEVICES, devices, DEVICES_LISTED); webSocketClientHandler.sendMessage(request, response, session); }); } }