/*******************************************************************************
* Copyright (c) 2010 SAP AG.
* 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:
* Emil Simeonov - initial API and implementation.
* Dimitar Donchev - initial API and implementation.
* Dimitar Tenev - initial API and implementation.
* Nevena Manova - initial API and implementation.
* Georgi Konstantinov - initial API and implementation.
*******************************************************************************/
package org.eclipse.wst.sse.sieditor.test.model;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Status;
import org.eclipse.emf.common.util.EList;
import org.eclipse.wst.sse.sieditor.test.util.ResourceUtils;
import org.eclipse.wst.sse.sieditor.test.util.SIEditorBaseTest;
import org.eclipse.wst.wsdl.Binding;
import org.eclipse.wst.wsdl.BindingFault;
import org.eclipse.wst.wsdl.BindingOperation;
import org.eclipse.wst.wsdl.Definition;
import org.eclipse.wst.wsdl.WSDLElement;
import org.eclipse.wst.wsdl.binding.soap.SOAPFault;
import org.junit.Assert;
import org.junit.Test;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.eclipse.wst.sse.sieditor.command.emf.wsdl.AddFaultCommand;
import org.eclipse.wst.sse.sieditor.command.emf.wsdl.AddFaultParameterCommand;
import org.eclipse.wst.sse.sieditor.command.emf.wsdl.AddInParameterCommand;
import org.eclipse.wst.sse.sieditor.command.emf.wsdl.AddNewSchemaCommand;
import org.eclipse.wst.sse.sieditor.command.emf.wsdl.AddOperationCommand;
import org.eclipse.wst.sse.sieditor.command.emf.wsdl.AddOutParameterCommand;
import org.eclipse.wst.sse.sieditor.command.emf.wsdl.AddServiceInterfaceCommand;
import org.eclipse.wst.sse.sieditor.command.emf.wsdl.ChangeOperationTypeCommand;
import org.eclipse.wst.sse.sieditor.command.emf.wsdl.DeleteFaultCommand;
import org.eclipse.wst.sse.sieditor.command.emf.wsdl.DeleteFaultParameterCommand;
import org.eclipse.wst.sse.sieditor.command.emf.wsdl.DeleteInParameterCommand;
import org.eclipse.wst.sse.sieditor.command.emf.wsdl.DeleteOperationCommand;
import org.eclipse.wst.sse.sieditor.command.emf.wsdl.DeleteOutParameterCommand;
import org.eclipse.wst.sse.sieditor.command.emf.wsdl.DeleteServiceInterfaceCommand;
import org.eclipse.wst.sse.sieditor.command.emf.wsdl.RemoveSchemaCommand;
import org.eclipse.wst.sse.sieditor.command.emf.wsdl.RenameFaultCommand;
import org.eclipse.wst.sse.sieditor.command.emf.wsdl.RenameOperationCommand;
import org.eclipse.wst.sse.sieditor.command.emf.wsdl.RenameParameterCommand;
import org.eclipse.wst.sse.sieditor.command.emf.wsdl.RenameServiceInterfaceCommand;
import org.eclipse.wst.sse.sieditor.command.emf.wsdl.SetDocumentationCommand;
import org.eclipse.wst.sse.sieditor.command.emf.wsdl.SetParameterTypeCommand;
import org.eclipse.wst.sse.sieditor.command.emf.wsdl.tns.ChangeDefinitionTNSCompositeCommand;
import org.eclipse.wst.sse.sieditor.model.api.IModelObject;
import org.eclipse.wst.sse.sieditor.model.api.IWsdlModelRoot;
import org.eclipse.wst.sse.sieditor.model.wsdl.api.IOperation;
import org.eclipse.wst.sse.sieditor.model.wsdl.api.IParameter;
import org.eclipse.wst.sse.sieditor.model.wsdl.api.IServiceInterface;
import org.eclipse.wst.sse.sieditor.model.wsdl.api.OperationType;
import org.eclipse.wst.sse.sieditor.model.wsdl.impl.AbstractWSDLComponent;
import org.eclipse.wst.sse.sieditor.model.wsdl.impl.Description;
import org.eclipse.wst.sse.sieditor.model.xsd.api.ISchema;
import org.eclipse.wst.sse.sieditor.model.xsd.api.IType;
import org.eclipse.wst.sse.sieditor.model.xsd.impl.AbstractType;
@SuppressWarnings("nls")
public class WSDLWriteTest extends SIEditorBaseTest {
private static final String SOURCE_FOLDER = "src/wsdl";
protected String getProjectName() {
return "WSDLWriteTest";
}
@Test
public void test_Description() throws Exception {
// check for referenced documents
IWsdlModelRoot modelRoot = copyAndGetModelRoot("PurchaseOrderConfirmation.wsdl", "One.wsdl");
org.eclipse.wst.sse.sieditor.model.wsdl.api.IDescription description;
org.eclipse.wst.sse.sieditor.model.wsdl.api.IServiceInterface interfaceObj;
org.eclipse.wst.sse.sieditor.model.xsd.api.ISchema schema;
description = modelRoot.getDescription();
AddServiceInterfaceCommand cmd = new AddServiceInterfaceCommand(modelRoot, description, "newInterface");
modelRoot.getEnv().execute(cmd);
interfaceObj = cmd.getInterface();
assertEquals("newInterface", interfaceObj.getName());
assertEquals("http://sap.com/xi/Purchasing", interfaceObj.getNamespace());
assertFalse("Could not find service new SI", description.getInterface("newInterface").isEmpty());
assertNotNull("Could not find service new SI", description.getInterface("newInterface").get(0));
assertEquals(0, interfaceObj.getAllOperations().size());
DeleteServiceInterfaceCommand deletecmd = new DeleteServiceInterfaceCommand(modelRoot, description, interfaceObj);
modelRoot.getEnv().execute(deletecmd);
assertTrue("newInterface is not removed", description.getInterface("newInterface").isEmpty());
cmd = new AddServiceInterfaceCommand(modelRoot, description, "newInterface");
modelRoot.getEnv().execute(cmd);
interfaceObj = cmd.getInterface();
assertEquals("newInterface", interfaceObj.getName());
assertEquals("http://sap.com/xi/Purchasing", interfaceObj.getNamespace());
List<IServiceInterface> interfaces = description.getInterface("newInterface");
assertFalse(interfaces.isEmpty());
assertNotNull("Could not find service new SI", interfaces.get(0));
assertEquals(0, interfaceObj.getAllOperations().size());
// Implement these methods
/*
* Exception error = null; try { wDesc.addExtension(null); } catch
* (Exception e) { error = e; } assertNotNull(error); error = null; try
* { wDesc.removeExtension(null); } catch (Exception e) { error = e; }
* assertNotNull(error);
*/
deletecmd = new DeleteServiceInterfaceCommand(modelRoot, description, description.getInterface(
"PurchaseOrderConfirmation").get(0));
modelRoot.getEnv().execute(deletecmd);
assertTrue("PurchaseOrderConfirmation is not removed", description.getInterface("PurchaseOrderConfirmation").isEmpty());
AddNewSchemaCommand newschemacmd = new AddNewSchemaCommand(modelRoot, "http://newNs");
modelRoot.getEnv().execute(newschemacmd);
schema = newschemacmd.getNewSchema();
assertNotNull("Schema http://newNs is not added", schema);
assertEquals("http://newNs", schema.getNamespace());
assertEquals(description, schema.getRoot());
assertEquals(description, schema.getParent());
assertTrue("Schema location is not WSDL Location", schema.getLocation().endsWith("One.wsdl"));
assertNotNull("new Schema could not be obtained", description.getSchema("http://newNs"));
assertEquals(0, schema.getAllContainedTypes().size());
RemoveSchemaCommand removeschemacmd = new RemoveSchemaCommand(modelRoot, schema);
modelRoot.getEnv().execute(removeschemacmd);
assertNotNull("new Schema is not deleted", description.getSchema("http://newNs"));
newschemacmd = new AddNewSchemaCommand(modelRoot, "http://newNs");
modelRoot.getEnv().execute(newschemacmd);
schema = newschemacmd.getNewSchema();
assertNotNull("Schema http://newNs is not added", schema);
assertEquals("http://newNs", schema.getNamespace());
assertEquals(description, schema.getRoot());
assertEquals(description, schema.getParent());
assertTrue("Schema location is not WSDL Location", schema.getLocation().endsWith("One.wsdl"));
assertNotNull("new Schema could not be obtained", description.getSchema("http://newNs"));
assertEquals(0, schema.getAllContainedTypes().size());
setDocumentation(modelRoot, (AbstractWSDLComponent) description, "Documentation");
assertEquals("Documentation", description.getDocumentation());
setDocumentation(modelRoot, (AbstractWSDLComponent) description, "NewDocumentation");
assertEquals("NewDocumentation", description.getDocumentation());
modelRoot = copyAndGetModelRoot("PurchaseOrderConfirmation.wsdl", "Two.wsdl");
description = modelRoot.getDescription();
modelRoot.getEnv().execute(new AddServiceInterfaceCommand(modelRoot, description, "newInterface"));
modelRoot.getEnv().execute(
new DeleteServiceInterfaceCommand(modelRoot, description, description.getInterface("PurchaseOrderConfirmation")
.get(0)));
modelRoot.getEnv().execute(new AddNewSchemaCommand(modelRoot, "http://newNs"));
// TODO Remove schema by name is not implemented by command
schema = description.getSchema("http://sap.com/xi/SRM/Basis/Global")[0];
removeSchema(modelRoot, schema);
setDocumentation(modelRoot, (AbstractWSDLComponent) description, "Documentation");
setDocumentation(modelRoot, (AbstractWSDLComponent) description, "NewDocumentation");
((Description) description).save();
modelRoot = getModelRoot("Two.wsdl");
description = modelRoot.getDescription();
assertFalse("Could not find service new SI", description.getInterface("newInterface").isEmpty());
assertNotNull("Could not find service new SI", description.getInterface("newInterface").get(0));
assertNotNull("new Schema is not deleted", description.getSchema("http://newNs"));
assertEquals("Schema http://sap.com/xi/SRM/Basis/Global is not deleted", 0, description
.getSchema("http://sap.com/xi/SRM/Basis/Global").length);
assertTrue("PurchaseOrderConfirmation is not removed", description.getInterface("PurchaseOrderConfirmation").isEmpty());
assertEquals("NewDocumentation", description.getDocumentation());
modelRoot = copyAndGetModelRoot("Documentation.wsdl", "Documentation.wsdl");
description = modelRoot.getDescription();
assertEquals("Documentation", description.getDocumentation());
setDocumentation(modelRoot, (AbstractWSDLComponent) description, "NewDocumentation");
assertEquals("NewDocumentation", description.getDocumentation());
((Description) description).save();
modelRoot = getModelRoot("Documentation.wsdl");
description = modelRoot.getDescription();
assertEquals("NewDocumentation", description.getDocumentation());
modelRoot = copyAndGetModelRoot("PrefixWSDL.wsd", "PrefixWSDL.wsdl");
description = modelRoot.getDescription();
setDocumentation(modelRoot, (AbstractWSDLComponent) description, "Documentation");
assertEquals("Documentation", description.getDocumentation());
setDescriptionNamespace(modelRoot, description, "http://example.org");
assertEquals("http://example.org", description.getNamespace());
((Description) description).save();
modelRoot = getModelRoot("PrefixWSDL.wsdl");
description = modelRoot.getDescription();
assertEquals("http://example.org", description.getNamespace());
}
@Test
public void test_ServiceInterface() throws Exception {
// check for referenced documents
final String fileName = "Three.wsdl";
IWsdlModelRoot modelRoot = copyAndGetModelRoot("PurchaseOrderConfirmation.wsdl", fileName);
org.eclipse.wst.sse.sieditor.model.wsdl.api.IDescription description;
org.eclipse.wst.sse.sieditor.model.wsdl.api.IServiceInterface interfaceObj;
org.eclipse.wst.sse.sieditor.model.wsdl.api.IOperation operation;
description = modelRoot.getDescription();
// check add and remove operations for old serviceinterface
interfaceObj = description.getInterface("PurchaseOrderConfirmation").get(0);
operation = addOperation(modelRoot, interfaceObj, "newReqResponseOperation", OperationType.REQUEST_RESPONSE);
assertNotNull("New operation 'newReqResponseOperation' could not be added successfully", operation);
assertEquals(1, operation.getAllInputParameters().size());
assertEquals(1, operation.getAllOutputParameters().size());
assertEquals(0, operation.getAllFaults().size());
assertEquals("newReqResponseOperation", operation.getName());
assertEquals(OperationType.REQUEST_RESPONSE, operation.getOperationStyle());
assertEquals(operation.getParent(), interfaceObj);
assertEquals(operation.getRoot(), description);
assertEquals(2, interfaceObj.getAllOperations().size());
operation = addOperation(modelRoot, interfaceObj, "newAsyncOperation", OperationType.ASYNCHRONOUS);
assertNotNull("New operation 'newAsyncOperation' could not be added successfully", operation);
assertEquals(1, operation.getAllInputParameters().size());
assertEquals(0, operation.getAllOutputParameters().size());
assertEquals(0, operation.getAllFaults().size());
assertEquals("newAsyncOperation", operation.getName());
assertEquals(OperationType.ASYNCHRONOUS, operation.getOperationStyle());
assertEquals(operation.getParent(), interfaceObj);
assertEquals(operation.getRoot(), description);
assertEquals(3, interfaceObj.getAllOperations().size());
setDocumentation(modelRoot, (AbstractWSDLComponent) interfaceObj, "Documentation");
assertEquals("Documentation", interfaceObj.getDocumentation());
setDocumentation(modelRoot, (AbstractWSDLComponent) interfaceObj, "NewDocumentation");
assertEquals("NewDocumentation", interfaceObj.getDocumentation());
AddServiceInterfaceCommand addintfcmd = new AddServiceInterfaceCommand(modelRoot, description, "newInterface");
modelRoot.getEnv().execute(addintfcmd);
interfaceObj = addintfcmd.getInterface();
operation = addOperation(modelRoot, interfaceObj, "newReqResponseOperation", OperationType.REQUEST_RESPONSE);
assertNotNull("New operation 'newReqResponseOperation' could not be added successfully", operation);
assertEquals(1, operation.getAllInputParameters().size());
assertEquals(1, operation.getAllOutputParameters().size());
assertEquals(0, operation.getAllFaults().size());
assertEquals("newReqResponseOperation", operation.getName());
assertEquals(OperationType.REQUEST_RESPONSE, operation.getOperationStyle());
assertEquals(operation.getParent(), interfaceObj);
assertEquals(operation.getRoot(), description);
assertEquals(1, interfaceObj.getAllOperations().size());
operation = addOperation(modelRoot, interfaceObj, "newAsyncOperation", OperationType.ASYNCHRONOUS);
assertNotNull("New operation 'newAsyncOperation' could not be added successfully", operation);
assertEquals(1, operation.getAllInputParameters().size());
assertEquals(0, operation.getAllOutputParameters().size());
assertEquals(0, operation.getAllFaults().size());
assertEquals("newAsyncOperation", operation.getName());
assertEquals(OperationType.ASYNCHRONOUS, operation.getOperationStyle());
assertEquals(operation.getParent(), interfaceObj);
assertEquals(operation.getRoot(), description);
assertEquals(2, interfaceObj.getAllOperations().size());
setDocumentation(modelRoot, (AbstractWSDLComponent) interfaceObj, "Documentation");
assertEquals("Documentation", interfaceObj.getDocumentation());
setDocumentation(modelRoot, (AbstractWSDLComponent) interfaceObj, "NewDocumentation");
assertEquals("NewDocumentation", interfaceObj.getDocumentation());
DeleteOperationCommand deleteOperationCmd = new DeleteOperationCommand(modelRoot, interfaceObj, interfaceObj
.getOperation("newReqResponseOperation").get(0));
assertEquals(Status.OK_STATUS, modelRoot.getEnv().execute(deleteOperationCmd));
assertTrue(interfaceObj.getOperation("newReqResponseOperation").isEmpty());
deleteOperationCmd = new DeleteOperationCommand(modelRoot, interfaceObj, operation);
assertEquals(Status.OK_STATUS, modelRoot.getEnv().execute(deleteOperationCmd));
assertTrue(interfaceObj.getOperation("newAsyncOperation").isEmpty());
modelRoot = getModelRoot("Documentation.wsdl");
description = modelRoot.getDescription();
List<IServiceInterface> interfaces = description.getInterface("PurchaseOrderConfirmation");
assertFalse(interfaces.isEmpty());
interfaceObj = interfaces.get(0);
assertEquals("Documentation\n\t\t", interfaceObj.getDocumentation());
setDocumentation(modelRoot, (AbstractWSDLComponent) interfaceObj, "NewDocumentation");
assertEquals("NewDocumentation", interfaceObj.getDocumentation());
RenameServiceInterfaceCommand renameCmd = new RenameServiceInterfaceCommand(modelRoot, interfaceObj,
"NewPurchaseOrderConfirmation");
assertEquals(Status.OK_STATUS, modelRoot.getEnv().execute(renameCmd));
assertEquals("NewPurchaseOrderConfirmation", interfaceObj.getName());
assertFalse("Could not find interface after renaming", description.getInterface("NewPurchaseOrderConfirmation").isEmpty());
assertNotNull("Could not find interface after renaming", description.getInterface("NewPurchaseOrderConfirmation").get(0));
((Description) description).save();
// Test if changes are saved
modelRoot = getModelRoot("Documentation.wsdl");
description = modelRoot.getDescription();
interfaceObj = description.getInterface("NewPurchaseOrderConfirmation").get(0);
assertEquals("NewPurchaseOrderConfirmation", interfaceObj.getName());
assertEquals("NewDocumentation", interfaceObj.getDocumentation());
modelRoot = copyAndGetModelRoot("PurchaseOrderConfirmation.wsdl", fileName);
description = modelRoot.getDescription();
interfaceObj = description.getInterface("PurchaseOrderConfirmation").get(0);
operation = addOperation(modelRoot, interfaceObj, "NewOperation", OperationType.REQUEST_RESPONSE);
assertEquals(2, interfaceObj.getAllOperations().size());
deleteOperationCmd = new DeleteOperationCommand(modelRoot, interfaceObj, operation);
assertEquals(Status.OK_STATUS, modelRoot.getEnv().execute(deleteOperationCmd));
assertEquals(1, interfaceObj.getAllOperations().size());
deleteOperationCmd = new DeleteOperationCommand(modelRoot, interfaceObj, interfaceObj.getOperation(
"PurchaseOrderConfirmationRequestResponse_In").get(0));
assertEquals(Status.OK_STATUS, modelRoot.getEnv().execute(deleteOperationCmd));
assertEquals(0, interfaceObj.getAllOperations().size());
}
@Test
public void test_Operation() throws Exception {
// check for referenced documents
final String fileName = "TestOperation.wsdl";
IWsdlModelRoot modelRoot = copyAndGetModelRoot("Operations.wsdl", fileName);
org.eclipse.wst.sse.sieditor.model.wsdl.api.IDescription description;
org.eclipse.wst.sse.sieditor.model.wsdl.api.IServiceInterface interfaceObj;
org.eclipse.wst.sse.sieditor.model.wsdl.api.IOperation operation;
org.eclipse.wst.sse.sieditor.model.wsdl.api.IParameter parameter;
org.eclipse.wst.sse.sieditor.model.wsdl.api.IFault faultObj;
description = modelRoot.getDescription();
// check add and remove operations for old serviceinterface
interfaceObj = description.getInterface("Operations").get(0);
operation = interfaceObj.getOperation("SyncOperation").get(0);
// Test parameter addition and deletion
assertEquals(1, operation.getAllInputParameters().size());
// AddInParameterCommand addInParameterCmd = new
parameter = addInputParameter(modelRoot, operation, "Parameter1");
assertEquals(2, operation.getAllInputParameters().size());
assertEquals("Parameter1", parameter.getName());
assertEquals(operation, parameter.getParent());
assertEquals(description, parameter.getRoot());
parameter = addOutputParameter(modelRoot, operation, "Parameter2");
assertEquals(2, operation.getAllOutputParameters().size());
assertEquals("Parameter2", parameter.getName());
assertEquals(operation, parameter.getParent());
assertEquals(description, parameter.getRoot());
assertEquals("Documentation", operation.getDocumentation());
setDocumentation(modelRoot, (AbstractWSDLComponent) operation, "NewDocumentation");
assertEquals("NewDocumentation", operation.getDocumentation());
faultObj = addFault(modelRoot, operation, "fault2");
assertNotNull("New Fault is null", faultObj);
assertEquals("fault2", faultObj.getName());
operation = interfaceObj.getOperation("SyncOperationWithNoMessage").get(0);
// Test parameter addition and deletion
assertEquals(0, operation.getAllInputParameters().size());
parameter = addInputParameter(modelRoot, operation, "Parameter1");
assertEquals(1, operation.getAllInputParameters().size());
assertEquals("Parameter1", parameter.getName());
assertEquals(operation, parameter.getParent());
assertEquals(description, parameter.getRoot());
parameter = addOutputParameter(modelRoot, operation, "Parameter2");
assertEquals(1, operation.getAllOutputParameters().size());
assertEquals("Parameter2", parameter.getName());
assertEquals(operation, parameter.getParent());
assertEquals(description, parameter.getRoot());
setDocumentation(modelRoot, (AbstractWSDLComponent) operation, "NewDocumentation");
assertEquals("NewDocumentation", operation.getDocumentation());
operation = interfaceObj.getOperation("SyncOperationWithMissingMessages").get(0);
// Test parameter addition and deletion
assertEquals(0, operation.getAllInputParameters().size());
parameter = addInputParameter(modelRoot, operation, "Parameter1");
assertEquals(1, operation.getAllInputParameters().size());
assertEquals("Parameter1", parameter.getName());
assertEquals(operation, parameter.getParent());
assertEquals(description, parameter.getRoot());
parameter = addOutputParameter(modelRoot, operation, "Parameter2");
assertEquals(1, operation.getAllOutputParameters().size());
assertEquals("Parameter2", parameter.getName());
assertEquals(operation, parameter.getParent());
assertEquals(description, parameter.getRoot());
assertEquals("", operation.getDocumentation());
setDocumentation(modelRoot, (AbstractWSDLComponent) operation, "Documentation");
assertEquals("Documentation", operation.getDocumentation());
operation = interfaceObj.getOperation("ASyncOperationWithNoMessage").get(0);
// Test parameter addition and deletion
assertEquals(0, operation.getAllInputParameters().size());
parameter = addInputParameter(modelRoot, operation, "Parameter1");
assertEquals(1, operation.getAllInputParameters().size());
assertEquals("Parameter1", parameter.getName());
assertEquals(operation, parameter.getParent());
assertEquals(description, parameter.getRoot());
assertEquals("", operation.getDocumentation());
setDocumentation(modelRoot, (AbstractWSDLComponent) operation, "Documentation");
assertEquals("Documentation", operation.getDocumentation());
operation = interfaceObj.getOperation("ASyncOperationWithMissingMessage").get(0);
// Test parameter addition and deletion
assertEquals(0, operation.getAllInputParameters().size());
parameter = addInputParameter(modelRoot, operation, "Parameter1");
assertEquals(1, operation.getAllInputParameters().size());
assertEquals("Parameter1", parameter.getName());
assertEquals(operation, parameter.getParent());
assertEquals(description, parameter.getRoot());
renameOperation(modelRoot, operation, "NewASyncOperationWithMissingMessage");
assertEquals("NewASyncOperationWithMissingMessage", operation.getName());
assertFalse("Could not find operation after renaming", interfaceObj.getOperation("NewASyncOperationWithMissingMessage")
.isEmpty());
assertNotNull("Could not find operation after renaming", interfaceObj.getOperation("NewASyncOperationWithMissingMessage")
.get(0));
assertTrue("Old operation is not renamed", interfaceObj.getOperation("ASyncOperationWithMissingMessage").isEmpty());
operation = interfaceObj.getOperation("OperationWithNoInputOutput1").get(0);
// Test adding input parameter
assertEquals(0, operation.getAllInputParameters().size());
assertEquals(0, operation.getAllOutputParameters().size());
parameter = addInputParameter(modelRoot, operation, "Parameter1");
assertEquals(1, operation.getAllInputParameters().size());
assertEquals(0, operation.getAllOutputParameters().size());
assertEquals("Parameter1", parameter.getName());
assertEquals(operation, parameter.getParent());
assertEquals(description, parameter.getRoot());
operation = interfaceObj.getOperation("OperationWithNoInputOutput2").get(0);
// Test adding output parameter
assertEquals(0, operation.getAllInputParameters().size());
assertEquals(0, operation.getAllOutputParameters().size());
parameter = addOutputParameter(modelRoot, operation, "Parameter1");
assertEquals(0, operation.getAllInputParameters().size());
assertEquals(1, operation.getAllOutputParameters().size());
assertEquals("Parameter1", parameter.getName());
assertEquals(operation, parameter.getParent());
assertEquals(description, parameter.getRoot());
((Description) description).save();
modelRoot = getModelRoot(fileName);
description = modelRoot.getDescription();
// Test if changes are saved
interfaceObj = description.getInterface("Operations").get(0);
operation = interfaceObj.getOperation("SyncOperation").get(0);
assertEquals(2, operation.getAllInputParameters().size());
assertEquals(2, operation.getAllOutputParameters().size());
assertFalse(operation.getInputParameter("Parameter1").isEmpty());
assertNotNull(operation.getInputParameter("Parameter1").get(0));
assertFalse(operation.getOutputParameter("Parameter2").isEmpty());
assertNotNull(operation.getOutputParameter("Parameter2").get(0));
assertEquals("NewDocumentation", operation.getDocumentation());
operation = interfaceObj.getOperation("SyncOperationWithNoMessage").get(0);
assertEquals(1, operation.getAllInputParameters().size());
assertEquals(1, operation.getAllOutputParameters().size());
assertFalse(operation.getInputParameter("Parameter1").isEmpty());
assertNotNull(operation.getInputParameter("Parameter1").get(0));
assertFalse(operation.getOutputParameter("Parameter2").isEmpty());
assertNotNull(operation.getOutputParameter("Parameter2").get(0));
assertEquals("NewDocumentation", operation.getDocumentation());
operation = interfaceObj.getOperation("SyncOperationWithMissingMessages").get(0);
assertEquals(1, operation.getAllInputParameters().size());
assertEquals(1, operation.getAllOutputParameters().size());
assertFalse(operation.getInputParameter("Parameter1").isEmpty());
assertNotNull(operation.getInputParameter("Parameter1").get(0));
assertFalse(operation.getOutputParameter("Parameter2").isEmpty());
assertNotNull(operation.getOutputParameter("Parameter2").get(0));
assertEquals("Documentation", operation.getDocumentation());
operation = interfaceObj.getOperation("ASyncOperationWithNoMessage").get(0);
assertEquals(1, operation.getAllInputParameters().size());
assertNotNull(operation.getInputParameter("Parameter1"));
assertEquals("Documentation", operation.getDocumentation());
operation = interfaceObj.getOperation("NewASyncOperationWithMissingMessage").get(0);
assertNotNull("Operation NewASyncOperationWithMissingMessage could not be found", operation);
operation = interfaceObj.getOperation("OperationWithNoInputOutput1").get(0);
assertEquals(0, operation.getAllOutputParameters().size());
assertEquals(1, operation.getAllInputParameters().size());
operation = interfaceObj.getOperation("OperationWithNoInputOutput2").get(0);
assertEquals(1, operation.getAllOutputParameters().size());
assertEquals(0, operation.getAllInputParameters().size());
// Test Removal of parameters and faults
operation = interfaceObj.getOperation("SyncOperation").get(0);
assertEquals(2, operation.getAllInputParameters().size());
parameter = addInputParameter(modelRoot, operation, "Parameter4");
assertEquals(3, operation.getAllInputParameters().size());
removeInputParameter(modelRoot, operation, parameter);
assertEquals(2, operation.getAllInputParameters().size());
assertTrue("Parameter4 is not deleted", operation.getInputParameter("Parameter4").isEmpty());
removeInputParameter(modelRoot, operation, operation.getInputParameter("Parameter1").get(0));
assertEquals(1, operation.getAllInputParameters().size());
assertEquals(2, operation.getAllOutputParameters().size());
parameter = addOutputParameter(modelRoot, operation, "Parameter4");
assertEquals(3, operation.getAllOutputParameters().size());
removeOutputParameter(modelRoot, operation, parameter);
assertEquals(2, operation.getAllOutputParameters().size());
assertTrue("Parameter4 is not deleted", operation.getOutputParameter("Parameter4").isEmpty());
removeOutputParameter(modelRoot, operation, operation.getOutputParameter("Parameter2").get(0));
assertEquals(1, operation.getAllOutputParameters().size());
assertEquals(2, operation.getAllFaults().size());
removeFault(modelRoot, operation, operation.getFault("fault2").get(0));
assertTrue("fault2 is not deleted", operation.getFault("fault2").isEmpty());
assertEquals(1, operation.getAllFaults().size());
removeFault(modelRoot, operation, operation.getFault("fault1").get(0));
assertTrue("fault1 is not deleted", operation.getFault("fault1").isEmpty());
assertEquals(0, operation.getAllFaults().size());
operation = interfaceObj.getOperation("ASyncOperation").get(0);
parameter = addInputParameter(modelRoot, operation, "parameter1");
assertEquals(2, operation.getAllInputParameters().size());
removeInputParameter(modelRoot, operation, parameter);
assertEquals(1, operation.getAllInputParameters().size());
removeInputParameter(modelRoot, operation, operation.getInputParameter("parameters").get(0));
assertEquals(0, operation.getAllInputParameters().size());
operation = interfaceObj.getOperation("SyncOperation1").get(0);
assertEquals(OperationType.REQUEST_RESPONSE, operation.getOperationStyle());
setOperationType(modelRoot, operation, OperationType.ASYNCHRONOUS);
assertEquals(0, operation.getAllOutputParameters().size());
assertEquals(OperationType.ASYNCHRONOUS, operation.getOperationStyle());
operation = interfaceObj.getOperation("ASyncOperation1").get(0);
assertEquals(OperationType.ASYNCHRONOUS, operation.getOperationStyle());
setOperationType(modelRoot, operation, OperationType.REQUEST_RESPONSE);
assertEquals(OperationType.REQUEST_RESPONSE, operation.getOperationStyle());
operation = interfaceObj.getOperation("SyncOperation2").get(0);
Collection<IParameter> parameters = operation.getAllInputParameters();
assertEquals(4, parameters.size());
parameter = operation.getOutputParameter("Parameter1").get(0);
removeOutputParameter(modelRoot, operation, parameter);
parameters = operation.getAllOutputParameters();
assertEquals(3, parameters.size());
((Description) description).save();
modelRoot = getModelRoot(fileName);
description = modelRoot.getDescription();
// Test if removal changes are saved
interfaceObj = description.getInterface("Operations").get(0);
operation = interfaceObj.getOperation("SyncOperation").get(0);
assertEquals(1, operation.getAllInputParameters().size());
assertTrue("Parameter4 is not deleted", operation.getInputParameter("Parameter4").isEmpty());
assertTrue("Parameter1 is not deleted", operation.getInputParameter("Parameter1").isEmpty());
assertEquals(1, operation.getAllInputParameters().size());
assertTrue("Parameter4 is not deleted", operation.getOutputParameter("Parameter4").isEmpty());
assertTrue("Parameter2 is not deleted", operation.getOutputParameter("Parameter2").isEmpty());
assertEquals(0, operation.getAllFaults().size());
operation = interfaceObj.getOperation("ASyncOperation").get(0);
assertEquals(0, operation.getAllInputParameters().size());
operation = interfaceObj.getOperation("SyncOperation1").get(0);
assertEquals(0, operation.getAllOutputParameters().size());
assertEquals(OperationType.ASYNCHRONOUS, operation.getOperationStyle());
operation = interfaceObj.getOperation("ASyncOperation1").get(0);
assertEquals(OperationType.REQUEST_RESPONSE, operation.getOperationStyle());
operation = interfaceObj.getOperation("SyncOperation2").get(0);
parameters = operation.getAllInputParameters();
assertEquals(4, parameters.size());
Iterator<IParameter> paramIter = parameters.iterator();
assertEquals("Parameter1", paramIter.next().getName());
assertEquals("Parameter2", paramIter.next().getName());
assertEquals("Parameter3", paramIter.next().getName());
assertEquals("Parameter4", paramIter.next().getName());
parameters = operation.getAllOutputParameters();
assertEquals(3, parameters.size());
paramIter = parameters.iterator();
assertEquals("Parameter2", paramIter.next().getName());
assertEquals("Parameter3", paramIter.next().getName());
assertEquals("Parameter4", paramIter.next().getName());
}
@Test
public void test_Parameter() throws Exception {
final String fileName = "TestParameter.wsdl";
IFile file = ResourceUtils.copyFileIntoTestProject(Constants.DATA_PUBLIC_SELF_KESHAV + "po.xsd", Document_FOLDER_NAME,
this.getProject(), "po.xsd");
assertTrue("File po.xsd could not be obtained", file.exists());
file = ResourceUtils.copyFileIntoTestProject(Constants.DATA_PUBLIC_SELF_KESHAV + "example.xsd", Document_FOLDER_NAME,
this.getProject(), "example.xsd");
file = ResourceUtils.copyFileIntoTestProject(Constants.DATA_PUBLIC_SELF_KESHAV + "NullNamespace.xsd",
Document_FOLDER_NAME, this.getProject(), "NullNamespace.xsd");
file = ResourceUtils.copyFileIntoTestProject(Constants.DATA_PUBLIC_SELF_KESHAV + "ParameterType.xsd",
Document_FOLDER_NAME, this.getProject(), "ParameterType.xsd");
assertTrue("File example.xsd could not be obtained", file.exists());
IWsdlModelRoot modelRoot = copyAndGetModelRoot("ParameterType.wsdl", fileName);
org.eclipse.wst.sse.sieditor.model.wsdl.api.IDescription description;
org.eclipse.wst.sse.sieditor.model.wsdl.api.IServiceInterface interfaceObj;
org.eclipse.wst.sse.sieditor.model.wsdl.api.IOperation operation;
IParameter parameter;
description = modelRoot.getDescription();
// check add and remove operations for old serviceinterface
interfaceObj = description.getInterface("ServiceInterface").get(0);
operation = interfaceObj.getOperation("Operation").get(0);
parameter = operation.getInputParameter("parameters").get(0);
setParameterName(modelRoot, parameter, "Parameter1");
assertEquals("Parameter1", parameter.getName());
assertEquals("", parameter.getDocumentation());
setDocumentation(modelRoot, (AbstractWSDLComponent) parameter, "Documentation");
assertEquals("Documentation", parameter.getDocumentation());
ISchema inlineSchema = description.getSchema("http://sap.com/xi/Purchasing")[0];
// Set Type and Element from same WSDL
assertEquals("NewOperation", parameter.getType().getName());
setParameterType(modelRoot, parameter, inlineSchema.getType(false, "Address"), false);
assertEquals("Address", parameter.getType().getName());
setParameterType(modelRoot, parameter, inlineSchema.getType(false, "BusinessTransactionDocumentID"), false);
assertEquals("BusinessTransactionDocumentID", parameter.getType().getName());
setParameterType(modelRoot, parameter, inlineSchema.getType(false, "LanguageCode"), false);
assertEquals("LanguageCode", parameter.getType().getName());
setParameterType(modelRoot, parameter, inlineSchema.getType(false, "BusinessTransactionDocumentID"), false);
setParameterType(modelRoot, parameter, inlineSchema.getType(true, "PurchaseOrderConfirmationRequest"), false);
assertEquals("PurchaseOrderConfirmationRequest", parameter.getType().getName());
ISchema[] schemas = description.getSchema("http://www.example.org/ParameterType/");
inlineSchema = schemas[0].getType(true, "NewOperation") == null ? schemas[1] : schemas[0];
setParameterType(modelRoot, parameter, inlineSchema.getType(true, "NewOperation"), false);
assertEquals("NewOperation", parameter.getType().getName());
setParameterType(modelRoot, parameter, inlineSchema.getType(false, "complexType"), false);
assertEquals("complexType", parameter.getType().getName());
SchemaNamespaceCondition condition = new SchemaNamespaceCondition("");
// Set Type and Element from imported XSD
condition.setNamespace("http://www.example.com/");
inlineSchema = getSchema(description.getAllVisibleSchemas(), condition);
setParameterType(modelRoot, parameter, inlineSchema.getType(false, "Address"), false);
assertEquals("Address", parameter.getType().getName());
setParameterType(modelRoot, parameter, inlineSchema.getType(true, "purchaseOrder"), false);
assertEquals("purchaseOrder", parameter.getType().getName());
// Set Type from included XSD
condition.setNamespace("http://www.example.com/IPO");
ISchema[] ipoSchemas = description.getSchema("http://www.example.com/IPO");
assertEquals(3, ipoSchemas.length);
inlineSchema = getSchema1(ipoSchemas[0].getAllReferredSchemas(), condition);
if (inlineSchema == null || inlineSchema.getType(false, "Address") == null) {
inlineSchema = getSchema1(ipoSchemas[1].getAllReferredSchemas(), condition);
}
if (inlineSchema == null || inlineSchema.getType(false, "Address") == null) {
inlineSchema = getSchema1(ipoSchemas[2].getAllReferredSchemas(), condition);
}
setParameterType(modelRoot, parameter, inlineSchema.getType(false, "Address"), false);
assertEquals("Address", parameter.getType().getName());
setParameterType(modelRoot, parameter, inlineSchema.getType(true, "purchaseOrder"), false);
assertEquals("purchaseOrder", parameter.getType().getName());
// Set Type form XSD With Null namespace
inlineSchema = description.getSchema("http://www.example.com/IPO/Include/NullNamespace")[0];
condition.setNamespace(null);
inlineSchema = getSchema1(inlineSchema.getAllReferredSchemas(), condition);
setParameterType(modelRoot, parameter, inlineSchema.getType(false,
"Address"), false);
assertEquals("Address", parameter.getType().getName());
setParameterType(modelRoot, parameter, inlineSchema.getType(true,
"purchaseOrder"), false);
assertEquals("purchaseOrder", parameter.getType().getName());
// Set Type from XSD With Same Namespace
condition.setNamespace("http://www.example.org/ParameterType/");
inlineSchema = getSchema(description.getContainedSchemas(), condition);
setParameterType(modelRoot, parameter, inlineSchema.getType(true, "NewOperation"), false);
assertEquals("NewOperation", parameter.getType().getName());
setParameterType(modelRoot, parameter, inlineSchema.getType(false, "complexType"), false);
assertEquals("complexType", parameter.getType().getName());
ResourceUtils.createFolderInProject(getProject(), "src");
file = ResourceUtils.copyFileIntoTestProject(Constants.DATA_PUBLIC_SELF_KESHAV + "Imported.xsd", SOURCE_FOLDER, this
.getProject(), "Imported.xsd");
file = ResourceUtils.copyFileIntoTestProject(Constants.DATA_PUBLIC_SELF_KESHAV + "SupplierInvoice.wsdl", SOURCE_FOLDER,
this.getProject(), "SupplierInvoice.wsdl");
file = ResourceUtils.copyFileIntoTestProject(Constants.DATA_PUBLIC_SELF_KESHAV + "CopyTypeTestSingleSchema.wsdl",
SOURCE_FOLDER, this.getProject(), "CopyTypeTestSingleSchema.wsdl");
file = ResourceUtils.copyFileIntoTestProject(Constants.DATA_PUBLIC_SELF_KESHAV + "CopyTypeTestMultipleSchema.wsdl",
SOURCE_FOLDER, this.getProject(), "CopyTypeTestMultipleSchema.wsdl");
file = ResourceUtils.copyFileIntoTestProject(Constants.DATA_PUBLIC_SELF_KESHAV + "CopyTypeTestExternal.xsd",
SOURCE_FOLDER, this.getProject(), "CopyTypeTestExternal.xsd");
file = ResourceUtils.copyFileIntoTestProject(Constants.DATA_PUBLIC_SELF_KESHAV + "CopyTypeTestImportedSchema.wsdl",
SOURCE_FOLDER, this.getProject(), "CopyTypeTestImportedSchema.wsdl");
file = ResourceUtils.copyFileIntoTestProject(Constants.DATA_PUBLIC_SELF_KESHAV + "CopyTypeTestIncludedSchema.wsdl",
SOURCE_FOLDER, this.getProject(), "CopyTypeTestIncludedSchema.wsdl");
modelRoot = copyAndGetModelRoot("PurchaseOrderConfirmation.wsdl", "ParameterTypeTwo.wsdl");
description = modelRoot.getDescription();
interfaceObj = description.getInterface("PurchaseOrderConfirmation").get(0);
operation = interfaceObj.getOperation("PurchaseOrderConfirmationRequestResponse_In").get(0);
parameter = operation.getInputParameter("parameters").get(0); // What **
// does
// this
// line
// test?
}
@Test
public void test_Fault() throws Exception {
// check for referenced documents
final String fileName = "TestOperationFault.wsdl";
IWsdlModelRoot modelRoot = copyAndGetModelRoot("Operations.wsdl", fileName);
org.eclipse.wst.sse.sieditor.model.wsdl.api.IDescription description;
org.eclipse.wst.sse.sieditor.model.wsdl.api.IServiceInterface interfaceObj;
org.eclipse.wst.sse.sieditor.model.wsdl.api.IOperation operation;
org.eclipse.wst.sse.sieditor.model.wsdl.api.IParameter parameter;
org.eclipse.wst.sse.sieditor.model.wsdl.api.IFault faultObj;
description = modelRoot.getDescription();
interfaceObj = description.getInterface("Operations").get(0);
operation = interfaceObj.getOperation("TestFault").get(0);
faultObj = operation.getFault("fault1").get(0);
assertEquals("fault1", faultObj.getName());
setFaultName(modelRoot, faultObj, "newFault");
assertEquals("newFault", faultObj.getName());
assertEquals("", faultObj.getDocumentation());
setDocumentation(modelRoot, (AbstractWSDLComponent) faultObj, "Documentation");
assertEquals("Documentation", faultObj.getDocumentation());
setDocumentation(modelRoot, (AbstractWSDLComponent) faultObj, "NewDocumentation");
assertEquals("NewDocumentation", faultObj.getDocumentation());
assertEquals(1, faultObj.getParameters().size());
parameter = addFaultParameter(modelRoot, faultObj, "Parameter1", operation);
parameter = addFaultParameter(modelRoot, faultObj, "Parameter2", operation);
assertEquals(3, faultObj.getParameters().size());
removeFaultParameter(modelRoot, faultObj, operation, faultObj.getParameter("parameters").get(0));
;
assertEquals(2, faultObj.getParameters().size());
removeFaultParameter(modelRoot, faultObj, operation, parameter);
assertEquals(1, faultObj.getParameters().size());
faultObj = operation.getFault("fault2").get(0);
assertEquals(4, faultObj.getParameters().size());
faultObj = operation.getFault("faultWithMissingMessage").get(0);
assertEquals(0, faultObj.getParameters().size());
parameter = addFaultParameter(modelRoot, faultObj, "Parameter1", operation);
parameter = addFaultParameter(modelRoot, faultObj, "Parameter2", operation);
assertEquals(2, faultObj.getParameters().size());
removeFaultParameter(modelRoot, faultObj, operation, parameter);
assertEquals(1, faultObj.getParameters().size());
faultObj = operation.getFault("faultWithNoMessage").get(0);
assertEquals(0, faultObj.getParameters().size());
parameter = addFaultParameter(modelRoot, faultObj, "Parameter1", operation);
parameter = addFaultParameter(modelRoot, faultObj, "Parameter2", operation);
assertEquals(2, faultObj.getParameters().size());
removeFaultParameter(modelRoot, faultObj, operation, parameter);
assertEquals(1, faultObj.getParameters().size());
operation = interfaceObj.getOperation("ASyncOperation").get(0);
assertEquals(0, operation.getAllFaults().size());
faultObj = addFault(modelRoot, operation, "newFault");
addFaultParameter(modelRoot, faultObj, "Parameter1", operation);
assertEquals(2, faultObj.getParameters().size());
((Description) description).save();
modelRoot = getModelRoot("TestOperationFault.wsdl");
interfaceObj = description.getInterface("Operations").get(0);
operation = interfaceObj.getOperation("TestFault").get(0);
faultObj = operation.getFault("newFault").get(0);
assertEquals(1, faultObj.getParameters().size());
assertEquals("NewDocumentation", faultObj.getDocumentation());
assertFalse("Could not find parameter Parameter1", faultObj.getParameter("Parameter1").isEmpty());
assertNotNull("Could not find parameter Parameter1", faultObj.getParameter("Parameter1").get(0));
faultObj = operation.getFault("fault2").get(0);
assertEquals(4, faultObj.getParameters().size());
Iterator<IParameter> paramIter = faultObj.getParameters().iterator();
assertEquals("Parameter1", paramIter.next().getName());
assertEquals("Parameter2", paramIter.next().getName());
assertEquals("Parameter3", paramIter.next().getName());
assertEquals("Parameter4", paramIter.next().getName());
faultObj = operation.getFault("faultWithMissingMessage").get(0);
assertEquals(1, faultObj.getParameters().size());
faultObj = operation.getFault("faultWithNoMessage").get(0);
assertEquals(1, faultObj.getParameters().size());
operation = interfaceObj.getOperation("ASyncOperation").get(0);
faultObj = operation.getFault("newFault").get(0);
assertEquals(2, faultObj.getParameters().size());
assertFalse("Could not find parameter Parameter1", faultObj.getParameter("Parameter1").isEmpty());
assertNotNull("Could not find parameter Parameter1", faultObj.getParameter("Parameter1").get(0));
}
@Test
public void testRenameFault() throws Exception {
final String fileName = "TestOperationFault.wsdl";
IWsdlModelRoot modelRoot = copyAndGetModelRoot("Operations.wsdl", fileName);
org.eclipse.wst.sse.sieditor.model.wsdl.api.IDescription description;
org.eclipse.wst.sse.sieditor.model.wsdl.api.IServiceInterface interfaceObj;
org.eclipse.wst.sse.sieditor.model.wsdl.api.IOperation operation;
org.eclipse.wst.sse.sieditor.model.wsdl.api.IFault faultObj;
description = modelRoot.getDescription();
interfaceObj = description.getInterface("Operations").get(0);
operation = interfaceObj.getOperation("TestFault").get(0);
faultObj = operation.getFault("fault1").get(0);
assertEquals("fault1", faultObj.getName());
setFaultName(modelRoot, faultObj, "newFault");
assertEquals("newFault", faultObj.getName());
EList eBindings = ((Definition) description.getComponent()).getEBindings();
assertFalse(eBindings.isEmpty());
for (Object binding : eBindings) {
EList operations = ((Binding) binding).getEBindingOperations();
for (Object op : operations) {
EList faults = ((BindingOperation) op).getEBindingFaults();
for (Object fault : faults) {
assertEquals(faultObj.getComponent(), ((BindingFault) fault).getFault());
EList elements = ((BindingFault) fault).getEExtensibilityElements();
for (Object soapFault : elements) {
assertEquals("newFault", ((SOAPFault) soapFault).getName());
}
}
}
}
}
private ISchema getSchema(final Collection<ISchema> schemas, ICondition<ISchema> condition) {
for (ISchema schema : schemas) {
if (condition.isSatisfied(schema))
return schema;
}
return null;
}
private ISchema getSchema1(final Collection<ISchema> schemas, ICondition<ISchema> condition) {
for (ISchema schema : schemas) {
if (condition.isSatisfied(schema))
return schema;
}
return null;
}
interface ICondition<T> {
boolean isSatisfied(T in);
}
private class SchemaNamespaceCondition implements ICondition<ISchema> {
private String _namespace;
public SchemaNamespaceCondition(final String namespace) {
this._namespace = namespace;
}
public boolean isSatisfied(ISchema in) {
if ((null == _namespace && null == in.getNamespace()) || (null != _namespace && _namespace.equals(in.getNamespace())))
return true;
return false;
}
public void setNamespace(final String namespace) {
this._namespace = namespace;
}
}
private IWsdlModelRoot copyAndGetModelRoot(final String fileName, final String targetName) throws Exception {
return getWSDLModelRoot(Constants.DATA_PUBLIC_SELF_KESHAV + fileName, targetName);
}
private IWsdlModelRoot getModelRoot(final String fileName) throws Exception {
final IFile file = (IFile) getProject().findMember(new Path(Document_FOLDER_NAME + IPath.SEPARATOR + fileName));
assertTrue(file.exists());
return getWSDLModelRoot(file);
}
private static IParameter addInputParameter(IWsdlModelRoot modelRoot,
org.eclipse.wst.sse.sieditor.model.wsdl.api.IOperation operation, String name) throws ExecutionException {
AddInParameterCommand cmd = new AddInParameterCommand(modelRoot, operation, name);
assertEquals(Status.OK_STATUS, modelRoot.getEnv().execute(cmd));
return cmd.getParameter();
}
private static IParameter addOutputParameter(IWsdlModelRoot modelRoot,
org.eclipse.wst.sse.sieditor.model.wsdl.api.IOperation operation, String name) throws ExecutionException {
AddOutParameterCommand cmd = new AddOutParameterCommand(modelRoot, operation, name);
assertEquals(Status.OK_STATUS, modelRoot.getEnv().execute(cmd));
return cmd.getParameter();
}
private static void removeInputParameter(IWsdlModelRoot modelRoot,
org.eclipse.wst.sse.sieditor.model.wsdl.api.IOperation operation, IParameter parameter) throws ExecutionException {
DeleteInParameterCommand cmd = new DeleteInParameterCommand(modelRoot, operation, parameter);
assertEquals(Status.OK_STATUS, modelRoot.getEnv().execute(cmd));
}
private static void removeOutputParameter(IWsdlModelRoot modelRoot,
org.eclipse.wst.sse.sieditor.model.wsdl.api.IOperation operation, IParameter parameter) throws ExecutionException {
DeleteOutParameterCommand cmd = new DeleteOutParameterCommand(modelRoot, operation, parameter);
assertEquals(Status.OK_STATUS, modelRoot.getEnv().execute(cmd));
}
private static org.eclipse.wst.sse.sieditor.model.wsdl.api.IFault addFault(IWsdlModelRoot modelRoot,
org.eclipse.wst.sse.sieditor.model.wsdl.api.IOperation operation, String name) throws ExecutionException {
AddFaultCommand cmd = new AddFaultCommand(modelRoot, operation, name);
assertEquals(Status.OK_STATUS, modelRoot.getEnv().execute(cmd));
return cmd.getFault();
}
private static void removeFault(IWsdlModelRoot modelRoot, org.eclipse.wst.sse.sieditor.model.wsdl.api.IOperation operation,
org.eclipse.wst.sse.sieditor.model.wsdl.api.IFault fault) throws ExecutionException {
DeleteFaultCommand cmd = new DeleteFaultCommand(modelRoot, operation, fault);
assertEquals(Status.OK_STATUS, modelRoot.getEnv().execute(cmd));
}
private static void renameOperation(IWsdlModelRoot modelRoot,
org.eclipse.wst.sse.sieditor.model.wsdl.api.IOperation operation, String name) throws ExecutionException {
RenameOperationCommand cmd = new RenameOperationCommand(modelRoot, operation, name);
assertEquals(Status.OK_STATUS, modelRoot.getEnv().execute(cmd));
}
private static void setOperationType(IWsdlModelRoot modelRoot,
org.eclipse.wst.sse.sieditor.model.wsdl.api.IOperation operation, OperationType operationType)
throws ExecutionException {
ChangeOperationTypeCommand cmd = new ChangeOperationTypeCommand(modelRoot, operation, operationType, false);
assertEquals(Status.OK_STATUS, modelRoot.getEnv().execute(cmd));
}
private static void setParameterName(IWsdlModelRoot modelRoot, IParameter parameter, String name) throws ExecutionException {
RenameParameterCommand cmd = new RenameParameterCommand(modelRoot, parameter, name);
assertEquals(Status.OK_STATUS, modelRoot.getEnv().execute(cmd));
}
private static void setParameterType(IWsdlModelRoot modelRoot, IParameter parameter, IType newType, boolean createWrapper)
throws ExecutionException {
SetParameterTypeCommand cmd = new SetParameterTypeCommand(parameter, (AbstractType) newType);
assertEquals(Status.OK_STATUS, modelRoot.getEnv().execute(cmd));
}
private static void setFaultName(IWsdlModelRoot modelRoot, org.eclipse.wst.sse.sieditor.model.wsdl.api.IFault fault,
String name) throws ExecutionException {
RenameFaultCommand cmd = new RenameFaultCommand(modelRoot, fault, name);
assertEquals(Status.OK_STATUS, modelRoot.getEnv().execute(cmd));
}
private static IParameter addFaultParameter(IWsdlModelRoot modelRoot,
org.eclipse.wst.sse.sieditor.model.wsdl.api.IFault fault, String name,
org.eclipse.wst.sse.sieditor.model.wsdl.api.IOperation operation) throws ExecutionException {
AddFaultParameterCommand cmd = new AddFaultParameterCommand(modelRoot, fault, name, operation);
assertEquals(Status.OK_STATUS, modelRoot.getEnv().execute(cmd));
return cmd.getParameter();
}
private static void removeFaultParameter(IWsdlModelRoot modelRoot,
org.eclipse.wst.sse.sieditor.model.wsdl.api.IFault fault,
org.eclipse.wst.sse.sieditor.model.wsdl.api.IOperation operation, IParameter parameter) throws ExecutionException {
DeleteFaultParameterCommand cmd = new DeleteFaultParameterCommand(modelRoot, fault, parameter, operation);
assertEquals(Status.OK_STATUS, modelRoot.getEnv().execute(cmd));
}
private static void setDescriptionNamespace(IWsdlModelRoot modelRoot,
org.eclipse.wst.sse.sieditor.model.wsdl.api.IDescription description, String namespace) throws ExecutionException {
ChangeDefinitionTNSCompositeCommand cmd = new ChangeDefinitionTNSCompositeCommand(modelRoot, description, namespace);
assertEquals(Status.OK_STATUS, modelRoot.getEnv().execute(cmd));
}
private static void removeSchema(IWsdlModelRoot modelRoot, ISchema schema) throws ExecutionException {
RemoveSchemaCommand cmd = new RemoveSchemaCommand(modelRoot, schema);
assertEquals(Status.OK_STATUS, modelRoot.getEnv().execute(cmd));
}
private static IOperation addOperation(IWsdlModelRoot modelRoot, IServiceInterface serviceInterface, String name,
OperationType operationType) throws ExecutionException {
AddOperationCommand cmd = new AddOperationCommand(modelRoot, serviceInterface, name, operationType);
assertEquals(Status.OK_STATUS, modelRoot.getEnv().execute(cmd));
return cmd.getOperation();
}
private static void setDocumentation(IWsdlModelRoot modelRoot, AbstractWSDLComponent modelObject, String documentation)
throws ExecutionException {
SetDocumentationCommand cmd = new SetDocumentationCommand(modelRoot, modelObject,
modelObject.getComponent().getElement(), documentation);
assertEquals(Status.OK_STATUS, modelRoot.getEnv().execute(cmd));
validateDocumentationElement(modelObject, true);
}
private static void validateDocumentationElement(IModelObject modelObject, boolean hasDocumentation) {
NodeList childNodes = ((WSDLElement) modelObject.getComponent()).getElement().getChildNodes();
int found = 0;
for (int ndx = 0; ndx < childNodes.getLength(); ndx++) {
Node node = childNodes.item(ndx);
if (node.getNodeType() == Node.ELEMENT_NODE
&& ("wsdl:documentation".equals(node.getNodeName()) || "documentation".equals(node.getNodeName()))) {
found++;
}
}
if (!hasDocumentation && found > 0) {
Assert.fail("No documentation nodes were expected, but " + found + " were found");
}
if (hasDocumentation && found > 1) {
Assert.fail("More than one documentation node was found: " + found);
}
if (hasDocumentation && found == 0) {
Assert.fail("Documentation node was not found");
}
}
}