/* * Copyright 2013 Guidewire Software, Inc. */ package gw.internal.xml.ws.typeprovider.paraminfo; import gw.internal.xml.xsd.typeprovider.IXmlSchemaElementTypeData; import gw.internal.xml.xsd.typeprovider.IXmlSchemaTypeInstanceTypeData; import gw.internal.xml.xsd.typeprovider.IXmlType; import gw.internal.xml.xsd.typeprovider.XmlSchemaPropertySpec; import gw.internal.xml.xsd.typeprovider.XmlSchemaTypeSchemaInfo; import gw.lang.reflect.IType; import gw.xml.XmlElement; import gw.xml.XmlTypeInstance; public class XmlTypeInstanceWsdlOperationParameterInfo extends WsdlOperationParameterInfo { public XmlTypeInstanceWsdlOperationParameterInfo( XmlSchemaPropertySpec parameterPropertySpec ) { super( parameterPropertySpec.getElementPropertyGosuType(), parameterPropertySpec.getQName() ); } @Override public IType getType() { IXmlType xmlType = (IXmlType) getParameterElementType(); IXmlSchemaElementTypeData elementGosuType = (IXmlSchemaElementTypeData) xmlType.getTypeData(); XmlSchemaTypeSchemaInfo schemaInfo = elementGosuType.getSchemaInfo(); IXmlSchemaTypeInstanceTypeData typeData = schemaInfo.getTypeData(); return typeData.getType(); } @Override public Object unwrap( XmlElement node ) { return node.getTypeInstance(); } @Override public String getName() { return "request"; } @Override public XmlElement wrap( Object obj, XmlElement componentElement ) { componentElement.setTypeInstance( (XmlTypeInstance) obj ); return componentElement; } }