blob: e4fe200b9943ab01381f4ef41b18327470849235 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009 by SAP AG, Walldorf.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* SAP AG - initial API and implementation
*******************************************************************************/
package org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.persistence.sync;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.emf.common.util.EList;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IPackageFragment;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jst.ws.jaxws.dom.runtime.api.IServiceEndpointInterface;
import org.eclipse.jst.ws.jaxws.dom.runtime.api.IWebMethod;
import org.eclipse.jst.ws.jaxws.dom.runtime.api.IWebService;
import org.eclipse.jst.ws.jaxws.dom.runtime.api.SOAPBindingParameterStyle;
import org.eclipse.jst.ws.jaxws.dom.runtime.api.SOAPBindingStyle;
import org.eclipse.jst.ws.jaxws.dom.runtime.api.SOAPBindingUse;
import org.eclipse.jst.ws.jaxws.testutils.jobs.JobUtils;
import org.eclipse.jst.ws.jaxws.utils.JaxWsUtils;
public class WsSynchronizationTest extends SynchronizationTestFixture
{
public void test_changedWSnameSynched() throws JavaModelException, CoreException
{
target.startSynchronizing();
final ICompilationUnit ws1CU = testPrj1.getJavaProject().findType(ws1.getImplementation()).getCompilationUnit();
testUtil.setContents(ws1CU, "@javax.jws.WebService(serviceName=\"WS1NewName\", endpointInterface=\"com.sap.test.modelsync1.Sei1\") public class WS1 {}");
JobUtils.waitForJobs();
assertEquals("WS1NewName", ws1.getName());
assertSame(sei1, ws1.getServiceEndpoint());
assertSame(ws1, domUtil.findWsByImplName(wsPrj1, ws1.getImplementation()));
}
public void test_changedNameOfImplicitInterface() throws Exception
{
target.startSynchronizing();
final IPackageFragment modelSync3 = testPrj1.createPackage("com.sap.test.modelsync3");
final ICompilationUnit ws3CU = testPrj1.createType(modelSync3, "WS3.java", "@javax.jws.WebService(serviceName=\"WS3Name\", name=\"ImplicitInterfaceName\") public class WS3 {}").getCompilationUnit();
JobUtils.waitForJobs();
final IWebService ws3 = domUtil.findWsByImplName(wsPrj1, ws3CU.findPrimaryType().getFullyQualifiedName());
final IServiceEndpointInterface implSei = ws3.getServiceEndpoint();
assertTrue(implSei.isImplicit());
testUtil.setContents(ws3CU, "@javax.jws.WebService(serviceName=\"WS3Name\", name=\"ImplicitInterfaceNewName\") public class WS3 {}");
JobUtils.waitForJobs();
assertSame(implSei, ws3.getServiceEndpoint());
assertTrue(implSei.isImplicit());
assertEquals("ImplicitInterfaceNewName", implSei.getName());
}
public void test_changedTargetNamespaceSynched() throws Exception
{
target.startSynchronizing();
assertEquals(JaxWsUtils.composeJaxWsTargetNamespaceByPackage(prj1PckName), ws1.getTargetNamespace());
final ICompilationUnit wsCU = testPrj1.getJavaProject().findType(ws1.getImplementation()).getCompilationUnit();
testUtil.setContents(wsCU, "@javax.jws.WebService(serviceName=\"WS1Name\", targetNamespace=\"http://com.sap./test\") public class WS1 {}");
JobUtils.waitForJobs();
assertEquals("targetNamespace not synchronized", "http://com.sap./test", ws1.getTargetNamespace());
}
public void test_changedPortNameSynched() throws Exception
{
target.startSynchronizing();
final ICompilationUnit wsCU = testPrj1.getJavaProject().findType(ws1.getImplementation()).getCompilationUnit();
assertEquals("WS1Port", ws1.getPortName());
testUtil.setContents(wsCU, "@javax.jws.WebService(portName=\"ChangedPortName\") public class WS1 {}");;
JobUtils.waitForJobs();
assertEquals("portName not synchronized", "ChangedPortName", ws1.getPortName());
}
public void test_changedWsdlLocationSynched() throws Exception
{
target.startSynchronizing();
final ICompilationUnit wsCU = testPrj1.getJavaProject().findType(ws1.getImplementation()).getCompilationUnit();
assertEquals(null, ws1.getWsdlLocation());
testUtil.setContents(wsCU, "@javax.jws.WebService(wsdlLocation=\"C:/changed/wsdl/location\") public class WS1 {}");;
JobUtils.waitForJobs();
assertEquals("wsdlLocation not synchronized", "C:/changed/wsdl/location", ws1.getWsdlLocation());
}
public void test_changedImplicitSeiSoapBinding() throws Exception
{
target.startSynchronizing();
final ICompilationUnit wsCU = testPrj1.getJavaProject().findType(ws1.getImplementation()).getCompilationUnit();
testUtil.setContents(wsCU, "@javax.jws.WebService() public class WS1 {}");
JobUtils.waitForJobs();
final IServiceEndpointInterface sei = ws1.getServiceEndpoint();
assertEquals(SOAPBindingStyle.DOCUMENT, sei.getSoapBindingStyle());
assertEquals(SOAPBindingUse.LITERAL, sei.getSoapBindingUse());
assertEquals(SOAPBindingParameterStyle.WRAPPED, sei.getSoapBindingParameterStyle());
testUtil.setContents(wsCU, "@javax.jws.soap.SOAPBinding(style=Style.RPC, use=Use.ENCODED, parameterStyle=ParameterStyle.BARE)\n" +
"@javax.jws.WebService() public class WS1 {}");
JobUtils.waitForJobs();
assertEquals(SOAPBindingStyle.RPC, sei.getSoapBindingStyle());
assertEquals(SOAPBindingUse.ENCODED, sei.getSoapBindingUse());
assertEquals(SOAPBindingParameterStyle.BARE, sei.getSoapBindingParameterStyle());
}
public void test_ContructorIsNotIncludedInWebMethods() throws CoreException
{
target.startSynchronizing();
final ICompilationUnit wsCU = testPrj1.getJavaProject().findType(ws1.getImplementation()).getCompilationUnit();
testUtil.setContents(wsCU, "@javax.jws.WebService()public class WS1{public WS1(){};public WS1(String s){}public void myMethod(){}}");
JobUtils.waitForJobs();
final IServiceEndpointInterface sei = ws1.getServiceEndpoint();
final EList<IWebMethod> methods = sei.getWebMethods();
assertEquals("One method expected in the SEI", 1, methods.size());
assertEquals("Unpexpected method name in SEI", "myMethod", methods.iterator().next().getName());
}
}