littleware.apps.fishRunner.FishModule.java Source code

Java tutorial

Introduction

Here is the source code for littleware.apps.fishRunner.FishModule.java

Source

/*
 * Copyright 2013 http://code.google.com/p/littleware
 * 
 * The contents of this file are available subject to the terms of the
 * Lesser GNU General Public License (LGPL) Version 2.1.
 * http://www.gnu.org/licenses/lgpl-2.1.html.
 */
package littleware.apps.fishRunner;

import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.google.inject.Binder;
import com.google.inject.Module;
import com.google.inject.Scopes;
import com.google.inject.name.Names;
import org.glassfish.embeddable.GlassFish;
import org.glassfish.embeddable.GlassFishProperties;

/**
 * Guice module for fishRunner package.
 */
public class FishModule implements Module {

    private final String s3Key;
    private final String s3Secret;
    private final java.net.URI dbURI;
    private final int glassfishPort;

    /**
     * Constructor injects S3 and database credentials
     *
     * @param s3Key
     * @param s3Secret
     * @param glassfishPort for http listener
     */
    public FishModule(String s3Key, String s3Secret, java.net.URI dbURI, int glassfishPort) {
        this.s3Key = s3Key;
        this.s3Secret = s3Secret;
        this.dbURI = dbURI;
        this.glassfishPort = glassfishPort;
    }

    @Override
    public void configure(Binder binder) {
        // setup AWS ...
        final AWSCredentials creds = new BasicAWSCredentials(s3Key, s3Secret);
        binder.bind(AWSCredentials.class).toInstance(creds);
        binder.bind(AmazonS3.class).to(AmazonS3Client.class);
        binder.bind(AmazonS3Client.class).toInstance(new AmazonS3Client(creds));

        binder.bind(java.net.URI.class).annotatedWith(Names.named("DATABASE_URL")).toInstance(dbURI);
        binder.bind(GlassFish.class).toProvider(FishFactory.class).in(Scopes.SINGLETON);
        binder.bind(FishFactory.class).in(Scopes.SINGLETON);

        final GlassFishProperties glassfishProperties = new GlassFishProperties();
        glassfishProperties.setPort("http-listener", glassfishPort);
        // glassfishProperties.setPort("https-listener", 8181);

        binder.bind(GlassFishProperties.class).toInstance(glassfishProperties);
    }
}