You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-dev@axis.apache.org by "Dushshantha Chandradasa (JIRA)" <ax...@ws.apache.org> on 2005/06/07 09:09:44 UTC
[jira] Commented: (AXISCPP-573) problem in setURI() API in IAttribute class
[ http://issues.apache.org/jira/browse/AXISCPP-573?page=comments#action_12312843 ]
Dushshantha Chandradasa commented on AXISCPP-573:
-------------------------------------------------
Here the problem is that the method setURI (const AxisChar* uri) just set a string variable. The engine uses the prifix which is also a string variable in the Attribute object to get the namespace declaration. If we call the setURI(const AxisChar* uri) method while there is a prevously set prefix, it only changes m_uri string variable in the Attribute object which is the return value of getURI() method. Engine still uses the namespace prefix to get the namespace declaration.
I think , removing the setURI() from the API list is not a good idea as one need to set the URI when the prifix is empty.
Among the other two options, the best one is option 1. Here if there is a previously set prefix, setURI() shoul dautomatically set the prefix accordingly. And there is no predefined namespace with that URI, the prefix should be set to empty.
Any thoughts on this???
> problem in setURI() API in IAttribute class
> -------------------------------------------
>
> Key: AXISCPP-573
> URL: http://issues.apache.org/jira/browse/AXISCPP-573
> Project: Axis-C++
> Type: Bug
> Components: Client - Engine
> Reporter: James Jose
> Assignee: Dushshantha Chandradasa
>
> If the prefix of the attribute is empty and if I use setURI() then the Attribute class correctly serialize by adding the correct prefix and if necessary will even add the namespace declaration to the serialized output.
> IAttribute *attr1=phb->createAttribute("Name","","axis");
> attr1->setURI("http://axis.apache.com");
> will create the following soap message
> <ns:TestHeader xmlns:ns="http://ws.apache.org/" xmlns:ns2="http://axis.apache.com" ns2:Name="axis">
> Here setURI() results in generating a namespace declaration for the uri "http://axis.apache.com" and used the generated prefix 'ns2' as the prefix for 'Name' attribute.
> But if the attribute prefix is not empty, then this setURI() does not change its prefix.
> INamespace *nsp=phb->createNamespaceDecl ("nsp","http://apache.com");
> IAttribute *attr1=phb->createAttribute("Name","nsp","axis");
> attr1->setURI("http://axis.apache.com");
> results in
> <ns:TestHeader xmlns:ns="http://ws.apache.org/" nsp:Name="axis" xmlns:nsp="http://apache.com">
> attr1->getPrefix() will return 'nsp'
> attr1->getURI() will return 'http://axis.apache.com'
> but there is no namespace declaration for this combination.
> So either
> 1.setURI() should also change the prefix value accordingly.
> 2.setURI() should not change the URI if prefix is already set.
> 3.setURI() should be removed from the API list.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira