Example usage for com.liferay.portal.kernel.json JSONFactoryUtil looseSerialize

List of usage examples for com.liferay.portal.kernel.json JSONFactoryUtil looseSerialize

Introduction

In this page you can find the example usage for com.liferay.portal.kernel.json JSONFactoryUtil looseSerialize.

Prototype

public static String looseSerialize(Object object, JSONTransformer jsonTransformer, Class<?> clazz) 

Source Link

Usage

From source file:com.marcelmika.lims.portal.controller.ConversationController.java

License:Open Source License

/**
 * Reads Single User Conversation messages
 *
 * @param request  ResourceRequest//from   ww w.j  av a2 s  . c  o  m
 * @param response ResourceResponse
 */
public void readSingleUserConversation(ResourceRequest request, ResourceResponse response) {

    Buddy buddy; // Authorized user
    ReadConversationParameters parameters; // Request parameters

    // Deserialize
    try {
        // Buddy from request
        buddy = Buddy.fromResourceRequest(request);

        // Parameters
        parameters = JSONFactoryUtil.looseDeserialize(request.getParameter(RequestParameterKeys.KEY_PARAMETERS),
                ReadConversationParameters.class);
    }
    // Failure
    catch (Exception exception) {
        // Bad request
        ResponseUtil.writeResponse(HttpStatus.BAD_REQUEST, response);
        // Log
        log.debug(exception);
        // End here
        return;
    }

    // Create objects from parameters
    Conversation conversation = new Conversation();
    conversation.setConversationId(parameters.getConversationId());
    Pagination pagination = parameters.getPagination();

    // Read conversations
    ReadSingleUserConversationResponseEvent responseEvent = conversationCoreService
            .readConversation(new ReadSingleUserConversationRequestEvent(buddy.toBuddyDetails(), // Buddy is participant
                    conversation.toConversationDetails(), // Read proper conversation
                    pagination.toPaginationDetails()) // Pagination request
    );

    // Success
    if (responseEvent.isSuccess()) {
        conversation = Conversation.fromConversationDetails(responseEvent.getConversation());

        // Client has fresh copy so there is no need to send it
        if (conversation.getEtag().equals(parameters.getEtag())) {
            ResponseUtil.writeResponse(HttpStatus.NOT_MODIFIED, response);
            return;
        }

        // Serialize
        String serialized = JSONFactoryUtil.looseSerialize(conversation, "messages", "messages.from");

        // Write success to response
        ResponseUtil.writeResponse(serialized, HttpStatus.OK, response);
    }
    // Failure
    else {
        ReadSingleUserConversationResponseEvent.Status status = responseEvent.getStatus();
        // Not found
        if (status == ReadSingleUserConversationResponseEvent.Status.ERROR_NOT_FOUND) {
            ResponseUtil.writeResponse(HttpStatus.NOT_FOUND, response);
        }
        // Forbidden
        else if (status == ReadSingleUserConversationResponseEvent.Status.ERROR_FORBIDDEN) {
            ResponseUtil.writeResponse(HttpStatus.FORBIDDEN, response);
        }
        // Unauthorized
        else if (status == ReadSingleUserConversationResponseEvent.Status.ERROR_NO_SESSION) {
            ResponseUtil.writeResponse(HttpStatus.UNAUTHORIZED, response);
        }
        // Bad request
        else if (status == ReadSingleUserConversationResponseEvent.Status.ERROR_WRONG_PARAMETERS) {
            ResponseUtil.writeResponse(HttpStatus.BAD_REQUEST, response);
        }
        // Everything else is server fault
        else {
            ResponseUtil.writeResponse(HttpStatus.INTERNAL_SERVER_ERROR, response);
            // Log
            log.error(responseEvent.getException());
        }
    }
}

From source file:com.marcelmika.lims.portal.controller.GroupController.java

License:Open Source License

/**
 * Fetches all groups related to the buddy.
 *
 * @param request  ResourceRequest//from   ww  w.  java 2 s .co  m
 * @param response ResourceResponse
 */
public void getGroupList(ResourceRequest request, ResourceResponse response) {

    Buddy buddy; // Authorized user
    GetGroupListParameters parameters; // Parameters for the request

    // Deserialize
    try {
        // Parameters
        parameters = JSONFactoryUtil.looseDeserialize(request.getParameter(RequestParameterKeys.KEY_PARAMETERS),
                GetGroupListParameters.class);

        // Create buddy from request
        buddy = Buddy.fromResourceRequest(request);
    }
    // Failure
    catch (Exception exception) {
        // Bad request
        ResponseUtil.writeResponse(HttpStatus.BAD_REQUEST, response);
        // Log
        log.debug(exception);
        // End here
        return;
    }

    // Get groups
    GetGroupsResponseEvent responseEvent = groupCoreService
            .getGroups(new GetGroupsRequestEvent(buddy.toBuddyDetails()));

    // Success
    if (responseEvent.isSuccess()) {
        // Map groups from group details
        GroupCollection groupCollection = GroupCollection
                .fromGroupCollectionDetails(responseEvent.getGroupCollection());

        // ... and compare it with group collection etag
        // Cached
        if (parameters.getEtag().equals(groupCollection.getEtag())) {
            // Etags equal which means that nothing has changed.
            // Write only the group collection without groups and buddies (no extra traffic needed)
            ResponseUtil.writeResponse(HttpStatus.NOT_MODIFIED, response);
        }
        // Not cached
        else {
            // Serialize
            String serialized = JSONFactoryUtil.looseSerialize(groupCollection, "groups", "groups.buddies");
            // Etags are different which means that groups were modified
            // Send the whole package to the client
            ResponseUtil.writeResponse(serialized, HttpStatus.OK, response);
        }
    }
    // Failure
    else {
        GetGroupsResponseEvent.Status status = responseEvent.getStatus();
        // Bad request
        if (status == GetGroupsResponseEvent.Status.ERROR_WRONG_PARAMETERS) {
            ResponseUtil.writeResponse(HttpStatus.BAD_REQUEST, response);
        }
        // Everything else is server fault
        else {
            ResponseUtil.writeResponse(HttpStatus.INTERNAL_SERVER_ERROR, response);
            // Log
            log.error(responseEvent.getException());
        }
    }
}