109 if (response==null) {
110 log.debug(
"Executing web service method. processBulkOperations");
113 List<BulkOperation> operations=request.getOperations();
114 List<BulkOperation> responseOperations=
new ArrayList<BulkOperation>();
115 Map<String, String> processedBulkIds=
new HashMap<String, String>();
117 for (i=0;i<operations.size() && errors<request.getFailOnErrors();i++){
119 BulkOperation operation=operations.get(i);
120 BulkOperation operationResponse=
new BulkOperation();
121 Response subResponse;
123 String method=operation.getMethod();
124 String bulkId=operation.getBulkId();
126 String path=operation.getPath();
128 String fragment=
getFragment(path, service, processedBulkIds);
129 Verb verb = Verb.valueOf(method);
131 String data=operation.getDataStr();
132 if (!verb.equals(DELETE))
135 Pair<Response, String> pair=
execute(verb, service, data, fragment);
136 String idCreated=pair.getSecond();
137 subResponse=pair.getFirst();
138 int status=subResponse.getStatus();
140 if (familyOf(status).equals(SUCCESSFUL)) {
141 if (!verb.equals(DELETE)) {
142 if (verb.equals(POST)) {
143 processedBulkIds.put(bulkId, idCreated);
146 String loc=service.getEndpointUrl() +
"/" + fragment;
147 operationResponse.setLocation(loc);
151 operationResponse.setResponse(subResponse.getEntity());
152 errors+= familyOf(status).equals(CLIENT_ERROR) || familyOf(status).equals(SERVER_ERROR) ? 1 : 0;
156 operationResponse.setStatus(Integer.toString(status));
158 catch (Exception e) {
159 log.error(e.getMessage(), e);
160 subResponse=
getErrorResponse(BAD_REQUEST, ErrorScimType.INVALID_SYNTAX, e.getMessage());
162 operationResponse.setStatus(Integer.toString(BAD_REQUEST.getStatusCode()));
163 operationResponse.setResponse(subResponse.getEntity());
167 operationResponse.setBulkId(bulkId);
168 operationResponse.setMethod(method);
170 responseOperations.add(operationResponse);
172 log.debug(
"Operation {} processed with status {}. Method {}, Accumulated errors {}", i+1, operationResponse.getStatus(), method, errors);
176 BulkResponse bulkResponse=
new BulkResponse();
177 bulkResponse.setOperations(responseOperations);
179 String json =
mapper.writeValueAsString(bulkResponse);
180 response=Response.ok(json).build();
183 log.error(e.getMessage(), e);
ObjectMapper mapper
Definition: BulkWebService.java:81
String getValueFromHeaders(HttpHeaders headers, String name)
Definition: BaseScimWebService.java:97
String getFragment(String path, BaseScimWebService service, Map< String, String > idsMap)
Definition: BulkWebService.java:304
Response prepareRequest(BulkRequest request, String contentLength)
Definition: BulkWebService.java:191
Pair< Response, String > execute(Verb verb, BaseScimWebService ws, String data, String fragment)
Definition: BulkWebService.java:330
Logger log
Definition: BaseScimWebService.java:56
static Response getErrorResponse(Response.Status status, String detail)
Definition: BaseScimWebService.java:75
String replaceBulkIds(String str, Map< String, String > idsMap)
Definition: BulkWebService.java:310
HttpHeaders httpHeaders
Definition: BulkWebService.java:98
BaseScimWebService getWSForPath(String path)
Definition: BulkWebService.java:287