Thanks All,

 

To sum it up I did the following (please comment if there is a faster/better way):

-Created a select statement that returns xml:

<select id="EmpSearch" resultClass="xml" xmlResultName="Employee">

 

-Create an inner class in the DAO class for the rowhandler to “stich” and control the creation of the xml Document (using dom4j):

  public static class xmlRowHandler implements RowHandler{

   

    private Document domDocument;

   

    public xmlRowHandler(String xmlResultName){

      domDocument = DocumentHelper.createDocument();

      Element root = getDomDocument().addElement( xmlResultName );

    }

   

    public void handleRow(Object object){

      try{

        Document xmlFragment = DocumentHelper.parseText((String) object);

        Element xmlElement = xmlFragment.getRootElement();

        Element root = getDomDocument().getRootElement();

        root.add(xmlElement);

      }catch(DocumentException e){

      }

    }

   

    public Document getDomDocument() {

      return domDocument;

    }

  }

 

-Call the API to fetch the list “through” the rowhandler:

  public Document EmpSearch(String keywords, String filter){

    Object parameterObject = new EmployeeSearch(keywords,filter);

    RowHandler rowHandler=new xmlRowHandler("Employees");

    queryWithRowHandler("EmpSearch", parameterObject, rowHandler); // go through the list

    Document doc = ((xmlRowHandler) rowHandler).getDomDocument();

    return doc;

  }

 

Clinton; I found page 44 just after I’ve send the mail, this was indeed good enough to get it working but I guess a bit outdated.

I had to make to make the following assumptions

-The API methode is called queryWithRowHandler and not queryForList

-The Rowhandler interface handleRow methode has only the object as parameter and not object and list

 

F.Y.I.  ( http://forum.java.sun.com/thread.jspa?forumID=34&tstart=30&threadID=542044&trange=15 )

When running the query with XML as result on Tomcat with java 1.5.0_03 it result in error:

javax.xml.transform.TransformerFactoryConfigurationError: Provider org.apache.xalan.processor.TransformerFactoryImpl not found

 

This is because tomcat java is called with the following argument:
-Djava.endorsed.dirs="X:\my_app\Portal\tomcat\common\endorsed"

In this directory you find two jar files: xercesImpl.jar and xml-apis.jar needed by tomcat and that must be loaded before all xmsl stuff present in the jdk (1.4 naming problem). And in the file xml-apis.jar the TransformerFactoryImpl is set to "org.apache.xalan.processor.TransformerFactoryImpl".

The solution: remove the file xml-apis.jar from the directory.

 

 

MEINDERT HOVING


From: Samael Cui [mailto:[EMAIL PROTECTED]
Sent: 11 October 2005 04:09 AM
To: [email protected]; Clinton Begin
Subject: Re: XML document output from ibatis

 

U can get a List by queryForList or get a String object  by queryForObject.The list contents a String array.The String is xml format.

2005/10/10, Clinton Begin <[EMAIL PROTECTED]>:

RowHandler is fully documented in the iBATIS for Java developer guide.  Page 44 had an explanation, and page 45 has an example.  There's no difference in usage whether you're returning XML, a JavaBean or a primitive.

Cheers,
Clinton

 

On 10/10/05, Meindert < [EMAIL PROTECTED]> wrote:


I can't find info about the use of a RowHandler in the wikki.

Could anybody please post code/example for returning an org.w3c.dom.Document
using a RowHandler?

-----Original Message-----
From: Ashish Kulkarni [mailto: [EMAIL PROTECTED]]
Sent: 13 September 2005 06:07 PM
To: [email protected]
Subject: Re: XML document output from ibatis

Parshanth
do you have a code/example of such DAO

--- Prashanth Sukumaran <[EMAIL PROTECTED] >
wrote:

> Hi Ashish,
>
> Cool this is fine.  But the idea of a RowHandler is
> to have such conversions out of the DAO.  Also it
> looks clean as if IBatis is returning the Document
> object.
>
> The work of the DAO layer is to only execute queries
> and return the data.  You can externalize such
> transformations into the RowHandler.
>
> Rgds
> Prashanth Sukumaran.
>
> Ashish Kulkarni < [EMAIL PROTECTED]> wrote:
> Hi
> this is a way i got around my problem
> // definiation in xml file
>
>
parameterClass="java.math.BigDecimal"xmlResultName="PO">//
> SQL querry goes herre
> // to get a list of all data from ibatis
>
> List list = client.queryForList("getdata", new
> BigDecimal("12345"));
> // go through the list
> for (int i = 0; i < list.size(); i++)
> {
> String obj = (String) list.get(i);
> // get byte array input stream from string
> ByteArrayInputStream byteArray = new
> ByteArrayInputStream( obj.getBytes());
> // create DMO object
> Document doc =
> factory.newDocumentBuilder().parse(byteArray);
> }
>
>
> Ashish
>
>
> --- Larry Meadors wrote:
>
> > Wit apologies to Clinton, my official opinion on
> > iBATIS XML results is
> > that they suck.
> >
> > If you want to do what you are describing, do it
> in
> > your DAO class. If
> > you want multiple records, do it with a
> RowHandler.
> >
> > Larry
> >
> >
> > On 9/12/05, Ashish Kulkarni
> > wrote:
> > > Hi
> > > Is it possible to get XML document from ibatis
> > > I am trying to get a XML document as a
> resultClass
> > > from ibatis, here is what i am doing
> > > > > parameterClass="java.math.BigDecimal"> >
> xmlResultName="PO" >> > SELECT A.PCPORD AS PCPORD> >
> from Pu1012> > WHERE A.Pcpord = #value#> >
> > > String str =
> > > (String)client.queryForObject("getPOData",
> poNum);
> > >
> > > I cannot define resultClass =
> > "org.w3c.dom.Document"
> > >
> > > Is it possible to do so
> > >
> > > Ashish
> > >
> > >
> __________________________________________________
> > > Do You Yahoo!?
> > > Tired of spam? Yahoo! Mail has the best spam
> > protection around
> > > http://mail.yahoo.com
> > >
> >
>
>
> __________________________________________________
> Do You Yahoo!?
> Tired of spam? Yahoo! Mail has the best spam
> protection around
> http://mail.yahoo.com
>
> __________________________________________________
> Do You Yahoo!?
> Tired of spam?  Yahoo! Mail has the best spam
> protection around
> http://mail.yahoo.com


A$HI$H



__________________________________
Yahoo! Mail - PC Magazine Editors' Choice 2005
http://mail.yahoo.com

--
No virus found in this incoming message.
Checked by AVG Anti-Virus.
Version: 7.0.344 / Virus Database: 267.10.19/92 - Release Date: 07/09/2005


--
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.344 / Virus Database: 267.11.13/126 - Release Date: 09/10/2005



 

--
No virus found in this incoming message.
Checked by AVG Anti-Virus.
Version: 7.0.344 / Virus Database: 267.11.13/126 - Release Date: 09/10/2005


--
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.344 / Virus Database: 267.11.13/126 - Release Date: 09/10/2005

Reply via email to