KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > mule > util > properties > JXPathPropertyExtractor


1 /*
2  * $Id: JXPathPropertyExtractor.java 3798 2006-11-04 04:07:14Z aperepel $
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 MuleSource MPL
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.apache.commons.jxpath.JXPathContext;
14 import org.apache.commons.logging.Log;
15 import org.apache.commons.logging.LogFactory;
16 import org.dom4j.Document;
17 import org.dom4j.DocumentException;
18 import org.dom4j.DocumentHelper;
19 import org.mule.util.properties.PropertyExtractor;
20 import org.mule.umo.UMOMessage;
21
22 /**
23  * Will extract properties based on Xpath expressions. Will work on Xml/Dom and beans
24  */

25 public class JXPathPropertyExtractor implements PropertyExtractor
26 {
27
28     /**
29      * logger used by this class
30      */

31     protected transient Log logger = LogFactory.getLog(getClass());
32
33     public Object JavaDoc getProperty(String JavaDoc name, Object JavaDoc message)
34     {
35
36         Object JavaDoc result = null;
37         Object JavaDoc payload = message;
38         if (message instanceof UMOMessage)
39         {
40             payload = ((UMOMessage)message).getPayload();
41         }
42
43         if (payload instanceof String JavaDoc)
44         {
45             Document doc;
46             try
47             {
48                 doc = DocumentHelper.parseText((String JavaDoc)payload);
49             }
50             catch (DocumentException e)
51             {
52                 logger.error(e);
53                 return null;
54             }
55             result = doc.valueOf(name);
56         }
57         else
58         {
59             JXPathContext context = JXPathContext.newContext(payload);
60             try
61             {
62                 result = context.getValue(name);
63             }
64             catch (Exception JavaDoc e)
65             {
66                 // ignore
67
}
68         }
69         return result;
70     }
71 }
72
Popular Tags