@Override public void generate( final Ds3ApiSpec spec, final FileUtils fileUtils, final Path destDir, final Ds3DocSpec docSpec) throws IOException { this.fileUtils = fileUtils; try { final ImmutableList<Request> allRequests = getAllRequests(spec, docSpec); final ImmutableList<Enum> allEnums = getAllEnums(spec); final ImmutableSet<String> enumNames = EnumHelper.getEnumNamesSet(allEnums); final ImmutableSet<String> arrayMemberTypes = getArrayMemberTypes(spec, enumNames); final ImmutableSet<String> embeddedTypes = getEmbeddedTypes(spec, enumNames); final ImmutableSet<String> responseTypes = RequestHelper.getResponseTypes(allRequests); final ImmutableSet<String> paginatedTypes = getPaginatedTypes(spec); final ImmutableList<Struct> allStructs = getAllStructs( spec, enumNames, responseTypes, embeddedTypes, arrayMemberTypes, paginatedTypes); generateHeader(allEnums, allStructs, allRequests); generateSource(allEnums, allStructs, allRequests); generateStaticFiles(); } catch (final ParseException e) { LOG.error("Caught exception: ", e); } }