com.zenesis.qx.remote.ProxiedSerializer.java Source code

Java tutorial

Introduction

Here is the source code for com.zenesis.qx.remote.ProxiedSerializer.java

Source

/**
 * ************************************************************************
 * 
 *    server-objects - a contrib to the Qooxdoo project that makes server 
 *    and client objects operate seamlessly; like Qooxdoo, server objects 
 *    have properties, events, and methods all of which can be access from
 *    either server or client, regardless of where the original object was
 *    created.
 * 
 *    http://qooxdoo.org
 * 
 *    Copyright:
 *      2010 Zenesis Limited, http://www.zenesis.com
 * 
 *    License:
 *      LGPL: http://www.gnu.org/licenses/lgpl.html
 *      EPL: http://www.eclipse.org/org/documents/epl-v10.php
 *      
 *      This software is provided under the same licensing terms as Qooxdoo,
 *      please see the LICENSE file in the Qooxdoo project's top-level directory 
 *      for details.
 * 
 *    Authors:
 *      * John Spackman (john.spackman@zenesis.com)
 * 
 * ************************************************************************
 */
package com.zenesis.qx.remote;

import java.io.IOException;

import org.apache.log4j.Logger;

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;

/**
 * Serializer for Proxied
 * @author John Spackman
 *
 */
public class ProxiedSerializer extends JsonSerializer<Proxied> {

    private static final Logger log = Logger.getLogger(ProxiedSerializer.class);

    /* (non-Javadoc)
     * @see org.codehaus.jackson.map.JsonSerializer#serialize(java.lang.Object, org.codehaus.jackson.JsonGenerator, org.codehaus.jackson.map.SerializerProvider)
     */
    @Override
    public void serialize(Proxied value, JsonGenerator jgen, SerializerProvider provider)
            throws IOException, JsonProcessingException {
        if (value == null)
            jgen.writeNull();
        else {
            ProxySessionTracker tracker = ProxyManager.getTracker();
            if (tracker == null) {
                log.fatal("No tracker when trying to write object " + value);
                jgen.writeNull();
            } else {
                Object obj = tracker.getProxy(value);
                if (obj == null)
                    jgen.writeNull();
                else
                    jgen.writeObject(obj);
            }
        }
    }

}