/******************************************************************************* * 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.functional.test.ft.wsdlsvc; import static org.junit.Assert.assertTrue; import static org.junit.Assume.assumeNoException; import java.io.File; import java.util.ArrayList; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; import org.ebayopensource.turmeric.eclipse.core.model.services.ServiceFromTemplateWsdlParamModel; import org.ebayopensource.turmeric.eclipse.core.model.services.ServiceFromTemplateWsdlParamModel.Binding; import org.ebayopensource.turmeric.eclipse.core.model.services.ServiceFromTemplateWsdlParamModel.Operation; import org.ebayopensource.turmeric.eclipse.core.resources.constants.SOAProjectConstants; import org.ebayopensource.turmeric.eclipse.functional.test.AbstractTestCase; import org.ebayopensource.turmeric.eclipse.functional.test.SoaTestConstants; import org.ebayopensource.turmeric.eclipse.repositorysystem.core.GlobalRepositorySystem; import org.ebayopensource.turmeric.eclipse.repositorysystem.core.ISOARepositorySystem; import org.ebayopensource.turmeric.eclipse.resources.util.SOAServiceUtil; import org.ebayopensource.turmeric.eclipse.services.buildsystem.ServiceCreator; import org.ebayopensource.turmeric.eclipse.test.util.FunctionalTestHelper; import org.ebayopensource.turmeric.eclipse.test.util.ProjectArtifactValidator; import org.ebayopensource.turmeric.eclipse.test.util.ProjectUtil; import org.ebayopensource.turmeric.eclipse.test.util.SimpleTestUtil; import org.ebayopensource.turmeric.eclipse.test.util.ZipExtractor; import org.ebayopensource.turmeric.eclipse.test.utils.ServicesUtil; import org.ebayopensource.turmeric.eclipse.test.utils.WsdlUtilTest; import org.ebayopensource.turmeric.eclipse.utils.plugin.ProgressUtil; import org.ebayopensource.turmeric.eclipse.utils.plugin.WorkspaceUtil; import org.ebayopensource.turmeric.repositorysystem.imp.impl.TurmericRepositorySystem; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IncrementalProjectBuilder; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; /** * @author shrao * */ public class ServiceFromBlankWsdlTest extends AbstractTestCase { final static String TARGET_NAMESPACE = "http://www.ebayopensource.org/turmeric/blogs/v1/services"; public static String PARENT_DIR = ServiceSetupCleanupValidate .getParentDir(); static String publicServiceName = null; static String adminName = null; static final String namespacePart = "blogs"; static final String domainClassifier ="Blogs"; static String dataDirectory = WsdlUtilTest.getPluginOSPath( SoaTestConstants.PLUGIN_ID,"data"); /** * @throws java.lang.Exception */ @BeforeClass public static void setUp(){ ZipExtractor zip = new ZipExtractor(); zip.extract(dataDirectory+"/BlankWsdlServiceConsumerTest.zip",dataDirectory +"/extractedData"); } @Override @Before public void setUpBeforeClass() throws Exception { SimpleTestUtil.setAutoBuilding(false); ISOARepositorySystem repositorySystem = new TurmericRepositorySystem(); GlobalRepositorySystem.instanceOf().setActiveRepositorySystem( repositorySystem); publicServiceName = "Service"; adminName = ServicesUtil.getAdminName(publicServiceName); // eBoxServiceName = ServicesUtil.getAdminName(eBoxServiceName, // SoaTestConstants.DOMAIN_CLASSIFIER); System.out.println(" ---Service name : " + publicServiceName); ProjectUtil.cleanUpWS(); ServiceSetupCleanupValidate.cleanupWSConsumer(adminName+"Consumer"); ServiceSetupCleanupValidate.cleanup(adminName); FunctionalTestHelper.ensureM2EcipseBeingInited(); } /*@Override public void setUp() throws Exception { super.setUp(); SimpleTestUtil.setAutoBuilding(false); ISOARepositorySystem repositorySystem = new TurmericRepositorySystem(); GlobalRepositorySystem.instanceOf().setActiveRepositorySystem( repositorySystem); eBoxServiceName = "BlogsServiceV1"; // eBoxServiceName = ServicesUtil.getAdminName(eBoxServiceName, // SoaTestConstants.DOMAIN_CLASSIFIER); System.out.println(" --- eBox Service name : " + eBoxServiceName); ProjectUtil.cleanUpWS(); EBoxServiceSetupCleanupValidate.cleanupWSConsumer(eBoxServiceName); EBoxServiceSetupCleanupValidate.cleanup(eBoxServiceName); SimpleTestUtil.setAutoBuilding(true); EBoxFunctionalTestHelper.ensureM2EcipseBeingInited(); }*/ public static boolean createServiceFromBlankWsdl(String adminNameService,String publicService) throws Exception { try { Thread.sleep(5000); final ServiceFromTemplateWsdlParamModel model = new ServiceFromTemplateWsdlParamModel(); final File templateFile = new File( WsdlUtilTest .getPluginOSPath( "org.ebayopensource.turmeric.eclipse.config.imp", "templates" + File.separator + "wsdl" + File.separator + "turmeric" + File.separator + "Turmeric_NoOperationTemplate.wsdl")); // String publicServiceName = // ServicesUtil.getPublicServiceName(serviceName, domainClassifier); // String nsPart = StringUtils.lowerCase(domainClassifier); String interfacePackage = ServicesUtil.getInterfacePackage( publicService, TARGET_NAMESPACE); String implClass = SOAServiceUtil.generateServiceImplClassName( publicService, adminNameService, TARGET_NAMESPACE); List<Operation> operations = new ArrayList<Operation>(); final Operation op = ServiceFromTemplateWsdlParamModel .createOperation("getVersion"); op.getOutputParameter().getElements().get(0).setName("version"); operations.add(op); final Set<Binding> bindings = new LinkedHashSet<Binding>(); final Binding binding0 = new Binding( SOAProjectConstants.TemplateBinding.values()[0]); final Binding binding1 = new Binding( SOAProjectConstants.TemplateBinding.values()[1]); bindings.add(binding0); bindings.add(binding1); model.setTemplateFile(templateFile.toURL()); model.setTargetNamespace(TARGET_NAMESPACE); model.setServiceName(adminNameService); model.setServiceInterface(interfacePackage); model.setWorkspaceRootDirectory(PARENT_DIR); model.setServiceImpl(implClass); model.setServiceVersion("1.0.0"); model.setImplName(adminNameService + "Impl"); model.setWSDLSourceType(SOAProjectConstants.InterfaceWsdlSourceType.NEW); model.setPublicServiceName(publicService); model.setServiceLayer("COMMON"); model.setServiceDomain(domainClassifier); model.setNamespacePart(namespacePart); model.setOperations(operations); model.setBindings(bindings); model.setTypeFolding(true); model.setTypeNamespace(TARGET_NAMESPACE); SimpleTestUtil.setAutoBuilding(false); ServiceCreator.createServiceFromBlankWSDL(model, ProgressUtil.getDefaultMonitor(null)); SimpleTestUtil.setAutoBuilding(true); Thread.sleep(5000); WorkspaceUtil.getProject(model.getServiceName()).build( IncrementalProjectBuilder.FULL_BUILD, ProgressUtil.getDefaultMonitor(null)); WorkspaceUtil.getProject(model.getImplName()).build( IncrementalProjectBuilder.FULL_BUILD, ProgressUtil.getDefaultMonitor(null)); return true; } catch (Exception e) { e.printStackTrace(); System.out.println("Exception ----" + e); return false; } } @Test @Ignore("failing") public void testEBoxCreateServiceFrmBlankWsdl() throws Exception { boolean b = false; try { b = createServiceFromBlankWsdl(adminName,publicServiceName); } catch (NoClassDefFoundError ex) { assumeNoException(ex); } SimpleTestUtil.setAutoBuilding(true); WorkspaceUtil.getProject(adminName).refreshLocal(IResource.DEPTH_INFINITE, null); WorkspaceUtil.getProject(adminName).build(IncrementalProjectBuilder.FULL_BUILD, null); WorkspaceUtil.getProject(adminName + "Impl").refreshLocal(IResource.DEPTH_INFINITE, null); WorkspaceUtil.getProject(adminName + "Impl").build(IncrementalProjectBuilder.FULL_BUILD, null); assertTrue("Service creation failed ", b); // validate artifacts boolean intfMatch = ServiceSetupCleanupValidate .validateIntfArtifacts( WorkspaceUtil.getProject(adminName), adminName); boolean implMatch = ServiceSetupCleanupValidate .validateImplArtifacts( WorkspaceUtil.getProject(adminName + "Impl"), adminName + "Impl"); String failMessages = ProjectArtifactValidator.getErroredFileMessage().toString(); ProjectArtifactValidator.getErroredFileMessage().setLength(0); System.out.println(failMessages); ServiceSetupCleanupValidate.validateMatch = true; assertTrue(" --- Service artifacts validation failed " +failMessages.toString() , intfMatch && implMatch); } @AfterClass public static void deInit(){ ensureClean(dataDirectory +"/extractedData"); } }