@@ -0,0 +1,2302 @@
+/*%0A * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.%0A *%0A * WSO2 Inc. licenses this file to you under the Apache License,%0A * Version 2.0 (the %22License%22); you may not use this file except%0A * in compliance with the License.%0A * You may obtain a copy of the License at%0A *%0A * http://www.apache.org/licenses/LICENSE-2.0%0A *%0A * Unless required by applicable law or agreed to in writing,%0A * software distributed under the License is distributed on an%0A * %22AS IS%22 BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY%0A * KIND, either express or implied.  See the License for the%0A * specific language governing permissions and limitations%0A * under the License.%0A */%0A%0Apackage org.wso2.carbon.uuf.renderablecreator.hbs.internal.serialize;%0A%0Aimport com.google.gson.JsonArray;%0Aimport com.google.gson.JsonElement;%0Aimport com.google.gson.JsonNull;%0Aimport com.google.gson.JsonObject;%0Aimport com.google.gson.JsonSerializationContext;%0Aimport com.google.gson.JsonSerializer;%0Aimport jdk.nashorn.api.scripting.ScriptObjectMirror;%0A%0Aimport java.lang.reflect.Type;%0A%0A/**%0A * JSON serializer for %7B@link ScriptObjectMirror%7D objects.%0A *%0A * @since 1.0.0%0A */%0Apublic class ScriptObjectMirrorSerializer implements JsonSerializer%3CScriptObjectMirror%3E %7B%0A%0A    /**%0A     * %7B@inheritDoc%7D%0A     */%0A    @Override%0A    public JsonElement serialize(ScriptObjectMirror jsObj, Type type, JsonSerializationContext context) %7B%0A        if ((jsObj == null) %7C%7C ScriptObjectMirror.isUndefined(jsObj) %7C%7C jsObj.isFunction()) %7B%0A            return JsonNull.INSTANCE;%0A        %7D%0A%0A        if (jsObj.isArray()) %7B%0A            JsonArray jsonArray = new JsonArray();%0A            for (Object item : jsObj.values()) %7B%0A                jsonArray.add(serializeFurther(context.serialize(item), context));%0A            %7D%0A            return jsonArray;%0A        %7D%0A        if (jsObj.isEmpty()) %7B%0A            return new JsonObject();%0A        %7D%0A%0A        JsonObject jsonObject = new JsonObject();%0A        for (String key : jsObj.getOwnKeys(false)) %7B%0A            jsonObject.add(key, serializeFurther(jsObj.getMember(key), context));%0A        %7D%0A        return jsonObject;%0A    %7D%0A%0A    private JsonElement serializeFurther(Object src, JsonSerializationContext context) %7B%0A        return ScriptObjectMirror.isUndefined(src) ? JsonNull.INSTANCE : context.serialize(src);%0A    %7D%0A%7D%0A

add ScriptObjectMirrorSerializer class