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

com.googlecode.gwt.charts.client.ajaxloader.AjaxKeyRepository Maven / Gradle / Ivy

/*
 * Copyright 2009 Google Inc.
 * 
 * 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.
 */

package com.googlecode.gwt.charts.client.ajaxloader;

import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.Window.Location;

/**
 * Stores keys for different locations (hostname:port). The AjaxLoader class can
 * lookup a key from this repository if not otherwise specified.
 * 
 * This repository can be helpful for web sites that respond to requests for
 * multiple domains (or by name and IP address), or to run your application on
 * multiple servers (say development, test, and production) and store the set of
 * valid keys compiled into the application.
 * 
 * You can specify these keys in multiple ways:
 * 
 * - You can create a
 * com/google/gwt/ajaxloader/client/AjaxKeyConstants.properties file with the
 * following format:
 * 
 * localhost\:8080 = ABQIAAAAG8LzhtshQCjpSshU_uJjm\
 * xTwM0brOpm-All5BF6PoaKBxRWWERTZER2lJ4GnsG8nvhKLOQ20degaEQ
 * 
 * 127.0.0.1\:8080 = ABQIAAAAG8LzhtshQCjpSshU_uJjm\
 * xTBfUk9TZrBRaIteybtnU2KziHEpRQvhPNTjo7DMczjrRD3yBPRJ_BSQQ
 * 
 * example.com\:8080 = ABQIAAAAG8LzhU_uJjmhtshQCjpSs\
 * 3yBPRJ_BSQQxTBfUk9TZrBRaIteybtnU2KziHEpRQvhPNTjo7DMczjrRD
 * 
 * ajaxKeys = localhost\:8080, 127.0.0.1\:8080 example.com\:8080
 * 
 * - You can specify an instance of AjaxKeyConstants to the
 * {@link #setKeys(AjaxKeyConstants)} method.
 * 
 * - You can load keys at runtime with the {@link #putKey(String, String)}
 * method.
 */
public class AjaxKeyRepository {

  // Deferred bound instance of Constants class used to populate keys
  private static AjaxKeyConstants keys = GWT.create(AjaxKeyConstants.class);

  /**
   * Retrieve an Ajax API key given the current location.
   */
  public static String getKey() {
    return keys.ajaxKeys().get(Location.getHost());
  }

  /**
   * Retrieve an Ajax API Key given the hostname:port value.
   * 
   * @param location hostname:port string
   */
  public static String getKey(String location) {
    return keys.ajaxKeys().get(location);
  }

  /**
   * Associates a a hostname:port with an Ajax API key.
   * 
   * @param location hostname:port value
   * @param ajaxApiKey the key registered for the above hostname:port combo
   */
  public static void putKey(String location, String ajaxApiKey) {
    keys.ajaxKeys().put(location, ajaxApiKey);
  }

  /**
   * Override the default key properties with your own custom subclass. Note
   * that calling this method will invalidate any keys set with putKey or any
   * defaults compiled into the library.
   * 
   * @param keys an extension of the AjaxKeyConstants interface to override the
   *          defaults.
   */
  public static void setKeys(AjaxKeyConstants keys) {
    AjaxKeyRepository.keys = keys;
  }

  private AjaxKeyRepository() {
    // do not instantiate this class
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy