diff options
Diffstat (limited to 'bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/platform/wsdl/fragment/impl/XSDComplexFragment.java')
-rw-r--r-- | bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/platform/wsdl/fragment/impl/XSDComplexFragment.java | 338 |
1 files changed, 0 insertions, 338 deletions
diff --git a/bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/platform/wsdl/fragment/impl/XSDComplexFragment.java b/bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/platform/wsdl/fragment/impl/XSDComplexFragment.java deleted file mode 100644 index 45facb772..000000000 --- a/bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/platform/wsdl/fragment/impl/XSDComplexFragment.java +++ /dev/null @@ -1,338 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2002, 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 - * yyyymmdd bug Email and other contact information - * -------- -------- ----------------------------------------------------------- - * 20070305 117034 makandre@ca.ibm.com - Andrew Mak, Web Services Explorer should support SOAP Headers - * 20070516 185596 makandre@ca.ibm.com - Andrew Mak, Web Services Explorer misinterprets response message - *******************************************************************************/ -package org.eclipse.wst.ws.internal.explorer.platform.wsdl.fragment.impl; - -import java.util.Hashtable; -import java.util.Iterator; -import java.util.List; -import java.util.Vector; - -import org.eclipse.emf.common.util.EList; -import org.eclipse.wst.ws.internal.explorer.platform.wsdl.fragment.IXSDAttributeFragment; -import org.eclipse.wst.ws.internal.explorer.platform.wsdl.fragment.IXSDComplexFragment; -import org.eclipse.wst.ws.internal.explorer.platform.wsdl.fragment.IXSDFragment; -import org.eclipse.wst.ws.internal.explorer.platform.wsdl.fragment.XSDToFragmentConfiguration; -import org.eclipse.wst.ws.internal.explorer.platform.wsdl.fragment.XSDToFragmentController; -import org.eclipse.wst.ws.internal.explorer.platform.wsdl.fragment.util.XSDTypeDefinitionUtil; -import org.eclipse.xsd.XSDAttributeGroupDefinition; -import org.eclipse.xsd.XSDAttributeUse; -import org.eclipse.xsd.XSDComplexFinal; -import org.eclipse.xsd.XSDComplexTypeContent; -import org.eclipse.xsd.XSDComplexTypeDefinition; -import org.eclipse.xsd.XSDModelGroup; -import org.eclipse.xsd.XSDModelGroupDefinition; -import org.eclipse.xsd.XSDNamedComponent; -import org.eclipse.xsd.XSDParticle; -import org.eclipse.xsd.XSDParticleContent; -import org.eclipse.xsd.XSDTypeDefinition; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.NamedNodeMap; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; - -public abstract class XSDComplexFragment extends XSDMapFragment implements IXSDComplexFragment -{ - public XSDComplexFragment(String id, String name, XSDToFragmentConfiguration config, XSDToFragmentController controller) - { - super(id, name, config, controller); - } - - public boolean setParameterValuesFromInstanceDocuments(Element[] instanceDocuments) - { - Element[] instanceDocumentsCopy = getInstanceDocumentsByTagName(instanceDocuments, getName()); - boolean paramsValid = internalEquals(instanceDocumentsCopy, instanceDocuments); - XSDComplexTypeDefinition complexType = (XSDComplexTypeDefinition)getXSDTypeDefinition(); - XSDComplexTypeContent complexTypeContent = XSDTypeDefinitionUtil.getXSDComplexTypeContent(complexType); - if (complexTypeContent instanceof XSDTypeDefinition) - setParamsForXSDTypeDef(instanceDocumentsCopy); - else - setParamsForXSDParticle(instanceDocumentsCopy); - return setParamsForAttributes(instanceDocumentsCopy) && paramsValid; - } - - private boolean setParamsForAttributes(Element[] instanceDocuments){ - boolean paramsValid = true; - - String[] fragmentsOrder = getFragmentsOrder(); - IXSDAttributeFragment[] attributeFragments = getAllAttributeFragments(); - for (int i = 0; i < instanceDocuments.length; i++){ - - if (i >= fragmentsOrder.length) break; - String fragmentID = fragmentsOrder[i]; - - for (int k = 0; k < attributeFragments.length; k++){ - if(attributeFragments[k].getID().startsWith(fragmentID)){ - NamedNodeMap nodeMap = instanceDocuments[i].getAttributes(); - String name = ((XSDAttributeUse)attributeFragments[k].getXSDToFragmentConfiguration().getXSDComponent()).getAttributeDeclaration().getName(); - paramsValid = attributeFragments[k].getXSDDelegationFragment().setAttributeParamsFromInstanceDocuments(nodeMap.getNamedItem(name)); - } - } - } - return paramsValid; - } - - private boolean setParamsForXSDTypeDef(Element[] instanceDocuments) - { - boolean paramsValid = true; - removeAllFragments(); - removeAllAttributeFragments(); - for (int i = 0; i < instanceDocuments.length; i++) { - IXSDFragment childFrag = getFragment(createInstance()); - Element[] childInstanceDocuments = new Element[1]; - childInstanceDocuments[0] = instanceDocuments[i]; - if (!childFrag.setParameterValuesFromInstanceDocuments(setElementsTagName(childInstanceDocuments, childFrag.getName()))) - paramsValid = false; - } - return paramsValid; - } - - private boolean setParamsForXSDParticle(Element[] instanceDocuments) - { - boolean paramsValid = true; - removeAllFragments(); - removeAllAttributeFragments(); - for (int i = 0; i < instanceDocuments.length; i++) { - IXSDFragment childFrag = getFragment(createInstance()); - Vector instancesVector = new Vector(); - NodeList nl = instanceDocuments[i].getChildNodes(); - for (int j = 0; j < nl.getLength(); j++) - { - Node node = nl.item(j); - if (node instanceof Element) - instancesVector.add(node); - else - paramsValid = false; - } - Element[] childInstanceDocuments = new Element[instancesVector.size()]; - instancesVector.copyInto(childInstanceDocuments); - if (!childFrag.setParameterValuesFromInstanceDocuments(childInstanceDocuments)) - paramsValid = false; - } - return paramsValid; - } - - public Element[] genInstanceDocumentsFromParameterValues(boolean genXSIType, Hashtable namespaceTable, Document doc) - { - XSDComplexTypeDefinition complexType = (XSDComplexTypeDefinition)getXSDTypeDefinition(); - XSDComplexTypeContent complexTypeContent = XSDTypeDefinitionUtil.getXSDComplexTypeContent(complexType); - Element[] instanceDocuments; - String tagName = getInstanceDocumentTagName(namespaceTable); - if (complexTypeContent instanceof XSDTypeDefinition) - instanceDocuments = genInstancesForXSDTypeDef(genXSIType, namespaceTable, tagName, doc); - else - instanceDocuments = genInstancesForXSDParticle(genXSIType, namespaceTable, tagName, doc); - if(genXSIType) addXSIType(instanceDocuments, namespaceTable); - instanceDocuments = addAttributes(instanceDocuments); - return instanceDocuments; - } - - private Element[] addAttributes(Element[] instanceDocuments){ - - String[] fragmentsOrder = getFragmentsOrder(); - IXSDAttributeFragment[] attributeFragments = getAllAttributeFragments(); - for (int i = 0;i< instanceDocuments.length;i++){ - - if (i >= fragmentsOrder.length) break; - String fragmentID = fragmentsOrder[i]; - - for (int k = 0; k < attributeFragments.length; k++){ - if(attributeFragments[k].getID().startsWith(fragmentID)){ - String name = ((XSDAttributeUse)attributeFragments[k].getXSDToFragmentConfiguration().getXSDComponent()).getAttributeDeclaration().getName(); - attributeFragments[k].getXSDDelegationFragment().setAttributesOnInstanceDocuments(instanceDocuments[i],name); - } - } - } - return instanceDocuments; - } - - private Element[] genInstancesForXSDTypeDef(boolean genXSIType, Hashtable namespaceTable, String tagName, Document doc) - { - IXSDFragment[] fragments = getAllFragments(); - Vector instanceDocumentsCopy = new Vector(); - for (int i = 0; i < fragments.length; i++) - { - Element[] fragmentInstances = fragments[i].genInstanceDocumentsFromParameterValues(genXSIType, namespaceTable, doc); - if (fragmentInstances.length > 0) - instanceDocumentsCopy.add(fragmentInstances[0]); - } - Element[] instanceDocuments = new Element[instanceDocumentsCopy.size()]; - for (int i = 0; i < instanceDocuments.length; i++) - { - instanceDocuments[i] = (Element)instanceDocumentsCopy.get(i); - } - return setElementsTagName(instanceDocuments, tagName); - } - - private Element[] genInstancesForXSDParticle(boolean genXSIType, Hashtable namespaceTable, String tagName, Document doc) - { - IXSDFragment[] childFrags = getAllFragments(); - Element[] instanceDocuments = new Element[childFrags.length]; - for (int i = 0; i < instanceDocuments.length; i++) - { - Element[] childInstances = childFrags[i].genInstanceDocumentsFromParameterValues(genXSIType, namespaceTable, doc); - Element instanceDocument = doc.createElement(tagName); - for (int j = 0; j < childInstances.length; j++) - { - if (childInstances[j] != null) - instanceDocument.appendChild(childInstances[j]); - } - instanceDocuments[i] = instanceDocument; - } - return instanceDocuments; - } - - private XSDModelGroup getXSDModelGroup(XSDParticle xsdParticle) - { - if (xsdParticle != null) - { - XSDParticleContent xsdParticleContent = xsdParticle.getContent(); - if (xsdParticleContent != null) - { - if (xsdParticleContent instanceof XSDModelGroupDefinition) - { - XSDModelGroupDefinition xsdModelGroupDef = (XSDModelGroupDefinition)xsdParticleContent; - if (xsdModelGroupDef.isModelGroupDefinitionReference()) - xsdModelGroupDef = xsdModelGroupDef.getResolvedModelGroupDefinition(); - return xsdModelGroupDef.getModelGroup(); - } - else if (xsdParticleContent instanceof XSDModelGroup) - return (XSDModelGroup)xsdParticleContent; - } - } - return null; - } - - private List getInheritedParticles(XSDComplexTypeDefinition complexType) - { - Vector v = new Vector(); - if (complexType.getDerivationMethod().getValue() == XSDComplexFinal.EXTENSION) - { - XSDTypeDefinition extType = complexType.getBaseType(); - if (extType != null && !(extType instanceof XSDComplexTypeDefinition)) - { - String namespace = extType.getTargetNamespace(); - String localname = extType.getName(); - if (namespace != null && localname != null) - { - XSDNamedComponent xsdNamedComp = getXSDToFragmentController().getWSDLPartsToXSDTypeMapper().getXSDTypeFromSchema(namespace, localname, false); - if (xsdNamedComp instanceof XSDComplexTypeDefinition) - { - extType = (XSDComplexTypeDefinition)xsdNamedComp; - } - } - } - if (extType != null && extType != complexType && extType instanceof XSDComplexTypeDefinition) - { - XSDComplexTypeContent extTypeContent = XSDTypeDefinitionUtil.getXSDComplexTypeContent((XSDComplexTypeDefinition)extType); - if (extTypeContent instanceof XSDParticle) - { - XSDModelGroup xsdModelGroup = getXSDModelGroup((XSDParticle)extTypeContent); - if (xsdModelGroup != null) - { - v.addAll(getInheritedParticles((XSDComplexTypeDefinition)extType)); - v.addAll(xsdModelGroup.getParticles()); - } - } - } - } - return v; - } - - private void gatherInheritedParticles(XSDComplexTypeDefinition complexType) - { - if (complexType.getDerivationMethod().getValue() == XSDComplexFinal.EXTENSION) - { - XSDComplexTypeContent complexTypeContent = XSDTypeDefinitionUtil.getXSDComplexTypeContent(complexType); - if (complexTypeContent instanceof XSDParticle) - { - XSDModelGroup xsdModelGroup = getXSDModelGroup((XSDParticle)complexTypeContent); - if (xsdModelGroup != null) - { - List inheritedParticles = getInheritedParticles(complexType); - List particles = xsdModelGroup.getParticles(); - particles.addAll(0, inheritedParticles); - } - } - } - } - - - - public IXSDAttributeFragment[] getAllAttributeFragments() - { - return super.getAllAttributeFragments(); - - } - - public void createAttributeFragments(String complexChildID) - { - XSDComplexTypeDefinition complexType = (XSDComplexTypeDefinition)getXSDTypeDefinition(); - EList atContentList = complexType.getAttributeContents(); - Iterator iterator = atContentList.iterator(); - while(iterator.hasNext()){ - Object object = (Object)iterator.next(); - if(object instanceof XSDAttributeGroupDefinition){ - XSDAttributeGroupDefinition xsdAGD = (XSDAttributeGroupDefinition)object; - XSDAttributeGroupDefinition resolved = xsdAGD.getResolvedAttributeGroupDefinition(); - EList aList = resolved.getContents(); - Iterator iterator2 = aList.iterator(); - while(iterator2.hasNext()){ - createAttributeHelper((XSDAttributeUse)iterator2.next(),complexChildID); - } - } - else{ - XSDAttributeUse attUse = (XSDAttributeUse)object; - createAttributeHelper(attUse,complexChildID); - } - - } - } - - private void createAttributeHelper(XSDAttributeUse attUse,String complexChildID){ - XSDToFragmentConfiguration thisConfig = getXSDToFragmentConfiguration(); - XSDToFragmentConfiguration xsdConfig = new XSDToFragmentConfiguration(); - xsdConfig.setXSDComponent(attUse); - xsdConfig.setStyle(thisConfig.getStyle()); - xsdConfig.setPartEncoding(thisConfig.getPartEncoding()); - xsdConfig.setWSDLPartName(thisConfig.getWSDLPartName()); - String newID = genID(); - addAttributeFragment(complexChildID + newID, getXSDToFragmentController().getFragment(xsdConfig,complexChildID + newID, complexChildID + newID)); - - } - - - public String createComplexInstance() - { - XSDComplexTypeDefinition complexType = (XSDComplexTypeDefinition)getXSDTypeDefinition(); - gatherInheritedParticles(complexType); - XSDComplexTypeContent complexTypeContent = XSDTypeDefinitionUtil.getXSDComplexTypeContent(complexType); - XSDToFragmentConfiguration thisConfig = getXSDToFragmentConfiguration(); - XSDToFragmentConfiguration xsdConfig = new XSDToFragmentConfiguration(); - xsdConfig.setXSDComponent(complexTypeContent); - xsdConfig.setStyle(thisConfig.getStyle()); - xsdConfig.setPartEncoding(thisConfig.getPartEncoding()); - xsdConfig.setWSDLPartName(thisConfig.getWSDLPartName()); - String newID = genID(); - addFragment(newID, getXSDToFragmentController().getFragment(xsdConfig, newID, getName())); - createAttributeFragments(newID); - return newID; - } - - public String createInstance() - { - return createComplexInstance(); - } -} |