/** * Copyright (c) 2011 Cloudsmith Inc. and other contributors, as listed below. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Cloudsmith * */ package org.cloudsmith.geppetto.forge.impl; import static com.google.inject.name.Names.named; import static org.cloudsmith.geppetto.forge.Forge.MODULE_FILE_FILTER; import static org.cloudsmith.geppetto.forge.util.ModuleUtils.DEFAULT_FILE_FILTER; import java.io.FileFilter; import org.cloudsmith.geppetto.forge.ERB; import org.cloudsmith.geppetto.forge.Forge; import org.cloudsmith.geppetto.forge.MetadataExtractor; import org.cloudsmith.geppetto.forge.client.GsonModule; import com.google.inject.AbstractModule; import com.google.inject.multibindings.Multibinder; public class ForgeModule extends AbstractModule { protected void addMetadataExtractors(Multibinder<MetadataExtractor> mdeBinder) { mdeBinder.addBinding().to(MetadataJSONExtractor.class); mdeBinder.addBinding().to(ModulefileExtractor.class); } @Override protected void configure() { install(GsonModule.INSTANCE); bind(Forge.class).to(ForgeImpl.class); bind(ERB.class).to(ERBImpl.class); bind(FileFilter.class).annotatedWith(named(MODULE_FILE_FILTER)).toInstance(getFileFilter()); Multibinder<MetadataExtractor> mdeBinder = Multibinder.newSetBinder(binder(), MetadataExtractor.class); addMetadataExtractors(mdeBinder); } protected FileFilter getFileFilter() { return DEFAULT_FILE_FILTER; } }