/*
* Copyright 2013 Guidewire Software, Inc.
*/
package gw.internal.xml.ws.typeprovider.paraminfo;
import gw.internal.xml.xsd.typeprovider.XmlSchemaPropertySpec;
import gw.lang.reflect.IType;
import gw.lang.reflect.TypeSystem;
import gw.xml.XmlElement;
public class XmlElementWsdlOperationParameterInfo extends WsdlOperationParameterInfo {
private final XmlSchemaPropertySpec _childPropertySpec;
public XmlElementWsdlOperationParameterInfo( XmlSchemaPropertySpec parameterPropertySpec, XmlSchemaPropertySpec childPropertySpec ) {
super( parameterPropertySpec.getElementPropertyGosuType(), parameterPropertySpec.getQName() );
_childPropertySpec = childPropertySpec;
}
@Override
public IType getType() {
return _childPropertySpec == null ? TypeSystem.get( XmlElement.class ) : _childPropertySpec.getElementPropertyGosuType( _childPropertySpec.isPlural() );
}
@Override
public Object unwrap( XmlElement node ) {
return node.getChildren().get( 0 );
}
@Override
public String getName() {
return getParameterElementName().getLocalPart();
}
@Override
public XmlElement wrap( Object obj, XmlElement componentElement ) {
componentElement.addChild( (XmlElement) obj );
return componentElement;
}
}