/******************************************************************************* * 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.typelibrary.ui.buildsystem; import java.util.HashSet; import java.util.Set; import org.ebayopensource.turmeric.eclipse.buildsystem.TypeDepMarshaller; import org.ebayopensource.turmeric.eclipse.buildsystem.core.TypeLibraryBuildSystemConfigurer; import org.ebayopensource.turmeric.eclipse.buildsystem.services.SOAResourceCreator; import org.ebayopensource.turmeric.eclipse.codegen.utils.CodegenInvoker; import org.ebayopensource.turmeric.eclipse.core.model.typelibrary.TypeLibraryParamModel; 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.SOAGlobalRegistryAdapter; import org.ebayopensource.turmeric.eclipse.resources.model.SOAProjectEclipseMetadata; import org.ebayopensource.turmeric.eclipse.typelibrary.builders.TypeLibraryBuilderUtils; import org.ebayopensource.turmeric.eclipse.typelibrary.codegen.model.GenTypeCreateTypeLibrary; import org.ebayopensource.turmeric.eclipse.typelibrary.resources.model.SOATypeLibraryMetadata; import org.ebayopensource.turmeric.eclipse.typelibrary.resources.model.SOATypeLibraryProject; import org.ebayopensource.turmeric.eclipse.typelibrary.utils.TypeLibraryUtil; import org.ebayopensource.turmeric.eclipse.utils.plugin.ProgressUtil; import org.ebayopensource.turmeric.eclipse.utils.plugin.WorkspaceUtil; import org.ebayopensource.turmeric.tools.library.SOATypeRegistry; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IProgressMonitor; /** * Type Library Creation Point. * * @author smathew */ public class TypeLibraryCreator { /** * Creates the type library. * * @param model the model * @param monitor the monitor * @throws Exception the exception */ public static void createTypeLibrary(TypeLibraryParamModel model, IProgressMonitor monitor) throws Exception { // Eclipse Metadata SOAProjectEclipseMetadata eclipseMetadata = SOAProjectEclipseMetadata .create(model.getTypeLibraryName(), model.getWorkspaceRoot()); // Creates the SOA related metadata SOATypeLibraryMetadata metadata = SOATypeLibraryMetadata.create(model); ProgressUtil.progressOneStep(monitor); // Creating SOA Type Library Project SOATypeLibraryProject typeLibraryProject = SOATypeLibraryProject .createSOAProjectTypeLibrary(eclipseMetadata, metadata); Set<String> requiredLibraries = new HashSet<String>(); requiredLibraries.addAll(GlobalRepositorySystem.instanceOf().getActiveRepositorySystem() .getActiveOrganizationProvider().getDefaultDependencies(SupportedProjectType.TYPE_LIBRARY)); typeLibraryProject.setRequiredLibraries(requiredLibraries); // Project Creation starts here IProject project = SOAResourceCreator.createProject( eclipseMetadata, monitor); // Folder Creation SOAResourceCreator.createFolders(project, typeLibraryProject, monitor); // Create the type reference xml. TypeDepMarshaller.createDefaultDepXml(typeLibraryProject, monitor); // call BuildSystem GlobalRepositorySystem.instanceOf().getActiveRepositorySystem() .getProjectConfigurer().initializeTypeLibProject( typeLibraryProject, metadata.getVersion(), monitor); // Configure TypeLibraryBuildSystemConfigurer.configure(typeLibraryProject, monitor); // CodegenCall. callCodegen(project, model); WorkspaceUtil.refresh(project); SOAGlobalRegistryAdapter registryAdapter = SOAGlobalRegistryAdapter.getInstance(); SOATypeRegistry typeRegistry = registryAdapter.getGlobalRegistry(); if (typeRegistry == null) { typeRegistry = registryAdapter.getGlobalRegistry(); } typeRegistry.addTypeLibraryToRegistry( TypeLibraryUtil.getTypeLibraryType(project)); } private static void callCodegen(IProject project, TypeLibraryParamModel typeLibraryModel) throws Exception { GenTypeCreateTypeLibrary genTypeCreateTypeLibrary = new GenTypeCreateTypeLibrary(); genTypeCreateTypeLibrary.setProjectRoot(project.getLocation() .toString()); genTypeCreateTypeLibrary.setLibraryName(typeLibraryModel .getTypeLibraryName()); genTypeCreateTypeLibrary.setLibraryVersion(typeLibraryModel .getVersion()); genTypeCreateTypeLibrary.setLibraryCategory(typeLibraryModel .getCategory()); genTypeCreateTypeLibrary.setLibNamespace(typeLibraryModel.getNamespace()); CodegenInvoker codegenInvoker = TypeLibraryBuilderUtils .initForTypeLib(project); codegenInvoker.execute(genTypeCreateTypeLibrary); } }