//package de.anycook.graph.oauth;
//
//import java.util.ArrayList;
//import java.util.Collection;
//import java.util.Collections;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//import java.util.Set;
//import java.util.UUID;
//
//import javax.ws.rs.core.MultivaluedMap;
//import javax.ws.rs.ext.Provider;
//
//import com.sun.jersey.core.util.MultivaluedMapImpl;
//import com.sun.jersey.de.anycook.oauth.server.spi.OAuthConsumer;
//import com.sun.jersey.de.anycook.oauth.server.spi.OAuthProvider;
//import com.sun.jersey.de.anycook.oauth.server.spi.OAuthToken;
//
//import de.anycook.db.mysql.DBApps;
//
//@Provider
//public class AnycookOAuthProvider implements OAuthProvider{
// private static final Map<String, OAuthToken> requestTokens;
// private static final Map<String ,OAuthToken> accessTokens;
// private static final Map<String , OAuthConsumer> verifierTokens;
// private static final Map<String, Integer> verifierUser;
//
// static{
// requestTokens = new HashMap<>();
// accessTokens = new HashMap<>();
// verifierTokens = new HashMap<>();
// verifierUser = new HashMap<>();
// }
//
//
// @Override
// public OAuthToken getAccessToken(String token) {
// return accessTokens.get(token);
// }
//
// @Override
// public OAuthConsumer getConsumer(String consumerKey) {
// return AnycookOAuthConsumer.init(consumerKey);
// }
//
// @Override
// public OAuthToken getRequestToken(String token) {
// if(token == null)
// return null;
// return requestTokens.get(token);
// }
//
// @Override
// public OAuthToken newAccessToken(OAuthToken requestToken, String verifier) {
// OAuthConsumer consumer = verifierTokens.get(verifier);
// if(consumer !=null && requestToken.getConsumer().equals(consumer)){
// verifierTokens.remove(verifier);
// int userId = verifierUser.get(verifier);
// verifierUser.remove(verifier);
// String token = newUUIDString();
// String secret = newUUIDString();
// DBApps dbapps = new DBApps();
// dbapps.setUserOAuthToken(userId, consumer.getKey(), token, secret);
// dbapps.close();
// return new AnycookOAuthToken(token, secret, consumer.getKey(), null, null);
// }
//
// return null;
// }
//
//// public boolean verify(String verifier, String appID){
//// OAuthConsumer consumer = verifierTokens.get(verifier);
//// if(consumer == null)
//// return false;
////
//// verifierTokens.remove(verifier);
//// return appID.equals(consumer.getKey());
//// }
//
// public String getVerifier(OAuthConsumer consumer, int userId){
// String verifier = newUUIDString();
// verifierTokens.put(verifier, consumer);
// verifierUser.put(verifier, userId);
// return verifier;
// }
//
//
//
// @Override
// public OAuthToken newRequestToken(String consumerKey, String callbackUrl,
// Map<String, List<String>> attributes) {
// String token = newUUIDString();
// String secret = newUUIDString();
// OAuthToken request_token =
// new AnycookOAuthToken(token, secret, consumerKey, callbackUrl, attributes);
// requestTokens.put(token, request_token);
// return request_token;
// }
//
// public static MultivaluedMap<String, String> newImmutableMultiMap(
// Map<String, List<String>> source){
// if (source == null) {
// return ImmutableMultiMap.EMPTY;
// }
// return new ImmutableMultiMap(source);
// }
//
// protected String newUUIDString() {
// String tmp = UUID.randomUUID().toString();
// return tmp.replaceAll("-", "");
// }
//
// private static class ImmutableMultiMap extends MultivaluedMapImpl {
// /**
// *
// */
// private static final long serialVersionUID = 1L;
// public static final ImmutableMultiMap EMPTY = new ImmutableMultiMap();
//
// private ImmutableMultiMap() {}
//
// ImmutableMultiMap(Map<String, List<String>> source) {
// for (Map.Entry<String, List<String>> e : source.entrySet()) {
// super.put(e.getKey(), e.getValue() == null ?
// Collections.<String>emptyList() :
// Collections.unmodifiableList(new ArrayList<String>(e.getValue())));
// }
// }
//
// @Override
// public List<String> put(String k, List<String> v) {
// throw new UnsupportedOperationException();
// }
//
// @Override
// public Set<Entry<String, List<String>>> entrySet() {
// return Collections.unmodifiableSet(super.entrySet());
// }
//
// @Override
// public Set<String> keySet() {
// return Collections.unmodifiableSet(super.keySet());
// }
//
// @Override
// public List<String> remove(Object o) {
// throw new UnsupportedOperationException();
// }
//
// @Override
// public void putAll(Map<? extends String, ? extends List<String>> map) {
// throw new UnsupportedOperationException();
// }
//
// @Override
// public Collection<List<String>> values() {
// return Collections.unmodifiableCollection(super.values());
// }
// }
//
//}