All Downloads are FREE. Search and download functionalities are using the official Maven repository.

joynr.dispatching.subscription.util.SubscriptionUtil.js Maven / Gradle / Ivy

/*global JSON: true */

/*
 * #%L
 * %%
 * Copyright (C) 2011 - 2015 BMW Car IT GmbH
 * %%
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * #L%
 */

define("joynr/dispatching/subscription/util/SubscriptionUtil", [], function() {
    /**
     * @exports SubscriptionUtil
     */
    var SubscriptionUtil = {};
    /**
     * @param {Map.} subscriptions - Map<String,
     *     SubscriptionInformation> containing the subscriptions to be serialized
     *
     * @returns {String} serialized subscriptions
     */
    SubscriptionUtil.serializeSubscriptions = function(subscriptions) {
        var result = [], subscriptionId;
        for (subscriptionId in subscriptions) {
            if (subscriptions.hasOwnProperty(subscriptionId)) {
                result[result.length] = subscriptions[subscriptionId];
            }
        }

        return JSON.stringify(result);
    };

    /**
     * @param {Map.} subscriptions - Map<String,
     *     SubscriptionInformation> containing the subscriptions to be serialized
     *
     * @returns {String} serialized subscriptionIds
     */
    SubscriptionUtil.serializeSubscriptionIds = function(subscriptions) {
        var result = [], subscriptionId;
        for (subscriptionId in subscriptions) {
            if (subscriptions.hasOwnProperty(subscriptionId)) {
                result[result.length] = subscriptionId;
            }
        }

        return JSON.stringify(result);
    };

    /**
     * @param {String} subscriptions - serialized subscriptions as String
     *
     * @returns {Map.} deserialized subscriptions
     *     as Map.<String, SubscriptionInformation>
     */
    SubscriptionUtil.deserializeSubscriptions = function(subscriptions) {
        var array, result = {}, subscription;
        if (JSON && JSON.parse) {
            try {
                array = JSON.parse(subscriptions);
            } catch (err) {
                throw new Error(err);
            }
        }

        for (subscription in array) {
            if (array.hasOwnProperty(subscription)) {
                var object = array[subscription];
                result[object.subscriptionId] = object;
            }
        }
        return result;
    };

    /**
     * @param {String} subscriptions - serialized subscriptions as String
     *
     * @returns {Array.} deserialized subscriptionIds as Array of String
     */
    SubscriptionUtil.deserializeSubscriptionIds = function(subscriptions) {
        var result = [];
        if (JSON && JSON.parse) {
            try {
                result = JSON.parse(subscriptions);
            } catch (err) {
                throw new Error(err);
            }
        }

        return result;
    };

    /**
     * @param {Array} expectedFilterParameters - the expected filter parameters of a broadcast subscription
     * @param {Array} actualFilterParameters - the actual filter parameters of a broadcast subscription
     * @param {String} broadcastName - the name of the checked broadcast
     *
     * @returns {Object} an object containing possible caughtErrors if the actualFilterParameters do not match
     *                   the expected filter parameters
     */
    SubscriptionUtil.checkFilterParameters =
            function(expectedFilterParameters, actualFilterParameters, broadcastName) {
                var i, result = {
                    caughtErrors : []
                };
                if (actualFilterParameters === undefined
                    || actualFilterParameters === null
                    || Object.keys(actualFilterParameters).length === 0) {
                    return result;
                }
                var targetKeys = Object.keys(expectedFilterParameters);
                var sourceKeys = Object.keys(actualFilterParameters);
                for (i = 0; i < targetKeys.length; i++) {
                    if (sourceKeys.indexOf(targetKeys[i]) === -1) {
                        result.caughtErrors.push("Filter parameter "
                            + targetKeys[i]
                            + " for broadcast \""
                            + broadcastName
                            + "\" is not provided");
                    }
                }
                return result;
            };

    return SubscriptionUtil;
});




© 2015 - 2025 Weber Informatics LLC | Privacy Policy