package org.gbif.checklistbank.ws.client.guice;
import org.gbif.api.service.checklistbank.DatasetMetricsService;
import org.gbif.api.service.checklistbank.DescriptionService;
import org.gbif.api.service.checklistbank.DistributionService;
import org.gbif.api.service.checklistbank.IdentifierService;
import org.gbif.api.service.checklistbank.MultimediaService;
import org.gbif.api.service.checklistbank.NameUsageMatchingService;
import org.gbif.api.service.checklistbank.NameUsageSearchService;
import org.gbif.api.service.checklistbank.NameUsageService;
import org.gbif.api.service.checklistbank.ReferenceService;
import org.gbif.api.service.checklistbank.SpeciesProfileService;
import org.gbif.api.service.checklistbank.TypeSpecimenService;
import org.gbif.api.service.checklistbank.VernacularNameService;
import org.gbif.checklistbank.ws.client.NameUsageWsClient;
import org.gbif.ws.client.guice.GbifWsClientModule;
import java.util.Properties;
/**
* A complete guice module that exposes the full ChecklistBank API or a configurable subset.
*/
public class ChecklistBankWsClientModule extends GbifWsClientModule {
private final boolean installServiceClients;
private final boolean installMatchClients;
/**
* Default module with the complete API exposed.
*/
public ChecklistBankWsClientModule(Properties properties) {
this(properties, true, true);
}
/**
* Configurable module with flags to select the API parts to be exposed.
*/
public ChecklistBankWsClientModule(Properties properties, boolean exposeServiceClients, boolean exposeMatchClient) {
super(properties, NameUsageWsClient.class.getPackage());
this.installServiceClients = exposeServiceClients;
this.installMatchClients = exposeMatchClient;
}
@Override
protected void configureClient() {
// install the 2 private modules that together implement the API
if (installServiceClients) {
install(new ChecklistBankWsServiceClientModule());
expose(NameUsageSearchService.class);
expose(NameUsageService.class);
expose(DescriptionService.class);
expose(DistributionService.class);
expose(IdentifierService.class);
expose(MultimediaService.class);
expose(ReferenceService.class);
expose(SpeciesProfileService.class);
expose(TypeSpecimenService.class);
expose(VernacularNameService.class);
expose(DatasetMetricsService.class);
}
if (installMatchClients) {
install(new ChecklistBankWsMatchClientModule());
expose(NameUsageMatchingService.class);
}
}
}