View Javadoc

1   /*
2    * $Id: JDomPropertyExtractor.java 7963 2007-08-21 08:53:15Z dirk.olmes $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSource, Inc.  All rights reserved.  http://www.mulesource.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
9    */
10  
11  package org.mule.util.properties;
12  
13  import org.mule.umo.UMOMessage;
14  
15  import org.dom4j.Node;
16  import org.dom4j.io.DOMReader;
17  
18  /**
19   * Will select the text of a single node based on the property name
20   */
21  public class JDomPropertyExtractor implements PropertyExtractor
22  {
23      public Object getProperty(String name, Object message)
24      {
25          Object payload = message;
26          if (message instanceof UMOMessage)
27          {
28              payload = ((UMOMessage)message).getPayload();
29          }
30          if (payload instanceof org.w3c.dom.Document)
31          {
32              org.w3c.dom.Document x3cDoc = (org.w3c.dom.Document)payload;
33              org.dom4j.Document dom4jDoc = new DOMReader().read(x3cDoc);
34              try
35              {
36                  Node node = dom4jDoc.selectSingleNode(name);
37                  if (node != null)
38                  {
39                      return node.getText();
40                  }
41              }
42              catch (Exception ignored)
43              {
44                  // ignore
45              }
46          }
47          return null;
48      }
49  }