use of com.openmeap.thirdparty.org.json.me.JSONObject in project OpenMEAP by OpenMEAP.
the class RESTAppMgmtClient method connectionOpen.
public ConnectionOpenResponse connectionOpen(ConnectionOpenRequest request) throws WebServiceException {
ConnectionOpenResponse response = null;
Hashtable postData = new Hashtable();
postData.put(UrlParamConstants.ACTION, "connection-open-request");
postData.put(UrlParamConstants.DEVICE_UUID, request.getApplication().getInstallation().getUuid());
postData.put(UrlParamConstants.APP_NAME, request.getApplication().getName());
postData.put(UrlParamConstants.APP_VERSION, request.getApplication().getVersionId());
postData.put(UrlParamConstants.APPARCH_HASH, StringUtils.orEmpty(request.getApplication().getHashValue()));
postData.put(UrlParamConstants.SLIC_VERSION, request.getSlic().getVersionId());
HttpResponse httpResponse = null;
InputSource responseInputSource = null;
String responseText = null;
try {
httpResponse = requester.postData(serviceUrl, postData);
if (httpResponse.getStatusCode() != 200) {
throw new WebServiceException(WebServiceException.TypeEnum.CLIENT, "Posting to the service resulted in a " + httpResponse.getStatusCode() + " status code");
}
responseText = Utils.readInputStream(httpResponse.getResponseBody(), "UTF-8");
} catch (Exception e) {
throw new WebServiceException(WebServiceException.TypeEnum.CLIENT, StringUtils.isEmpty(e.getMessage()) ? e.getMessage() : "There's a problem connecting. Check your network or try again later", e);
}
// now we parse the response into a ConnectionOpenResponse object
if (responseText != null) {
Result result = new Result();
JSONObjectBuilder builder = new JSONObjectBuilder();
try {
result = (Result) builder.fromJSON(new JSONObject(responseText), result);
if (result.getError() != null) {
throw new WebServiceException(WebServiceException.TypeEnum.fromValue(result.getError().getCode().value()), result.getError().getMessage());
}
} catch (JSONException e) {
throw new WebServiceException(WebServiceException.TypeEnum.CLIENT, "Unable to parse service response content.");
}
response = result.getConnectionOpenResponse();
}
return response;
}
use of com.openmeap.thirdparty.org.json.me.JSONObject in project OpenMEAP by OpenMEAP.
the class ServletManagementServletTest method testRefreshApplication.
@Test
public void testRefreshApplication() throws Exception {
MockHttpServletRequest request = new Request();
MockHttpServletResponse response = new MockHttpServletResponse();
String randomUuid = UUID.randomUUID().toString();
GlobalSettings settings = modelManager.getGlobalSettings();
/////////////////
// validate that finding the application, modifying it, and then finding it again
// will return an object with the same modifications.
Application app = modelManager.getModelService().findByPrimaryKey(Application.class, 1L);
app.setName(randomUuid);
Assert.assertTrue(modelManager.getModelService().findByPrimaryKey(Application.class, 1L).getName().equals(randomUuid));
modelManager.refresh(app, null);
app = modelManager.getModelService().findByPrimaryKey(Application.class, 1L);
Assert.assertTrue(!modelManager.getModelService().findByPrimaryKey(Application.class, 1L).getName().equals(randomUuid));
ServiceManagementServlet servlet = new ServiceManagementServlet();
servlet.setModelManager(modelManager);
servlet.setModelServiceRefreshHandler(new ModelServiceRefreshHandler());
servlet.getModelServiceRefreshHandler().setModelManager(modelManager);
////////////////////
// validate the happy path of providing all the required information
String authSalt = servlet.getAuthSalt();
String authToken = AuthTokenProvider.newAuthToken(authSalt);
request.setParameter(UrlParamConstants.REFRESH_TYPE, "Application");
request.setParameter(UrlParamConstants.REFRESH_OBJ_PKID, "1");
request.setParameter(UrlParamConstants.AUTH_TOKEN, authToken);
request.setParameter(UrlParamConstants.ACTION, ModelEntityEventAction.MODEL_REFRESH.getActionName());
servlet.service(request, response);
String contentString = response.getContentAsString();
JSONObjectBuilder job = new JSONObjectBuilder();
Result result = (Result) job.fromJSON(new JSONObject(contentString), new Result());
Assert.assertTrue(result.getStatus().equals(Result.Status.SUCCESS));
Assert.assertTrue(!modelManager.getModelService().findByPrimaryKey(Application.class, 1L).getName().equals(randomUuid));
////////////////////
// validate that failing to provide auth token fails to refresh cache
app = modelManager.getModelService().findByPrimaryKey(Application.class, 1L);
app.setName(randomUuid);
response = new MockHttpServletResponse();
request.removeParameter(UrlParamConstants.AUTH_TOKEN);
request.setParameter(UrlParamConstants.ACTION, ModelEntityEventAction.MODEL_REFRESH.getActionName());
request.setParameter(UrlParamConstants.REFRESH_TYPE, "Application");
request.setParameter(UrlParamConstants.REFRESH_OBJ_PKID, "1");
servlet.service(request, response);
contentString = response.getContentAsString();
result = (Result) job.fromJSON(new JSONObject(contentString), new Result());
Assert.assertTrue(result.getStatus().equals(Result.Status.FAILURE));
Assert.assertTrue(modelManager.getModelService().findByPrimaryKey(Application.class, 1L).getName().equals(randomUuid));
}
use of com.openmeap.thirdparty.org.json.me.JSONObject in project OpenMEAP by OpenMEAP.
the class AdminTestHelper method getConnectionOpen.
/*
* Connection open
*/
public Result getConnectionOpen(ApplicationVersion version, String slicVersion) throws HttpRequestException, IOException, JSONException {
Hashtable<String, Object> postData = new Hashtable<String, Object>();
postData.put(UrlParamConstants.ACTION, "connection-open-request");
postData.put(UrlParamConstants.DEVICE_UUID, UUID.randomUUID());
postData.put(UrlParamConstants.APP_NAME, version.getApplication().getName());
postData.put(UrlParamConstants.APP_VERSION, version.getIdentifier());
postData.put(UrlParamConstants.APPARCH_HASH, version.getArchive().getHash());
postData.put(UrlParamConstants.SLIC_VERSION, slicVersion);
HttpResponse response = requestExecuter.postData(APP_MGMT_WEB_URL, postData);
String responseText = Utils.readInputStream(response.getResponseBody(), FormConstants.CHAR_ENC_DEFAULT);
JSONObjectBuilder job = new JSONObjectBuilder();
Result result = (Result) job.fromJSON(new JSONObject(responseText), new Result());
return result;
}
use of com.openmeap.thirdparty.org.json.me.JSONObject in project OpenMEAP by OpenMEAP.
the class ApplicationManagementServlet method service.
@Override
public void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Result result = new Result();
Error err = new Error();
String action = req.getParameter(UrlParamConstants.ACTION);
if (action == null)
action = "";
if (action.equals("connection-open-request")) {
result = connectionOpenRequest(req);
} else if (action.equals("archiveDownload")) {
result = handleArchiveDownload(req, resp);
if (result == null) {
return;
}
} else {
err.setCode(ErrorCode.MISSING_PARAMETER);
err.setMessage("The \"action\" parameter is not recognized, missing, or empty.");
result.setError(err);
}
try {
JSONObjectBuilder builder = new JSONObjectBuilder();
resp.setContentType("text/javascript");
JSONObject jsonResult = builder.toJSON(result);
resp.getOutputStream().write(jsonResult.toString().getBytes());
} catch (JSONException e) {
throw new RuntimeException(e);
}
}
use of com.openmeap.thirdparty.org.json.me.JSONObject in project OpenMEAP by OpenMEAP.
the class JSONObjectBuilder method toJSON.
public JSONObject toJSON(Object obj) throws JSONException {
if (obj == null) {
return null;
}
if (!HasJSONProperties.class.isAssignableFrom(obj.getClass())) {
throw new RuntimeException("The rootObject being converted to JSON must implement the HasJSONProperties interface.");
}
JSONProperty[] properties = ((HasJSONProperties) obj).getJSONProperties();
JSONObject jsonObj = new JSONObject();
// iterate over each JSONProperty annotated method
for (int jsonPropertyIdx = 0; jsonPropertyIdx < properties.length; jsonPropertyIdx++) {
JSONProperty property = properties[jsonPropertyIdx];
// determine the method return type
Class returnType = property.getReturnType();
Object value = property.getGetterSetter().getValue(obj);
if (value == null) {
continue;
}
if (returnType == null) {
throw new JSONException(obj.getClass().getName() + "." + property.getPropertyName() + " is annotated with JSONProperty, but has no return type." + " I can't work with this.");
}
// strip "get" off the front
String propertyName = property.getPropertyName();
try {
if (Enum.class.isAssignableFrom(returnType)) {
Enum ret = (Enum) value;
jsonObj.put(propertyName, ret.value());
} else if (isSimpleType(returnType)) {
jsonObj.put(propertyName, handleSimpleType(returnType, property.getGetterSetter().getValue(obj)));
} else {
if (returnType.isArray()) {
Object[] returnValues = (Object[]) value;
JSONArray jsonArray = new JSONArray();
for (int returnValueIdx = 0; returnValueIdx < returnValues.length; returnValueIdx++) {
Object thisValue = returnValues[returnValueIdx];
jsonArray.put(toJSON(thisValue));
}
jsonObj.put(propertyName, jsonArray);
} else if (Hashtable.class.isAssignableFrom(returnType)) {
Hashtable map = (Hashtable) value;
JSONObject jsonMap = new JSONObject();
Enumeration enumer = map.keys();
while (enumer.hasMoreElements()) {
Object key = (String) enumer.nextElement();
Object thisValue = (Object) map.get(key);
if (isSimpleType(thisValue.getClass())) {
jsonMap.put(key.toString(), handleSimpleType(returnType, thisValue));
} else {
jsonMap.put(key.toString(), toJSON(thisValue));
}
}
jsonObj.put(propertyName, jsonMap);
} else if (Vector.class.isAssignableFrom(returnType)) {
Vector returnValues = (Vector) property.getGetterSetter().getValue(obj);
JSONArray jsonArray = new JSONArray();
int size = returnValues.size();
for (int returnValueIdx = 0; returnValueIdx < size; returnValueIdx++) {
Object thisValue = returnValues.elementAt(returnValueIdx);
if (isSimpleType(property.getContainedType())) {
jsonArray.put(thisValue);
} else {
jsonArray.put(toJSON(thisValue));
}
}
jsonObj.put(propertyName, jsonArray);
} else {
jsonObj.put(propertyName, toJSON(value));
}
}
} catch (Exception ite) {
throw new JSONException(ite);
}
}
return jsonObj;
}
Aggregations