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

com.cashfree.pg.ServerConfiguration Maven / Gradle / Ivy

There is a newer version: 2.1.7
Show newest version
package com.cashfree.pg;


import java.util.Map;

/** Representing a Server configuration. */
public class ServerConfiguration {
    public String URL;
    public String description;
    public Map variables;

    /**
     * @param URL A URL to the target host.
     * @param description A description of the host designated by the URL.
     * @param variables A map between a variable name and its value. The value is used for
     *     substitution in the server's URL template.
     */
    public ServerConfiguration(
            String URL, String description, Map variables) {
        this.URL = URL;
        this.description = description;
        this.variables = variables;
    }

    /**
     * Format URL template using given variables.
     *
     * @param variables A map between a variable name and its value.
     * @return Formatted URL.
     */
    public String URL(Map variables) {
        String url = this.URL;

        // go through variables and replace placeholders
        for (Map.Entry variable : this.variables.entrySet()) {
            String name = variable.getKey();
            ServerVariable serverVariable = variable.getValue();
            String value = serverVariable.defaultValue;

            if (variables != null && variables.containsKey(name)) {
                value = variables.get(name);
                if (serverVariable.enumValues.size() > 0
                        && !serverVariable.enumValues.contains(value)) {
                    throw new IllegalArgumentException(
                            "The variable "
                                    + name
                                    + " in the server URL has invalid value "
                                    + value
                                    + ".");
                }
            }
            url = url.replace("{" + name + "}", value);
        }
        return url;
    }

    /**
     * Format URL template using default server variables.
     *
     * @return Formatted URL.
     */
    public String URL() {
        return URL(null);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy