blob: 16c2962af9e7e6275d7a1e0d87346f1007f93ec2 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2001, 2004 IBM Corporation and others.
* 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.wst.wsdl.tests;
import javax.xml.namespace.QName;
import junit.framework.Assert;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.wst.wsdl.Definition;
import org.eclipse.wst.wsdl.Input;
import org.eclipse.wst.wsdl.Message;
import org.eclipse.wst.wsdl.Operation;
import org.eclipse.wst.wsdl.Output;
import org.eclipse.wst.wsdl.Part;
import org.eclipse.wst.wsdl.PortType;
import org.eclipse.wst.wsdl.WSDLFactory;
import org.eclipse.wst.wsdl.WSDLPackage;
import org.eclipse.wst.wsdl.binding.soap.internal.util.SOAPConstants;
import org.eclipse.wst.wsdl.internal.util.WSDLResourceFactoryImpl;
import org.eclipse.wst.wsdl.util.WSDLConstants;
import org.eclipse.xsd.XSDPackage;
import org.eclipse.xsd.util.XSDResourceFactoryImpl;
public class RefactoringTest extends TestCase
{
public RefactoringTest()
{
//init();
}
public RefactoringTest(String name)
{
super(name);
}
public static Test suite()
{
TestSuite suite = new TestSuite();
suite.addTest
(new RefactoringTest("Refactoring")
{
protected void runTest()
{
testRefactoring();
}
}
);
return suite;
}
public void testRefactoring()
{
try
{
// Before running this test, modify the location of the generated WSDL file
generateWSDL("RefactoringTest.wsdl");
}
catch (Exception e)
{
Assert.fail("Test failed due to an exception: " + e.getLocalizedMessage());
}
}
protected void setUp() throws Exception
{
super.setUp();
Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("wsdl", new WSDLResourceFactoryImpl());
WSDLPackage pkg = WSDLPackage.eINSTANCE;
// We need this for XSD <import>.
Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("xsd", new XSDResourceFactoryImpl());
XSDPackage xsdpkg = XSDPackage.eINSTANCE;
}
protected void tearDown() throws Exception
{
super.tearDown();
}
// defect 6594
public void renameOperation(Operation op)
{
Input input = op.getEInput();
Assert.assertNotNull(input);
Message message = input.getEMessage();
Assert.assertNotNull(message);
op.setName("Renamed" + op.getName());
QName newQName = new QName(message.getQName().getNamespaceURI(),"Renamed" + message.getQName().getLocalPart());
message.setQName(newQName);
}
public void generateWSDL(String outputFile) throws Exception
{
ResourceSet resourceSet = new ResourceSetImpl();
Resource resource = resourceSet.createResource(URI.createFileURI(outputFile));
resourceSet.getResources().add(resource);
// Create a Definition - Temperature
Definition definition = WSDLFactory.eINSTANCE.createDefinition();
definition.setQName(new QName(WSDLConstants.WSDL_NAMESPACE_URI,"Temparature"));
resource.getContents().add(definition);
// Target namespace - http://www.temperature.com
definition.setTargetNamespace("http://www.temperature.com");
definition.addNamespace("tns", "http://www.temperature.com");
// Other namespaces - wsdl, soap, xsd
definition.addNamespace("wsdl", WSDLConstants.WSDL_NAMESPACE_URI);
definition.addNamespace("xsd", WSDLConstants.SCHEMA_FOR_SCHEMA_URI_2001);
definition.addNamespace("soap", SOAPConstants.SOAP_NAMESPACE_URI);
//
// Let's start building two messages
//
// Create a Part - ZipCode
Part part = WSDLFactory.eINSTANCE.createPart();
part.setName("ZipCode");
part.setTypeName(new QName(WSDLConstants.SCHEMA_FOR_SCHEMA_URI_2001,"string"));
// Create a Message - GetTemperatureInput
Message inputMessage = WSDLFactory.eINSTANCE.createMessage();
inputMessage.setQName(new QName(definition.getTargetNamespace(), "GetTemparatureInput"));
inputMessage.addPart(part);
definition.addMessage(inputMessage);
// Create a Part - Temperature
part = WSDLFactory.eINSTANCE.createPart();
part.setName("Temperature");
part.setTypeName(new QName(WSDLConstants.SCHEMA_FOR_SCHEMA_URI_2001,"float"));
// Create a Message - GetTemperatureOutput
Message outputMessage = WSDLFactory.eINSTANCE.createMessage();
outputMessage.setQName(new QName(definition.getTargetNamespace(), "GetTemparatureOutput"));
outputMessage.addPart(part);
definition.addMessage(outputMessage);
//
// Next, build a PortType
//
// Create an Input - GetTemperatureInput
Input input = WSDLFactory.eINSTANCE.createInput();
input.setMessage(inputMessage);
// Create an Output - GetTemperatureOutput
Output output = WSDLFactory.eINSTANCE.createOutput();
output.setMessage(outputMessage);
// Create an Operation - GetTemperatureForZipCode
Operation operation = WSDLFactory.eINSTANCE.createOperation();
operation.setName("GetTemperatureForZipCode");
operation.setInput(input);
operation.setOutput(output);
// Create a PortType
PortType portType = WSDLFactory.eINSTANCE.createPortType();
portType.setQName(new QName(definition.getTargetNamespace(),"GetTemparatureInfoSOAP"));
portType.addOperation(operation);
definition.addPortType(portType);
//
// Create the second set op Operations
//
// Create a Part
part = WSDLFactory.eINSTANCE.createPart();
part.setName("Part2");
part.setTypeName(new QName(WSDLConstants.SCHEMA_FOR_SCHEMA_URI_2001,"string"));
// Create a Message
Message inputMessage2 = WSDLFactory.eINSTANCE.createMessage();
inputMessage2.setQName(new QName(definition.getTargetNamespace(), "InputMessage2"));
inputMessage2.addPart(part);
definition.addMessage(inputMessage2);
// Create a Part
part = WSDLFactory.eINSTANCE.createPart();
part.setName("Part3");
part.setTypeName(new QName(WSDLConstants.SCHEMA_FOR_SCHEMA_URI_2001,"float"));
// Create a Message - GetTemperatureOutput
Message outputMessage2 = WSDLFactory.eINSTANCE.createMessage();
outputMessage2.setQName(new QName(definition.getTargetNamespace(), "OutputMessage2"));
outputMessage2.addPart(part);
definition.addMessage(outputMessage2);
// Create an Input
Input input2 = WSDLFactory.eINSTANCE.createInput();
input2.setMessage(inputMessage2);
// Create an Output - GetTemperatureOutput
Output output2 = WSDLFactory.eINSTANCE.createOutput();
output2.setMessage(outputMessage2);
// Create an Operation - GetTemperatureForZipCode
Operation operation2 = WSDLFactory.eINSTANCE.createOperation();
operation2.setName("Operation2");
operation2.setInput(input2);
operation2.setOutput(output2);
portType.addOperation(operation2);
renameOperation(operation);
renameOperation(operation2);
resource.save(null);
}
}