class ServiceCombCodegen extends AbstractJavaCodegenExt {

  @Override
  public void processOpts() {

    super.processOpts();

    importMapping.put("OffsetDateTime", "java.time.OffsetDateTime");
    additionalProperties.put("dateLibrary", "java8");
    additionalProperties.put("camelcase", new CamelCaseLambda());
    additionalProperties.put("getGenericClassType", new GetGenericClassTypeLambda());
    additionalProperties.put("getRelativeBasePath", new GetRelativeBasePathLambda());
    additionalProperties.put("applicationId", applicationId);
    additionalProperties.put("library", getLibrary());
    additionalProperties.put("outputFolder", outputFolder);
    additionalProperties.put("apiTemplateFiles", apiTemplateFiles);
    additionalProperties.put("apiTestTemplateFiles", apiTestTemplateFiles);
    additionalProperties.put("modelTemplateFiles", modelTemplateFiles);
    additionalProperties.put("apiDocTemplateFiles", apiDocTemplateFiles);

    if (additionalProperties.get(ProjectMetaConstant.SERVICE_ID) != null) {
      serviceId = (String) additionalProperties.get(ProjectMetaConstant.SERVICE_ID);
    }
    additionalProperties.put(ProjectMetaConstant.SERVICE_ID, serviceId);

    currentDirectoryStrategy = getStrategyMap()
        .get(Optional.ofNullable(additionalProperties.get(ProjectMetaConstant.SERVICE_TYPE))
            .orElse(ServiceType.ALL.getValue()));

    // when all additionalProperties are processed
    currentDirectoryStrategy.addCustomProperties(additionalProperties);
    currentDirectoryStrategy.processSupportingFile(supportingFiles);
  }

  public  ServiceCombCodegen();

}