diff options
Diffstat (limited to 'bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/commands/AddInputParameterCommand.java')
-rw-r--r-- | bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/commands/AddInputParameterCommand.java | 280 |
1 files changed, 0 insertions, 280 deletions
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/commands/AddInputParameterCommand.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/commands/AddInputParameterCommand.java deleted file mode 100644 index 6f7d311d7..000000000 --- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/commands/AddInputParameterCommand.java +++ /dev/null @@ -1,280 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2001, 2007 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 java.util.Iterator; -import java.util.List; - -import javax.xml.namespace.QName; - -import org.eclipse.wst.wsdl.Input; -import org.eclipse.wst.wsdl.Message; -import org.eclipse.wst.wsdl.MessageReference; -import org.eclipse.wst.wsdl.Operation; -import org.eclipse.wst.wsdl.Part; -import org.eclipse.wst.wsdl.ui.internal.adapters.visitor.W11FindInnerElementVisitor; -import org.eclipse.wst.wsdl.ui.internal.util.ComponentReferenceUtil; -import org.eclipse.wst.wsdl.ui.internal.util.NameUtil; -import org.eclipse.wst.wsdl.ui.internal.util.XSDComponentHelper; -import org.eclipse.xsd.XSDElementDeclaration; -import org.eclipse.xsd.XSDModelGroup; -import org.eclipse.xsd.XSDParticle; -import org.eclipse.xsd.XSDSchema; -import org.eclipse.xsd.XSDTypeDefinition; - -public class AddInputParameterCommand extends AddBaseParameterCommand { - protected boolean createXSDObjects = true; - protected boolean reuseExistingMessage = false; - private Input input; - public AddInputParameterCommand(Operation operation, int style) { - super(operation, style); - } - - public AddInputParameterCommand(Operation operation, int style, boolean reuseMessage) { - super(operation, style); - reuseExistingMessage = reuseMessage; - } - - /* - * - */ - public void run() { - Part part = null; - if (operation.getEInput() != null) { - input = operation.getEInput(); - } - else { - AddInputCommand command = new AddInputCommand(operation, null); - command.run(); - input = (Input) command.getWSDLElement(); - } - - if (style == AddBaseParameterCommand.PART_ELEMENT_SEQ_ELEMENT) { - part = createDocLitWrappedWSDLComponents(input); - } - else { - part = createWSDLComponents(input); - } - - newPart = part; - // Create necessary XSD Objects starting with the Part reference - if (createXSDObjects) - newXSDElement = createXSDObjects(part); - } - - protected Part createDocLitWrappedWSDLComponents(MessageReference messageRef) { - Message message = messageRef.getEMessage(); - Part part = null; - - if (reuseExistingMessage && message == null) { - // See if we can use an existing Message - Message existingMessage = null; - String messageName = getIdealMessageName(messageRef); - Iterator messages = messageRef.getEnclosingDefinition().getEMessages().iterator(); - while (messages.hasNext()) { - Message item = (Message) messages.next(); - QName itemName = item.getQName(); - if (itemName != null && itemName.getLocalPart() != null && messageName.equals(itemName.getLocalPart())) { - existingMessage = item; - break; - } - } - - if (existingMessage != null) { - if (existingMessage.getEParts().size() > 0) { - // See if existing Message has a Part referencing an XSD Element with the proper name - Part existingPart = (Part) existingMessage.getEParts().get(0); - if (!(existingPart.getName().equals(getDocLitWrappedPartName()))) { - message = null; - } - else { - XSDElementDeclaration existingElement = existingPart.getElementDeclaration(); - if (existingElement != null && existingElement.getName().equals(operation.getName())) { - // There is an existing XSD Element with the proper name - // See if the XSD Element has an anonymous type with a sequence and an XSD Element - W11FindInnerElementVisitor visitor = new W11FindInnerElementVisitor(); - XSDElementDeclaration innerElement = visitor.getInnerXSDElement(existingElement); - if (!innerElement.equals(existingElement)) { - // Found an existing inner XSD Element - createXSDObjects = false; - - // set the MessageReference --> Message reference - messageRef.setEMessage(existingMessage); - message = existingMessage; - } - } - } - } - } - } - - if (message == null || message.eContainer() == null) { - // Create Message - AddMessageCommand command = new AddMessageCommand(messageRef.getEnclosingDefinition(), getWSDLMessageName()); - command.run(); - message = (Message) command.getWSDLElement(); - messageRef.setEMessage(message); - } - - - if (message.getEParts().size() == 0) { - // Create Part - String partName = getDocLitWrappedPartName(); - AddPartCommand command = new AddPartCommand(message, partName); - command.run(); - part = (Part) command.getWSDLElement(); - } - else { - part = (Part) message.getEParts().get(0); - } - formatChild(message.getElement()); - - return part; - } - - protected String getAnonymousXSDElementBaseName() { - if (newAnonymousXSDElementName == null) { - if (this.style == AddBaseParameterCommand.PART_ELEMENT_SEQ_ELEMENT) { - newAnonymousXSDElementName = operation.getName(); - } - else { - newAnonymousXSDElementName = getWSDLPartName(); - } - } - - return newAnonymousXSDElementName; - } - - protected String getNewXSDElementBaseName() { - if (newXSDElementName == null) { - newXSDElementName = "in"; //$NON-NLS-1$ -// newXSDElementName = getWSDLPartName(); - } - - return newXSDElementName; - } - - protected String getWSDLMessageName() { - if (newWSDLMessageName == null) { - if (operation.getEInput() != null) { - newWSDLMessageName= NameUtil.getMessageName(operation.getEInput()); - } - } - - return newWSDLMessageName; - } - - protected String getWSDLPartName() { - if (newWSDLPartName == null) { - newWSDLPartName = NameUtil.getPartName(operation.getEInput()); - } - - return newWSDLPartName; - } - - protected XSDElementDeclaration createPartElementSeqElementPattern(Part part, XSDElementDeclaration partElement) { - XSDElementDeclaration returnedXSDElement = null; - - XSDElementDeclaration originalElement = null; - XSDElementDeclaration anonXSDElement = null; - - // Create the XSDElement (anonymous) referenced by the Part if necessary - if (partElement == null || partElement.getAnonymousTypeDefinition() == null) { - //Find an existing XSDElement to use if possible - XSDElementDeclaration existingElement = null; - String idealElementName = getAnonymousXSDElementBaseName(); - XSDSchema schema = XSDComponentHelper.getXSDSchema(part.getEnclosingDefinition()); - if (schema != null) { - Iterator it = schema.getElementDeclarations().iterator(); - while (existingElement == null && it.hasNext()) { - XSDElementDeclaration item = (XSDElementDeclaration) it.next(); - if (item.getName().equals(idealElementName)) { - // found an element we can use. Confirm it has a doc-lit-wrapped pattern - // See if the XSD Element has an anonymous type with a sequence and an XSD Element - existingElement = item; - - XSDTypeDefinition xsdType = item.getAnonymousTypeDefinition(); - if (xsdType != null) { - List contents = xsdType.eContents(); - if (contents.size() > 0 && contents.get(0) instanceof XSDParticle) { - XSDParticle particle = (XSDParticle) contents.get(0); - List particleContents = particle.eContents(); - if (particleContents.size() > 0 && particleContents.get(0) instanceof XSDModelGroup) { - XSDModelGroup modelGroup = (XSDModelGroup) particleContents.get(0); - List modelContents = modelGroup.eContents(); - if (modelContents.size() > 0 && modelContents.get(0) instanceof XSDParticle) { - XSDParticle innerParticle = (XSDParticle) modelContents.get(0); - List innerContents = innerParticle.eContents(); - if (innerContents.size() > 0 && innerContents.get(0) instanceof XSDElementDeclaration) { - // inner XSD Element exists - // reuse existing element - String prefixedName = getPrefixedComponentName(part.getEnclosingDefinition(), existingElement); - ComponentReferenceUtil.setComponentReference(part, false, prefixedName); - return existingElement; - } - } - } - } - } - } - } - } - - if (existingElement == null) { - anonXSDElement = XSDComponentHelper.createAnonymousXSDElementDefinition(getAnonymousXSDElementBaseName(), part); -// part.setElementDeclaration(anonXSDElement); - String prefixedName = getPrefixedComponentName(part.getEnclosingDefinition(), anonXSDElement); - ComponentReferenceUtil.setComponentReference(part, false, prefixedName); - part.setTypeDefinition(null); - - if (partElement != null && partElement.getSchema() != null) { - originalElement = partElement; - // Remove the 'original' XSDElement as a Global Element - partElement.getSchema().getContents().remove(partElement); - } - } - else { - anonXSDElement = existingElement; - // reuse existing element - String prefixedName = getPrefixedComponentName(part.getEnclosingDefinition(), existingElement); - ComponentReferenceUtil.setComponentReference(part, false, prefixedName); - } - } - else { - anonXSDElement = partElement; - } - - // Create a new XSDElement - XSDModelGroup modelGroup = XSDComponentHelper.getXSDModelGroup(anonXSDElement, part.getEnclosingDefinition()); - returnedXSDElement = XSDComponentHelper.createXSDElementDeclarationCommand(null, getNewXSDElementBaseName(), modelGroup); - - // Add the newly created XSDElement to the ModelGroup - XSDComponentHelper.addXSDElementToModelGroup(anonXSDElement, returnedXSDElement); - - // Add the 'original' XSDElement if it's type wasn't anonymous - if (originalElement != null) { - XSDComponentHelper.addXSDElementToModelGroup(anonXSDElement, originalElement); - } - formatChild(anonXSDElement.getElement()); - return returnedXSDElement; - } - - private String getIdealMessageName(MessageReference messageRef) { - String messageName = "NewMessage"; //$NON-NLS-1$ - messageName = operation.getName() + "Request"; //$NON-NLS-1$ - - return messageName; - } - - public MessageReference getMessageReference() { - return input; - } -} |