// Path: src/main/java/com/coding4people/mosquitoreport/api/Env.java
// public class Env {
//     public final static Env instance = new Env();
//     
//     private Map<String, String> properties = Maps.newHashMap();
//     
//     public Optional<String> get(String key) {
//         return Optional.ofNullable(properties.getOrDefault(key, System.getenv(key)));
//     }
//     
//     public Env register(String key, String value) {
//         properties.put(key, value);
//         
//         return this;
//     }
// }
// 
// Path: src/main/java/com/coding4people/mosquitoreport/api/models/User.java
// @DynamoDBTable(tableName = "user")
// public class User {
//     @DynamoDBHashKey
//     private String guid;
//     
//     @DynamoDBAttribute
//     private String email;
//     
//     @DynamoDBAttribute
//     private String firstname;
//     
//     @DynamoDBAttribute
//     private String lastname;
//     
//     @DynamoDBAttribute
//     private String location;
//     
//     @DynamoDBAttribute
//     private String facebookurl;
//     
//     @DynamoDBAttribute
//     private String twitter;
//     
//     @DynamoDBAttribute
//     private String profilepictureguid;
// 
//     public String getGuid() {
//         return guid;
//     }
// 
//     public void setGuid(String guid) {
//         this.guid = guid;
//     }
// 
//     public String getEmail() {
//         return email;
//     }
// 
//     public void setEmail(String email) {
//         this.email = email;
//     }
// 
//     public String getFirstname() {
//         return firstname;
//     }
// 
//     public void setFirstname(String firstname) {
//         this.firstname = firstname;
//     }
// 
//     public String getLastname() {
//         return lastname;
//     }
// 
//     public void setLastname(String lastname) {
//         this.lastname = lastname;
//     }
// 
//     public String getLocation() {
//         return location;
//     }
// 
//     public void setLocation(String location) {
//         this.location = location;
//     }
// 
//     public String getFacebookurl() {
//         return facebookurl;
//     }
// 
//     public void setFacebookurl(String facebookurl) {
//         this.facebookurl = facebookurl;
//     }
// 
//     public String getTwitter() {
//         return twitter;
//     }
// 
//     public void setTwitter(String twitter) {
//         this.twitter = twitter;
//     }
// 
//     public String getProfilepictureguid() {
//         return profilepictureguid;
//     }
// 
//     public void setProfilepictureguid(String profilepictureguid) {
//         this.profilepictureguid = profilepictureguid;
//     }
// }


import java.util.concurrent.ExecutorService;
import javax.inject.Singleton;
import org.glassfish.hk2.utilities.binding.AbstractBinder;
import org.glassfish.jersey.process.internal.RequestScoped;
import com.amazonaws.ClientConfiguration;
import com.amazonaws.auth.AWSCredentialsProvider;
import com.amazonaws.services.cloudsearchv2.AmazonCloudSearch;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDB;
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper;
import com.amazonaws.services.dynamodbv2.document.DynamoDB;
import com.amazonaws.services.s3.AmazonS3Client;
import com.coding4people.mosquitoreport.api.Env;
import com.coding4people.mosquitoreport.api.models.User;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.restfb.WebRequestor;

package com.coding4people.mosquitoreport.api.factories;





public class FactoryBinder extends AbstractBinder {
    @Override
    protected void configure() {
        bindFactory(AmazonCloudSearchFactory.class).to(AmazonCloudSearch.class).in(Singleton.class);
        bindFactory(AmazonDynamoDBFactory.class).to(AmazonDynamoDB.class).in(Singleton.class);
        bindFactory(AmazonS3ClientFactory.class).to(AmazonS3Client.class).in(Singleton.class);

// Path: src/main/java/com/coding4people/mosquitoreport/api/Env.java
// public class Env {
//     public final static Env instance = new Env();
//     
//     private Map<String, String> properties = Maps.newHashMap();
//     
//     public Optional<String> get(String key) {
//         return Optional.ofNullable(properties.getOrDefault(key, System.getenv(key)));
//     }
//     
//     public Env register(String key, String value) {
//         properties.put(key, value);
//         
//         return this;
//     }
// }
// 
// Path: src/main/java/com/coding4people/mosquitoreport/api/models/User.java
// @DynamoDBTable(tableName = "user")
// public class User {
//     @DynamoDBHashKey
//     private String guid;
//     
//     @DynamoDBAttribute
//     private String email;
//     
//     @DynamoDBAttribute
//     private String firstname;
//     
//     @DynamoDBAttribute
//     private String lastname;
//     
//     @DynamoDBAttribute
//     private String location;
//     
//     @DynamoDBAttribute
//     private String facebookurl;
//     
//     @DynamoDBAttribute
//     private String twitter;
//     
//     @DynamoDBAttribute
//     private String profilepictureguid;
// 
//     public String getGuid() {
//         return guid;
//     }
// 
//     public void setGuid(String guid) {
//         this.guid = guid;
//     }
// 
//     public String getEmail() {
//         return email;
//     }
// 
//     public void setEmail(String email) {
//         this.email = email;
//     }
// 
//     public String getFirstname() {
//         return firstname;
//     }
// 
//     public void setFirstname(String firstname) {
//         this.firstname = firstname;
//     }
// 
//     public String getLastname() {
//         return lastname;
//     }
// 
//     public void setLastname(String lastname) {
//         this.lastname = lastname;
//     }
// 
//     public String getLocation() {
//         return location;
//     }
// 
//     public void setLocation(String location) {
//         this.location = location;
//     }
// 
//     public String getFacebookurl() {
//         return facebookurl;
//     }
// 
//     public void setFacebookurl(String facebookurl) {
//         this.facebookurl = facebookurl;
//     }
// 
//     public String getTwitter() {
//         return twitter;
//     }
// 
//     public void setTwitter(String twitter) {
//         this.twitter = twitter;
//     }
// 
//     public String getProfilepictureguid() {
//         return profilepictureguid;
//     }
// 
//     public void setProfilepictureguid(String profilepictureguid) {
//         this.profilepictureguid = profilepictureguid;
//     }
// }


// Path: src/main/java/com/coding4people/mosquitoreport/api/factories/FactoryBinder.java
import java.util.concurrent.ExecutorService;
import javax.inject.Singleton;
import org.glassfish.hk2.utilities.binding.AbstractBinder;
import org.glassfish.jersey.process.internal.RequestScoped;
import com.amazonaws.ClientConfiguration;
import com.amazonaws.auth.AWSCredentialsProvider;
import com.amazonaws.services.cloudsearchv2.AmazonCloudSearch;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDB;
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper;
import com.amazonaws.services.dynamodbv2.document.DynamoDB;
import com.amazonaws.services.s3.AmazonS3Client;
import com.coding4people.mosquitoreport.api.Env;
import com.coding4people.mosquitoreport.api.models.User;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.restfb.WebRequestor;

package com.coding4people.mosquitoreport.api.factories;





public class FactoryBinder extends AbstractBinder {
    @Override
    protected void configure() {
        bindFactory(AmazonCloudSearchFactory.class).to(AmazonCloudSearch.class).in(Singleton.class);
        bindFactory(AmazonDynamoDBFactory.class).to(AmazonDynamoDB.class).in(Singleton.class);
        bindFactory(AmazonS3ClientFactory.class).to(AmazonS3Client.class).in(Singleton.class);

        bindFactory(AWSCredentialsProviderFactory.class).to(AWSCredentialsProvider.class).in(Singleton.class);
