package com.webcohesion.enunciate.api;
import com.webcohesion.enunciate.Enunciate;
import com.webcohesion.enunciate.api.datatype.Syntax;
import com.webcohesion.enunciate.api.resources.ResourceApi;
import com.webcohesion.enunciate.api.services.ServiceApi;
import com.webcohesion.enunciate.module.ApiRegistryProviderModule;
import com.webcohesion.enunciate.module.EnunciateModule;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
/**
* @author Ryan Heaton
*/
public class AggregatedApiRegistry implements ApiRegistry {
private final Enunciate enunciate;
public AggregatedApiRegistry(Enunciate enunciate) {
this.enunciate = enunciate;
}
@Override
public List<ServiceApi> getServiceApis(ApiRegistrationContext context) {
ArrayList<ServiceApi> serviceApis = new ArrayList<ServiceApi>();
List<EnunciateModule> modules = enunciate.getModules();
for (EnunciateModule module : modules) {
if (module.isEnabled() && module instanceof ApiRegistryProviderModule) {
serviceApis.addAll(((ApiRegistryProviderModule) module).getApiRegistry().getServiceApis(context));
}
}
return serviceApis;
}
@Override
public List<ResourceApi> getResourceApis(ApiRegistrationContext context) {
ArrayList<ResourceApi> resourceApis = new ArrayList<ResourceApi>();
List<EnunciateModule> modules = enunciate.getModules();
for (EnunciateModule module : modules) {
if (module.isEnabled() && module instanceof ApiRegistryProviderModule) {
resourceApis.addAll(((ApiRegistryProviderModule) module).getApiRegistry().getResourceApis(context));
}
}
return resourceApis;
}
@Override
public Set<Syntax> getSyntaxes(ApiRegistrationContext context) {
Set<Syntax> syntaxes = new TreeSet<Syntax>();
List<EnunciateModule> modules = enunciate.getModules();
for (EnunciateModule module : modules) {
if (module.isEnabled() && module instanceof ApiRegistryProviderModule) {
syntaxes.addAll(((ApiRegistryProviderModule) module).getApiRegistry().getSyntaxes(context));
}
}
return syntaxes;
}
@Override
public InterfaceDescriptionFile getSwaggerUI(ApiRegistrationContext context) {
List<EnunciateModule> modules = enunciate.getModules();
for (EnunciateModule module : modules) {
if (module.isEnabled() && module instanceof ApiRegistryProviderModule) {
InterfaceDescriptionFile swaggerUI = ((ApiRegistryProviderModule) module).getApiRegistry().getSwaggerUI(context);
if (swaggerUI != null) {
return swaggerUI;
}
}
}
return null;
}
}