Re: Duplicate Firstname In Person Result Document
Adam Tauno Williams <[email protected]>
| Newsgroups | gmane.comp.cms.opengroupware.xmlrpc.devel |
|---|---|
| Message-ID | <[email protected]> |
> > In testing my .Net code I discovered that my xmlrpcd returns a
> > duplicate
> > firstname value (which causes the .Net collection to bail due to
> > duplicate key/value pair).
> Which is correct, a struct can only contain unique keys.
Yep.
> > I checked the connection with ethereal to confirm, and sure enough...
> You can also use the -WOHttpAdaptor_LogStream YES option of xmlrpcd (or
> any SOPE app) to track HTTP output.
Done, see below.
> > ...
> > <member><name>firstname</name><value><string>Adam</string></value></
> > member>
> > <member><name>firstname</name><value><string>Adam</string></value></
> > member>
> > ...
> Hm, I didn't try, but its almost impossible that this can happen
> because XML-RPC records are also stored in hashmaps in SOPE. But who
> knows ;-)
Sure enough, there it is - a duplicate firstname.
> It would be great if you could create a bugreport and attach
> a small Python script which reproduces the issue.
Trouble is that is doesn't manifest as a problem in either PHP or Python
since internally they must just overwrite the incoming duplicate key.
My PHP code trundles along quite merrily.
192.168.1.20 - - [07/Sep/2004:21:38:45 GMT] "POST /RPC2 HTTP/1.0" 200
170 0.035 - - 0
Sep 07 21:38:45 xmlrpcd [22012]: request is
POST /RPC2 HTTP/1.0
x-webobjects-server-protocol: HTTP/1.0
x-webobjects-remote-addr: 192.168.1.20
x-webobjects-remote-host: 192.168.1.20
x-webobjects-server-name: throw.morrison.iserv.net
x-webobjects-server-port: 0
x-webobjects-server-url: http://throw.morrison.iserv.net:0
Content-Type: text/xml
User-Agent: XML-RPC.NET
Authorization: Basic YWRhbTpWYW1CbGgyMA==
Content-Length: 205
Connection: keep-alive
Host: throw
<?xml version="1.0"?>
<methodCall>
<methodName>person.getByNumber</methodName>
<params>
<param>
<value>
<string>SKY10100</string>
</value>
</param>
</params>
</methodCall>
Sep 07 21:38:45 xmlrpcd [22012]: <>DirectAction>>D decoded XMLRPC call:
<0x0839ED84[XmlRpcMethodCall]: method=person.getByNumber #paras=1>
Sep 07 21:38:45 xmlrpcd [22012]: <(55FC55FC01413E298E)>D instantiated
new datasource 'SkyPersonDataSource' ...
Sep 07 21:38:45 xmlrpcd [22012]: response is
HTTP/1.0 200 Ok
content-type: text/xml
content-length: 6111
<?xml
version='1.0'?><methodResponse><params><param><value><struct><member><name>id</name><value><string>skyrix://throw.morrison.iserv.net/morrisonOGo/10100</string></value></member><member><name>phones</name><value><struct><member><name>15_fax_private</name><value><struct><member><name>telephoneId</name><value><int>10210</int></value></member><member><name>number</name><value><string></string></value></member><member><name>type</name><value><string>15_fax_private</string></value></member><member><name>info</name><value><string></string></value></member></struct></value></member><member><name>10_fax</name><value><struct><member><name>telephoneId</name><value><int>10200</int></value></member><member><name>number</name><value><string>6163611124</string></value></member><member><name>type</name><value><string>10_fax</string></value></member><member><name>info</name><value><string></string></value></member></struct></value></member><member><name>02_tel</name><value><struct><member><name>telephoneId</name><value><int>10170</int></value></member><member><name>number</name><value><string></string></value></member><member><name>type</name><value><string>02_tel</string></value></member><member><name>info</name><value><string></string></value></member></struct></value></member><member><name>05_tel_private</name><value><struct><member><name>telephoneId</name><value><int>10190</int></value></member><member><name>number</name><value><string></string></value></member><member><name>type</name><value><string>05_tel_private</string></value></member><member><name>info</name><value><string></string></value></member></struct></value></member><member><name>03_tel_funk</name><value><struct><member><name>telephoneId</name><value><int>10180</int></value></member><member><name>number</name><value><string>6165818010</string></value></member><member><name>type</name><value><string>03_tel_funk</string></value></member><member><name>info</name><value><string></string></value></member></struct></value></member><member><name>01_tel</name><value><struct><member><name>telephoneId</name><value><int>10160</int></value></member><member><name>number</name><value><string>6164473822</string></value></member><member><name>type</name><value><string>01_tel</string></value></member><member><name>info</name><value><string></string></value></member></struct></value></member></struct></value></member><member><name>phoneTypes</name><value><array><data><value><string>01_tel</string></value><value><string>02_tel</string></value><value><string>03_tel_funk</string></value><value><string>05_tel_private</string></value><value><string>10_fax</string></value><value><string>15_fax_private</string></value></data></array></value></member><member><name>addresses</name><value><struct><member><name>mailing</name><value><struct><member><name>id</name><value><string>skyrix://throw.morrison.iserv.net/morrisonOGo/10140</string></value></member><member><name>name1</name><value><string>Adam Williams</string></value></member><member><name>street</name><value><string>1825 Monroe Ave NW</string></value></member><member><name>zip</name><value><string>49505</string></value></member><member><name>city</name><value><string>Grand Rapids</string></value></member><member><name>state</name><value><string>Mi</string></value></member><member><name>type</name><value><string>mailing</string></value></member></struct></value></member><member><name>location</name><value><struct><member><name>id</name><value><string>skyrix://throw.morrison.iserv.net/morrisonOGo/10150</string></value></member><member><name>type</name><value><string>location</string></value></member></struct></value></member><member><name>private</name><value><struct><member><name>id</name><value><string>skyrix://throw.morrison.iserv.net/morrisonOGo/10130</string></value></member><member><name>name1</name><value><string>Adam Tauno Williams</string></value></member><member><name>street</name><value><string>537 Shirley St</string></value></member><member><name>zip</name><value><string>Mi</string></value></member><member><name>city</name><value><string>Grand Rapids</string></value></member><member><name>country</name><value><string>USA</string></value></member><member><name>state</name><value><string>49503</string></value></member><member><name>type</name><value><string>private</string></value></member></struct></value></member></struct></value></member><member><name>extendedAttrs</name><value><struct><member><name>email1</name><value><string>[email protected]</string></value></member></struct></value></member><member><name>extendedKeys</name><value><array><data><value><string>email1</string></value><value><string>email2</string></value><value><string>email3</string></value><value><string>job_title</string></value><value><string>other_title1</string></value><value><string>other_title2</string></value></data></array></value></member><member><name>owner</name><value><struct><member><name>id</name><value><string>skyrix://throw.morrison.iserv.net/morrisonOGo/10000</string></value></member><member><name>login</name><value><string>ogo</string></value></member></struct></value></member><member><name>objectVersion</name><value><int>4</int></value></member><member><name>isComplete</name><value><boolean>1</boolean></value></member><member><name>firstname</name><value><string>Adam</string></value></member><member><name>firstname</name><value><string>Adam</string></value></member><member><name>name</name><value><string>Williams</string></value></member><member><name>nickname</name><value><string>ATW</string></value></member><member><name>number</name><value><string>SKY10100</string></value></member><member><name>degree</name><value><string>System and Network Administrator</string></value></member><member><name>url</name><value><string></string></value></member><member><name>login</name><value><string>adam</string></value></member><member><name>isAccount</name><value><boolean>1</boolean></value></member><member><name>isPrivate</name><value><boolean>0</boolean></value></member></struct></value></param></params></methodResponse>
192.168.1.20 - - [07/Sep/2004:21:38:45 GMT] "POST /RPC2 HTTP/1.0" 200
6111 0.211 - - 64K
--
OpenGroupware.org XML-RPC
[email protected]
http://mail.opengroupware.org/mailman/listinfo/xmlrpc