001    /**
002     * Copyright (c) 2000-2013 Liferay, Inc. All rights reserved.
003     *
004     * This library is free software; you can redistribute it and/or modify it under
005     * the terms of the GNU Lesser General Public License as published by the Free
006     * Software Foundation; either version 2.1 of the License, or (at your option)
007     * any later version.
008     *
009     * This library is distributed in the hope that it will be useful, but WITHOUT
010     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
011     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
012     * details.
013     */
014    
015    package com.liferay.portal.json;
016    
017    import com.liferay.portal.kernel.json.JSONSerializer;
018    import com.liferay.portal.kernel.json.JSONTransformer;
019    
020    import flexjson.transformer.Transformer;
021    
022    /**
023     * Wrapper over flexjson serializer.
024     *
025     * @author Igor Spasic
026     */
027    public class JSONSerializerImpl implements JSONSerializer {
028    
029            public JSONSerializerImpl() {
030                    _jsonSerializer = new flexjson.JSONSerializer();
031            }
032    
033            @Override
034            public JSONSerializerImpl exclude(String... fields) {
035                    _jsonSerializer.exclude(fields);
036    
037                    return this;
038            }
039    
040            @Override
041            public JSONSerializerImpl include(String... fields) {
042                    _jsonSerializer.include(fields);
043    
044                    return this;
045            }
046    
047            @Override
048            public String serialize(Object target) {
049                    return _jsonSerializer.serialize(target);
050            }
051    
052            @Override
053            public String serializeDeep(Object target) {
054                    return _jsonSerializer.deepSerialize(target);
055            }
056    
057            @Override
058            public JSONSerializerImpl transform(
059                    JSONTransformer jsonTransformer, Class<?>... types) {
060    
061                    Transformer transformer = null;
062    
063                    if (jsonTransformer instanceof Transformer) {
064                            transformer = (Transformer)jsonTransformer;
065                    }
066                    else {
067                            transformer = new FlexjsonTransformer(jsonTransformer);
068                    }
069    
070                    _jsonSerializer.transform(transformer, types);
071    
072                    return this;
073            }
074    
075            @Override
076            public JSONSerializerImpl transform(
077                    JSONTransformer jsonTransformer, String... fields) {
078    
079                    Transformer transformer = null;
080    
081                    if (jsonTransformer instanceof Transformer) {
082                            transformer = (Transformer)jsonTransformer;
083                    }
084                    else {
085                            transformer = new FlexjsonTransformer(jsonTransformer);
086                    }
087    
088                    _jsonSerializer.transform(transformer, fields);
089    
090                    return this;
091            }
092    
093            private final flexjson.JSONSerializer _jsonSerializer;
094    
095    }