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
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * KIND, either express or implied. See the License for the
  * specific language governing permissions and limitations under the License.
 package org.apache.shindig.gadgets.oauth;
 import  net.oauth.OAuth;
 import  net.oauth.OAuthConsumer;
 import  net.oauth.OAuthServiceProvider;
 import  net.oauth.signature.RSA_SHA1;
 import  org.json.JSONException;
 import  org.json.JSONObject;
 import java.util.Map;

Simple implementation of the OAuthStore interface. We use a in-memory hash map. If initialized with a private key, then the store will return an OAuthAccessor in getOAuthAccessor that uses that private key if no consumer key and secret could be found.
 public class BasicOAuthStore implements OAuthStore {
   private static final String CONSUMER_SECRET_KEY = "consumer_secret";
   private static final String CONSUMER_KEY_KEY = "consumer_key";
   private static final String KEY_TYPE_KEY = "key_type";
   private static final String CALLBACK_URL = "callback_url";

HashMap of provider and consumer information. Maps BasicOAuthStoreConsumerIndexs (i.e. nickname of a service provider and the gadget that uses that nickname) to BasicOAuthStoreConsumerKeyAndSecrets.
HashMap of token information. Maps BasicOAuthStoreTokenIndexs (i.e. gadget id, token nickname, module id, etc.) to TokenInfos (i.e. access token and token secrets).
   private final Map<BasicOAuthStoreTokenIndexTokenInfotokens;

Key to use when no other key is found.
Callback to use when no per-key callback URL is found.
   private String defaultCallbackUrl;
Number of times we looked up a consumer key
   private int consumerKeyLookupCount = 0;

Number of times we looked up an access token
   private int accessTokenLookupCount = 0;

Number of times we added an access token
   private int accessTokenAddCount = 0;

Number of times we removed an access token
   private int accessTokenRemoveCount = 0;
   public BasicOAuthStore() {
      = Maps.newHashMap();
      = Maps.newHashMap();
   public void initFromConfigString(String oauthConfigStrthrows GadgetException {
     try {
       JSONObject oauthConfigs = new JSONObject(oauthConfigStr);
       for (Iterator<?> i = oauthConfigs.keys(); i.hasNext();) {
         String url = (;
        URI gadgetUri = new URI(url);
        JSONObject oauthConfig = oauthConfigs.getJSONObject(url);
    } catch (JSONException e) {
    } catch (URISyntaxException e) {
  private void storeConsumerInfos(URI gadgetUri, JSONObject oauthConfig)
      throws JSONException, GadgetException {
    for (String serviceName : JSONObject.getNames(oauthConfig)) {
      JSONObject consumerInfo = oauthConfig.getJSONObject(serviceName);
  private void storeConsumerInfo(URI gadgetUriString serviceName, JSONObject consumerInfo)
      throws JSONException, GadgetException {
  private void realStoreConsumerInfo(URI gadgetUriString serviceName, JSONObject consumerInfo)
      throws JSONException {
    String callbackUrl = consumerInfo.optString(null);
    String consumerSecret = consumerInfo.getString();
    String consumerKey = consumerInfo.getString();
    String keyTypeStr = consumerInfo.getString();
    KeyType keyType = .;
    if (keyTypeStr.equals("RSA_PRIVATE")) {
      keyType = .;
      consumerSecret = convertFromOpenSsl(consumerSecret);
  // Support standard openssl keys by stripping out the headers and blank lines
  public static String convertFromOpenSsl(String privateKey) {
    return privateKey.replaceAll("-----[A-Z ]*-----""").replace("\n""");
  public void setDefaultKey(BasicOAuthStoreConsumerKeyAndSecret defaultKey) {
    this. = defaultKey;
  public void setDefaultCallbackUrl(String defaultCallbackUrl) {
    this. = defaultCallbackUrl;
  public void setConsumerKeyAndSecret(
      BasicOAuthStoreConsumerIndex providerKeyBasicOAuthStoreConsumerKeyAndSecret keyAndSecret) {
      SecurityToken securityTokenString serviceName, OAuthServiceProvider provider)
      throws GadgetException {
    if (cks == null) {
      cks = ;
    if (cks == null) {
          "No key for gadget " + securityToken.getAppUrl() + " and service " + serviceName);
    OAuthConsumer consumer = null;
    if (cks.getKeyType() == .) {
      consumer = new OAuthConsumer(nullcks.getConsumerKey(), nullprovider);
      // The java code has lots of magic.  By setting this property here, code thousands
      // of lines away knows that the consumerSecret value in the consumer should be treated as
      // an RSA private key and not an HMAC key.
      consumer.setProperty(OAuth.OAUTH_SIGNATURE_METHOD, OAuth.RSA_SHA1);
      consumer.setProperty(RSA_SHA1.PRIVATE_KEY, cks.getConsumerSecret());
    } else {
      consumer = new OAuthConsumer(nullcks.getConsumerKey(), cks.getConsumerSecret(), provider);
      consumer.setProperty(OAuth.OAUTH_SIGNATURE_METHOD, OAuth.HMAC_SHA1);
    String callback = (cks.getCallbackUrl() != null ? cks.getCallbackUrl() : );
    return new ConsumerInfo(consumercks.getKeyName(), callback);
      SecurityToken securityTokenString serviceNameString tokenName) {
    return tokenKey;
  public TokenInfo getTokenInfo(SecurityToken securityTokenConsumerInfo consumerInfo,
      String serviceNameString tokenName) {
    BasicOAuthStoreTokenIndex tokenKey =
    return .get(tokenKey);
  public void setTokenInfo(SecurityToken securityTokenConsumerInfo consumerInfo,
      String serviceNameString tokenNameTokenInfo tokenInfo) {
    BasicOAuthStoreTokenIndex tokenKey =
  public void removeToken(SecurityToken securityTokenConsumerInfo consumerInfo,
      String serviceNameString tokenName) {
    BasicOAuthStoreTokenIndex tokenKey =
  public int getConsumerKeyLookupCount() {
    return ;
  public int getAccessTokenLookupCount() {
    return ;
  public int getAccessTokenAddCount() {
    return ;
  public int getAccessTokenRemoveCount() {
    return ;
New to GrepCode? Check out our FAQ X