Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements.  See the NOTICE file
   * distributed with this work for additional information
   * regarding copyright ownership.  The ASF licenses this file
   * to you 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 org.apache.shindig.gadgets;
 
 
 import  com.google.common.collect.Maps;
 import  com.google.inject.Inject;
 import  com.google.inject.Singleton;
 
 import java.util.Map;
Default url generator. Produces js urls that include checksums for cache-busting. TODO: iframe and js url generation are two distinct things, and should probably be different interfaces. TODO: iframe and js urls should be able to be generated per container.
 
 @Singleton
 public class DefaultUrlGenerator implements UrlGenerator {
   protected static final Pattern ALLOWED_FEATURE_NAME = Pattern.compile("[0-9a-zA-Z_\\.\\-]+");
   protected static final String IFRAME_URI_PARAM = "gadgets.iframeBaseUri";
   protected static final String JS_URI_PARAM = "gadgets.jsUriTemplate";
   protected static final String OAUTH_GADGET_CALLBACK_URI_PARAM =
       "gadgets.oauthGadgetCallbackTemplate";
 
   private final String jsChecksum;
   private final Map<StringUriiframeBaseUris;
   private final Map<StringStringjsUriTemplates;
   private final Map<StringStringoauthCallbackUriTemplates;
 
 
   @Inject
   public DefaultUrlGenerator(ContainerConfig config,
                              LockedDomainService lockedDomainService,
                              GadgetFeatureRegistry registry) {
      = Maps.newHashMap();
      = Maps.newHashMap();
      = Maps.newHashMap();
     for (String container : config.getContainers()) {
       .put(container, Uri.parse(config.getString(container)));
       .put(containerconfig.getString(container));
       .put(container,
           config.getString(container));
     }
 
     this. = lockedDomainService;
 
     StringBuilder jsBuf = new StringBuilder();
     for (GadgetFeature feature : registry.getAllFeatures()) {
       for (JsLibrary library : feature.getJsLibraries(nullnull)) {
         jsBuf.append(library.getContent());
       }
     }
      = HashUtil.checksum(jsBuf.toString().getBytes());
 
   }
 
   public String getBundledJsUrl(Collection<StringfeaturesGadgetContext context) {
     String jsPrefix = .get(context.getContainer());
     if (jsPrefix == null) {
       return "";
     }
 
     return jsPrefix.replace("%host%"context.getHost())
                    .replace("%js%"getBundledJsParam(featurescontext));
   }
 
   public String getBundledJsParam(Collection<StringfeaturesGadgetContext context) {
     StringBuilder buf = new StringBuilder();
     boolean first = false;
     for (String feature : features) {
      if (.matcher(feature).matches()) {
        if (!first) {
          first = true;
        } else {
          buf.append(':');
        }
        buf.append(feature);
      }
    }
    if (!first) {
      buf.append("core");
    }
    buf.append(".js?v=").append()
       .append("&container=").append(context.getContainer())
       .append("&debug=").append(context.getDebug() ? "1" : "0");
    return buf.toString();
  }
  public String getIframeUrl(Gadget gadget) {
    GadgetContext context = gadget.getContext();
    GadgetSpec spec = gadget.getSpec();
    String url = context.getUrl().toString();
    View view = gadget.getCurrentView();
    View.ContentType type;
    type = (view == null) ? .. : view.getType();
    UriBuilder uri;
    switch (type) {
      case :
        uri = new UriBuilder(view.getHref());
        break;
      case :
      case :
      default:
        Uri iframeBaseUri = .get(context.getContainer());
        uri = iframeBaseUri != null ? new UriBuilder(iframeBaseUri) : new UriBuilder();
        String host = .getLockedDomainForGadget(gadgetcontext.getContainer());
        if (host != null) {
          uri.setAuthority(host);
        }
        break;
    }
    uri.addQueryParameter("container"context.getContainer());
    if (context.getModuleId() != 0) {
      uri.addQueryParameter("mid", Integer.toString(context.getModuleId()));
    }
    if (context.getIgnoreCache()) {
      uri.addQueryParameter("nocache""1");
    } else {
      uri.addQueryParameter("v"spec.getChecksum());
    }
    uri.addQueryParameter("lang"context.getLocale().getLanguage());
    uri.addQueryParameter("country"context.getLocale().getCountry());
    uri.addQueryParameter("view"context.getView());
    UserPrefs prefs = context.getUserPrefs();
    for (UserPref pref : gadget.getSpec().getUserPrefs()) {
      String name = pref.getName();
      String value = prefs.getPref(name);
      if (value == null) {
        value = pref.getDefaultValue();
      }
      uri.addQueryParameter("up_" + pref.getName(), value);
    }
    // add url last to work around browser bugs
    if(type != ..) {
      uri.addQueryParameter("url"url);
    }
    return uri.toString();
  }
  public String getGadgetDomainOAuthCallback(String containerString gadgetHost) {
    String callback = .get(container);
    if (callback == null) {
      return null;
    }
    return callback.replace("%host%"gadgetHost);
  }
New to GrepCode? Check out our FAQ X