001/* 002 * Stallion Core: A Modern Web Framework 003 * 004 * Copyright (C) 2015 - 2016 Stallion Software LLC. 005 * 006 * This program is free software: you can redistribute it and/or modify it under the terms of the 007 * GNU General Public License as published by the Free Software Foundation, either version 2 of 008 * the License, or (at your option) any later version. This program is distributed in the hope that 009 * it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of 010 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public 011 * License for more details. You should have received a copy of the GNU General Public License 012 * along with this program. If not, see <http://www.gnu.org/licenses/gpl-2.0.html>. 013 * 014 * 015 * 016 */ 017 018package io.stallion.plugins.javascript; 019 020import com.fasterxml.jackson.core.JsonGenerator; 021import com.fasterxml.jackson.core.JsonProcessingException; 022import com.fasterxml.jackson.databind.JsonSerializer; 023import com.fasterxml.jackson.databind.SerializerProvider; 024 025import java.io.IOException; 026import java.util.HashMap; 027import java.util.Map; 028 029import static io.stallion.utils.Literals.*; 030import static io.stallion.Context.*; 031 032 033public class JsModelSerializer extends JsonSerializer<BaseJavascriptModel> { 034 @Override 035 public void serialize(BaseJavascriptModel baseJavascriptModel, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException { 036 Map<String, Object> map = new HashMap<>(); 037 for(String key: baseJavascriptModel.keySet()) { 038 if (key.equals("attributes") || key.equals("isNewInsert")) { 039 continue; 040 } 041 if (!baseJavascriptModel.getJsonIgnoredColumns().contains(key)) { 042 map.put(key, baseJavascriptModel.get(key)); 043 } 044 } 045 for(String key: baseJavascriptModel.getDynamicProperties().keySet()) { 046 BaseDynamicColumn col = baseJavascriptModel.getDynamicProperties().get(key); 047 map.put(key, col.func(baseJavascriptModel)); 048 } 049 jsonGenerator.writeObject(map); 050 } 051}