/**
   * Creates the impl model from blank wsdl.
   *
   * @param paramModel the param model
   * @param interfaceProject the interface project
   * @param monitor the monitor
   * @return the sOA impl project
   * @throws Exception the exception
   */
  public static SOAImplProject createImplModelFromBlankWsdl(
      ServiceFromWsdlParamModel paramModel,
      SOAIntfProject interfaceProject,
      IProgressMonitor monitor)
      throws Exception {
    // Creates the SOA related metadata
    SOAImplMetadata implMetadata =
        SOAImplMetadata.create(paramModel, interfaceProject.getMetadata());
    ProgressUtil.progressOneStep(monitor);

    SOAProjectEclipseMetadata eclipseMetadata =
        SOAProjectEclipseMetadata.create(
            implMetadata.getServiceImplProjectName(), paramModel.getWorkspaceRootDirectory());
    ProgressUtil.progressOneStep(monitor);

    SOAImplProject implProject = SOAImplProject.create(implMetadata, eclipseMetadata);
    ProgressUtil.progressOneStep(monitor);

    final ISOAOrganizationProvider orgProvider =
        GlobalRepositorySystem.instanceOf()
            .getActiveRepositorySystem()
            .getActiveOrganizationProvider();
    Set<String> requiredLibraries = paramModel.getImplLibs();
    requiredLibraries.addAll(orgProvider.getDefaultDependencies(SupportedProjectType.IMPL));
    implProject.setRequiredLibraries(requiredLibraries);
    // adding the service project now
    Set<String> requiredProjects = paramModel.getImplProjects();
    requiredProjects.add(interfaceProject.getEclipseMetadata().getProjectName());
    implProject.setRequiredProjects(requiredProjects);
    ProgressUtil.progressOneStep(monitor);
    return implProject;
  }
  /**
   * Creates the impl project from blank wsdl.
   *
   * @param implProject the impl project
   * @param intfProject the intf project
   * @param monitor the monitor
   * @throws Exception the exception
   */
  public static void createImplProjectFromBlankWsdl(
      SOAImplProject implProject, SOAIntfProject intfProject, IProgressMonitor monitor)
      throws Exception {
    IProject project = SOAResourceCreator.createProject(implProject.getEclipseMetadata(), monitor);
    ProgressUtil.progressOneStep(monitor);

    SOAResourceCreator.createFolders(project, implProject, monitor);
    ProgressUtil.progressOneStep(monitor);

    SOAResourceCreator.createPropertiesFile(implProject);
    ProgressUtil.progressOneStep(monitor);

    BuildSystemConfigurer.performRepositorySpecificTasks(implProject, monitor);
    ProgressUtil.progressOneStep(monitor);

    BuildSystemConfigurer.configure(implProject, monitor);
    ProgressUtil.progressOneStep(monitor);

    BuildSystemCodeGen.generateServiceConfigXml(implProject);
    ProgressUtil.progressOneStep(monitor);
  }