Until I read the "loooooong" email, did u read the javadoc comment, I wrote carefully for the method : public static XMLStreamReader createPullParser(QName adbBeansQName, Object[] properties, Object[] attributes) ?
Ruchith Fernando wrote: >Hi Devs, > >I'm playing with the Axis2 ABD stuff and I hope to use it in >implementing the WS-Trust stuff. >I ran into a couple of issues trying to use ADB. > >1.) ADB Beans doesn't seem to properly set unqualified attributes >2.) ADB Beans cannot serialize qualified simple (containing a text >value) child elements. > >Explanation: > >Please have a look at this piece of code [1]. This produced the >following output: > ><wst:RequestSecurityToken >xmlns:wst="http://ws.apache.org/namespaces/axis2/trust" >wst:Context="test"><TokenType>test</TokenType></wst:RequestSecurityToken> > >Here comes the problems :-) > >First I want to make the wst:Context attribute unqualified. Simply >remove the 'wst' prefix. Therefore I tried changing line number 27 as >follows : > > attributes[0] = new String("Context"); > >But this produced the following output which is missing the 'Context' >attribute: > ><wst:RequestSecurityToken >xmlns:wst="http://ws.apache.org/namespaces/axis2/trust"><TokenType>test</TokenType></wst:RequestSecurityToken> > >Q1: Is this behaviour correct? Or am I doing somethign wrong? > >When I tried changing line 27 to: > > attributes[0] = new QName("Context"); > >It produced: > ><wst:RequestSecurityToken >xmlns:wst="http://ws.apache.org/namespaces/axis2/trust" xmlns="" >Context="test"><TokenType >xmlns="">test</TokenType></wst:RequestSecurityToken> > >but this has xmlns="", which I think should not be there. > > > >Then I wanted to make the 'TokenType' element a qualified element >bound to 'http://ws.apache.org/namespaces/axis2/trust' namespace. >Since this is a simple element with only a child text node, I changed >line 22 to > > properties.add(new >QName("http://ws.apache.org/namespaces/axis2/trust", "TokenType", >"wst")); > >It produced: > ><wst:RequestSecurityToken >xmlns:wst="http://ws.apache.org/namespaces/axis2/trust" xmlns="" >Context="test"><wst:TokenType><bytes >xmlns=""></bytes></wst:TokenType></wst:RequestSecurityToken> > >But here the value of the wst:TokenType element is missing :-( Instead >we have '<bytes xmlns=""></bytes>' > >But ... going through the ADBPullParserTest revealed that our ADB can >hanle setting OMElements... I got the required output by replacing >line 21-23 with > > OMFactory fac = OMAbstractFactory.getOMFactory(); > OMElement elem = fac.createOMElement("TokenType", >"http://ws.apache.org/namespaces/axis2/trust", "wst"); > elem.setText("test"); > > ArrayList properties = new ArrayList(); > properties.add(elem.getQName()); > properties.add(elem); > >This is quite useful but if I wanted to allow an ADBBean to accept an >unknown xml element from a user ... But for this situation, IMHO this >looks like a hack to me. > >Q2: How can I correct this to produce >'<wst:TokenType>test</wst:TokenType>' WITHOUT inserting the OMElement? >Should I code another ADB Bean for the <wst:TokenType> element and if >so how can I simply set just a text value of that bean? > >Thanks >Ruchith > >[1] http://rafb.net/paste/results/Xp9bVP56.html > > >
