/******************************************************************************* * Copyright (c) 2006-2010 eBay Inc. All Rights Reserved. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 *******************************************************************************/ package org.ebayopensource.turmeric.eclipse.services.buildsystem; import java.util.Set; import org.ebayopensource.turmeric.eclipse.buildsystem.core.BuildSystemConfigurer; import org.ebayopensource.turmeric.eclipse.buildsystem.services.SOAResourceCreator; import org.ebayopensource.turmeric.eclipse.buildsystem.utils.BuildSystemCodeGen; import org.ebayopensource.turmeric.eclipse.core.model.services.ServiceFromWsdlParamModel; import org.ebayopensource.turmeric.eclipse.core.resources.constants.SOAProjectConstants.SupportedProjectType; import org.ebayopensource.turmeric.eclipse.repositorysystem.core.GlobalRepositorySystem; import org.ebayopensource.turmeric.eclipse.repositorysystem.core.ISOAOrganizationProvider; import org.ebayopensource.turmeric.eclipse.resources.model.SOAImplMetadata; import org.ebayopensource.turmeric.eclipse.resources.model.SOAImplProject; import org.ebayopensource.turmeric.eclipse.resources.model.SOAIntfProject; import org.ebayopensource.turmeric.eclipse.resources.model.SOAProjectEclipseMetadata; import org.ebayopensource.turmeric.eclipse.utils.plugin.ProgressUtil; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IProgressMonitor; /** * The Class ImplementationCreator. * * @author smathew * Creates the implementation project model */ public class ImplementationCreator { /** * 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); } /** * Creates the impl model from existing 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 createImplModelFromExistingWsdl( ServiceFromWsdlParamModel paramModel, SOAIntfProject interfaceProject, IProgressMonitor monitor) throws Exception { // Creates the SOA related metadata SOAImplMetadata implMetadata = SOAImplMetadata.create(paramModel, interfaceProject.getMetadata()); SOAProjectEclipseMetadata eclipseMetadata = SOAProjectEclipseMetadata .create(implMetadata.getServiceImplProjectName(), paramModel .getWorkspaceRootDirectory()); SOAImplProject implProject = SOAImplProject.create(implMetadata, eclipseMetadata); 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); return implProject; } /** * Creates the impl project from existing wsdl. * * @param implProject the impl project * @param intfProject the intf project * @param monitor the monitor * @throws Exception the exception */ public static void createImplProjectFromExistingWsdl( 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); } }