Glad to be of service :-)

I've applied the below fixes to my dev enviroment, but it sure would
be nice to get them into an official release. It would make app
maintenance a lot easier..

dali

On Feb 1, 7:21 am, Matthew Peters <[EMAIL PROTECTED]>
wrote:
> Dali, I am glad you told us about this in the first place as you had
> uncovered a bad bug.
>
> First of all, I made a silly mistake - I  had forgotten that I too had
> removed the @types annotation and that was why it had now started
> working for me. As soon as I put the @types annotation back in it
> started to fail again.
>
> It is caused a rather brittle bit of code where we have to scan a bit
> of human-readable output deep inside SCA. I am not sure how long it
> has been broken for, nor exactly in which cases the error occurs - it
> depends on the order in which something is printed.
>
> Anyway, I have a fix for this which I have checked in to the FULMAR
> branch. I include the two changes here in case you want to apply them;
>
> 1. Fix Bindings/soap/Mapper.php by replacing the last method,
> getAllTypes with this:
>         public function getAllTypes()
>         {
>             $str   = $this->xmldas->__toString();
>             $types = array();
>             $line  = strtok($str, self::EOL);
>             $line = strtok(self::EOL); // skip line that says this is
> an SDO
>             $line = strtok(self::EOL); // skip line that says nn types
> have been defined
>
>             while ($line !== false && strpos($line,'commonj.sdo')) {
>                 $line = strtok(self::EOL);
>             }
>             while ($line !== false && $line != '}') {
>                 $trimmed_line = trim($line);
>                 $words        = explode(' ', $trimmed_line);
>                 if ($words[0] == '-') {
>                     $line = strtok(self::EOL);
>                     continue;
>                 }
>                 $namespace_and_type = $words[1];
>                 $pos_last_hash      = strrpos($namespace_and_type,
> '#');
>                 $namespace          = substr($namespace_and_type, 0,
> $pos_last_hash);
>                 $type               = substr($namespace_and_type,
> $pos_last_hash+1);
>                 if ($type != 'RootType') {
>                     $types[]        = array($namespace, $type);
>                 }
>                 $line               = strtok(self::EOL);
>             }
>             return $types;
>         }
>
> 2. In Bindings/soap/Wrapper.php
>   2.1 Add an instance variable
>         private $class_name                 = null;
>
>   2.2 Initalise it in the constructor
>         $this->class_name = $class_name;
>
>   2.3 Use it inside the __call method at the bottom...replace
>             $xdoc = $this->xmldas->createDocument($method_name .
> "Response");
>       with
>             $namespace = 'http://' . $this->class_name;
>             $xdoc = $this->xmldas->createDocument($namespace,
> $method_name . "Response");
>
> We will make a release with FULMAR soon. I can just zip up the SCA
> directory and send it to you if you like.
>
> We also have the fix for <wsdl:types> that you saw.
>
> Matthew
>
> On Jan 30, 8:29 pm, Dalibor Andzakovic <[EMAIL PROTECTED]>
> wrote:
>
> > I managed to get it going at my end too. It seemed to be the @types
> > annotation that was causing grief.
>
> > In the process we've had to change SCA/Bindings/soap/
> > ServiceDescriptionGenerator.php to output <wsdl:types> tags instead of
> > <types>, but that could just be interop issues.
>
> > dali
>
> > On Jan 30, 3:31 am, Matthew Peters <[EMAIL PROTECTED]>
> > wrote:
>
> > > Hmmm. I tried this out, started putting in a few debug lines, saw
> > > exactly the same message you did, and then it went away and won't come
> > > back :-). Here is what is currently working for me:
>
> > > <?
> > > include "SCA/SCA.php";
> > > $weather = SCA::getService('servicetest.php');
> > > var_dump($weather->sayHello('dali'));
>
> > > //$wsdl = file_get_contents('http://localhost/bugs/bug/servicetest.php?
> > > wsdl');
> > > //file_put_contents('./servicetest.wsdl',$wsdl);
> > > //$weather = SCA::getService('./servicetest.wsdl');
>
> > > $weather = SCA::getService('http://localhost/bugs/bug/servicetest.php?
> > > wsdl','soap',array('location' => 'http://localhost/bugs/bug/
> > > servicetest.php'));
> > > var_dump($weather->sayHello('dali'));
> > > ?>
>
> > > where I have renamed your servicetest4 to servicetest and as you can
> > > see I have the files under htdocs at bugs/bug rather than ihug.
>
> > > You'll see the three lines I have commented out where I get the wsdl
> > > explicitly in one step, and write it into the directory where both the
> > > test script and the server script are located. This is what I always
> > > do and always works for me - write the wsdl out to a file. I suspect
> > > there is something vulnerable about using http://... in the getService
> > > call itself that we have never pinned down - it ought to work but
> > > sometimes doesn't. The server end writes out wsdl itself if it finds
> > > that there is none in the directory beside itself, and I think it's
> > > possible for the wsdl at either end to get out of step if you don't
> > > write it out explicitly.
>
> > > Let me know how you get on.
>
> > > Matthew
>
> > > On Jan 27, 9:29 pm, Dalibor Andzakovic <[EMAIL PROTECTED]>
> > > wrote:
>
> > > > On Jan 25, 10:23 pm, Matthew Peters <[EMAIL PROTECTED]>
> > > > wrote:
>
> > > > > Thanks for trying SCA and for telling us about the problem. Please
> > > > > would you put up the Temperatures.xsd as well? I'll look at it
> > > > > straight away.
>
> > > > Hi Matthew,
>
> > > > thanks for looking at this.
>
> > > > XSD below:
>
> > > > <?xml version="1.0" encoding="UTF-8"?>
> > > > <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";
> > > >            targetNamespace="http://Weather";
> > > >            elementFormDefault="qualified">
>
> > > >   <xs:complexType name="PairType">
> > > >     <xs:sequence>
> > > >       <xs:element name="state" type="xs:string"/>
> > > >       <xs:element name="temperature" type="xs:float"/>
> > > >     </xs:sequence>
> > > >   </xs:complexType>
>
> > > >   <xs:element name="Temperatures">
> > > >     <xs:complexType>
> > > >       <xs:sequence>
> > > >         <xs:element name="entry" type="ns1:PairType"
> > > >                     maxOccurs="unbounded"/>
> > > >       </xs:sequence>
> > > >     </xs:complexType>
> > > >   </xs:element>
>
> > > > </xs:schema>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"phpsoa" group.
To post to this group, send email to phpsoa@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.co.uk/group/phpsoa?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to