Post WebScript

public class JsonUtility {

public static Body buildRequestBodyObject(String jsonRequest){
Gson gson = new GsonBuilder().create();
return gson.fromJson(jsonRequest, Body.class);
}

public static Map<String,PermissionSet> convertToTypePermissionSet(String jsonRequestFromPermSet){
Type t = new TypeToken<Map<String,PermissionSet>>() {}.getType();
Map<String,PermissionSet> map = (Map<String,PermissionSet>) new Gson().fromJson(jsonRequestFromPermSet, t);
return map;
}
}
------------------------------------------------------------------------------------------------------------------
public class JavaUtility {

public static final int SUBSTR_END = 1;
public static final int GROUPPREFIX_SUBSTR_END = 6;
public static final String JSON_PERMSET_STR = "\"permissionSet\"";
public static final String JSON_PERMCODE_STR = "\"permissionCode\"";
public static final String JSON_PERMSETOBJ_BEGIN = "{";
public static final String JSON_PERMSETOBJ_END = "}}";
public static final String JSON_ENTITYOBJ_END = "]";
public static String extractParameterFromMap(Map<String,Object> mapOfParams,String paramName){
String paramValue = "";
if(mapOfParams.containsKey(paramName)){
paramValue = (String)mapOfParams.get(paramName);
}
return paramValue;
}
public static <T> T extractObjectFromMap(Map<String,T> mapOfParams,String paramName){
T paramValue = null;
if(mapOfParams.containsKey(paramName)){
paramValue = (T)mapOfParams.get(paramName);
}
return paramValue;
}
public static String detachPermissionSetFromJson(String jsonBody){
String permissionSetJsonObject = jsonBody.substring(jsonBody.indexOf(JSON_PERMSET_STR),jsonBody.lastIndexOf(JSON_ENTITYOBJ_END)+SUBSTR_END);
permissionSetJsonObject = JSON_PERMSETOBJ_BEGIN.concat(permissionSetJsonObject).concat(JSON_PERMSETOBJ_END);
return permissionSetJsonObject;
}
}
------------------------------------------------------------------------------------------------------------------
package com.alfresco.ratik.logger.webscript;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.extensions.webscripts.Cache;
import org.springframework.extensions.webscripts.DeclarativeWebScript;
import org.springframework.extensions.webscripts.Status;
import org.springframework.extensions.webscripts.WebScriptRequest;

public class TestPostScriptBody extends DeclarativeWebScript{


private static final Log LOGGER = LogFactory.getLog(TestPostScriptBody.class);
private static final String STRING_MEMBERS_ASSIGNED = "membersAssigned";
private static final String GROUP_NODEREF = "groupNoderef";
public static final String JSON_REQUESTBODY = "requestBody";
public static final String JSON_REQUEST_KEY_FIRSTNAME = "firstName";
public static final String JSON_REQUEST_KEY_LASTNAME = "lastName";
public static final String JSON_REQUEST_KEY_AGE = "age";
public static final String JSON_REQUEST_KEY_ADDRESS = "address";
public static final String JSON_REQUEST_OBJ_PERMSET = "permissionSet";
public static final String JSON_REQUEST_KEY_OLDGRPNAME = "oldgroupname";
public static final String JSON_RESP_CODE = "code";
public static final String JSON_RESP_MESSAGE = "message";
public static final String JSON_RESP_FULLNAME = "fullName";
public static final int OPERATION_SUCCESS_CODE = 200;
public static final int OPERATION_FAILURE_CODE = 404;
public static final String OPERATION_SUCCESS_MSG = "success";
public static final String OPERATION_FAILURE_MSG = "failure";

@Override
protected Map<String, Object> executeImpl(final WebScriptRequest request, final Status status,final Cache cache) 
{
String jsonRequest = request.getParameter(JSON_REQUESTBODY);
final Map<String,Object> model = new HashMap<String, Object>();
//JSONArray responseContent = new JSONArray();
boolean isSuccessful = true;
try{
Body requestBodyObject = JsonUtility.buildRequestBodyObject(jsonRequest); 
Map<String,Object> mapOfParams = requestBodyObject.getBody();
String firstName = JavaUtility.extractParameterFromMap(mapOfParams,JSON_REQUEST_KEY_FIRSTNAME);
String lastName = JavaUtility.extractParameterFromMap(mapOfParams,JSON_REQUEST_KEY_LASTNAME);
String age = JavaUtility.extractParameterFromMap(mapOfParams,JSON_REQUEST_KEY_AGE);
String address = JavaUtility.extractParameterFromMap(mapOfParams,JSON_REQUEST_KEY_ADDRESS);
System.out.println("firstName : " + firstName + ", lastName : " + 
lastName + ", age : " + age+ ", address : " + address);

String jsonRequestFromPermSet = JavaUtility.detachPermissionSetFromJson(jsonRequest);
Map<String,PermissionSet> map = JsonUtility.convertToTypePermissionSet(jsonRequestFromPermSet);
//System.out.println(map.keySet());
List<Entity> lstMembers = null;
PermissionSet permissionSetObj = JavaUtility.extractObjectFromMap(map,JSON_REQUEST_OBJ_PERMSET);
if(permissionSetObj!=null){
lstMembers = permissionSetObj.getEntities();
}
model.put(JSON_RESP_CODE,OPERATION_SUCCESS_CODE);
model.put(JSON_RESP_MESSAGE,isSuccessful?OPERATION_SUCCESS_MSG:OPERATION_FAILURE_MSG);
model.put(JSON_RESP_FULLNAME, firstName+"-"+lastName);
}catch(Exception e){
e.printStackTrace();
isSuccessful = false;
model.put(JSON_RESP_CODE,OPERATION_FAILURE_CODE);
model.put(JSON_RESP_MESSAGE,isSuccessful?OPERATION_SUCCESS_MSG:OPERATION_FAILURE_MSG);
model.put(JSON_RESP_FULLNAME, "error");
}
return model;
}
}
------------------------------------------------------------------------------------------------------------------
testPostScript.post.desc.xml
<webscript>
  <shortname>How to pass body in post webscript</shortname>
  <description>How to pass body in post webscript</description>
  <url>/testPostScript?requestBody={requestBody}</url>
  <format default="json"></format>
  <authentication>user</authentication>
</webscript>
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
testPostScript.post.json.ftl
{
"response":
  {
  "code": "${code}",
  "message": "${message}"
  }   
}
------------------------------------------------------------------------------------------------------------------

Comments

Popular posts from this blog

Install Alfresco Content Service 6.0 on ubuntu 16 using distribution zip

Lucene and fts-search

Call javascript webscript from contoller