{
final List headerInfos = headerMsg.getMessageParts();
Object result = null;
for (Iterator itr = headerInfos.iterator(); itr.hasNext();)
{
MessagePartInfo header = (MessagePartInfo) itr.next();
BindingProvider provider = context.getService().getBindingProvider();
XMLStreamReader headerReader = getXMLStreamReader(context.getInMessage(), header);
// check to see if there is a header to read
if (headerReader == null) continue;
Object headerVal = provider.readParameter(header, headerReader, context);
// why the null check? In case there is a Holder class of some sort there.
if(header.getIndex() == -1)
{
result = headerVal;
}
else
if (paramArray[header.getIndex()] == null)
{
paramArray[header.getIndex()] = headerVal;
}
}
return result;
}