/******************************************************************************* * Copyright (c) 2001, 2006 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.ui.internal.commands; import org.eclipse.wst.wsdl.Definition; import org.eclipse.wst.wsdl.Message; import org.eclipse.wst.wsdl.Operation; import org.eclipse.wst.wsdl.Output; import org.eclipse.wst.wsdl.WSDLFactory; import org.eclipse.wst.wsdl.ui.internal.actions.SmartRenameAction; import org.eclipse.wst.wsdl.ui.internal.util.NameUtil; public final class AddOutputCommand extends AddMessageReferenceCommand { private Output originalOutput; public AddOutputCommand(Operation operation, String name) { super(operation,name); } public AddOutputCommand(Operation operation, String name, boolean createMessage) { super(operation,name,createMessage); } /* * Constructor used to create an Output based on the given Output. In essence, this will * create a copy of the given Output. */ public AddOutputCommand(Operation operation, Output originalOutput, String name) { super(operation, name, false); this.originalOutput = originalOutput; } public void run() { messageReference = WSDLFactory.eINSTANCE.createOutput(); // messageReference.setName(name); messageReference.setEnclosingDefinition(operation.getEnclosingDefinition()); operation.setOutput((Output)messageReference); // TBD - add binding output if (originalOutput == null) { if (createMessage) createMessage(); } else { // Do necessary copying of data from original Output to new Output if (originalOutput.getEMessage() != null) { String originalMsgName = originalOutput.getEMessage().getQName().getLocalPart(); boolean gened = false; if (originalOutput.eContainer() instanceof Operation) gened = SmartRenameAction.isMessageNameGenerated(originalMsgName, ((Operation) originalOutput.eContainer()).getName(), "Response"); //$NON-NLS-1$ String newMsgName = ""; //$NON-NLS-1$ if (gened) { newMsgName = NameUtil.buildUniqueMessageName(operation.getEnclosingDefinition(), messageReference); } else { Definition definition = operation.getEnclosingDefinition(); Message tMessage = originalOutput.getEMessage(); newMsgName = NameUtil.buildUniqueMessageName(definition, tMessage.getQName().getLocalPart()); } createMessage(originalOutput, newMsgName); } } } }