List of usage examples for com.google.gwt.json.client JSONValue isString
public JSONString isString()
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 w w w . ja v a2s . c o m*/ 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 a v a 2 s. com*/ 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; }
From source file:com.smartgwt.mobile.client.data.DSResponse.java
License:Open Source License
DSResponse(DSRequest dsRequest, int status, JSONObject responseObj) { init(dsRequest);/* ww w .jav a 2 s . c o m*/ Map<String, String> errors = null; if (responseObj != null) { JSONValue val = responseObj.get("status"); JSONNumber num = (val == null ? null : val.isNumber()); if (num != null) { status = (int) num.doubleValue(); } val = responseObj.get("startRow"); num = (val == null ? null : val.isNumber()); if (num != null) { setStartRow(Integer.valueOf((int) num.doubleValue())); } val = responseObj.get("endRow"); num = (val == null ? null : val.isNumber()); if (num != null) { setEndRow(Integer.valueOf((int) num.doubleValue())); } val = responseObj.get("totalRows"); num = (val == null ? null : val.isNumber()); if (num != null) { setTotalRows(Integer.valueOf((int) num.doubleValue())); } val = responseObj.get("errors"); JSONObject errorsObj = (val == null ? null : val.isObject()); if (errorsObj != null) { errors = new HashMap<String, String>(); for (final String key : errorsObj.keySet()) { val = errorsObj.get(key); if (val == null || val.isNull() != null) continue; final String errorMessage; JSONString str = val.isString(); if (str != null) errorMessage = str.stringValue(); else errorMessage = val.toString(); errors.put(key, errorMessage); } } } setStatus(status); if (errors != null) setErrors(errors); // No need to handle the response data here. }
From source file:cz.cas.lib.proarc.webapp.client.presenter.JsonTokenizer.java
License:Open Source License
public static String getString(JSONObject json, String name) { JSONValue jsonVal = json.get(name); JSONString jsonString = (jsonVal == null) ? null : jsonVal.isString(); return (jsonString == null) ? null : jsonString.stringValue(); }
From source file:de.eckhartarnold.client.ImageCollectionReader.java
License:Apache License
private HashMap<String, int[][]> interpretSizes(JSONValue json) throws JSONException { HashMap<String, int[][]> resolutions = new HashMap<String, int[][]>(); HashMap<String, int[][]> sizes = new HashMap<String, int[][]>(); JSONObject dict = json.isObject();//from ww w.j av a 2 s . c om JSONArray array = json.isArray(); if (array != null) { JSONObject resDict = array.get(0).isObject(); for (String key : resDict.keySet()) { JSONArray resSet = resDict.get(key).isArray(); resolutions.put(key, interpretResolutionsArray(resSet)); } dict = array.get(1).isObject(); } for (String key : dict.keySet()) { // JSONArray list = dict.get(key).isArray(); // resolutions.clear(); // for (int i = 0; i < list.size(); i++ ) { // JSONArray xy = list.get(i).isArray(); // int res[] = new int[2]; // res[0] = (int) xy.get(0).isNumber().doubleValue(); // res[1] = (int) xy.get(1).isNumber().doubleValue(); // resolutions.add(res); // } // sizes.put(key, resolutions.toArray(new int[resolutions.size()][])); JSONValue value = dict.get(key); array = value.isArray(); if (array != null) { sizes.put(key, interpretResolutionsArray(array)); } else { sizes.put(key, resolutions.get(value.isString().stringValue())); } } return sizes; }
From source file:edu.nrao.dss.client.widget.explorers.Explorer.java
License:Open Source License
protected void addRecord(HashMap<String, Object> fields) { JSONRequest.post(rootURL, fields, new JSONCallbackAdapter() { @Override/*ww w .j av a 2s.c om*/ public void onSuccess(JSONObject json) { BaseModelData model = new BaseModelData(); for (int i = 0; i < modelType.getFieldCount(); ++i) { DataField field = modelType.getField(i); String fName = field.getName(); if (json.containsKey(fName)) { // Set model value dependent on data type JSONValue value = json.get(fName); if (value.isNumber() != null) { double numValue = value.isNumber().doubleValue(); // Note: we're treating even integer values like doubles here. Doesn't appear // to be an issue. 1.0 is displayed as 1 anyways. model.set(fName, numValue); } else if (value.isBoolean() != null) { model.set(fName, value.isBoolean().booleanValue()); } else if (value.isString() != null) { model.set(fName, value.isString().stringValue()); } else if (value.isNull() != null) { // not raising an error seems to be fine. } else { Window.alert("unknown JSON value type"); } } } grid.stopEditing(); store.insert(model, 0); //grid.getView().refresh(true); grid.getSelectionModel().select(model, false); } }); }
From source file:edu.nrao.dss.client.widget.explorers.FilterComboMenuItem.java
License:Open Source License
private void initListeners() { this.addSelectionListener(new SelectionListener<MenuEvent>() { @Override/*from w ww . j a va2s. com*/ public void componentSelected(MenuEvent ce) { // Get the configuration from the server. // Set the visibility of the columns based on the configuration. JSONRequest.get("/scheduler/configurations/explorer/filterCombos/" + combo_id, new JSONCallbackAdapter() { public void onSuccess(JSONObject json) { // Set the filters base on server response JSONObject filters = json.get("filters").isObject(); for (SimpleComboBox<String> af : explorer.getAdvancedFilters()) { JSONValue filter = filters.get(af.getTitle()); if (filter != null) { String value = filter.isString().stringValue(); af.setSimpleValue(value); } else { af.reset(); } } JSONValue filterText = filters.get("filterText"); TextField<String> textField = explorer.filter.getTextField(); if (filterText != null) { textField.setValue(filterText.isString().stringValue()); } else { textField.setValue(""); } } }); } }); }
From source file:edu.ucsb.eucalyptus.admin.client.extensions.store.JSONUtil.java
License:Open Source License
static String asString(JSONValue value) { if (value != null) { JSONString string = value.isString(); if (string != null) { return string.stringValue(); }/*w ww. ja va2 s. c o m*/ } return null; }
From source file:edu.umn.msi.tropix.webgui.client.utils.JObject.java
License:Open Source License
public String getStringOrNull(final String key) { final JSONValue value = this.getObject().get(key); if (value == null) { return null; }/*from w w w . j ava2 s.c om*/ final JSONString jsonString = value.isString(); if (value == null) { return null; } return jsonString.stringValue(); }
From source file:es.deusto.weblab.client.comm.CommonSerializerJSON.java
License:Open Source License
protected JSONString parseResultString(String response) throws SerializationException, WebLabServerException { final JSONValue result = this.parseResult(response); final JSONString resultString = result.isString(); if (resultString == null) throw new SerializationException("Expecting an string as a result; found: " + result); return resultString; }