/*
* Copyright 2013 Guidewire Software, Inc.
*/
package gw.internal.xml.ws.typeprovider;
import gw.internal.xml.ws.typeprovider.paraminfo.AnonymousElementException;
import gw.internal.xml.ws.typeprovider.paraminfo.IdentityWsdlOperationParameterInfo;
import gw.internal.xml.ws.typeprovider.paraminfo.WsdlOperationParameterInfo;
import gw.internal.xml.xsd.typeprovider.XmlSchemaTypeSchemaInfo;
import gw.lang.reflect.IType;
import gw.lang.reflect.java.IJavaType;
import gw.lang.reflect.java.JavaTypes;
import gw.lang.reflect.java.JavaTypes;
import gw.util.Pair;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.xml.namespace.QName;
public class WsdlOperationOutputInfo {
private final IType _responseElementType;
private final List<Pair<IType,QName>> _unwrapLevels = new ArrayList<Pair<IType, QName>>();
private WsdlOperationParameterInfo _returnParameterInfo;
private XmlSchemaTypeSchemaInfo _schemaInfo; // schema info for the final unwrapped element where the parameters are
private boolean _useParentElement;
public WsdlOperationOutputInfo( IType responseElementType, QName responseElementName ) throws AnonymousElementException {
_responseElementType = responseElementType;
_returnParameterInfo = new IdentityWsdlOperationParameterInfo( responseElementType, responseElementName, true );
}
public void addUnwrapLevel( IType type, QName elementName ) {
_unwrapLevels.add( new Pair<IType, QName>( type, elementName ) );
}
public WsdlOperationParameterInfo getReturnParameterInfo() {
return _returnParameterInfo;
}
public void setReturnParameterInfo( WsdlOperationParameterInfo paramInfo ) {
_returnParameterInfo = paramInfo;
}
public List<Pair<IType, QName>> getUnwrapLevels() {
return Collections.unmodifiableList( _unwrapLevels );
}
public IType getResponseElementType() {
return _responseElementType;
}
public void setSchemaInfo( XmlSchemaTypeSchemaInfo schemaInfo ) {
_schemaInfo = schemaInfo;
}
public XmlSchemaTypeSchemaInfo getSchemaInfo() {
return _schemaInfo;
}
public boolean getUseParentElement() {
return _useParentElement;
}
public void setUseParentElement( boolean useParentElement ) {
_useParentElement = useParentElement;
}
public IType getReturnType() {
return _returnParameterInfo == null ? JavaTypes.pVOID() : _returnParameterInfo.getType();
}
}