/** * Generates one API class for each resource and each end point in the resource is translated as * method. * * @param resources * @param templateGroup */ private void generateAPIClasses(List<Resource> resources, StringTemplateGroup templateGroup) { for (Resource resource : resources) { try { List<ResourceMethod> methods = new ArrayList<ResourceMethod>(); List<String> imports = new ArrayList<String>(); imports.addAll(this.config.getDefaultServiceImports()); methods = resource.generateMethods( resource, dataTypeMappingProvider, nameGenerator, languageConfig); StringTemplate template = templateGroup.getInstanceOf(API_OBJECT_TEMPLATE); String className = resource.generateClassName(nameGenerator); if (className != null) { List<ResourceMethod> filteredMethods = new ArrayList<ResourceMethod>(); for (ResourceMethod method : methods) { if (!this.getCodeGenRulesProvider().isMethodIgnored(className, method.getName())) { filteredMethods.add(method); } } template.setAttribute("imports", imports); template.setAttribute(PACKAGE_NAME, config.getApiPackageName()); template.setAttribute("annotationPackageName", languageConfig.getAnnotationPackageName()); template.setAttribute("modelPackageName", config.getModelPackageName()); template.setAttribute("exceptionPackageName", languageConfig.getExceptionPackageName()); template.setAttribute("resource", className); template.setAttribute("methods", filteredMethods); template.setAttribute("extends", config.getServiceBaseClass(className)); File aFile = new File( languageConfig.getResourceClassLocation() + resource.generateClassName(nameGenerator) + languageConfig.getClassFileExtension()); writeFile(aFile, template.toString(), "API Classes"); } } catch (RuntimeException t) { System.out.println( "Failed generating api class for the resource : " + resource.getResourcePath()); throw t; } } }