@Override
 public Object transformMessage(final MuleMessage message, String outputEncoding)
     throws TransformerException {
   try {
     if (wildcardAttachmentNameEvaluator.hasWildcards()) {
       try {
         wildcardAttachmentNameEvaluator.processValues(
             message.getInboundAttachmentNames(),
             new WildcardAttributeEvaluator.MatchCallback() {
               @Override
               public void processMatch(String matchedValue) {
                 try {
                   message.addOutboundAttachment(
                       matchedValue, message.getInboundAttachment(matchedValue));
                 } catch (Exception e) {
                   throw new MuleRuntimeException(e);
                 }
               }
             });
       } catch (Exception e) {
         throw new TransformerException(this, e);
       }
     } else {
       String attachmentName = attachmentNameEvaluator.resolveValue(message).toString();
       DataHandler inboundAttachment = message.getInboundAttachment(attachmentName);
       message.addOutboundAttachment(attachmentName, inboundAttachment);
     }
   } catch (Exception e) {
     throw new TransformerException(this, e);
   }
   return message;
 }