Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/commands/AddBaseParameterCommand.java')
-rw-r--r--bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/commands/AddBaseParameterCommand.java558
1 files changed, 0 insertions, 558 deletions
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/commands/AddBaseParameterCommand.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/commands/AddBaseParameterCommand.java
deleted file mode 100644
index cd587c179..000000000
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/commands/AddBaseParameterCommand.java
+++ /dev/null
@@ -1,558 +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.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.wst.sse.core.internal.format.IStructuredFormatProcessor;
-import org.eclipse.wst.wsdl.Definition;
-import org.eclipse.wst.wsdl.Fault;
-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.Output;
-import org.eclipse.wst.wsdl.Part;
-import org.eclipse.wst.wsdl.PortType;
-import org.eclipse.wst.wsdl.WSDLElement;
-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.wst.xml.core.internal.provisional.document.IDOMModel;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-import org.eclipse.wst.xml.core.internal.provisional.format.FormatProcessorXML;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDModelGroup;
-import org.eclipse.xsd.XSDNamedComponent;
-import org.eclipse.xsd.XSDParticle;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.XSDTypeDefinition;
-import org.w3c.dom.Element;
-
-public abstract class AddBaseParameterCommand {
- public static int PART_ELEMENT_SEQ_ELEMENT = 0;
- public static int PART_ELEMENT = 1;
- public static int PART_COMPLEXTYPE_SEQ_ELEMENT = 2;
- public static int PART_COMPLEXTYPE = 3;
- public static int PART_SIMPLETYPE = 4;
-
- protected int style = 0;
- protected Operation operation;
- protected XSDElementDeclaration newXSDElement;
- protected Part newPart;
-
- protected String newAnonymousXSDElementName;
- protected String newXSDElementName;
- protected String newWSDLMessageName;
- protected String newWSDLPartName;
-
- public abstract void run();
- public abstract MessageReference getMessageReference();
-
- public AddBaseParameterCommand(Operation operation, int style) {
- this.operation = operation;
- this.style = style;
- }
-
- public void setStyle(int style) {
- this.style = style;
- }
-
- public XSDElementDeclaration getXSDElementDeclaration() {
- return newXSDElement;
- }
-
- protected boolean isPartElementReference() {
- if (style == PART_ELEMENT || style == PART_ELEMENT_SEQ_ELEMENT) {
- return true;
- }
-
- return false;
- }
-
- 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 || partElement.getSchema() == 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 = partElement;
- }
-
- // Add the 'original' XSDElement if it's type wasn't anonymous
- if (originalElement != null) {
- XSDComponentHelper.addXSDElementToModelGroup(anonXSDElement, originalElement);
- }
-
- // 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);
-
- formatChild(anonXSDElement.getElement());
- return returnedXSDElement;
- }
-
- protected XSDElementDeclaration createPartElementReferenceComponents(Part part) {
- XSDElementDeclaration returnedXSDElement = null;
- XSDElementDeclaration partElement = part.getElementDeclaration();
-
- if (style == PART_ELEMENT_SEQ_ELEMENT) {
- returnedXSDElement = createPartElementSeqElementPattern(part, partElement);
- }
- else if (style == PART_ELEMENT) {
- if (partElement == null) {
- returnedXSDElement = XSDComponentHelper.createXSDElementDeclarationCommand(part.getEnclosingDefinition(), getNewXSDElementBaseName(), part);
- if (returnedXSDElement != null && !returnedXSDElement.equals(part.getElementDeclaration())) {
-// part.setElementDeclaration(returnedXSDElement);
- String prefixedName = getPrefixedComponentName(part.getEnclosingDefinition(), returnedXSDElement);
- ComponentReferenceUtil.setComponentReference(part, false, prefixedName);
- }
- }
- else {
- returnedXSDElement = createPartElementSeqElementPattern(part, partElement);
- }
- }
-
- return returnedXSDElement;
- }
-
- protected XSDElementDeclaration createPartComplexTypeReference(Part part) {
- XSDElementDeclaration returnedXSDElement = null;
-
- if (style == PART_COMPLEXTYPE_SEQ_ELEMENT) {
- XSDTypeDefinition originalType = null;
- XSDComplexTypeDefinition topLevelType = null;
-
- // Create the ComplexType referenced by the Part if necessary
- if (part.getTypeDefinition() == null || part.getTypeDefinition() instanceof XSDSimpleTypeDefinition) {
- XSDSchema schema = XSDComponentHelper.getXSDSchema(part.getEnclosingDefinition());
- String topLevelName = NameUtil.getXSDComplexTypeName(part.getName(), schema);
- topLevelType = XSDComponentHelper.createXSDComplexTypeDefiniion(topLevelName, part);
-
- if (part.getTypeDefinition() instanceof XSDSimpleTypeDefinition) {
- originalType = part.getTypeDefinition();
- }
- }
- else if (part.getTypeDefinition() instanceof XSDComplexTypeDefinition){
- topLevelType = (XSDComplexTypeDefinition) part.getTypeDefinition();
- }
-
- // Create a new XSDElement
- XSDModelGroup modelGroup = XSDComponentHelper.getXSDModelGroup(topLevelType);
- returnedXSDElement = XSDComponentHelper.createXSDElementDeclarationCommand(null, getNewXSDElementBaseName(), modelGroup);
-
- // Add the 'original' XSDElement if it's type wasn't anonymous
- if (originalType != null) {
- // Create another new XSDElement to 'contain' the originally referenced XSDSimpleType
- XSDElementDeclaration origXSDElement = XSDComponentHelper.createXSDElementDeclarationCommand(null, getNewXSDElementBaseName(), modelGroup);
- origXSDElement.setTypeDefinition(originalType);
- }
-
- // Change Part reference
-// part.setTypeDefinition(topLevelType);
- String prefixedName = getPrefixedComponentName(part.getEnclosingDefinition(), topLevelType);
- ComponentReferenceUtil.setComponentReference(part, true, prefixedName);
- formatChild(topLevelType.getElement());
- }
- else if (style == PART_COMPLEXTYPE) {
- XSDComplexTypeDefinition complexType = null;
- if (part.getTypeDefinition() == null) {
- // Create a new ComplexType
- XSDSchema schema = XSDComponentHelper.getXSDSchema(part.getEnclosingDefinition());
- String complexName = NameUtil.getXSDComplexTypeName(part.getName(), schema);
- complexType = XSDComponentHelper.createXSDComplexTypeDefiniion(complexName, part);
-
- // Create an XSDElement for the ComplexType
- XSDModelGroup xsdModelGroup = XSDComponentHelper.getXSDModelGroup(complexType);
- returnedXSDElement = XSDComponentHelper.createXSDElementDeclarationCommand(null, getNewXSDElementBaseName(), xsdModelGroup);
- }
- else {
- // TODO: What should we do here..... We can default to the PART_ELEMENT_SEQ_ELEMENT style
- // since it handles 'multiple' XSDElements.... OR ..... we can 'overwrite and set a new
- // XSDElement
- }
-
- if (complexType != null && !complexType.equals(part.getTypeDefinition())) {
-// part.setTypeDefinition(complexType);
- String prefixedName = getPrefixedComponentName(part.getEnclosingDefinition(), complexType);
- ComponentReferenceUtil.setComponentReference(part, true, prefixedName);
- formatChild(complexType.getElement());
- }
- }
-
- return returnedXSDElement;
- }
- /*
- * Create if necessary a Message and Part for the given MessageReference
- * and return it's Part
- */
- protected Part createWSDLComponents(MessageReference messageRef) {
- Message message = messageRef.getEMessage();
- Part part = null;
-
- 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 = getWSDLPartName();
- if (style == PART_ELEMENT_SEQ_ELEMENT) {
- partName = getDocLitWrappedPartName();
- }
- AddPartCommand command = new AddPartCommand(message, partName);
- command.run();
- part = (Part) command.getWSDLElement();
- }
- else {
- // there is an existing Part
-// part = (Part) message.getEParts().get(0);
- }
- formatChild(message.getElement());
-
- return part;
- }
-
- protected String getDocLitWrappedPartName() {
- return "parameters"; //$NON-NLS-1$
- }
-
- protected XSDElementDeclaration createXSDObjects(Part part) {
- XSDElementDeclaration returnedXSDElement = null;
- if (isPartElementReference()) {
- // Is a Part --> Element reference
- if (part == null && getMessageReference() != null && getMessageReference().getEMessage() != null) {
- part = (Part) getMessageReference().getEMessage().getEParts().get(0);
- }
-
- returnedXSDElement = createPartElementReferenceComponents(part);
- }
- else {
- // Is a Part --> Complex Type reference
-// returnedXSDElement = createPartComplexTypeReference(part);
-
- // If it's a Part --> Type reference, adding a new parameter always means adding a new Part
- // with a string reference. Because of this case, we should really rename this method instead
- // of createXSDObjects() since we may end up creating a Part.
- if (part == null && getMessageReference() != null && getMessageReference().getEMessage() != null) {
- List partNames = new ArrayList();
- Message message = getMessageReference().getEMessage();
- Iterator it = message.getEParts().iterator();
- while (it.hasNext()) {
- Part item = (Part) it.next();
- partNames.add(item.getName());
- }
- String partName = NameUtil.getUniqueNameHelper(getWSDLPartName(), partNames);
- AddPartCommand command = new AddPartCommand(message, partName);
- command.run();
- newPart = (Part) command.getWSDLElement();
- }
- }
-
- return returnedXSDElement;
- }
-
- protected String getPrefixedComponentName(Definition definition, XSDNamedComponent component) {
- String name = component.getName();
- String tns = component.getTargetNamespace();
- List prefixes = getPrefixes(definition, tns);
- if (prefixes.size() > 0) {
- name = prefixes.get(0) + ":" + name; //$NON-NLS-1$
- }
-
- return name;
- }
-
- private List getPrefixes(Definition definition, String namespace) {
- List list = new ArrayList();
- Map map = definition.getNamespaces();
- for (Iterator i = map.keySet().iterator(); i.hasNext();) {
- String prefix = (String) i.next();
- String theNamespace = (String) map.get(prefix);
- if (theNamespace != null && theNamespace.equals(namespace)) {
- list.add(prefix);
- }
- }
- return list;
- }
-
- public static int getParameterPattern(WSDLElement element) {
- int pattern = -1;
-
- if (element instanceof Operation) {
- pattern = getPattern((Operation) element);
-
- PortType pt = (PortType) ((Operation) element).getContainer();
- if (pattern == -1) {
- // let's try to search other Operations in the same PortType
- Iterator opIt = pt.getEOperations().iterator();
- while (pattern == -1 && opIt.hasNext()) {
- Operation item = (Operation) opIt.next();
- if (!item.equals(element)) {
- pattern = getPattern(item);
- }
- }
- }
-
- if (pattern == -1) {
- // let's try to search other Operations in OTHER PortTypes
- Iterator ptIt = pt.getEnclosingDefinition().getEPortTypes().iterator();
- while (pattern == -1 && ptIt.hasNext()) {
- PortType item = (PortType) ptIt.next();
- if (!item.equals(pt)) {
- pattern = getPattern(item);
- }
- }
- }
- }
- else if (element instanceof PortType) {
- PortType pt = (PortType) element;
- pattern = getPattern(pt);
-
- if (pattern == -1) {
- // let's try to search other Operations in OTHER PortTypes
- Iterator ptIt = pt.getEnclosingDefinition().getEPortTypes().iterator();
- while (pattern == -1 && ptIt.hasNext()) {
- PortType item = (PortType) ptIt.next();
- if (!item.equals(pt)) {
- pattern = getPattern(item);
- }
- }
- }
- }
-
- if (pattern == -1) {
- pattern = AddBaseParameterCommand.PART_ELEMENT_SEQ_ELEMENT;
- }
-
- return pattern;
- }
-
- public static int getParameterPattern(WSDLElement element, boolean useInput) {
- int pattern = -1;
-
- if (element instanceof Operation) {
- Operation op = (Operation) element;
- if (useInput && op.getEInput() != null) {
- pattern = getPattern(op.getEInput().getEMessage());
- }
- if (!useInput && op.getEOutput() != null){
- pattern = getPattern(op.getEOutput().getEMessage());
- }
-
- PortType pt = (PortType) op.getContainer();
- if (pattern == -1) {
- // let's try to search other Operations in the same PortType
- Iterator opIt = pt.getEOperations().iterator();
- while (pattern == -1 && opIt.hasNext()) {
- Operation item = (Operation) opIt.next();
- if (!item.equals(element)) {
- if (useInput && item.getEInput() != null) {
- pattern = getPattern(item.getEInput().getEMessage());
- }
- if (!useInput && item.getEOutput() != null){
- pattern = getPattern(item.getEOutput().getEMessage());
- }
- }
- }
- }
-
- if (pattern == -1) {
- // let's try to search other Operations in OTHER PortTypes
- Iterator ptIt = pt.getEnclosingDefinition().getEPortTypes().iterator();
- while (pattern == -1 && ptIt.hasNext()) {
- PortType item = (PortType) ptIt.next();
- if (!item.equals(pt)) {
- pattern = getPattern(item, useInput);
- }
- }
- }
- }
- else if (element instanceof PortType) {
- PortType pt = (PortType) element;
- pattern = getPattern(pt, useInput);
-
- if (pattern == -1) {
- // let's try to search other Operations in OTHER PortTypes
- Iterator ptIt = pt.getEnclosingDefinition().getEPortTypes().iterator();
- while (pattern == -1 && ptIt.hasNext()) {
- PortType item = (PortType) ptIt.next();
- if (!item.equals(pt)) {
- pattern = getPattern(item, useInput);
- }
- }
- }
- }
-
- return pattern;
- }
-
- private static int getPattern(PortType portType) {
- int pattern = -1;
- Iterator opIt = portType.getEOperations().iterator();
- while (pattern == -1 && opIt.hasNext()) {
- Operation op = (Operation) opIt.next();
- pattern = getPattern(op);
- }
-
- return pattern;
- }
-
- private static int getPattern(PortType portType, boolean useInput) {
- int pattern = -1;
- Iterator opIt = portType.getEOperations().iterator();
- while (pattern == -1 && opIt.hasNext()) {
- Operation op = (Operation) opIt.next();
- if (useInput && op.getEInput() != null) {
- pattern = getPattern(op.getEInput().getEMessage());
- }
- if (!useInput && op.getEOutput() != null) {
- pattern = getPattern(op.getEOutput().getEMessage());
- }
- }
-
- return pattern;
- }
-
- private static int getPattern(Operation operation) {
- int pattern = -1;
-
- Input input = operation.getEInput();
- Output output = operation.getEOutput();
- List faults = operation.getEFaults();
-
- if (input != null) {
- pattern = getPattern(input.getEMessage());
- }
-
- if (pattern == -1 && output != null) {
- pattern = getPattern(output.getEMessage());
- }
-
- if (pattern == -1 && faults.size() > 0) {
- Iterator faultIt = faults.iterator();
- while (pattern == -1 && faultIt.hasNext()) {
- Fault fault = (Fault) faultIt.next();
- pattern = getPattern(fault.getEMessage());
- }
- }
-
- return pattern;
- }
-
- private static int getPattern(Message message) {
- int pattern = -1;
- if (message != null) {
- Iterator parts = message.getEParts().iterator();
- while (parts.hasNext()) {
- Part part = (Part) parts.next();
- if (part.getElementDeclaration() != null) {
- pattern = AddBaseParameterCommand.PART_ELEMENT;
-
- XSDElementDeclaration xsdElement = part.getElementDeclaration();
- if (isSequencePattern(xsdElement.getTypeDefinition())) {
- pattern = AddBaseParameterCommand.PART_ELEMENT_SEQ_ELEMENT;
- }
- break;
- }
- else if (part.getTypeDefinition() != null) {
- pattern = AddBaseParameterCommand.PART_SIMPLETYPE;
-
- if (part.getTypeDefinition() instanceof XSDComplexTypeDefinition) {
- pattern = AddBaseParameterCommand.PART_COMPLEXTYPE;
-
- XSDComplexTypeDefinition xsdType = (XSDComplexTypeDefinition) part.getTypeDefinition();
- if (isSequencePattern(xsdType)) {
- pattern = AddBaseParameterCommand.PART_COMPLEXTYPE_SEQ_ELEMENT;
- }
- }
- break;
- }
- }
- }
-
- return pattern;
- }
-
- private static boolean isSequencePattern(XSDTypeDefinition type) {
- boolean isSequencePattern = false;
-
- if (type instanceof XSDComplexTypeDefinition) {
- XSDComplexTypeDefinition complexType = (XSDComplexTypeDefinition) type;
-
- if (complexType.getContent() instanceof XSDParticle) {
- XSDParticle particle = (XSDParticle) complexType.getContent();
- if (particle.getContent() instanceof XSDModelGroup) {
- isSequencePattern = true;
- }
- }
- }
-
- return isSequencePattern;
- }
-
- protected void formatChild(Element child)
- {
- if (child instanceof IDOMNode)
- {
- IDOMModel model = ((IDOMNode)child).getModel();
- try
- {
- // tell the model that we are about to make a big model change
- model.aboutToChangeModel();
-
- IStructuredFormatProcessor formatProcessor = new FormatProcessorXML();
- formatProcessor.formatNode(child);
- }
- finally
- {
- // tell the model that we are done with the big model change
- model.changedModel();
- }
- }
- }
-
- public Part getNewlyAddedComponentPart() {
- return newPart;
- }
-
- protected abstract String getAnonymousXSDElementBaseName();
- protected abstract String getNewXSDElementBaseName();
- protected abstract String getWSDLMessageName();
- protected abstract String getWSDLPartName();
-}

Back to the top