private static void dereferenceTargets(ArrayList targets, ArrayList nodeSet, SecurableSoapMessage message,
boolean inferred)
throws XWSSecurityException {
Iterator i = targets.iterator();
while (i.hasNext()) {
Target t = (Target) i.next();
boolean mandatory = t.getEnforce();
boolean contentOnly = t.getContentOnly();
Object object = null;
EncryptedData data = null;
try{
if(!t.isAttachment()){
Element el = null;
if(inferred && t instanceof EncryptionTarget){
el = ((EncryptionTarget)t).getElementData();
data = new EncryptedElement(el,contentOnly);
nodeSet.add(data);
}else{
object = message.getMessageParts(t);
if (object instanceof Element){
data = new EncryptedElement((Element)object,contentOnly);
nodeSet.add(data);
}else if (object instanceof NodeList){
NodeList nl = (NodeList) object;
for (int j=0; j< nl.getLength(); j++){
data = new EncryptedElement((Element)nl.item(j),contentOnly);
nodeSet.add(data);
}
}else if(object instanceof Node){
data = new EncryptedElement((Element)object,contentOnly);
nodeSet.add(data);
}
}
}else{
if(!inferred){
AttachmentPart ap = (AttachmentPart)message.getMessageParts(t);
data = new AttachmentData(ap.getContentId(), contentOnly);
}else{
data = new AttachmentData(t.getValue(),contentOnly);
}
nodeSet.add(data);
}
}catch(XWSSecurityException ex){
if(!inferred && mandatory){