/******************************************************************************* * 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.emf.ecore.EObject; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.jst.j2ee.common.CommonPackage; import org.eclipse.jst.j2ee.internal.J2EEVersionConstants; import org.eclipse.jst.j2ee.internal.model.translator.common.CommonTranslators; import org.eclipse.jst.j2ee.webservice.jaxrpcmap.JaxrpcmapFactory; import org.eclipse.jst.j2ee.webservice.jaxrpcmap.JaxrpcmapPackage; import org.eclipse.jst.j2ee.webservice.jaxrpcmap.ServiceEndpointInterfaceMapping; import org.eclipse.jst.j2ee.webservice.jaxrpcmap.ServiceInterfaceMapping; 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.Translator; public class InterfaceMappingTranslator extends Translator implements JaxrpcmapXmlMapperI { private static Translator[] SERVICE_INTERFACE_10XLATORS = new Translator[] { new Translator(SERVICE_INTERFACE, JaxrpcmapPackage.eINSTANCE.getServiceInterfaceMapping_ServiceInterface()), create10WSDLServiceNameTranslator(), createPortMappingTranslator() }; private static Translator[] SERVICE_INTERFACE_11XLATORS = new Translator[] { new Translator(SERVICE_INTERFACE, JaxrpcmapPackage.eINSTANCE.getServiceInterfaceMapping_ServiceInterface()), CommonTranslators.createQNameTranslator(WSDL_SERVICE_NAME, JaxrpcmapPackage.eINSTANCE.getServiceInterfaceMapping_WsdlServiceName()), createPortMappingTranslator() }; private static Translator[] SEI_10XLATORS = new Translator[] { new Translator(SERVICE_ENDPOINT_INTERFACE, JaxrpcmapPackage.eINSTANCE.getServiceEndpointInterfaceMapping_ServiceEndpointInterface()), create10WSDLPortTypeTranslator(), create10WSDLBindingTranslator(), create10SEMethodMappingTranslator() }; private static Translator[] SEI_11XLATORS = new Translator[] { new Translator(SERVICE_ENDPOINT_INTERFACE, JaxrpcmapPackage.eINSTANCE.getServiceEndpointInterfaceMapping_ServiceEndpointInterface()), CommonTranslators.createQNameTranslator(WSDL_PORT_TYPE, JaxrpcmapPackage.eINSTANCE.getServiceEndpointInterfaceMapping_WsdlPortType()), CommonTranslators.createQNameTranslator(WSDL_BINDING, JaxrpcmapPackage.eINSTANCE.getServiceEndpointInterfaceMapping_WsdlBinding()), create11SEMethodMappingTranslator() }; public InterfaceMappingTranslator() { super(SERVICE_INTERFACE_MAPPING+','+SERVICE_ENDPOINT_INTERFACE_MAPPING, JaxrpcmapPackage.eINSTANCE.getJavaWSDLMapping_InterfaceMappings()); } /* (non-Javadoc) * @see com.ibm.etools.emf2xml.impl.Translator#getChildren(java.lang.Object, int) */ @Override public Translator[] getChildren(Object o, int versionID) { if (o == null) return CommonTranslators.EMPTY_CHILDREN; if (o instanceof ServiceInterfaceMapping) return getServiceInterfaceTranslator(versionID); else if (o instanceof ServiceEndpointInterfaceMapping) return getSEITranslator(versionID); else throw new IllegalStateException("Internal error: InterfaceMapping expected"); //$NON-NLS-1$ } @Override public String getDOMName(Object value) { if (value instanceof ServiceInterfaceMapping) return SERVICE_INTERFACE_MAPPING; else if (value instanceof ServiceEndpointInterfaceMapping) return SERVICE_ENDPOINT_INTERFACE_MAPPING; else throw new IllegalStateException("Internal error: InterfaceMapping expected"); //$NON-NLS-1$ } /* (non-Javadoc) * @see com.ibm.etools.emf2xml.impl.Translator#createEMFObject(java.lang.String, java.lang.String) */ @Override public EObject createEMFObject(String nodeName, String readAheadName) { JaxrpcmapFactory fact = JaxrpcmapPackage.eINSTANCE.getJaxrpcmapFactory(); if (SERVICE_INTERFACE_MAPPING.equals(nodeName)) return fact.createServiceInterfaceMapping(); else if (SERVICE_ENDPOINT_INTERFACE_MAPPING.equals(nodeName)) return fact.createServiceEndpointInterfaceMapping(); else return null; } @Override public boolean isManagedByParent() { return false; } private Translator[] getServiceInterfaceTranslator(int versionID) { switch (versionID) { case J2EEVersionConstants.J2EE_1_2_ID : case J2EEVersionConstants.J2EE_1_3_ID : return SERVICE_INTERFACE_10XLATORS; default : return SERVICE_INTERFACE_11XLATORS; } } private Translator[] getSEITranslator(int versionID) { switch (versionID) { case J2EEVersionConstants.J2EE_1_2_ID : case J2EEVersionConstants.J2EE_1_3_ID : return SEI_10XLATORS; default : return SEI_11XLATORS; } } private static Translator create10WSDLServiceNameTranslator() { JaxrpcmapPackage jaxrpcmapPackage = JaxrpcmapPackage.eINSTANCE; CommonPackage commonPackage = CommonPackage.eINSTANCE; GenericTranslator result = new GenericTranslator(WSDL_SERVICE_NAME, jaxrpcmapPackage.getServiceInterfaceMapping_WsdlServiceName()); result.setChildren(new Translator[] { IDTranslator.INSTANCE, new Translator(NAMESPACEURI, commonPackage.getQName_NamespaceURI()), new Translator(LOCALPART, commonPackage.getQName_LocalPart()) }); return result; } private static Translator createPortMappingTranslator() { JaxrpcmapPackage jaxrpcmapPackage = JaxrpcmapPackage.eINSTANCE; GenericTranslator result = new GenericTranslator(PORT_MAPPING, jaxrpcmapPackage.getServiceInterfaceMapping_PortMappings()); result.setChildren(new Translator[] { IDTranslator.INSTANCE, new Translator(PORT_NAME, jaxrpcmapPackage.getPortMapping_PortName()), new Translator(JAVA_PORT_NAME, jaxrpcmapPackage.getPortMapping_JavaPortName()) }); return result; } /* private static Translator create10PortMappingTranslator() { JaxrpcmapPackage jaxrpcmapPackage = JaxrpcmapPackage.eINSTANCE; GenericTranslator result = new GenericTranslator(PORT_MAPPING, jaxrpcmapPackage.getServiceInterfaceMapping_PortMappings()); result.setChildren(new Translator[] { IDTranslator.INSTANCE, new Translator(PORT_NAME, jaxrpcmapPackage.getPortMapping_PortName()), new Translator(JAVA_PORT_NAME, jaxrpcmapPackage.getPortMapping_JavaPortName()) }); return result; } */ private static Translator create10WSDLPortTypeTranslator() { JaxrpcmapPackage jaxrpcmapPackage = JaxrpcmapPackage.eINSTANCE; CommonPackage commonPackage = CommonPackage.eINSTANCE; GenericTranslator result = new GenericTranslator(WSDL_PORT_TYPE, jaxrpcmapPackage.getServiceEndpointInterfaceMapping_WsdlPortType()); result.setChildren(new Translator[] { IDTranslator.INSTANCE, new Translator(NAMESPACEURI, commonPackage.getQName_NamespaceURI()), new Translator(LOCALPART, commonPackage.getQName_LocalPart()) }); return result; } private static Translator create10WSDLBindingTranslator() { JaxrpcmapPackage jaxrpcmapPackage = JaxrpcmapPackage.eINSTANCE; CommonPackage commonPackage = CommonPackage.eINSTANCE; GenericTranslator result = new GenericTranslator(WSDL_BINDING, jaxrpcmapPackage.getServiceEndpointInterfaceMapping_WsdlBinding()); result.setChildren(new Translator[] { IDTranslator.INSTANCE, new Translator(NAMESPACEURI, commonPackage.getQName_NamespaceURI()), new Translator(LOCALPART, commonPackage.getQName_LocalPart()) }); return result; } private static Translator create10SEMethodMappingTranslator() { JaxrpcmapPackage jaxrpcmapPackage = JaxrpcmapPackage.eINSTANCE; GenericTranslator result = new GenericTranslator(SERVICE_ENDPOINT_METHOD_MAPPING, jaxrpcmapPackage.getServiceEndpointInterfaceMapping_ServiceEndpointMethodMappings()); result.setChildren(new Translator[] { IDTranslator.INSTANCE, new Translator(JAVA_METHOD_NAME, jaxrpcmapPackage.getServiceEndpointMethodMapping_JavaMethodName()), new Translator(WSDL_OPERATION, jaxrpcmapPackage.getServiceEndpointMethodMapping_WsdlOperation()), new Translator(WRAPPED_ELEMENT, jaxrpcmapPackage.getServiceEndpointMethodMapping_WrappedElement(), Translator.EMPTY_TAG), create10MethodParamPartsMappingTranslator(), create10WSDLReturnValueMappingTranslator() }); return result; } private static Translator create11SEMethodMappingTranslator() { JaxrpcmapPackage jaxrpcmapPackage = JaxrpcmapPackage.eINSTANCE; GenericTranslator result = new GenericTranslator(SERVICE_ENDPOINT_METHOD_MAPPING, jaxrpcmapPackage.getServiceEndpointInterfaceMapping_ServiceEndpointMethodMappings()); result.setChildren(new Translator[] { IDTranslator.INSTANCE, new Translator(JAVA_METHOD_NAME, jaxrpcmapPackage.getServiceEndpointMethodMapping_JavaMethodName()), new Translator(WSDL_OPERATION, jaxrpcmapPackage.getServiceEndpointMethodMapping_WsdlOperation()), new Translator(WRAPPED_ELEMENT, jaxrpcmapPackage.getServiceEndpointMethodMapping_WrappedElement(), Translator.EMPTY_TAG), create11MethodParamPartsMappingTranslator(), create11WSDLReturnValueMappingTranslator() }); return result; } private static Translator create10MethodParamPartsMappingTranslator() { JaxrpcmapPackage jaxrpcmapPackage = JaxrpcmapPackage.eINSTANCE; GenericTranslator result = new GenericTranslator(METHOD_PARAM_PARTS_MAPPING, jaxrpcmapPackage.getServiceEndpointMethodMapping_MethodParamPartsMappings()); result.setChildren(new Translator[] { IDTranslator.INSTANCE, new Translator(PARAM_POSITION, jaxrpcmapPackage.getMethodParamPartsMapping_ParamPosition()), new Translator(PARAM_TYPE, jaxrpcmapPackage.getMethodParamPartsMapping_ParamType()), create10WSDLMessageMappingTranslator() }); return result; } private static Translator create11MethodParamPartsMappingTranslator() { JaxrpcmapPackage jaxrpcmapPackage = JaxrpcmapPackage.eINSTANCE; GenericTranslator result = new GenericTranslator(METHOD_PARAM_PARTS_MAPPING, jaxrpcmapPackage.getServiceEndpointMethodMapping_MethodParamPartsMappings()); result.setChildren(new Translator[] { IDTranslator.INSTANCE, new Translator(PARAM_POSITION, jaxrpcmapPackage.getMethodParamPartsMapping_ParamPosition()), new Translator(PARAM_TYPE, jaxrpcmapPackage.getMethodParamPartsMapping_ParamType()), create11WSDLMessageMappingTranslator() }); return result; } private static Translator create10WSDLMessageMappingTranslator() { JaxrpcmapPackage jaxrpcmapPackage = JaxrpcmapPackage.eINSTANCE; GenericTranslator result = new GenericTranslator(WSDL_MESSAGE_MAPPING, jaxrpcmapPackage.getMethodParamPartsMapping_WsdlMessageMapping()); result.setChildren(new Translator[] { IDTranslator.INSTANCE, create10WSDLMessageTranslator(jaxrpcmapPackage.getWSDLMessageMapping_WsdlMessage()), new Translator(WSDL_MESSAGE_PART_NAME, jaxrpcmapPackage.getWSDLMessageMapping_WsdlMessagePartName()), new Translator(PARAMETER_MODE, jaxrpcmapPackage.getWSDLMessageMapping_ParameterMode()), new Translator(SOAP_HEADER, jaxrpcmapPackage.getWSDLMessageMapping_SoapHeader(), Translator.EMPTY_TAG), }); return result; } private static Translator create11WSDLMessageMappingTranslator() { JaxrpcmapPackage jaxrpcmapPackage = JaxrpcmapPackage.eINSTANCE; GenericTranslator result = new GenericTranslator(WSDL_MESSAGE_MAPPING, jaxrpcmapPackage.getMethodParamPartsMapping_WsdlMessageMapping()); result.setChildren(new Translator[] { IDTranslator.INSTANCE, CommonTranslators.createQNameTranslator(WSDL_MESSAGE, jaxrpcmapPackage.getWSDLMessageMapping_WsdlMessage()), new Translator(WSDL_MESSAGE_PART_NAME, jaxrpcmapPackage.getWSDLMessageMapping_WsdlMessagePartName()), new Translator(PARAMETER_MODE, jaxrpcmapPackage.getWSDLMessageMapping_ParameterMode()), new Translator(SOAP_HEADER, jaxrpcmapPackage.getWSDLMessageMapping_SoapHeader(), Translator.EMPTY_TAG), }); return result; } private static Translator create10WSDLMessageTranslator(EStructuralFeature feature) { //JaxrpcmapPackage jaxrpcmapPackage = JaxrpcmapPackage.eINSTANCE; CommonPackage commonPackage = CommonPackage.eINSTANCE; GenericTranslator result = new GenericTranslator(WSDL_MESSAGE, feature); result.setChildren(new Translator[] { IDTranslator.INSTANCE, new Translator(NAMESPACEURI, commonPackage.getQName_NamespaceURI()), new Translator(LOCALPART, commonPackage.getQName_LocalPart()) }); return result; } private static Translator create10WSDLReturnValueMappingTranslator() { JaxrpcmapPackage jaxrpcmapPackage = JaxrpcmapPackage.eINSTANCE; GenericTranslator result = new GenericTranslator(WSDL_RETURN_VALUE_MAPPING, jaxrpcmapPackage.getServiceEndpointMethodMapping_WsdlReturnValueMapping()); result.setChildren(new Translator[] { IDTranslator.INSTANCE, new Translator(METHOD_RETURN_VALUE, jaxrpcmapPackage.getWSDLReturnValueMapping_MethodReturnValue()), create10WSDLMessageTranslator(jaxrpcmapPackage.getWSDLReturnValueMapping_WsdlMessage()), new Translator(WSDL_MESSAGE_PART_NAME, jaxrpcmapPackage.getWSDLReturnValueMapping_WsdlMessagePartName()) }); return result; } private static Translator create11WSDLReturnValueMappingTranslator() { JaxrpcmapPackage jaxrpcmapPackage = JaxrpcmapPackage.eINSTANCE; GenericTranslator result = new GenericTranslator(WSDL_RETURN_VALUE_MAPPING, jaxrpcmapPackage.getServiceEndpointMethodMapping_WsdlReturnValueMapping()); result.setChildren(new Translator[] { IDTranslator.INSTANCE, new Translator(METHOD_RETURN_VALUE, jaxrpcmapPackage.getWSDLReturnValueMapping_MethodReturnValue()), CommonTranslators.createQNameTranslator(WSDL_MESSAGE, jaxrpcmapPackage.getWSDLReturnValueMapping_WsdlMessage()), new Translator(WSDL_MESSAGE_PART_NAME, jaxrpcmapPackage.getWSDLReturnValueMapping_WsdlMessagePartName()) }); return result; } }