/******************************************************************************* * Copyright (c) 2001, 2005 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.jst.j2ee.internal.model.translator.webservices; import org.eclipse.jst.j2ee.common.CommonPackage; import org.eclipse.jst.j2ee.internal.J2EEConstants; import org.eclipse.jst.j2ee.internal.model.translator.common.CommonTranslators; import org.eclipse.jst.j2ee.webservice.internal.WebServiceConstants; import org.eclipse.jst.j2ee.webservice.jaxrpcmap.JaxrpcmapPackage; import org.eclipse.wst.common.internal.emf.resource.ConstantAttributeTranslator; import org.eclipse.wst.common.internal.emf.resource.GenericTranslator; import org.eclipse.wst.common.internal.emf.resource.IDTranslator; import org.eclipse.wst.common.internal.emf.resource.RootTranslator; import org.eclipse.wst.common.internal.emf.resource.Translator; public class JaxrpcmapTranslator extends RootTranslator implements JaxrpcmapXmlMapperI, J2EEConstants{ public static JaxrpcmapTranslator INSTANCE = new JaxrpcmapTranslator(); private static Translator[] children10; private static Translator[] children11; private JaxrpcmapPackage jaxrpcmapPackage; private CommonPackage commonPackage; protected JaxrpcmapTranslator() { super(JAVA_WSDL_MAPPING, JaxrpcmapPackage.eINSTANCE.getJavaWSDLMapping()); } /* (non-Javadoc) * @see com.ibm.etools.emf2xml.impl.Translator#getChildren(java.lang.Object, int) */ @Override public Translator[] getChildren(Object o, int versionID) { jaxrpcmapPackage = JaxrpcmapPackage.eINSTANCE; commonPackage = CommonPackage.eINSTANCE; switch (versionID) { case (J2EE_1_2_ID) : case (J2EE_1_3_ID) : if (children10 == null) { children10 = create10Children(); } return children10; default : if (children11 == null) { children11 = create11Children(); } return children11; } } protected Translator[] create10Children() { return new Translator[] { IDTranslator.INSTANCE, createPackageMappingTranslator(), create10JavaXMLTypeMappingTranslator(), create10ExceptionMappingTranslator(), new InterfaceMappingTranslator() }; } protected Translator[] create11Children() { return new Translator[] { IDTranslator.INSTANCE, new ConstantAttributeTranslator(XML_NS, J2EE_NS_URL), new ConstantAttributeTranslator(XML_NS_XSI, XSI_NS_URL), new ConstantAttributeTranslator(XSI_SCHEMA_LOCATION, J2EE_NS_URL+' '+WebServiceConstants.JAXRPCMAP_SCHEMA_LOC), new ConstantAttributeTranslator(VERSION, WebServiceConstants.WEBSERVICE_SCHEMA_VERSION_1_1), createPackageMappingTranslator(), create11JavaXMLTypeMappingTranslator(), create11ExceptionMappingTranslator(), new InterfaceMappingTranslator() }; } public Translator createPackageMappingTranslator() { GenericTranslator result = new GenericTranslator(PACKAGE_MAPPING, jaxrpcmapPackage.getJavaWSDLMapping_PackageMappings()); result.setChildren(new Translator[] { IDTranslator.INSTANCE, new Translator(PACKAGE_TYPE, jaxrpcmapPackage.getPackageMapping_PackageType()), new Translator(NAMESPACEURI, jaxrpcmapPackage.getPackageMapping_NamespaceURI()) }); return result; } public Translator create10JavaXMLTypeMappingTranslator() { GenericTranslator result = new GenericTranslator(JAVA_XML_TYPE_MAPPING, jaxrpcmapPackage.getJavaWSDLMapping_JavaXMLTypeMappings()); result.setChildren(new Translator[] { IDTranslator.INSTANCE, new Translator(CLASS_TYPE, jaxrpcmapPackage.getJavaXMLTypeMapping_ClassType()), create10RootTypeQnameTranslator(), new Translator(QNAME_SCOPE, jaxrpcmapPackage.getJavaXMLTypeMapping_QnameScope()), create10VariableMappingTranslator() }); return result; } public Translator create11JavaXMLTypeMappingTranslator() { GenericTranslator result = new GenericTranslator(JAVA_XML_TYPE_MAPPING, jaxrpcmapPackage.getJavaWSDLMapping_JavaXMLTypeMappings()); result.setChildren(new Translator[] { IDTranslator.INSTANCE, new Translator(JAVA_TYPE, jaxrpcmapPackage.getJavaXMLTypeMapping_ClassType()), new Translator(ANONYMOUS_TYPE_QNAME, jaxrpcmapPackage.getJavaXMLTypeMapping_AnonymousTypeQname()), CommonTranslators.createQNameTranslator(ROOT_TYPE_QNAME, jaxrpcmapPackage.getJavaXMLTypeMapping_RootTypeQname()), //create10RootTypeQnameTranslator(), //RootTypeQName is still going to work the old (1.3) way because of anonymous types. new Translator(QNAME_SCOPE, jaxrpcmapPackage.getJavaXMLTypeMapping_QnameScope()), create11VariableMappingTranslator() }); return result; } public Translator create10ExceptionMappingTranslator() { GenericTranslator result = new GenericTranslator(EXCEPTION_MAPPING, jaxrpcmapPackage.getJavaWSDLMapping_ExceptionMappings()); result.setChildren(new Translator[] { IDTranslator.INSTANCE, new Translator(EXCEPTION_TYPE, jaxrpcmapPackage.getExceptionMapping_ExceptionType()), create10WSDLMessageTranslator(), createConstructorParamOrderTranslator() }); return result; } public Translator create11ExceptionMappingTranslator() { GenericTranslator result = new GenericTranslator(EXCEPTION_MAPPING, jaxrpcmapPackage.getJavaWSDLMapping_ExceptionMappings()); result.setChildren(new Translator[] { IDTranslator.INSTANCE, new Translator(EXCEPTION_TYPE, jaxrpcmapPackage.getExceptionMapping_ExceptionType()), CommonTranslators.createQNameTranslator(WSDL_MESSAGE, jaxrpcmapPackage.getExceptionMapping_WsdlMessage()), new Translator(WSDL_MESSAGE_PART_NAME, jaxrpcmapPackage.getExceptionMapping_WsdlMessagePartName()), createConstructorParamOrderTranslator() }); return result; } public Translator createInterfaceMappingTranslator() { GenericTranslator result = new GenericTranslator(SERVICE_INTERFACE_MAPPING, jaxrpcmapPackage.getJavaWSDLMapping()); result.setChildren(new Translator[] { IDTranslator.INSTANCE, new Translator(PACKAGE_TYPE, jaxrpcmapPackage.getPackageMapping_PackageType()), new Translator(NAMESPACEURI, jaxrpcmapPackage.getPackageMapping_NamespaceURI()) }); return result; } public Translator create10RootTypeQnameTranslator() { GenericTranslator result = new GenericTranslator(ROOT_TYPE_QNAME, jaxrpcmapPackage.getJavaXMLTypeMapping_RootTypeQname()); result.setChildren(new Translator[] { IDTranslator.INSTANCE, new Translator(NAMESPACEURI, commonPackage.getQName_NamespaceURI()), new Translator(LOCALPART, commonPackage.getQName_LocalPart()) }); return result; } public Translator create10VariableMappingTranslator() { GenericTranslator result = new GenericTranslator(VARIABLE_MAPPING, jaxrpcmapPackage.getJavaXMLTypeMapping_VariableMappings()); result.setChildren(new Translator[] { IDTranslator.INSTANCE, new Translator(JAVA_VARIABLE_NAME, jaxrpcmapPackage.getVariableMapping_JavaVariableName()), new Translator(DATA_MEMBER, jaxrpcmapPackage.getVariableMapping_DataMember(), Translator.EMPTY_TAG), new Translator(XML_ELEMENT_NAME, jaxrpcmapPackage.getVariableMapping_XmlElementName()) }); return result; } public Translator create11VariableMappingTranslator() { GenericTranslator result = new GenericTranslator(VARIABLE_MAPPING, jaxrpcmapPackage.getJavaXMLTypeMapping_VariableMappings()); result.setChildren(new Translator[] { IDTranslator.INSTANCE, new Translator(JAVA_VARIABLE_NAME, jaxrpcmapPackage.getVariableMapping_JavaVariableName()), new Translator(DATA_MEMBER, jaxrpcmapPackage.getVariableMapping_DataMember(), Translator.EMPTY_TAG), new Translator(XML_ATTRIBUTE_NAME, jaxrpcmapPackage.getVariableMapping_XmlAttributeName()), new Translator(XML_ELEMENT_NAME, jaxrpcmapPackage.getVariableMapping_XmlElementName()), new Translator(XML_WILDCARD, jaxrpcmapPackage.getVariableMapping_XmlWildcard(), Translator.EMPTY_TAG) }); return result; } public Translator create10WSDLMessageTranslator() { GenericTranslator result = new GenericTranslator(WSDL_MESSAGE, jaxrpcmapPackage.getExceptionMapping_WsdlMessage()); result.setChildren(new Translator[] { IDTranslator.INSTANCE, new Translator(NAMESPACEURI, commonPackage.getQName_NamespaceURI()), new Translator(LOCALPART, commonPackage.getQName_LocalPart()) }); return result; } public Translator createConstructorParamOrderTranslator() { GenericTranslator result = new GenericTranslator(CONSTRUCTOR_PARAMETER_ORDER, jaxrpcmapPackage.getExceptionMapping_ConstructorParameterOrder()); result.setChildren(new Translator[] { IDTranslator.INSTANCE, new ElementNameTranslator() }); return result; } }