/**
   * 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;
  }
 /**
  * This is called from the UI processors. Since we have the user entered information at the
  * creation flow the UI object is passed and is converted to this intermediate object for the rest
  * of the processing logic.
  *
  * @param paramModel the param model
  * @return This has been made a static factory to enable object pooling and controlled creation.
  * @throws WSDLException the wSDL exception
  */
 public static SOAIntfMetadata create(ServiceFromWsdlParamModel paramModel) throws WSDLException {
   SOAIntfMetadata metadata = new SOAIntfMetadata();
   metadata.setPublicServiceName(paramModel.getPublicServiceName());
   metadata.setServiceName(paramModel.getServiceName());
   metadata.setTypeNamespace(paramModel.getTypeNamespace());
   metadata.setTypeFolding(paramModel.getTypeFolding());
   metadata.setServiceVersion(paramModel.getServiceVersion());
   metadata.setServiceInterface(paramModel.getServiceInterface());
   metadata.setServiceLayer(paramModel.getServiceLayer());
   metadata.setSourceType(SOAProjectConstants.InterfaceSourceType.WSDL);
   metadata.setWsdlSourceType(paramModel.getWSDLSourceType());
   metadata.setOriginalWSDLUrl(paramModel.getOriginalWsdlUrl());
   metadata.setMetadataVersion(SOAProjectConstants.PROPS_DEFAULT_PROPERTY_VERSION);
   metadata.setNamespaceToPackageMappings(paramModel.getNamespaceToPacakgeMappings());
   metadata.setServiceNamespacePart(paramModel.getNamespacePart());
   metadata.setServiceDomainName(paramModel.getServiceDomain());
   SOAIntfUtil.setInformationFromWsdl(paramModel.getOriginalWsdlUrl(), metadata);
   return metadata;
 }