/*
* 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.util.Pair;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.xml.namespace.QName;
public class WsdlOperationInputInfo {
private final IType _requestElementType;
private final List<Pair<IType,QName>> _unwrapLevels = new ArrayList<Pair<IType, QName>>();
private List<Pair<WsdlOperationParameterInfo, Boolean>> _parameterInfos;
private XmlSchemaTypeSchemaInfo _schemaInfo; // schema info for the final unwrapped element where the parameters are
public WsdlOperationInputInfo( IType requestElementType, QName requestElementName ) throws AnonymousElementException {
_requestElementType = requestElementType;
_parameterInfos = Collections.singletonList( new Pair<WsdlOperationParameterInfo, Boolean>( new IdentityWsdlOperationParameterInfo( requestElementType, requestElementName, true ), false ) );
}
public void addUnwrapLevel( IType type, QName elementName ) {
_unwrapLevels.add( new Pair<IType, QName>( type, elementName ) );
}
public List<Pair<WsdlOperationParameterInfo, Boolean>> getParameterInfos() {
return _parameterInfos;
}
public void setParameterInfos( List<Pair<WsdlOperationParameterInfo,Boolean>> paramInfos ) {
_parameterInfos = paramInfos;
}
public List<Pair<IType, QName>> getUnwrapLevels() {
return Collections.unmodifiableList( _unwrapLevels );
}
public IType getRequestElementType() {
return _requestElementType;
}
public void setSchemaInfo( XmlSchemaTypeSchemaInfo schemaInfo ) {
_schemaInfo = schemaInfo;
}
public XmlSchemaTypeSchemaInfo getSchemaInfo() {
return _schemaInfo;
}
public boolean isUnwrapped() {
return _schemaInfo != null;
}
}