Package org.jrest4guice.dao

Source Code of org.jrest4guice.dao.DaoModuleProvider

package org.jrest4guice.dao;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import org.jrest4guice.core.guice.ModuleProviderTemplate;
import org.jrest4guice.dao.actions.Action;
import org.jrest4guice.dao.actions.ActionContext;
import org.jrest4guice.dao.actions.ActionContextProvider;
import org.jrest4guice.dao.actions.ActionRegister;
import org.jrest4guice.dao.annotations.Dao;

import com.google.inject.Binder;
import com.google.inject.Module;

public class DaoModuleProvider extends ModuleProviderTemplate {
 
  private Collection<ActionContextProvider<? extends ActionContext>> actionContextProviders = new ArrayList<ActionContextProvider<? extends ActionContext>>();
 
  public DaoModuleProvider(String... packages) {
    super(packages);
  }
 
  @Override
  public List<Module> getModules() {
    List<Module> modules = new ArrayList<Module>(0);
    modules.add(new Module() {
      @Override
      @SuppressWarnings("unchecked")
      public void configure(Binder binder) {
        ActionRegister register = new ActionRegister();
        for (Class clazz : classes) {
          if (clazz.isAnnotationPresent(Dao.class)) {
            binder.bind(clazz).toProvider(DaoProvider.create(clazz));
          } else if (Action.class.isAssignableFrom(clazz)) {
            register.register(clazz);
          }
        }
        binder.bind(ActionRegister.class).toInstance(register);
      }
    });
    for (ActionContextProvider<? extends ActionContext> provider : actionContextProviders) {
      modules.add(provider.getModule());
    }
    return modules;
  }
 
  public DaoModuleProvider addActionContextProviders(ActionContextProvider<? extends ActionContext>... providers) {
    for (ActionContextProvider<? extends ActionContext> provider : providers) {
      actionContextProviders.add(provider);
    }
    return this;
  }
}
TOP

Related Classes of org.jrest4guice.dao.DaoModuleProvider

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.