List of usage examples for com.google.gwt.json.client JSONValue isObject
public JSONObject isObject()
From source file:com.mcherm.zithiacharsheet.client.model.JSONDeserializer.java
License:Apache License
public void update(JSONValue inputValue, ZithiaCharacter zithiaCharacter) { zithiaCharacter.changeStatsOnRaceUpdate(false); JSONObject inputObject = notNull(inputValue.isObject()); updateFromField(inputObject, "race", zithiaCharacter.getRaceValue()); updateFromField(inputObject, "names", zithiaCharacter.getNames()); updateFromField(inputObject, "statValues", zithiaCharacter.getStatValues()); updateFromField(inputObject, "skillList", zithiaCharacter.getSkillList()); updateFromField(inputObject, "weaponTraining", zithiaCharacter.getWeaponTraining()); updateFromField(inputObject, "talentList", zithiaCharacter.getTalentList()); updateFromField(inputObject, "costs", zithiaCharacter.getCosts()); updateFromField(inputObject, "combatValues", zithiaCharacter.getCombatValues()); updateFromField(inputObject, "armorValue", zithiaCharacter.getArmorValue()); updateFromField(inputObject, "notes", zithiaCharacter.getCharacterNotes()); zithiaCharacter.changeStatsOnRaceUpdate(true); }
From source file:com.moesol.gwt.maps.client.tms.FeatureReader.java
License:Open Source License
private List<Feature> parseFeatures(String text) { ArrayList<Feature> features = new ArrayList<Feature>(); try {//from w w w . j ava 2 s. c o m JSONArray array = null; JSONValue parsedValue = JSONParser.parseStrict(text); if (m_root != null) { // should be an object with an array with property m_root JSONObject rootObj = parsedValue.isObject(); if (rootObj != null) { JSONValue arrayValue = rootObj.get(m_root); if (arrayValue != null) { array = arrayValue.isArray(); } } } else { array = parsedValue.isArray(); } if (array != null) { for (int i = 0; i < array.size(); i++) { JSONObject obj = (JSONObject) array.get(i); String title = getStringProperty(m_titlePropertyName, obj); double lat = getDoubleProperty(m_latPropertyName, obj); double lng = getDoubleProperty(m_lngPropertyName, obj); String iconUrl = getStringProperty(m_iconPropertyName, obj); if (m_iconPropertyConverter != null) { iconUrl = m_iconPropertyConverter.convert(iconUrl); } Feature feature = new Feature.Builder(title, lat, lng).iconUrl(iconUrl).build(); features.add(feature); } } } catch (Throwable t) { Logger.getLogger(FeatureReader.class.getName()).log(Level.SEVERE, "Failed parsing features", t); } return features; }
From source file:com.palmagroup.gwt.orders.client.gin.JsonConverter.java
License:Open Source License
/** * Decodes a JSONObject to a map./*w ww . j a v a2 s.com*/ * * @param jso * the JSONObject * @return the map */ public static Map<String, Object> decode(JSONObject jso) { Map<String, Object> map = new FastMap<Object>(); for (String key : jso.keySet()) { JSONValue j = jso.get(key); if (j.isObject() != null) { map.put(key, decode(j.isObject())); } else if (j.isArray() != null) { map.put(key, decodeToList(j.isArray())); } else if (j.isBoolean() != null) { map.put(key, j.isBoolean().booleanValue()); } else if (j.isNumber() != null) { map.put(key, j.isNumber().doubleValue()); } else if (j.isString() != null) { map.put(key, decodeValue(j.isString().stringValue())); } } return map; }
From source file:com.parabay.client.utils.JSONCodec.java
License:Apache License
/** * Converts a JSONValue to a Java object. * /* w w w . ja v a 2 s. co m*/ * @param value * @return */ private Object buildJavaObjectFromJSONValue(JSONValue value) { if (value.isNull() != null) { return null; } if (value.isBoolean() != null) { return Boolean.valueOf(value.isBoolean().booleanValue()); } if (value.isString() != null) { return value.isString().stringValue(); } if (value.isNumber() != null) { return buildNumber(value.isNumber().toString()); } if (value.isArray() != null) { return buildJavaArrayFromJSONArray(value.isArray()); } if (value.isObject() != null) { return buildJavaMapFromJSONObject(value.isObject()); } return null; }
From source file:com.qualogy.qafe.gwt.client.util.JSNIUtil.java
License:Apache License
/** * Convert JavaScript objects to their Java representations. *///w w w . j av a 2s. c o m static Object resolveJavaValue(JSONValue jsonValue) { if (jsonValue == null) { return null; } Object value = null; if (jsonValue.isArray() != null) { value = resolveJavaList(jsonValue.isArray()); } else if (jsonValue.isObject() != null) { value = resolveJavaMap(jsonValue.isObject()); } else if (jsonValue.isBoolean() != null) { value = jsonValue.isBoolean().booleanValue(); } else if (jsonValue.isNumber() != null) { value = jsonValue.isNumber().doubleValue(); } else if (jsonValue.isString() != null) { value = jsonValue.isString().stringValue(); } return value; }
From source file:com.smartgwt.extensions.fileuploader.client.FileUploader.java
License:Open Source License
private void parseResult(JSONValue jsonValue) { JSONObject jsonObject = jsonValue.isObject(); if (jsonObject != null) { String testData = ""; Set<String> keys = jsonObject.keySet(); for (String key : keys) { testData += key + ":" + jsonObject.get(key) + ";"; }//from www. j av a2 s. c o m GWT.log(testData, null); String result = String.valueOf(jsonObject.get(JSON_KEY_SUCCESS)); if ("true".equals(result)) { onSuccess(messageDictionary.get(MSG_SUCCESS), jsonValue); } else { onFailure(String.valueOf(jsonObject.get(JSON_KEY_REASON)), jsonValue); } } else { onFailure(messageDictionary.get(MSG_SERVER_SIDE_ERROR), null); } }
From source file:com.smartgwt.mobile.client.data.DataSource.java
License:Open Source License
private static Object fromJSONValue(JSONValue val, SimpleType type) { final JSONObject obj = val.isObject(); // Special handling if we happen to encounter an object that is not a Date: Convert to // a `Record' instead of trying to do something with the stringified representation. if (obj != null && !(((Object) obj.getJavaScriptObject()) instanceof Date) && !JSOHelper.isDate(obj.getJavaScriptObject())) { return extractRecord(obj, Collections.<String, DataSourceField>emptyMap()); } else {//from w ww .j av a 2 s .c om return type._fromVal(val); } }
From source file:com.smartgwt.mobile.client.data.DataSource.java
License:Open Source License
private static Record extractRecord(JSONObject datumObj, Map<String, DataSourceField> fields) { final Map<String, Object> attributes = new HashMap<String, Object>(); for (final String key : datumObj.keySet()) { final JSONValue val = datumObj.get(key); if (val == null) continue; final DataSourceField field = fields.get(key); final String typeName = (field == null ? null : field.getType()); SimpleType type = typeName == null ? null : SimpleType.getType(typeName); final DataSource typeDS; if (type == null && field != null && (typeDS = field.getTypeAsDataSource()) != null) { final Map<String, DataSourceField> nestedFields = typeDS._getMergedFields(); final Boolean multiple = field.isMultiple(); if (multiple != null && multiple.booleanValue()) { final JSONArray nestedDataArr = val.isArray(); attributes.put(key,/*from w w w . j a v a 2 s . c om*/ nestedDataArr == null ? null : extractRecordList(nestedDataArr, nestedFields)); } else { final JSONObject nestedDatumObj = val.isObject(); attributes.put(key, nestedDatumObj == null ? null : extractRecord(nestedDatumObj, nestedFields)); } } else { if (type == null) type = SimpleType.TEXT_TYPE; assert type != null; final Boolean multiple = (field == null ? null : field.isMultiple()); if (multiple != null && multiple.booleanValue()) { assert field != null; final List<Object> l = new ArrayList<Object>(); JSONArray arr = val.isArray(); if (arr == null) { l.add(fromJSONValue(val, type)); } else { for (int i = 0; i < arr.size(); ++i) { JSONValue subVal = arr.get(i); if (subVal == null) continue; l.add(fromJSONValue(subVal, type)); } } attributes.put(key, l); } else { attributes.put(key, fromJSONValue(val, type)); } } } final Record record = new Record(); record.putAll(attributes); return record; }
From source file:com.smartgwt.mobile.client.data.DataSource.java
License:Open Source License
private static RecordList extractRecordList(JSONArray dataArr, Map<String, DataSourceField> fields) { final DataSourceField pkField = getPrimaryKeyField(fields); final String pkFieldName = pkField == null ? "id" : pkField.getName(); final RecordList records = new RecordList(); for (int i = 0; i < dataArr.size(); ++i) { final JSONValue datumVal = dataArr.get(i); if (datumVal == null) continue; JSONObject datumObj = datumVal.isObject(); if (datumObj != null) { records.add(extractRecord(datumObj, fields)); } else {//from ww w .j a va 2s.c om if (datumVal.isNull() != null) continue; String idValue; JSONString datumStr = datumVal.isString(); if (datumStr != null) idValue = datumStr.stringValue(); else idValue = datumVal.toString(); idValue = idValue.trim(); final Record record = new Record(); record.setAttribute(pkFieldName, idValue); records.add(record); } } return records; }
From source file:com.smartgwt.mobile.client.data.DataSource.java
License:Open Source License
@SGWTInternal protected void _sendGWTRequest(DSRequest dsRequest) { final int transactionNum = com.smartgwt.mobile.client.rpc.RPCManager._getNextTransactionNum(); dsRequest._setTransactionNum(transactionNum); // For the time being, the request ID and transactionNum are the same. dsRequest.setRequestId(Integer.toString(transactionNum)); final boolean strictJSON = Canvas._booleanValue(getStrictJSON(), false); final DSOperationType opType = dsRequest.getOperationType(); final OperationBinding opBinding = getOperationBinding(dsRequest); final DSDataFormat dataFormat; if (opBinding == null) dataFormat = DSDataFormat.JSON;//from w w w . j av a 2 s . co m else if (opBinding.getDataFormat() != null) dataFormat = opBinding.getDataFormat(); else dataFormat = DSDataFormat.JSON; assert dataFormat != null; DSProtocol protocol; if (opBinding != null && opBinding.getDataProtocol() != null) { protocol = opBinding.getDataProtocol(); } else { protocol = getDataProtocol(); if (protocol == null) { protocol = (opType == null || opType == DSOperationType.FETCH) ? null : DSProtocol.POSTMESSAGE; } } final Object originalData = dsRequest.getData(); Object transformedData; switch (protocol == null ? DSProtocol.GETPARAMS : protocol) { case GETPARAMS: case POSTPARAMS: transformedData = transformRequest(dsRequest); if (transformedData == null) transformedData = Collections.EMPTY_MAP; else if (!(transformedData instanceof Map)) { // TODO Issue a warning. transformedData = Collections.EMPTY_MAP; } break; case POSTMESSAGE: transformedData = transformRequest(dsRequest); if (!(transformedData instanceof String)) { if (dataFormat != DSDataFormat.JSON) { throw new UnsupportedOperationException( "Only serialization of DSRequests in JSON format is supported."); } transformedData = dsRequest._serialize(strictJSON); if (dsRequest.getContentType() == null) { // For best interoperability with ASP.NET AJAX services, send Content-Type:application/json. // http://weblogs.asp.net/scottgu/archive/2007/04/04/json-hijacking-and-how-asp-net-ajax-1-0-mitigates-these-attacks.aspx dsRequest.setContentType("application/json;charset=UTF-8"); } } break; default: assert protocol != null; throw new UnsupportedOperationException( "In transforming the DSRequest, failed to handle case: protocol:" + protocol.getValue()); } if (transformedData != dsRequest) { dsRequest.setData(transformedData); } dsRequest.setOriginalData(originalData); if (dsRequest.getDataSource() == null) dsRequest.setDataSource(getID()); final DSRequest finalDSRequest = dsRequest; assert finalDSRequest.getOperationType() == opType; if (protocol == null) { assert opType == DSOperationType.FETCH; if (transformedData == null || (transformedData instanceof Map && ((Map<?, ?>) transformedData).isEmpty())) { protocol = DSProtocol.GETPARAMS; } else { protocol = DSProtocol.POSTMESSAGE; transformedData = dsRequest._serialize(strictJSON); if (dsRequest.getContentType() == null) { dsRequest.setContentType("application/json;charset=UTF-8"); } } } URIBuilder workBuilder; { String work = finalDSRequest.getDataURL(); if (work == null) { if (opType != null) { switch (opType) { case FETCH: work = getFetchDataURL(); break; case ADD: work = getAddDataURL(); break; case UPDATE: work = getUpdateDataURL(); break; case REMOVE: work = getRemoveDataURL(); break; case VALIDATE: work = getValidateDataURL(); break; case CUSTOM: work = getCustomDataURL(); break; } } // common url if (work == null) { work = getDataURL(); // construct default url if (work == null) { work = RPCManager.getActionURL(); if (work.endsWith("/")) { work = work.substring(0, work.length() - 1); } } } } workBuilder = new URIBuilder(work); } // build up the query string final DateTimeFormat datetimeFormat = finalDSRequest._getDatetimeFormat(); { Map<String, Object> params = finalDSRequest.getParams(); if (protocol == DSProtocol.GETPARAMS || protocol == DSProtocol.POSTPARAMS) { if (params == null) params = new LinkedHashMap<String, Object>(); if (protocol == DSProtocol.GETPARAMS) { assert transformedData instanceof Map; @SuppressWarnings("unchecked") final Map<String, Object> m = (Map<String, Object>) transformedData; params.putAll(m); } if (getSendMetaData()) { String metaDataPrefix = getMetaDataPrefix(); if (metaDataPrefix == null) metaDataPrefix = "_"; params.put(metaDataPrefix + "operationType", opType); params.put(metaDataPrefix + "operationId", finalDSRequest.getOperationId()); params.put(metaDataPrefix + "startRow", finalDSRequest.getStartRow()); params.put(metaDataPrefix + "endRow", finalDSRequest.getEndRow()); params.put(metaDataPrefix + "sortBy", finalDSRequest._getSortByString()); params.put(metaDataPrefix + "useStrictJSON", Boolean.TRUE); params.put(metaDataPrefix + "textMatchStyle", finalDSRequest.getTextMatchStyle()); params.put(metaDataPrefix + "oldValues", finalDSRequest.getOldValues()); params.put(metaDataPrefix + "componentId", finalDSRequest.getComponentId()); params.put(metaDataPrefix + "dataSource", dsRequest.getDataSource()); params.put("isc_metaDataPrefix", metaDataPrefix); } params.put("isc_dataFormat", dataFormat.getValue()); } if (params != null) { for (final Map.Entry<String, Object> e : params.entrySet()) { workBuilder.setQueryParam(e.getKey(), e.getValue(), strictJSON, false, datetimeFormat); } } } // automatically add the data format even to user-provided dataURLs unless they contain the param already if (!workBuilder.containsQueryParam("isc_dataFormat")) { workBuilder.appendQueryParam("isc_dataFormat", dataFormat.getValue()); } if (protocol == DSProtocol.POSTPARAMS) { assert transformedData instanceof Map; @SuppressWarnings("unchecked") final Map<String, Object> m = (Map<String, Object>) transformedData; String requestContentType = finalDSRequest.getContentType(); if (requestContentType != null) requestContentType = requestContentType.trim(); if (requestContentType == null || requestContentType.startsWith("application/x-www-form-urlencoded")) { URIBuilder postBodyBuilder = new URIBuilder(""); for (final Map.Entry<String, Object> e : m.entrySet()) { postBodyBuilder.setQueryParam(e.getKey(), e.getValue(), strictJSON, false, datetimeFormat); } // Exclude the '?'. transformedData = postBodyBuilder.toString().substring(1); } //else if (requestContentType.startsWith("multipart/form-data")) {} // TODO else { throw new IllegalArgumentException( "Request content type '" + requestContentType + "' is not supported."); } } RequestBuilder.Method httpMethod = getHttpMethod(finalDSRequest.getHttpMethod()); if (httpMethod == null) { if (protocol == DSProtocol.GETPARAMS) httpMethod = RequestBuilder.GET; else if (protocol == DSProtocol.POSTPARAMS || protocol == DSProtocol.POSTMESSAGE) { httpMethod = RequestBuilder.POST; } else { if (opType == null || opType == DSOperationType.FETCH) { httpMethod = RequestBuilder.GET; } else { httpMethod = RequestBuilder.POST; } } } else if (httpMethod == RequestBuilder.GET) { if (protocol == DSProtocol.POSTPARAMS || //protocol == DSProtocol.POSTXML protocol == DSProtocol.POSTMESSAGE) { // TODO Warn that GET requests do not support bodies. httpMethod = RequestBuilder.POST; } } String requestContentType = finalDSRequest.getContentType(); if (requestContentType != null) { if (httpMethod == RequestBuilder.GET) { // TODO Warn that GET requests do not support bodies. requestContentType = null; } } else { if (protocol == DSProtocol.POSTPARAMS) requestContentType = "application/x-www-form-urlencoded"; //else if (protocol == DSProtocol.POSTXML) requestContentType = "text/xml"; } final RequestBuilder rb = new RequestBuilder(httpMethod, workBuilder.toString()); final Integer timeoutMillis = finalDSRequest.getTimeout(); rb.setTimeoutMillis(timeoutMillis == null ? RPCManager._getDefaultTimeoutMillis() : Math.max(1, timeoutMillis.intValue())); final String authorization = finalDSRequest.getAuthorization(); if (authorization != null) rb.setHeader("Authorization", authorization); final Map<String, String> httpHeaders = finalDSRequest.getHttpHeaders(); if (httpHeaders != null) { for (Map.Entry<String, String> entry : httpHeaders.entrySet()) { rb.setHeader(entry.getKey(), entry.getValue()); } } if (dataFormat == DSDataFormat.XML) { rb.setHeader("Accept", "application/xml,text/xml,*/*"); } else if (dataFormat == DSDataFormat.JSON) { rb.setHeader("Accept", "application/json,*/*"); } if (requestContentType != null) { rb.setHeader("Content-Type", requestContentType); } if (httpMethod != RequestBuilder.GET) { switch (protocol) { case POSTPARAMS: // `transformedData` has already been created and is now a String. case POSTMESSAGE: rb.setRequestData((String) transformedData); break; case GETPARAMS: // Already handled earlier when the query params were appended to `workBuilder'. break; default: throw new UnsupportedOperationException( "In setting the request data, failed to handle case protocol:" + protocol); } } rb.setCallback(new RequestCallback() { @Override public void onError(Request request, Throwable exception) { final DSResponse dsResponse = new DSResponse(finalDSRequest); final int status; if (exception instanceof RequestTimeoutException) status = RPCResponse.STATUS_SERVER_TIMEOUT; else status = RPCResponse.STATUS_FAILURE; dsResponse.setStatus(status); onError(dsResponse); } private void onError(DSResponse dsResponse) { final DSRequest dsRequest = finalDSRequest; final boolean errorEventCancelled = ErrorEvent._fire(DataSource.this, dsRequest, dsResponse); if (!errorEventCancelled) RPCManager._handleError(dsResponse, dsRequest); } @Override public void onResponseReceived(Request request, Response response) { assert response != null; String responseText = response.getText(); if (responseText == null) responseText = ""; assert responseText != null; int httpResponseCode = response.getStatusCode(); final HTTPHeadersMap responseHTTPHeaders = new HTTPHeadersMap(); for (final Header h : response.getHeaders()) { if (h != null) { responseHTTPHeaders.put(h.getName(), h.getValue()); } } int status = 0; if (0 == httpResponseCode || // file:// requests (e.g. if Showcase is packaged with PhoneGap.) (200 <= httpResponseCode && httpResponseCode < 300) || httpResponseCode == 304) // 304 Not Modified { status = RPCResponse.STATUS_SUCCESS; } else { status = RPCResponse.STATUS_FAILURE; final DSResponse errorResponse = new DSResponse(finalDSRequest); errorResponse.setStatus(RPCResponse.STATUS_FAILURE); errorResponse.setHttpResponseCode(httpResponseCode); errorResponse._setHttpHeaders(responseHTTPHeaders); onError(errorResponse); return; } Object rawResponse; final DSResponse dsResponse; String origResponseContentType = responseHTTPHeaders.get("Content-Type"); if (origResponseContentType == null || (origResponseContentType = origResponseContentType.trim()).length() == 0) { origResponseContentType = "application/octet-stream"; } String responseContentType = origResponseContentType; // remove the media type parameter if present // http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.7 final int semicolonPos = responseContentType.indexOf(';'); if (semicolonPos != -1) { responseContentType = responseContentType.substring(0, semicolonPos).trim(); if (responseContentType.length() == 0) responseContentType = "application/octet-stream"; } if (dataFormat == DSDataFormat.CUSTOM) { rawResponse = responseText; dsResponse = new DSResponse(finalDSRequest, status); dsResponse.setHttpResponseCode(httpResponseCode); dsResponse._setHttpHeaders(responseHTTPHeaders); dsResponse.setContentType(origResponseContentType); transformResponse(dsResponse, finalDSRequest, responseText); } else { if (dataFormat == DSDataFormat.XML) { final Element rootEl; if (responseText.isEmpty()) { rawResponse = rootEl = null; dsResponse = new DSResponse(finalDSRequest, status); } else { final Document document; try { document = XMLParser.parse(responseText); } catch (DOMParseException ex) { onError(request, ex); return; } rootEl = document.getDocumentElement(); rawResponse = rootEl; dsResponse = new DSResponse(finalDSRequest, status, rootEl); String dataTagName, recordName; if (opBinding == null) { dataTagName = _getDataTagName(); recordName = null; } else { dataTagName = opBinding._getDataTagName(_getDataTagName()); recordName = opBinding.getRecordName(); } if (recordName == null) recordName = _getRecordName(); final Element dataEl = extractDataElement(rootEl, dataTagName); final List<Element> recordNodes = extractRecordElements(dataEl, recordName); if (recordNodes != null && !recordNodes.isEmpty()) { final RecordList records = extractRecordList(recordNodes); dsResponse.setData(records); } else if (rootEl.equals(dataEl)) { dsResponse._setData(XMLUtil.getTextContent(dataEl)); } } dsResponse.setHttpResponseCode(httpResponseCode); dsResponse._setHttpHeaders(responseHTTPHeaders); transformResponse(dsResponse, finalDSRequest, rootEl); } else { String jsonPrefix = getJsonPrefix(); if (jsonPrefix == null) jsonPrefix = ""; String jsonSuffix = getJsonSuffix(); if (jsonSuffix == null) jsonSuffix = ""; // auto-detect default wrapper text returned by RestHandler if (responseText.startsWith(jsonPrefix) && responseText.endsWith(jsonSuffix)) { responseText = responseText.substring(jsonPrefix.length(), responseText.length() - jsonSuffix.length()); responseContentType = "application/json"; } if (dataFormat == DSDataFormat.JSON) { if (responseText.isEmpty()) { rawResponse = null; dsResponse = new DSResponse(finalDSRequest, status); } else { JSONObject responseObj; try { responseObj = JSONParser.parseLenient(responseText).isObject(); } catch (JSONException ex) { onError(request, ex); return; } if (responseObj != null && responseObj.containsKey("response")) { JSONValue val = responseObj.get("response"); responseObj = (val == null ? null : val.isObject()); } rawResponse = responseObj; dsResponse = new DSResponse(finalDSRequest, status, responseObj); if (responseObj != null && responseObj.containsKey("data")) { final JSONValue dataVal = responseObj.get("data"); assert dataVal != null; final JSONString dataStr = dataVal.isString(); if (dataStr != null) { dsResponse._setData(dataStr.stringValue()); } else { JSONArray dataArr = dataVal.isArray(); if (dataArr == null) { JSONObject datumObj = dataVal.isObject(); if (datumObj != null) { dataArr = new JSONArray(); dataArr.set(0, datumObj); } } if (dataArr != null) { final RecordList records = extractRecordList(dataArr); dsResponse.setData(records); } } } } dsResponse.setHttpResponseCode(httpResponseCode); dsResponse._setHttpHeaders(responseHTTPHeaders); transformResponse(dsResponse, finalDSRequest, rawResponse); } else { throw new UnsupportedOperationException("Unhandled dataFormat:" + dataFormat); } } } if (dsResponse.getInvalidateCache()) { //invalidateDataSourceDataChangedHandlers(finalDSRequest, dsResponse); } status = dsResponse.getStatus(); if (status >= 0) { DSDataChangedEvent.fire(DataSource.this, dsResponse, finalDSRequest); } else { // Unless it was a validation error, or the request specified willHandleError, // go through centralized error handling (if alerting the failure string // can be dignified with such a name!) if (status != -4 && !finalDSRequest._getWillHandleError()) { onError(dsResponse); return; } } // fireResponseCallbacks final DSCallback callback = finalDSRequest.getCallback(), afterFlowCallback = finalDSRequest._getAfterFlowCallback(); if (callback != null) { callback.execute(dsResponse, rawResponse, finalDSRequest); } if (afterFlowCallback != null && afterFlowCallback != callback) { afterFlowCallback.execute(dsResponse, rawResponse, finalDSRequest); } } }); try { rb.send(); } catch (RequestException re) { re.printStackTrace(); } ++_numDSRequestsSent; }