java.lang.NoClassDefFoundError: org/jaxen/JaxenException

If you see in my new project, there is going to be a lot of XML processing. So I was wondering what would be the better approach to parse the XML files with JAVA. After some R&D I came across a very nicely written API's for parsing the XML and you can go back and forth to get any node since each entity in xml file has been considered as object, so no more restrictions.Yes, I am talking about JDOM. It also comes with very good utility class to process xml using XPath. The static methods provided by class org.jdom.xpath.XPath are pretty straight forward and simple to use in one line :

Listlist = XPath.selectNodes(context, "//root"); 
Object obj = XPath.selectSingleNode(context, "//root"); 
This will return you the list/Element of matching node(s) as a object. So when I were trying this first time I just started with downloading JDOMv1.1.1.jar from the web.But unfortunately I got stuck with the this wierd exception
java.lang.NoClassDefFoundError: org/jaxen/JaxenException ... 
. So solution is: putting the jdom jar itself not resolve this problem.Since JDOM uses "Jaxen engine" for XPath processing you need to add one more jar called jaxen.jar along with it from here.

Posted at at 9:35 PM on Thursday, December 23, 2010 by Posted by Ravindra Nikam | 0 comments   | Filed under: , ,

first step with iBatis

Posted at at 10:10 AM on Friday, December 10, 2010 by Posted by Ravindra Nikam | 0 comments   | Filed under: , , ,

removing empty attributes

XSLT template to remove empty attributes from the xml.

<xsl:template match="/">
  <xsl:copy>
     <xsl:apply-templates>
       <xsl:for-each select="@*">
          <xsl:if test=".!=''">
             <xsl:copy-of select="." />
          </xsl:if>
       </xsl:for-each>
     </xsl:apply-templates>
   </xsl:copy> 
</xsl:template>

Posted at at 4:21 AM on Saturday, October 2, 2010 by Posted by Ravindra Nikam | 0 comments   | Filed under: , , ,

Sorting/Reordering elements using xslt

XSLT template to reorder the elements as per the position. The order option allows you to decide the order of sort. Depending on the select XPath query result data-type can be given.

<xsl:template match="*">
    <xsl:copy>
       <xsl:apply-templates>
          <xsl:sort select="position()"order="descending" data-type="number" />
       </xsl:apply-templates>
     </xsl:copy>
  </xsl:template>

Posted at at 6:03 AM on Friday, October 1, 2010 by Posted by Ravindra Nikam | 0 comments   | Filed under: , , ,

copy elements using xslt

XSLT template to just copy all elements without any condition from one file to another.

<xsl:template match="* | @*">
           <xsl:copy>
              <xsl:copy-of select="@*" />
              <xsl:apply-templates />
           </xsl:copy>
        </xsl:template>

Posted at at 5:57 AM on by Posted by Ravindra Nikam | 0 comments   | Filed under: , , ,

xml to xml conversion using xslt

As I am new to XSLT wanted to perform some xsl transformation on my xml file and generate the xml. But when I were looking for some example how to do it I was getting all example who teach you how to transform an xml to html. So here is the way I found after some web search. Look at the tag <xsl:output> and its method just set it to xml as below. The code snippet to just copy all the elements and attributes from one xml file to another. If you want to perform some operations or checks you are free to add new templates.

<xsl:stylesheet version='1.0' 
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'> 

<xsl:output method='xml' indent='yes' /> 

<!-- copy all elements which don't match any template --> 
  <xsl:template match="* | @*"> 
    <xsl:copy> 
       <xsl:copy-of select="@*" /> 
       <xsl:apply-templates /> 
    </xsl:copy> 
  </xsl:template> 
</xsl:stylesheet>

Posted at at 6:19 AM on Thursday, September 30, 2010 by Posted by Ravindra Nikam | 0 comments   | Filed under: , , ,

Tools for java object to object mapping

There are few libraries out there:

Transmorph: Transmorph is a free java library used to convert a Java object of one type into an object of another type (with another signature, possibly parameterized).

EZMorph: EZMorph is simple java library for transforming an Object to another Object. It supports transformations for primitives and Objects, for multidimensional arrays and transformations with DynaBeans

Commons-BeanUtils: ConvertUtils -> Utility methods for converting String scalar values to objects of the specified Class, String arrays to arrays of the specified Class.

Commons-Lang: ArrayUtils -> Operations on arrays, primitive arrays (like int[]) and primitive wrapper arrays (like Integer[]).

Commons-Convert: Commons-Convert aims to provide a single library dedicated to the task of converting an object of one type to another. The first stage will focus on Object to String and String to Object conversions.

Morph: Morph is a Java framework that eases the internal interoperability of an application. As information flows through an application, it undergoes multiple transformations. Morph provides a standard way to implement these transformations.

•Lorentz: Lorentz is a generic object-to-object conversion framework. It provides a simple API to convert a Java objects of one type into an object of another type. (seems dead)

Spring framework: Spring has an excellent support for PropertyEditors, that can also be used to transform Objects to/from Strings.

Dozer: Dozer is a powerful, yet simple Java Bean to Java Bean mapper that recursively copies data from one object to another. Typically, these Java Beans will be of different complex types.

OTOM: With OTOM, you can copy any data from any object to any other object. The possibilities are endless. Welcome to "Autumn".

Smooks: The Smooks JavaBean Cartridge allows you to create and populate Java objects from your message data (i.e. bind data to) (suggested by superfilin in comments).

Transmorph (pretty recent), EZMorph, Dozer, OTOM are all serious candidates. Dozer seems to be the most active project though (and maybe the most advanced). I personally used Dozer and happy with it. (list from Pascal Thivent)

Posted at at 4:12 AM on Tuesday, August 3, 2010 by Posted by Ravindra Nikam | 0 comments   | Filed under: , , ,