[Catalyst-commits] r7551 - in Catalyst-Controller-SOAP/1.0/tags: . 0.5 0.5/lib/Catalyst/Action 0.5/lib/Catalyst/Action/SOAP 0.5/lib/Catalyst/Controller 0.5/lib/Catalyst/Controller/SOAP 0.5/t 0.5/t/PostApp/lib/PostApp/Controller

ruoso at dev.catalyst.perl.org ruoso at dev.catalyst.perl.org
Wed Apr 2 16:16:38 BST 2008


Author: ruoso
Date: 2008-04-02 16:16:37 +0100 (Wed, 02 Apr 2008)
New Revision: 7551

Added:
   Catalyst-Controller-SOAP/1.0/tags/0.5/
   Catalyst-Controller-SOAP/1.0/tags/0.5/Changes
   Catalyst-Controller-SOAP/1.0/tags/0.5/MANIFEST
   Catalyst-Controller-SOAP/1.0/tags/0.5/Makefile.PL
   Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Action/SOAP.pm
   Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Action/SOAP/DocumentLiteral.pm
   Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Action/SOAP/DocumentLiteralWrapped.pm
   Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Action/SOAP/HTTPGet.pm
   Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Action/SOAP/RPCEndpoint.pm
   Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Controller/SOAP.pm
   Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Controller/SOAP/DocumentLiteralWrapped.pm
   Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Controller/SOAP/RPC.pm
   Catalyst-Controller-SOAP/1.0/tags/0.5/t/PostApp.t
   Catalyst-Controller-SOAP/1.0/tags/0.5/t/PostApp/lib/PostApp/Controller/WS.pm
   Catalyst-Controller-SOAP/1.0/tags/0.5/t/PostApp/lib/PostApp/Controller/WithWSDL.pm
   Catalyst-Controller-SOAP/1.0/tags/0.5/t/PostApp/lib/PostApp/Controller/WithWSDL2.pm
   Catalyst-Controller-SOAP/1.0/tags/0.5/t/hello.wsdl
   Catalyst-Controller-SOAP/1.0/tags/0.5/t/hello2.wsdl
Removed:
   Catalyst-Controller-SOAP/1.0/tags/0.5/Changes
   Catalyst-Controller-SOAP/1.0/tags/0.5/MANIFEST
   Catalyst-Controller-SOAP/1.0/tags/0.5/Makefile.PL
   Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Action/SOAP.pm
   Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Action/SOAP/DocumentLiteral.pm
   Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Action/SOAP/HTTPGet.pm
   Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Action/SOAP/RPCEndpoint.pm
   Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Controller/SOAP.pm
   Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Controller/SOAP/RPC.pm
   Catalyst-Controller-SOAP/1.0/tags/0.5/t/PostApp.t
   Catalyst-Controller-SOAP/1.0/tags/0.5/t/PostApp/lib/PostApp/Controller/WS.pm
Log:
[C-C-SOAP] tagging 0.5, CPAN guys must hate me...

Copied: Catalyst-Controller-SOAP/1.0/tags/0.5 (from rev 7540, Catalyst-Controller-SOAP/1.0/trunk)

Deleted: Catalyst-Controller-SOAP/1.0/tags/0.5/Changes
===================================================================
--- Catalyst-Controller-SOAP/1.0/trunk/Changes	2008-04-01 14:15:47 UTC (rev 7540)
+++ Catalyst-Controller-SOAP/1.0/tags/0.5/Changes	2008-04-02 15:16:37 UTC (rev 7551)
@@ -1,153 +0,0 @@
-commit 8bea90e61c8aa0cf269da57b9ccbe33987ca76c8
-Author: Daniel Ruoso <daniel at ruoso.com>
-Date:   Mon Nov 26 11:14:25 2007 +0000
-
-    marking new release fixing errors pointed by CPANTESTERS...
-
-commit fd36b65bea45660841790d2716ac330cc506586b
-Author: Daniel Ruoso <daniel at ruoso.com>
-Date:   Mon Nov 26 11:12:34 2007 +0000
-
-    Revert "Revert "PostApp now calls the interpreter with all the directories in @INC. PostApp app no longer depends on any plugin.""
-    
-    This reverts commit 58704caa35fdc5581366007aafd37cc393a94775.
-
-commit 58704caa35fdc5581366007aafd37cc393a94775
-Author: Daniel Ruoso <daniel at ruoso.com>
-Date:   Mon Nov 26 11:11:58 2007 +0000
-
-    Revert "PostApp now calls the interpreter with all the directories in @INC. PostApp app no longer depends on any plugin."
-    
-    This reverts commit 46870ad634f5a8228d7af797117219369dc107db.
-
-commit 46870ad634f5a8228d7af797117219369dc107db
-Author: Daniel Ruoso <daniel at ruoso.com>
-Date:   Mon Nov 26 11:09:35 2007 +0000
-
-    PostApp now calls the interpreter with all the directories in @INC. PostApp app no longer depends on any plugin.
-
-commit 54c6bf1c90e55eb83330ce0fb9f5cd686ac63d11
-Author: Daniel Ruoso <daniel at ruoso.com>
-Date:   Thu Nov 22 18:26:32 2007 +0000
-
-    marking a new release and leaving RPCEncoded out of it.
-
-commit 587c81026d0a8d13d27a124cf9175e0c2d5528d7
-Author: Daniel Ruoso <daniel at ruoso.com>
-Date:   Wed Nov 21 18:34:26 2007 +0000
-
-    removing directory entries from MANIFEST
-
-commit 1931438d732fe7e51942d6bc69b454e5e4dcf97a
-Author: Daniel Ruoso <daniel at ruoso.com>
-Date:   Wed Nov 21 18:33:27 2007 +0000
-
-    Updating changes file
-
-commit 9303bc1e368afb6def74573941eaf459f58533bc
-Author: Daniel Ruoso <daniel at ruoso.com>
-Date:   Wed Nov 21 18:33:13 2007 +0000
-
-    marking a new release
-
-commit 9260e5d96945a4edeb07f8676e12750f0d8d6da4
-Author: Daniel Ruoso <daniel at ruoso.com>
-Date:   Wed Nov 21 18:32:24 2007 +0000
-
-    Make the test more cross-platform
-
-commit 4089cc6ffd0d2cc90feac824aa39ff593d40aeca
-Author: Daniel Ruoso <daniel at ruoso.com>
-Date:   Wed Nov 21 18:23:14 2007 +0000
-
-    Better README and Changes file
-
-commit 865fcd5df2222b9034690fef7f4f6c800c9a75d4
-Author: Daniel Ruoso <daniel at ruoso.com>
-Date:   Wed Nov 21 18:21:23 2007 +0000
-
-    The PostApp app is now used in a test...
-
-commit 16f12fb6cda352faa2e88dacf6e468c3778d3a52
-Author: Daniel Ruoso <ruoso at pitombeira.(none)>
-Date:   Sun Nov 18 16:50:54 2007 +0000
-
-    now do not depend on renderview in the test. Also declare the versioned dependency on the Catalyst::Runtime
-
-commit dcdeecc9b1add94f68aa1905957cd9b9ae96c761
-Author: Daniel Ruoso <ruoso at pitombeira.(none)>
-Date:   Thu Nov 15 09:59:28 2007 +0000
-
-    marking new release
-
-commit a201321dde6a2575d95b88fbf854caf424ca0ccf
-Author: Daniel Ruoso <ruoso at pitombeira.(none)>
-Date:   Thu Nov 15 09:54:21 2007 +0000
-
-    fixing naming of modules in documentation...
-
-commit 7c2b71c1a19a521768c6debf07aaea149549195e
-Author: Daniel Ruoso <ruoso at pitombeira.(none)>
-Date:   Wed Nov 14 19:13:24 2007 +0000
-
-    marking new release
-
-commit e9bd4bbe2c3d3e678b7fc1440b5f72766b3307a6
-Author: Daniel Ruoso <ruoso at pitombeira.(none)>
-Date:   Wed Nov 14 19:12:53 2007 +0000
-
-    rpc endpoint now working
-
-commit 8baa49622fadce26d5e67ab3e1a215573b544b29
-Author: Daniel Ruoso <ruoso at pitombeira.(none)>
-Date:   Wed Nov 14 18:49:51 2007 +0000
-
-    inserting an application inside it as to become more easily testeable
-
-commit cbb6c48df9344176d1b7a7ca913358762758216f
-Author: Daniel Ruoso <ruoso at pitombeira.(none)>
-Date:   Wed Nov 14 17:44:53 2007 +0000
-
-    commenting out the post test, as I am not being able to actually test it.
-
-commit 255b3e5ecfd72b6ee80efd13352ec339bb8544b0
-Author: Daniel Ruoso <ruoso at pitombeira.(none)>
-Date:   Wed Nov 14 15:19:25 2007 +0000
-
-    trying to make the test POST to work
-
-commit 05f68c21b35b7e935a1cbf69841550ef4a941726
-Author: Daniel Ruoso <ruoso at pitombeira.(none)>
-Date:   Wed Nov 14 14:22:14 2007 +0000
-
-    fixing the attribute parsing method. HTTPGet working, POST test failing because the post data is not reaching the destination...
-
-commit ae3039a74cfe706bd3580a36f53a6221fbe7f39d
-Author: Daniel Ruoso <ruoso at pitombeira.(none)>
-Date:   Wed Nov 14 12:56:34 2007 +0000
-
-    Implementing a test application
-
-commit 9df23a3e824051f9b53c372c423dd40407af9b23
-Author: Daniel Ruoso <ruoso at pitombeira.(none)>
-Date:   Tue Nov 13 18:57:31 2007 +0000
-
-    HTTP Get implementation.
-
-commit fb83167aacbc590632158e8a4469c6d99d635887
-Author: Daniel Ruoso <ruoso at pitombeira.(none)>
-Date:   Tue Nov 13 18:04:29 2007 +0000
-
-    Implements minimal response generation
-
-commit 8172902febdd3686d6be6ecbc4daad5a139d383b
-Author: Daniel Ruoso <ruoso at pitombeira.(none)>
-Date:   Tue Nov 13 17:10:53 2007 +0000
-
-    XML::DOM doesn't support namespaces, let's move to XML::LibXML instead
-
-commit 4635f7dc730316da5952d3e533e439288508fb21
-Author: Daniel Ruoso <ruoso at pitombeira.(none)>
-Date:   Tue Nov 13 15:17:41 2007 +0000
-
-    initial revision

Copied: Catalyst-Controller-SOAP/1.0/tags/0.5/Changes (from rev 7550, Catalyst-Controller-SOAP/1.0/trunk/Changes)
===================================================================
--- Catalyst-Controller-SOAP/1.0/tags/0.5/Changes	                        (rev 0)
+++ Catalyst-Controller-SOAP/1.0/tags/0.5/Changes	2008-04-02 15:16:37 UTC (rev 7551)
@@ -0,0 +1,170 @@
+------------------------------------------------------------------------
+r7549 | ruoso | 2008-04-02 16:10:18 +0100 (Qua, 02 Abr 2008) | 1 line
+
+[C-C-SOAP] Tests for Document/Literal-Wrapped working. Supports several wsdls and schemas in the config.
+------------------------------------------------------------------------
+r7548 | ruoso | 2008-04-02 15:54:42 +0100 (Qua, 02 Abr 2008) | 1 line
+
+[C-C-SOAP] Document/Literal-Wrapped support (with a big ONLY FOR COMPATIBILTY REASONS disclaimer)... Test is still failing as the SOAPAction header seems to be lost in the test...
+------------------------------------------------------------------------
+r7546 | ruoso | 2008-04-02 12:23:38 +0100 (Qua, 02 Abr 2008) | 1 line
+
+[C-C-SOAP] Better support for RPC messages, tests including an example of a RPC-Literal service, exception catching generating a SOAP Fault.
+------------------------------------------------------------------------
+r7542 | ruoso | 2008-04-01 18:05:00 +0100 (Ter, 01 Abr 2008) | 1 line
+
+[C-C-S] Now supports WSDL encoding/decoding of messages.
+------------------------------------------------------------------------
+commit 8bea90e61c8aa0cf269da57b9ccbe33987ca76c8
+Author: Daniel Ruoso <daniel at ruoso.com>
+Date:   Mon Nov 26 11:14:25 2007 +0000
+
+    marking new release fixing errors pointed by CPANTESTERS...
+
+commit fd36b65bea45660841790d2716ac330cc506586b
+Author: Daniel Ruoso <daniel at ruoso.com>
+Date:   Mon Nov 26 11:12:34 2007 +0000
+
+    Revert "Revert "PostApp now calls the interpreter with all the directories in @INC. PostApp app no longer depends on any plugin.""
+    
+    This reverts commit 58704caa35fdc5581366007aafd37cc393a94775.
+
+commit 58704caa35fdc5581366007aafd37cc393a94775
+Author: Daniel Ruoso <daniel at ruoso.com>
+Date:   Mon Nov 26 11:11:58 2007 +0000
+
+    Revert "PostApp now calls the interpreter with all the directories in @INC. PostApp app no longer depends on any plugin."
+    
+    This reverts commit 46870ad634f5a8228d7af797117219369dc107db.
+
+commit 46870ad634f5a8228d7af797117219369dc107db
+Author: Daniel Ruoso <daniel at ruoso.com>
+Date:   Mon Nov 26 11:09:35 2007 +0000
+
+    PostApp now calls the interpreter with all the directories in @INC. PostApp app no longer depends on any plugin.
+
+commit 54c6bf1c90e55eb83330ce0fb9f5cd686ac63d11
+Author: Daniel Ruoso <daniel at ruoso.com>
+Date:   Thu Nov 22 18:26:32 2007 +0000
+
+    marking a new release and leaving RPCEncoded out of it.
+
+commit 587c81026d0a8d13d27a124cf9175e0c2d5528d7
+Author: Daniel Ruoso <daniel at ruoso.com>
+Date:   Wed Nov 21 18:34:26 2007 +0000
+
+    removing directory entries from MANIFEST
+
+commit 1931438d732fe7e51942d6bc69b454e5e4dcf97a
+Author: Daniel Ruoso <daniel at ruoso.com>
+Date:   Wed Nov 21 18:33:27 2007 +0000
+
+    Updating changes file
+
+commit 9303bc1e368afb6def74573941eaf459f58533bc
+Author: Daniel Ruoso <daniel at ruoso.com>
+Date:   Wed Nov 21 18:33:13 2007 +0000
+
+    marking a new release
+
+commit 9260e5d96945a4edeb07f8676e12750f0d8d6da4
+Author: Daniel Ruoso <daniel at ruoso.com>
+Date:   Wed Nov 21 18:32:24 2007 +0000
+
+    Make the test more cross-platform
+
+commit 4089cc6ffd0d2cc90feac824aa39ff593d40aeca
+Author: Daniel Ruoso <daniel at ruoso.com>
+Date:   Wed Nov 21 18:23:14 2007 +0000
+
+    Better README and Changes file
+
+commit 865fcd5df2222b9034690fef7f4f6c800c9a75d4
+Author: Daniel Ruoso <daniel at ruoso.com>
+Date:   Wed Nov 21 18:21:23 2007 +0000
+
+    The PostApp app is now used in a test...
+
+commit 16f12fb6cda352faa2e88dacf6e468c3778d3a52
+Author: Daniel Ruoso <ruoso at pitombeira.(none)>
+Date:   Sun Nov 18 16:50:54 2007 +0000
+
+    now do not depend on renderview in the test. Also declare the versioned dependency on the Catalyst::Runtime
+
+commit dcdeecc9b1add94f68aa1905957cd9b9ae96c761
+Author: Daniel Ruoso <ruoso at pitombeira.(none)>
+Date:   Thu Nov 15 09:59:28 2007 +0000
+
+    marking new release
+
+commit a201321dde6a2575d95b88fbf854caf424ca0ccf
+Author: Daniel Ruoso <ruoso at pitombeira.(none)>
+Date:   Thu Nov 15 09:54:21 2007 +0000
+
+    fixing naming of modules in documentation...
+
+commit 7c2b71c1a19a521768c6debf07aaea149549195e
+Author: Daniel Ruoso <ruoso at pitombeira.(none)>
+Date:   Wed Nov 14 19:13:24 2007 +0000
+
+    marking new release
+
+commit e9bd4bbe2c3d3e678b7fc1440b5f72766b3307a6
+Author: Daniel Ruoso <ruoso at pitombeira.(none)>
+Date:   Wed Nov 14 19:12:53 2007 +0000
+
+    rpc endpoint now working
+
+commit 8baa49622fadce26d5e67ab3e1a215573b544b29
+Author: Daniel Ruoso <ruoso at pitombeira.(none)>
+Date:   Wed Nov 14 18:49:51 2007 +0000
+
+    inserting an application inside it as to become more easily testeable
+
+commit cbb6c48df9344176d1b7a7ca913358762758216f
+Author: Daniel Ruoso <ruoso at pitombeira.(none)>
+Date:   Wed Nov 14 17:44:53 2007 +0000
+
+    commenting out the post test, as I am not being able to actually test it.
+
+commit 255b3e5ecfd72b6ee80efd13352ec339bb8544b0
+Author: Daniel Ruoso <ruoso at pitombeira.(none)>
+Date:   Wed Nov 14 15:19:25 2007 +0000
+
+    trying to make the test POST to work
+
+commit 05f68c21b35b7e935a1cbf69841550ef4a941726
+Author: Daniel Ruoso <ruoso at pitombeira.(none)>
+Date:   Wed Nov 14 14:22:14 2007 +0000
+
+    fixing the attribute parsing method. HTTPGet working, POST test failing because the post data is not reaching the destination...
+
+commit ae3039a74cfe706bd3580a36f53a6221fbe7f39d
+Author: Daniel Ruoso <ruoso at pitombeira.(none)>
+Date:   Wed Nov 14 12:56:34 2007 +0000
+
+    Implementing a test application
+
+commit 9df23a3e824051f9b53c372c423dd40407af9b23
+Author: Daniel Ruoso <ruoso at pitombeira.(none)>
+Date:   Tue Nov 13 18:57:31 2007 +0000
+
+    HTTP Get implementation.
+
+commit fb83167aacbc590632158e8a4469c6d99d635887
+Author: Daniel Ruoso <ruoso at pitombeira.(none)>
+Date:   Tue Nov 13 18:04:29 2007 +0000
+
+    Implements minimal response generation
+
+commit 8172902febdd3686d6be6ecbc4daad5a139d383b
+Author: Daniel Ruoso <ruoso at pitombeira.(none)>
+Date:   Tue Nov 13 17:10:53 2007 +0000
+
+    XML::DOM doesn't support namespaces, let's move to XML::LibXML instead
+
+commit 4635f7dc730316da5952d3e533e439288508fb21
+Author: Daniel Ruoso <ruoso at pitombeira.(none)>
+Date:   Tue Nov 13 15:17:41 2007 +0000
+
+    initial revision

Deleted: Catalyst-Controller-SOAP/1.0/tags/0.5/MANIFEST
===================================================================
--- Catalyst-Controller-SOAP/1.0/trunk/MANIFEST	2008-04-01 14:15:47 UTC (rev 7540)
+++ Catalyst-Controller-SOAP/1.0/tags/0.5/MANIFEST	2008-04-02 15:16:37 UTC (rev 7551)
@@ -1,26 +0,0 @@
-Changes
-Makefile.PL
-MANIFEST
-META.yml
-README
-t/Catalyst-Controller-SOAP.t
-t/PostApp.t
-t/lib/TestApp/Controller/WS.pm
-t/lib/TestApp/Controller/Root.pm
-t/lib/TestApp.pm
-t/PostApp/script/postapp_cgi.pl
-t/PostApp/script/postapp_test.pl
-t/PostApp/script/post.pl
-t/PostApp/script/postapp_server.pl
-t/PostApp/lib/PostApp/Controller/WS.pm
-t/PostApp/lib/PostApp/Controller/Root.pm
-t/PostApp/lib/PostApp/Controller/WS2.pm
-t/PostApp/lib/PostApp.pm
-t/PostApp/postapp.yml
-lib/Catalyst/Action/SOAP.pm
-lib/Catalyst/Action/SOAP/DocumentLiteral.pm
-lib/Catalyst/Action/SOAP/HTTPGet.pm
-lib/Catalyst/Action/SOAP/RPCEndpoint.pm
-lib/Catalyst/Action/SOAP/RPCLiteral.pm
-lib/Catalyst/Controller/SOAP.pm
-lib/Catalyst/Controller/SOAP/RPC.pm

Copied: Catalyst-Controller-SOAP/1.0/tags/0.5/MANIFEST (from rev 7548, Catalyst-Controller-SOAP/1.0/trunk/MANIFEST)
===================================================================
--- Catalyst-Controller-SOAP/1.0/tags/0.5/MANIFEST	                        (rev 0)
+++ Catalyst-Controller-SOAP/1.0/tags/0.5/MANIFEST	2008-04-02 15:16:37 UTC (rev 7551)
@@ -0,0 +1,32 @@
+Changes
+Makefile.PL
+MANIFEST
+META.yml
+README
+t/Catalyst-Controller-SOAP.t
+t/hello.wsdl
+t/hello2.wsdl
+t/PostApp.t
+t/lib/TestApp/Controller/WS.pm
+t/lib/TestApp/Controller/Root.pm
+t/lib/TestApp.pm
+t/PostApp/script/postapp_cgi.pl
+t/PostApp/script/postapp_test.pl
+t/PostApp/script/post.pl
+t/PostApp/script/postapp_server.pl
+t/PostApp/lib/PostApp/Controller/WithWSDL.pm
+t/PostApp/lib/PostApp/Controller/WithWSDL2.pm
+t/PostApp/lib/PostApp/Controller/WS.pm
+t/PostApp/lib/PostApp/Controller/Root.pm
+t/PostApp/lib/PostApp/Controller/WS2.pm
+t/PostApp/lib/PostApp.pm
+t/PostApp/postapp.yml
+lib/Catalyst/Action/SOAP.pm
+lib/Catalyst/Action/SOAP/DocumentLiteral.pm
+lib/Catalyst/Action/SOAP/DocumentLiteralWrapped.pm
+lib/Catalyst/Action/SOAP/HTTPGet.pm
+lib/Catalyst/Action/SOAP/RPCEndpoint.pm
+lib/Catalyst/Action/SOAP/RPCLiteral.pm
+lib/Catalyst/Controller/SOAP.pm
+lib/Catalyst/Controller/SOAP/RPC.pm
+lib/Catalyst/Controller/SOAP/DocumentLiteralWrapped.pm

Deleted: Catalyst-Controller-SOAP/1.0/tags/0.5/Makefile.PL
===================================================================
--- Catalyst-Controller-SOAP/1.0/trunk/Makefile.PL	2008-04-01 14:15:47 UTC (rev 7540)
+++ Catalyst-Controller-SOAP/1.0/tags/0.5/Makefile.PL	2008-04-02 15:16:37 UTC (rev 7551)
@@ -1,12 +0,0 @@
-use 5.008008;
-use ExtUtils::MakeMaker;
-# See lib/ExtUtils/MakeMaker.pm for details of how to influence
-# the contents of the Makefile that is written.
-WriteMakefile(
-    NAME              => 'Catalyst::Controller::SOAP',
-    VERSION_FROM      => 'lib/Catalyst/Controller/SOAP.pm', # finds $VERSION
-    PREREQ_PM         => { Catalyst::Runtime => 5.7011, XML::LibXML => 0}, # e.g., Module::Name => 1.1
-    ($] >= 5.005 ?     ## Add these new keywords supported since 5.005
-      (ABSTRACT_FROM  => 'lib/Catalyst/Controller/SOAP.pm', # retrieve abstract from module
-       AUTHOR         => 'Daniel Ruoso <daniel.ruoso at verticalone.pt>') : ()),
-);

Copied: Catalyst-Controller-SOAP/1.0/tags/0.5/Makefile.PL (from rev 7543, Catalyst-Controller-SOAP/1.0/trunk/Makefile.PL)
===================================================================
--- Catalyst-Controller-SOAP/1.0/tags/0.5/Makefile.PL	                        (rev 0)
+++ Catalyst-Controller-SOAP/1.0/tags/0.5/Makefile.PL	2008-04-02 15:16:37 UTC (rev 7551)
@@ -0,0 +1,13 @@
+use 5.008008;
+use ExtUtils::MakeMaker;
+# See lib/ExtUtils/MakeMaker.pm for details of how to influence
+# the contents of the Makefile that is written.
+WriteMakefile(
+    NAME              => 'Catalyst::Controller::SOAP',
+    VERSION_FROM      => 'lib/Catalyst/Controller/SOAP.pm', # finds $VERSION
+    PREREQ_PM         => { Catalyst::Runtime => 5.7011, XML::LibXML => 0,
+                           XML::Compile::SOAP => 0},
+    ($] >= 5.005 ?     ## Add these new keywords supported since 5.005
+      (ABSTRACT_FROM  => 'lib/Catalyst/Controller/SOAP.pm', # retrieve abstract from module
+       AUTHOR         => 'Daniel Ruoso <daniel.ruoso at verticalone.pt>') : ()),
+);

Deleted: Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Action/SOAP/DocumentLiteral.pm
===================================================================
--- Catalyst-Controller-SOAP/1.0/trunk/lib/Catalyst/Action/SOAP/DocumentLiteral.pm	2008-04-01 14:15:47 UTC (rev 7540)
+++ Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Action/SOAP/DocumentLiteral.pm	2008-04-02 15:16:37 UTC (rev 7551)
@@ -1,58 +0,0 @@
-{ package Catalyst::Action::SOAP::DocumentLiteral;
-
-  use base qw/Catalyst::Action::SOAP/;
-  use constant NS_SOAP_ENV => "http://schemas.xmlsoap.org/soap/envelope/";
-
-  sub execute {
-      my $self = shift;
-      my ( $controller, $c ) = @_;
-      $self->prepare_soap_helper($c);
-      $self->prepare_soap_xml_post($c);
-      unless ($c->stash->{soap}->fault) {
-          my $envelope = $c->stash->{soap}->parsed_envelope;
-          my $namespace = $c->stash->{soap}->namespace || NS_SOAP_ENV;
-          my ($body) = $envelope->getElementsByTagNameNS($namespace, 'Body');
-          $self->NEXT::execute($controller, $c, $body);
-      }
-  }
-};
-
-1;
-
-__END__
-
-=head1 NAME
-
-Catalyst::Action::SOAP::DocumentLiteral - Document Literal service
-
-=head1 SYNOPSIS
-
-  # not used directly.
-
-=head1 DESCRIPTION
-
-This action implements a simple parse of the envelope and passing the
-body to the service as a xml object.
-
-=head1 TODO
-
-Almost all the SOAP protocol is unsupported, only the method
-dispatching and, optionally, the soap-decoding of the arguments are
-made.
-
-=head1 AUTHORS
-
-Daniel Ruoso <daniel.ruoso at verticalone.pt>
-
-=head1 BUG REPORTS
-
-Please submit all bugs regarding C<Catalyst::Controller::SOAP> to
-C<bug-catalyst-controller-soap at rt.cpan.org>
-
-=head1 LICENSE
-
-This library is free software, you can redistribute it and/or modify
-it under the same terms as Perl itself.
-
-=cut
-

Copied: Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Action/SOAP/DocumentLiteral.pm (from rev 7546, Catalyst-Controller-SOAP/1.0/trunk/lib/Catalyst/Action/SOAP/DocumentLiteral.pm)
===================================================================
--- Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Action/SOAP/DocumentLiteral.pm	                        (rev 0)
+++ Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Action/SOAP/DocumentLiteral.pm	2008-04-02 15:16:37 UTC (rev 7551)
@@ -0,0 +1,73 @@
+{ package Catalyst::Action::SOAP::DocumentLiteral;
+
+  use base qw/Catalyst::Action::SOAP/;
+  use constant NS_SOAP_ENV => "http://schemas.xmlsoap.org/soap/envelope/";
+
+  sub execute {
+      my $self = shift;
+      my ( $controller, $c ) = @_;
+      $self->prepare_soap_helper($controller,$c);
+      $self->prepare_soap_xml_post($controller,$c);
+      unless ($c->stash->{soap}->fault) {
+          my $envelope = $c->stash->{soap}->parsed_envelope;
+          my $namespace = $c->stash->{soap}->namespace || NS_SOAP_ENV;
+          my ($body) = $envelope->getElementsByTagNameNS($namespace, 'Body');
+          my $operation = $self->name;
+          $c->stash->{soap}->operation_name($operation);
+          eval {
+              if ($controller->wsdlobj) {
+                  $body = $c->stash->{soap}->arguments
+                    ($controller->decoders->{$operation}->($body));
+              }
+          };
+          if ($@) {
+              $c->stash->{soap}->fault
+                ({ code => [ 'env:Sender' => 'env:Body' ],
+                   reason => 'Bad Body', detail =>
+                   'Schema validation on the body failed.'});
+          } else {
+              $self->NEXT::execute($controller, $c, $body);
+          }
+      }
+  }
+};
+
+1;
+
+__END__
+
+=head1 NAME
+
+Catalyst::Action::SOAP::DocumentLiteral - Document Literal service
+
+=head1 SYNOPSIS
+
+  # not used directly.
+
+=head1 DESCRIPTION
+
+This action implements a simple parse of the envelope and passing the
+body to the service as a xml object.
+
+=head1 TODO
+
+Almost all the SOAP protocol is unsupported, only the method
+dispatching and, optionally, the soap-decoding of the arguments are
+made.
+
+=head1 AUTHORS
+
+Daniel Ruoso <daniel.ruoso at verticalone.pt>
+
+=head1 BUG REPORTS
+
+Please submit all bugs regarding C<Catalyst::Controller::SOAP> to
+C<bug-catalyst-controller-soap at rt.cpan.org>
+
+=head1 LICENSE
+
+This library is free software, you can redistribute it and/or modify
+it under the same terms as Perl itself.
+
+=cut
+

Copied: Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Action/SOAP/DocumentLiteralWrapped.pm (from rev 7549, Catalyst-Controller-SOAP/1.0/trunk/lib/Catalyst/Action/SOAP/DocumentLiteralWrapped.pm)
===================================================================
--- Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Action/SOAP/DocumentLiteralWrapped.pm	                        (rev 0)
+++ Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Action/SOAP/DocumentLiteralWrapped.pm	2008-04-02 15:16:37 UTC (rev 7551)
@@ -0,0 +1,110 @@
+{ package Catalyst::Action::SOAP::DocumentLiteralWrapped;
+  use strict;
+  use base qw(Catalyst::Action::SOAP);
+
+  sub execute {
+      my $self = shift;
+      my ( $controller, $c ) = @_;
+
+      $self->prepare_soap_helper(@_);
+
+      my $prefix = $controller->config->{soap_action_prefix};
+      my $soapaction = $c->req->headers->header('SOAPAction');
+
+      die 'No SOAP Action' unless $soapaction;
+
+      $soapaction =~ s/(^\"|\"$)//g;
+
+      die 'Bad SOAP Action: '.$soapaction unless
+        $prefix eq substr($soapaction,0,length($prefix));
+
+      my $operation = substr($soapaction,length($prefix));
+      my $action = $controller->action_for($operation);
+
+      die 'SOAP Action does not map to any operation' unless $action;
+
+      $c->forward($operation);
+  }
+};
+
+1;
+
+__END__
+
+=head1 NAME
+
+Catalyst::Action::SOAP::DocumentLiteralWrapped - Document/Literal
+Wrapped SOAP ActionClass
+
+=head1 SYNOPSIS
+
+ # in the controller
+
+ __PACKAGE__->{config}{soap_action_prefix} = 'http://foo/bar/';
+
+ use base qw(Catalyst::Controller::SOAP::DocumentLiteralWrapped);
+ # or
+ sub endpoint : Local ActionClass(SOAP::DocumentLiteralWrapped) { }
+
+=head1 DESCRIPTION
+
+Microsoft has defined a pseudo-standard for SOAP usage called
+Document/Literal Wrapped. This standard is a deviation of both the
+Document/Literal and of the RPC/Literal usages.
+
+A Document/Literal service is supposed to have one operation per bind,
+as it's not techically possible to dispatch on the content of the
+Body. In fact, as the Body is used as "literal" the dispatching should
+not even look at it, it should be based on the port that received the
+request.
+
+RPC/Literal, on the other hand, supports the use of several operations
+per bind, and the dispatching of this operations is based on the first
+and only child element of the message body, which defines the
+operation. The arguments are set as the parts of the message in the
+WSDL.
+
+Document/Literal-Wrapped is a deviation of both, as the message should
+be interpreted as Document/Literal, but the dispatching requires an
+additional step of looking at the SOAPAction HTTP header, which will
+identify the proper operation to be dispatched.
+
+This is plain wrong, as the SOAP Action information should be used for
+routing pourposes only and not for operation dispatch. Please see the
+SOAP standard. In fact, SOAP1.2 even makes SOAPAction optional.
+
+=head1 WARNING
+
+THIS MODULE IS HERE FOR COMPATIBILITY REASONS ONLY, SO YOU CAN USE
+WHEN IN NEED TO IMPLEMENT A LEGACY SERVICE THAT USES THIS
+PSEUDO-STANDARD. THIS USAGE SCENARIO SHOULD NOT BE PROMOTED BY ANY
+WAY. THE CORRECT WAY TO IMPLEMENT THE SAME FUNCTIONALITY IS BY USING
+RPC/Literal, THAT WILL IN PRODUCE THE EXACT SAME MESSAGE BODY.
+
+=head1 USE
+
+The operation is dispatched according to the SOAPAction header. The
+operation name is extracted by removing the given prefix and assuming
+the rest of the SOAPAction is the effective operation name (removing
+"s).
+
+=head1 TODO
+
+Well, here? nothing, all the work is done in the superclass.
+
+=head1 AUTHOR
+
+Daniel Ruoso <daniel.ruoso at verticalone.pt>
+
+=head1 BUG REPORTS
+
+Please submit all bugs regarding C<Catalyst::Controller::SOAP> to
+C<bug-catalyst-controller-soap at rt.cpan.org>
+
+=head1 LICENSE
+
+This library is free software, you can redistribute it and/or modify
+it under the same terms as Perl itself.
+
+=cut
+

Deleted: Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Action/SOAP/HTTPGet.pm
===================================================================
--- Catalyst-Controller-SOAP/1.0/trunk/lib/Catalyst/Action/SOAP/HTTPGet.pm	2008-04-01 14:15:47 UTC (rev 7540)
+++ Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Action/SOAP/HTTPGet.pm	2008-04-02 15:16:37 UTC (rev 7551)
@@ -1,51 +0,0 @@
-{   package Catalyst::Action::SOAP::HTTPGet;
-
-    use base qw/Catalyst::Action::SOAP/;
-
-    sub execute {
-        my $self = shift;
-        my ( $controller, $c ) = @_;
-        $self->prepare_soap_helper($c);
-        $self->NEXT::execute(@_);
-    }
-};
-
-1;
-
-__END__
-
-=head1 NAME
-
-Catalyst::Action::SOAP::HTTPGet - HTTP Get service
-
-=head1 SYNOPSIS
-
-  # not used directly.
-
-=head1 DESCRIPTION
-
-This actually is here just to help delivering services that are
-invoked by simple http get requests, as defined in the SOAP spec. It
-won't do much, except for preparing the $c->stash->{soap} variable, so
-the returns can be implemented.
-
-=head1 TODO
-
-There is not much to be done here.
-
-=head1 AUTHORS
-
-Daniel Ruoso <daniel.ruoso at verticalone.pt>
-
-=head1 BUG REPORTS
-
-Please submit all bugs regarding C<Catalyst::Controller::SOAP> to
-C<bug-catalyst-controller-soap at rt.cpan.org>
-
-=head1 LICENSE
-
-This library is free software, you can redistribute it and/or modify
-it under the same terms as Perl itself.
-
-=cut
-

Copied: Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Action/SOAP/HTTPGet.pm (from rev 7542, Catalyst-Controller-SOAP/1.0/trunk/lib/Catalyst/Action/SOAP/HTTPGet.pm)
===================================================================
--- Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Action/SOAP/HTTPGet.pm	                        (rev 0)
+++ Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Action/SOAP/HTTPGet.pm	2008-04-02 15:16:37 UTC (rev 7551)
@@ -0,0 +1,51 @@
+{   package Catalyst::Action::SOAP::HTTPGet;
+
+    use base qw/Catalyst::Action::SOAP/;
+
+    sub execute {
+        my $self = shift;
+        my ( $controller, $c ) = @_;
+        $self->prepare_soap_helper($controller,$c);
+        $self->NEXT::execute(@_);
+    }
+};
+
+1;
+
+__END__
+
+=head1 NAME
+
+Catalyst::Action::SOAP::HTTPGet - HTTP Get service
+
+=head1 SYNOPSIS
+
+  # not used directly.
+
+=head1 DESCRIPTION
+
+This actually is here just to help delivering services that are
+invoked by simple http get requests, as defined in the SOAP spec. It
+won't do much, except for preparing the $c->stash->{soap} variable, so
+the returns can be implemented.
+
+=head1 TODO
+
+There is not much to be done here.
+
+=head1 AUTHORS
+
+Daniel Ruoso <daniel.ruoso at verticalone.pt>
+
+=head1 BUG REPORTS
+
+Please submit all bugs regarding C<Catalyst::Controller::SOAP> to
+C<bug-catalyst-controller-soap at rt.cpan.org>
+
+=head1 LICENSE
+
+This library is free software, you can redistribute it and/or modify
+it under the same terms as Perl itself.
+
+=cut
+

Deleted: Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Action/SOAP/RPCEndpoint.pm
===================================================================
--- Catalyst-Controller-SOAP/1.0/trunk/lib/Catalyst/Action/SOAP/RPCEndpoint.pm	2008-04-01 14:15:47 UTC (rev 7540)
+++ Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Action/SOAP/RPCEndpoint.pm	2008-04-02 15:16:37 UTC (rev 7551)
@@ -1,85 +0,0 @@
-{ package Catalyst::Action::SOAP::RPCEndpoint;
-
-  use base qw/Catalyst::Action::SOAP/;
-  use constant NS_SOAP_ENV => "http://schemas.xmlsoap.org/soap/envelope/";
-
-  sub execute {
-      my $self = shift;
-      my ( $controller, $c ) = @_;
-
-      $self->prepare_soap_helper($c);
-      $self->prepare_soap_xml_post($c);
-      unless ($c->stash->{soap}->fault) {
-          my $envelope = $c->stash->{soap}->parsed_envelope;
-          my $namespace = $c->stash->{soap}->namespace || NS_SOAP_ENV;
-          my ($body) = $envelope->getElementsByTagNameNS($namespace,'Body',0);
-          my @children = $body->getChildNodes();
-          if (scalar @children != 1) {
-              $c->stash->{soap}->fault
-                ({ code => { 'env:Sender' => 'env:Body' },
-                   reason => 'Bad Body', detail =>
-                   'RPC messages should contain only one element inside body'})
-            } else {
-                my ($smthing, $operation) = split /:/, $children[0]->nodeName();
-                $operation ||= $smthing; # if there's no ns prefix,
-                                         # operation is the first
-                                         # part.
-                my $arguments = $children[0]->getChildNodes();
-                $c->stash->{soap}->arguments($arguments);
-                if (!grep { /RPC(Encoded|Literal)/ } @{$controller->action_for($operation)->attributes->{ActionClass}}) {
-                    $c->stash->{soap}->fault
-                      ({ code => { 'env:Sender' => 'env:Body' },
-                         reason => 'Bad Operation', detail =>
-                         'Invalid Operation'})
-                } else {
-                    # this is our RPC action
-                    $c->forward($operation);
-                }
-            }
-      }
-  }
-};
-
-1;
-
-__END__
-
-=head1 NAME
-
-Catalyst::Action::SOAP::RPCEndpoint - RPC Dispatcher
-
-=head1 SYNOPSIS
-
-  # not used directly.
-
-=head1 DESCRIPTION
-
-This class is used by L<Catalyst::Controller::SOAP> to dispatch to the
-RPC operations inside a controller. These operations are quite
-different from the others, as they are seen by Catalyst as this single
-action. During the registering phase, the soap rpc operations are
-included in the hash that is sent to this object, so they can be
-invoked later.
-
-=head1 TODO
-
-Almost all the SOAP protocol is unsupported, only the method
-dispatching and, optionally, the soap-decoding of the arguments are
-made.
-
-=head1 AUTHORS
-
-Daniel Ruoso <daniel.ruoso at verticalone.pt>
-
-=head1 BUG REPORTS
-
-Please submit all bugs regarding C<Catalyst::Controller::SOAP> to
-C<bug-catalyst-controller-soap at rt.cpan.org>
-
-=head1 LICENSE
-
-This library is free software, you can redistribute it and/or modify
-it under the same terms as Perl itself.
-
-=cut
-

Copied: Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Action/SOAP/RPCEndpoint.pm (from rev 7546, Catalyst-Controller-SOAP/1.0/trunk/lib/Catalyst/Action/SOAP/RPCEndpoint.pm)
===================================================================
--- Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Action/SOAP/RPCEndpoint.pm	                        (rev 0)
+++ Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Action/SOAP/RPCEndpoint.pm	2008-04-02 15:16:37 UTC (rev 7551)
@@ -0,0 +1,109 @@
+{ package Catalyst::Action::SOAP::RPCEndpoint;
+
+  use strict;
+  use base qw/Catalyst::Action::SOAP/;
+  use constant NS_SOAP_ENV => "http://schemas.xmlsoap.org/soap/envelope/";
+  use UNIVERSAL;
+
+  sub execute {
+      my $self = shift;
+      my ( $controller, $c ) = @_;
+
+      $self->prepare_soap_helper($controller,$c);
+      $self->prepare_soap_xml_post($controller,$c);
+      unless ($c->stash->{soap}->fault) {
+          my $envelope = $c->stash->{soap}->parsed_envelope;
+          my $namespace = $c->stash->{soap}->namespace || NS_SOAP_ENV;
+          my ($body) = $envelope->getElementsByTagNameNS($namespace,'Body',0);
+          my @children = grep { UNIVERSAL::isa( $_, 'XML::LibXML::Element') } $body->getChildNodes();
+          if (scalar @children != 1) {
+              $c->stash->{soap}->fault
+                ({ code => [ 'env:Sender' => 'env:Body' ],
+                   reason => 'Bad Body', detail =>
+                   'RPC messages should contain only one element inside body'})
+            } else {
+                my $rpc_element = $children[0];
+                my ($smthing, $operation) = split /:/, $rpc_element->nodeName();
+                $operation ||= $smthing; # if there's no ns prefix,
+                                         # operation is the first
+                                         # part.
+                $c->stash->{soap}->operation_name($operation);
+
+                eval {
+                    if ($controller->wsdlobj) {
+                        my $decoder = $controller->decoders->{$operation};
+                        my ($args) = $decoder->($rpc_element);
+                        $c->stash->{soap}->arguments($args);
+                    } else {
+                        my $arguments = $rpc_element->getChildNodes();
+                        $c->stash->{soap}->arguments($arguments);
+                    }
+                };
+                if ($@) {
+                    $c->stash->{soap}->fault
+                      ({ code => [ 'env:Sender' => 'env:Body' ],
+                         reason => 'Bad Body', detail =>
+                         'Malformed parts on the message body'});
+                } else {
+                    my $action = $controller->action_for($operation);
+
+                    if (!$action ||
+                        !grep { /RPC(Encoded|Literal)/ } @{$action->attributes->{ActionClass}}) {
+                        $c->stash->{soap}->fault
+                          ({ code => [ 'env:Sender' => 'env:Body' ],
+                             reason => 'Bad Operation', detail =>
+                             'Invalid Operation'});
+                    } else {
+                        # this is our RPC action
+                        $c->forward($operation);
+                    }
+                }
+
+            }
+      }
+  }
+};
+
+1;
+
+__END__
+
+=head1 NAME
+
+Catalyst::Action::SOAP::RPCEndpoint - RPC Dispatcher
+
+=head1 SYNOPSIS
+
+  # not used directly.
+
+=head1 DESCRIPTION
+
+This class is used by L<Catalyst::Controller::SOAP> to dispatch to the
+RPC operations inside a controller. These operations are quite
+different from the others, as they are seen by Catalyst as this single
+action. During the registering phase, the soap rpc operations are
+included in the hash that is sent to this object, so they can be
+invoked later.
+
+=head1 TODO
+
+Almost all the SOAP protocol is unsupported, only the method
+dispatching and, optionally, the soap-decoding of the arguments are
+made.
+
+=head1 AUTHORS
+
+Daniel Ruoso <daniel.ruoso at verticalone.pt>
+
+=head1 BUG REPORTS
+
+Please submit all bugs regarding C<Catalyst::Controller::SOAP> to
+C<bug-catalyst-controller-soap at rt.cpan.org>
+
+=head1 LICENSE
+
+This library is free software, you can redistribute it and/or modify
+it under the same terms as Perl itself.
+
+=cut
+

Deleted: Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Action/SOAP.pm
===================================================================
--- Catalyst-Controller-SOAP/1.0/trunk/lib/Catalyst/Action/SOAP.pm	2008-04-01 14:15:47 UTC (rev 7540)
+++ Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Action/SOAP.pm	2008-04-02 15:16:37 UTC (rev 7551)
@@ -1,77 +0,0 @@
-{ package Catalyst::Action::SOAP;
-
-  use base qw/Catalyst::Action/;
-  use XML::LibXML;
-
-  __PACKAGE__->mk_accessors(qw/xml_parser/);
-
-  sub new {
-      my $class = shift;
-      my $self = $class->SUPER::new(@_);
-      $self->xml_parser(XML::LibXML->new());
-      return $self;
-  }
-
-  sub prepare_soap_helper {
-      my ($self, $c) = @_;
-      $c->stash->{soap} = Catalyst::Controller::SOAP::Helper->new();
-  }
-
-  sub prepare_soap_xml_post {
-      my ($self, $c) = @_;
-      # This should be applocation/soap+xml, but some clients doesn't seem to respect that.
-      if ($c->req->content_type =~ /xml/ &&
-          $c->req->method eq 'POST') {
-          my $body = $c->req->body;
-          my $xml_str = join '', <$body>;
-          eval {
-              $c->stash->{soap}->envelope($xml_str);
-              $c->stash->{soap}->parsed_envelope($self->xml_parser->parse_string($xml_str));
-          };
-          if ($@) {
-              $c->stash->{soap}->fault({ code => 'env:Sender', reason => 'Bad XML Message', detail => $@});
-          }
-      } else {
-          $c->stash->{soap}->fault({ code => 'env:Sender', reason => 'Bad content-type/method'});
-      }
-  }
-};
-
-1;
-
-__END__
-
-=head1 NAME
-
-Catalyst::Action::SOAP - Action superclass
-
-=head1 SYNOPSIS
-
-  # not used directly.
-
-=head1 DESCRIPTION
-
-This is the superclass used by the Document and the RPC actions.
-
-=head1 TODO
-
-Almost all the SOAP protocol is unsupported, only the method
-dispatching and, optionally, the soap-decoding of the arguments are
-made.
-
-=head1 AUTHORS
-
-Daniel Ruoso <daniel.ruoso at verticalone.pt>
-
-=head1 BUG REPORTS
-
-Please submit all bugs regarding C<Catalyst::Controller::SOAP> to
-C<bug-catalyst-controller-soap at rt.cpan.org>
-
-=head1 LICENSE
-
-This library is free software, you can redistribute it and/or modify
-it under the same terms as Perl itself.
-
-=cut
-

Copied: Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Action/SOAP.pm (from rev 7542, Catalyst-Controller-SOAP/1.0/trunk/lib/Catalyst/Action/SOAP.pm)
===================================================================
--- Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Action/SOAP.pm	                        (rev 0)
+++ Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Action/SOAP.pm	2008-04-02 15:16:37 UTC (rev 7551)
@@ -0,0 +1,77 @@
+{ package Catalyst::Action::SOAP;
+
+  use base qw/Catalyst::Action/;
+  use XML::LibXML;
+
+  __PACKAGE__->mk_accessors(qw/xml_parser/);
+
+  sub new {
+      my $class = shift;
+      my $self = $class->SUPER::new(@_);
+      $self->xml_parser(XML::LibXML->new());
+      return $self;
+  }
+
+  sub prepare_soap_helper {
+      my ($self, $controller, $c) = @_;
+      $c->stash->{soap} = Catalyst::Controller::SOAP::Helper->new();
+  }
+
+  sub prepare_soap_xml_post {
+      my ($self, $controller, $c) = @_;
+      # This should be application/soap+xml, but some clients doesn't seem to respect that.
+      if ($c->req->content_type =~ /xml/ &&
+          $c->req->method eq 'POST') {
+          my $body = $c->req->body;
+          my $xml_str = join '', <$body>;
+          eval {
+              $c->stash->{soap}->envelope($xml_str);
+              $c->stash->{soap}->parsed_envelope($self->xml_parser->parse_string($xml_str));
+          };
+          if ($@) {
+              $c->stash->{soap}->fault({ code => 'env:Sender', reason => 'Bad XML Message', detail => $@});
+          }
+      } else {
+          $c->stash->{soap}->fault({ code => 'env:Sender', reason => 'Bad content-type/method'});
+      }
+  }
+};
+
+1;
+
+__END__
+
+=head1 NAME
+
+Catalyst::Action::SOAP - Action superclass
+
+=head1 SYNOPSIS
+
+  # not used directly.
+
+=head1 DESCRIPTION
+
+This is the superclass used by the Document and the RPC actions.
+
+=head1 TODO
+
+Almost all the SOAP protocol is unsupported, only the method
+dispatching and, optionally, the soap-decoding of the arguments are
+made.
+
+=head1 AUTHORS
+
+Daniel Ruoso <daniel.ruoso at verticalone.pt>
+
+=head1 BUG REPORTS
+
+Please submit all bugs regarding C<Catalyst::Controller::SOAP> to
+C<bug-catalyst-controller-soap at rt.cpan.org>
+
+=head1 LICENSE
+
+This library is free software, you can redistribute it and/or modify
+it under the same terms as Perl itself.
+
+=cut
+

Copied: Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Controller/SOAP/DocumentLiteralWrapped.pm (from rev 7548, Catalyst-Controller-SOAP/1.0/trunk/lib/Catalyst/Controller/SOAP/DocumentLiteralWrapped.pm)
===================================================================
--- Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Controller/SOAP/DocumentLiteralWrapped.pm	                        (rev 0)
+++ Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Controller/SOAP/DocumentLiteralWrapped.pm	2008-04-02 15:16:37 UTC (rev 7551)
@@ -0,0 +1,81 @@
+{ package Catalyst::Controller::SOAP::DocumentLiteralWrapped;
+  use strict;
+  use base qw(Catalyst::Controller::SOAP);
+  sub rpc_endpoint :Path('') :ActionClass('SOAP::DocumentLiteralWrapped') { };
+};
+
+1;
+
+__END__
+
+=head1 NAME
+
+Catalyst::Controller::SOAP::DocumentLiteralWrapped - Helper controller for SOAP
+
+=head1 SYNOPSIS
+
+ use base qw(Catalyst::Controller::SOAP::DocumentLiteralWrapped);
+ __PACKAGE__->{config}{soap_action_prefix} = 'http://foo/bar/';
+
+=head1 DESCRIPTION
+
+Microsoft has defined a pseudo-standard for SOAP usage called
+Document/Literal Wrapped. This standard is a deviation of both the
+Document/Literal and of the RPC/Literal usages.
+
+A Document/Literal service is supposed to have one operation per bind,
+as it's not techically possible to dispatch on the content of the
+Body. In fact, as the Body is used as "literal" the dispatching should
+not even look at it, it should be based on the port that received the
+request.
+
+RPC/Literal, on the other hand, supports the use of several operations
+per bind, and the dispatching of this operations is based on the first
+and only child element of the message body, which defines the
+operation. The arguments are set as the parts of the message in the
+WSDL.
+
+Document/Literal-Wrapped is a deviation of both, as the message should
+be interpreted as Document/Literal, but the dispatching requires an
+additional step of looking at the SOAPAction HTTP header, which will
+identify the proper operation to be dispatched.
+
+This is plain wrong, as the SOAP Action information should be used for
+routing pourposes only and not for operation dispatch. Please see the
+SOAP standard. In fact, SOAP1.2 even makes SOAPAction optional.
+
+=head1 WARNING
+
+THIS MODULE IS HERE FOR COMPATIBILITY REASONS ONLY, SO YOU CAN USE
+WHEN IN NEED TO IMPLEMENT A LEGACY SERVICE THAT USES THIS
+PSEUDO-STANDARD. THIS USAGE SCENARIO SHOULD NOT BE PROMOTED BY ANY
+WAY. THE CORRECT WAY TO IMPLEMENT THE SAME FUNCTIONALITY IS BY USING
+RPC/Literal, THAT WILL PRODUCE THE EXACT SAME MESSAGE BODY.
+
+=head1 USE
+
+The operation is dispatched according to the SOAPAction header. The
+operation name is extracted by removing the given prefix and assuming
+the rest of the SOAPAction is the effective operation name (removing
+"s).
+
+=head1 TODO
+
+Well, here? nothing, all the work is done in the superclass.
+
+=head1 AUTHOR
+
+Daniel Ruoso <daniel.ruoso at verticalone.pt>
+
+=head1 BUG REPORTS
+
+Please submit all bugs regarding C<Catalyst::Controller::SOAP> to
+C<bug-catalyst-controller-soap at rt.cpan.org>
+
+=head1 LICENSE
+
+This library is free software, you can redistribute it and/or modify
+it under the same terms as Perl itself.
+
+=cut
+

Deleted: Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Controller/SOAP/RPC.pm
===================================================================
--- Catalyst-Controller-SOAP/1.0/trunk/lib/Catalyst/Controller/SOAP/RPC.pm	2008-04-01 14:15:47 UTC (rev 7540)
+++ Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Controller/SOAP/RPC.pm	2008-04-02 15:16:37 UTC (rev 7551)
@@ -1,46 +0,0 @@
-{ package Catalyst::Controller::SOAP::RPC;
-  use strict;
-  use base qw(Catalyst::Controller::SOAP);
-  sub rpc_endpoint :Path('') :SOAP('RPCEndpoint') { };
-};
-
-1;
-
-__END__
-
-=head1 NAME
-
-Catalyst::Controller::SOAP::RPC - Helper controller for SOAP
-
-=head1 SYNOPSIS
-
- use base qw(Catalyst::Controller::SOAP::RPC);
-
-=head1 DESCRIPTION
-
-This is a direct subclass of Catalyst::Controller::SOAP that
-predefines a rpc_endpoint method which is dispatched in the URI of the
-controller as the RPC endpoint. It's simply inteded to save you the
-job of defining that in each SOAP RPC controller you implement,
-considering that is the standard behaviour.
-
-=head1 TODO
-
-Well, here? nothing, all the work is done in the superclass.
-
-=head1 AUTHOR
-
-Daniel Ruoso <daniel.ruoso at verticalone.pt>
-
-=head1 BUG REPORTS
-
-Please submit all bugs regarding C<Catalyst::Controller::SOAP> to
-C<bug-catalyst-controller-soap at rt.cpan.org>
-
-=head1 LICENSE
-
-This library is free software, you can redistribute it and/or modify
-it under the same terms as Perl itself.
-
-=cut
-

Copied: Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Controller/SOAP/RPC.pm (from rev 7546, Catalyst-Controller-SOAP/1.0/trunk/lib/Catalyst/Controller/SOAP/RPC.pm)
===================================================================
--- Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Controller/SOAP/RPC.pm	                        (rev 0)
+++ Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Controller/SOAP/RPC.pm	2008-04-02 15:16:37 UTC (rev 7551)
@@ -0,0 +1,46 @@
+{ package Catalyst::Controller::SOAP::RPC;
+  use strict;
+  use base qw(Catalyst::Controller::SOAP);
+  sub rpc_endpoint :Path('') :ActionClass('SOAP::RPCEndpoint') { };
+};
+
+1;
+
+__END__
+
+=head1 NAME
+
+Catalyst::Controller::SOAP::RPC - Helper controller for SOAP
+
+=head1 SYNOPSIS
+
+ use base qw(Catalyst::Controller::SOAP::RPC);
+
+=head1 DESCRIPTION
+
+This is a direct subclass of Catalyst::Controller::SOAP that
+predefines a rpc_endpoint method which is dispatched in the URI of the
+controller as the RPC endpoint. It's simply inteded to save you the
+job of defining that in each SOAP RPC controller you implement,
+considering that is the standard behaviour.
+
+=head1 TODO
+
+Well, here? nothing, all the work is done in the superclass.
+
+=head1 AUTHOR
+
+Daniel Ruoso <daniel.ruoso at verticalone.pt>
+
+=head1 BUG REPORTS
+
+Please submit all bugs regarding C<Catalyst::Controller::SOAP> to
+C<bug-catalyst-controller-soap at rt.cpan.org>
+
+=head1 LICENSE
+
+This library is free software, you can redistribute it and/or modify
+it under the same terms as Perl itself.
+
+=cut
+

Deleted: Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Controller/SOAP.pm
===================================================================
--- Catalyst-Controller-SOAP/1.0/trunk/lib/Catalyst/Controller/SOAP.pm	2008-04-01 14:15:47 UTC (rev 7540)
+++ Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Controller/SOAP.pm	2008-04-02 15:16:37 UTC (rev 7551)
@@ -1,281 +0,0 @@
-{   package Catalyst::Controller::SOAP;
-
-    use strict;
-    use base qw/Catalyst::Controller/;
-    use XML::LibXML;
-
-    use constant NS_SOAP_ENV => "http://schemas.xmlsoap.org/soap/envelope/";
-
-    our $VERSION = '0.2.0';
-
-    sub _parse_SOAP_attr {
-        my ($self, $c, $name, $value) = @_;
-        my $actionclass = ($value =~ /^\+/ ? $value :
-          'Catalyst::Action::SOAP::'.$value);
-        (
-         ActionClass => $actionclass,
-        )
-    }
-
-    # this is implemented as to respond a SOAP message according to
-    # what has been sent to $c->stash->{soap}
-    sub end : Private {
-        my ($self, $c) = (shift, shift);
-        my $soap = $c->stash->{soap};
-
-        return $self->NEXT::end($c, @_) unless $soap;
-
-        my $namespace = $soap->namespace || NS_SOAP_ENV;
-        my $response = XML::LibXML->createDocument();
-
-        my $envelope = $response->createElementNS
-          ($namespace,"Envelope");
-
-        $response->setDocumentElement($envelope);
-
-        # TODO: we don't support header generation in response yet.
-
-        my $body = $response->createElementNS
-          ($namespace,"Body");
-
-        $envelope->appendChild($body);
-
-        if ($soap->fault) {
-            my $fault = $response->createElementNS
-              ($namespace, "Fault");
-            $body->appendChild($fault);
-
-            my $code = $response->createElementNS
-              ($namespace, "Code");
-            $fault->appendChild($code);
-
-            $self->_generate_Fault_Code($response,$code,$soap->fault->{code}, $namespace);
-
-            if ($soap->fault->{reason}) {
-                my $reason = $response->createElementNS
-                  ($namespace, "Reason");
-                $fault->appendChild($reason);
-                # TODO: we don't support the xml:lang attribute yet.
-                my $text = $response->createElementNS
-                  ($namespace, "Text");
-                $reason->appendChild($text);
-                $text->appendText($soap->fault->{reason});
-            }
-            if ($soap->fault->{detail}) {
-                my $detail = $response->createElementNS
-                  ($namespace, "Detail");
-                $fault->appendChild($detail);
-                # TODO: we don't support the xml:lang attribute yet.
-                my $text = $response->createElementNS
-                  ($namespace, "Text");
-                $detail->appendChild($text);
-                $text->appendText($soap->fault->{detail});
-            }
-        } else {
-            # TODO: Generate the body.
-            # At this moment, for the sake of getting something ready,
-            # let's implement the string return.
-            if ($soap->string_return) {
-                $body->appendText($soap->string_return);
-            } elsif (my $lit = $soap->literal_return) {
-                if (ref $lit eq 'XML::LibXML::NodeList') {
-                    for ($lit->get_nodelist) {
-                        $body->appendChild($_);
-                    }
-                } else {
-                    $body->appendChild($lit);
-                }
-            }
-        }
-
-        $c->res->content_type('text/xml');
-        $c->res->body($envelope->toString());
-    }
-
-    sub _generate_Fault_Code {
-        my ($self, $document, $codenode, $codeValue, $namespace) = @_;
-
-        my $value = $document->createElementNS
-          ($namespace, "Value");
-        if (ref $codeValue eq 'ARRAY') {
-            $value->appendText($codeValue->[0]);
-            my $subcode = $document->createElementNS
-              ($namespace, 'SubCode');
-            $codenode->appendChild($value);
-            $codenode->appendChild($subcode);
-            $self->_generate_Fault_Code($document, $subcode, $codeValue->[1], $namespace);
-        } else {
-            $value->appendText($codeValue);
-            $codenode->appendChild($value);
-        }
-    }
-
-
-};
-
-{   package Catalyst::Controller::SOAP::Helper;
-
-    use base qw(Class::Accessor::Fast);
-
-    __PACKAGE__->mk_accessors(qw{envelope parsed_envelope arguments fault namespace 
-                               encoded_return literal_return string_return});
-
-
-};
-
-1;
-
-__END__
-
-=head1 NAME
-
-Catalyst::Controller::SOAP - Catalyst SOAP Controller
-
-=head1 SYNOPSIS
-
-    package MyApp::Controller::Example;
-    use base 'Catalyst::Controller::SOAP';
-
-    # available in "/example" as operation "ping". The arguments are
-    # treated as a literal document and passed to the method as a
-    # XML::LibXML object
-    # Using XML::Compile here will help you reading the message.
-    sub ping : SOAP('RPCLiteral') {
-        my ( $self, $c, $xml) = @_;
-        my $name = $xml->findValue('some xpath expression');
-    }
-
-    # avaiable as "/example/world" in document context. The entire body
-    # is delivered to the method as a XML::LibXML object.
-    # Using XML::Compile here will help you reading the message.
-    sub world :Local SOAP('DocumentLiteral')  {
-        my ($self, $c, $xml) = @_;
-    }
-
-    # avaiable as "/example/get" in HTTP get context.
-    # the get attributes will be available as any other
-    # get operation in Catalyst.
-    sub get :Local SOAP('HTTPGet')  {
-        my ($self, $c) = @_;
-    }
-
-    # this is the endpoint from where the RPC operations will be
-    # dispatched. This code won't be executed at all.
-    # See Catalyst::Controller::SOAP::RPC.
-    sub index :Local SOAP('RPCEndpoint') {}
-
-=head1 ABSTACT
-
-Implements SOAP serving support in Catalyst.
-
-=head1 DESCRIPTION
-
-SOAP Controller for Catalyst which we tried to make compatible with
-the way Catalyst works with URLS.It is important to notice that this
-controller declares by default an index operation which will dispatch
-the RPC operations under this class.
-
-=head1 ATTRIBUTES
-
-This class implements the SOAP attribute wich is used to do the
-mapping of that operation to the apropriate action class. The name of
-the class used is formed as Catalyst::Action::SOAP::$value, unless the
-parameter of the attribute starts with a '+', which implies complete
-namespace.
-
-The implementation of SOAP Action classes helps delivering specific
-SOAP scenarios, like HTTP GET, RPC Encoded, RPC Literal or Document
-Literal, or even Document RDF or just about any required combination.
-
-See L<Catalyst::Action::SOAP::DocumentLiteral> for an example.
-
-=head1 ACCESSORS
-
-Once you tagged one of the methods, you'll have an $c->stash->{soap}
-accessor which will return an C<Catalyst::Controller::SOAP::Helper>
-object. It's important to notice that this is achieved by the fact
-that all the SOAP Action classes are subclasses of
-Catalyst::Action::SOAP, which implements most of that.
-
-You can query this object as follows:
-
-=over 4
-
-=item $c->stash->{soap}->envelope()
-
-The original SOAP envelope as string.
-
-=item $c->stash->{soap}->parsed_envelope()
-
-The parsed envelope as an XML::LibXML object.
-
-=item $c->stash->{soap}->arguments()
-
-The arguments of a RPC call.
-
-=item $c->stash->{soap}->fault({code => $code,reason => $reason, detail => $detail])
-
-Allows you to set fault code and message. Optionally, you may define
-the code itself as an arrayref where the first item will be this code
-and the second will be the subcode, which recursively may be another
-arrayref.
-
-=item $c->stash->{soap}->encoded_return(\@data)
-
-This method will prepare the return value to be a soap encoded data.
-
-  # TODO: At this moment, only Literals are working...
-
-=item $c->stash->{soap}->literal_return($xml_node)
-
-This method will prepare the return value to be a literal XML
-document, in this case, you can pass just the node that will be the
-root in the return message or a nodelist.
-
-Using XML::Compile will help to elaborate schema based returns.
-
-=item $c->stash->{soap}->string_return($non_xml_text)
-
-In this case, the given text is encoded as CDATA inside the SOAP
-message.
-
-=back
-
-=head1 TODO
-
-At this moment, almost everything is still to be done. The only thing
-done right now is getting the body from the message and dispatching
-the correct method. It is strongly recommended to use XML::Compile as
-a tool to deal with the XML nodes.
-
-The SOAP Encoding support is also missing, when that is ready you'll
-be able to do something like the code below:
-
-    # available in "/example" as operation "echo"
-    # parsing the arguments as soap-encoded.
-    sub echo : SOAP('RPCEncoded') {
-        my ( $self, $c, @args ) = @_;
-    }
-
-=head1 SEE ALSO
-
-L<Catalyst::Action::SOAP>, L<XML::LibXML>, L<XML::Compile>
-L<Catalyst::Action::SOAP::DocumentLiteral>,
-L<Catalyst::Action::SOAP::RPCLiteral>,
-L<Catalyst::Action::SOAP::HTTPGet>
-
-=head1 AUTHORS
-
-Daniel Ruoso C<daniel.ruoso at verticalone.pt>
-
-=head1 BUG REPORTS
-
-Please submit all bugs regarding C<Catalyst::Controller::SOAP> to
-C<bug-catalyst-controller-soap at rt.cpan.org>
-
-=head1 LICENSE
-
-This library is free software, you can redistribute it and/or modify
-it under the same terms as Perl itself.
-
-=cut

Copied: Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Controller/SOAP.pm (from rev 7549, Catalyst-Controller-SOAP/1.0/trunk/lib/Catalyst/Controller/SOAP.pm)
===================================================================
--- Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Controller/SOAP.pm	                        (rev 0)
+++ Catalyst-Controller-SOAP/1.0/tags/0.5/lib/Catalyst/Controller/SOAP.pm	2008-04-02 15:16:37 UTC (rev 7551)
@@ -0,0 +1,389 @@
+{   package Catalyst::Controller::SOAP;
+
+    use strict;
+    use base qw/Catalyst::Controller/;
+    use XML::LibXML;
+    use XML::Compile::WSDL11;
+    use UNIVERSAL qw(isa);
+
+    use constant NS_SOAP_ENV => "http://schemas.xmlsoap.org/soap/envelope/";
+
+    our $VERSION = '0.5';
+
+    __PACKAGE__->mk_accessors qw(wsdlobj decoders encoders);
+
+    sub _parse_SOAP_attr {
+        my ($self, $c, $name, $value) = @_;
+
+        my $wsdlfile = $self->config->{wsdl};
+        if ($wsdlfile) {
+            if (!$self->wsdlobj) {
+                my $schema;
+                if (ref $wsdlfile eq 'HASH') {
+                    $schema = $wsdlfile->{schema};
+                    $wsdlfile = $wsdlfile->{wsdl};
+                }
+
+                if (ref $wsdlfile eq 'ARRAY') {
+                    my $main = shift @{$wsdlfile};
+                    $self->wsdlobj(XML::Compile::WSDL11->new($main));
+                    $self->wsdlobj->addWsdl($_) for @{$wsdlfile};
+                } else {
+                    $self->wsdlobj(XML::Compile::WSDL11->new($wsdlfile));
+                }
+
+                if (ref $schema eq 'ARRAY') {
+                    $self->wsdlobj->importDefinitions($_) for @{$schema};
+                } elsif ($schema) {
+                    $self->wsdlobj->importDefinitions($schema)
+                }
+            }
+
+            my $operation = $self->wsdlobj->operation($name)
+              or die 'Every operation should be on the WSDL when using one.';
+            my $portop = $operation->portOperation();
+
+            my $input_parts = $self->wsdlobj->find(message => $portop->{input}{message})
+              ->{part};
+            $_->{compiled} = $self->wsdlobj->schemas->compile(READER => $_->{element})
+              for @{$input_parts};
+
+            $self->decoders({}) unless $self->decoders();
+            $self->decoders->{$name} = sub {
+                my $body = shift;
+                my @nodes = grep { UNIVERSAL::isa($_, 'XML::LibXML::Element') } $body->childNodes();
+                return
+                  {
+                   map {
+                       my $data = $_->{compiled}->(shift @nodes);
+                       $_->{name} => $data;
+                   } @{$input_parts}
+                  }, @nodes;
+            };
+
+            my $output_parts = $self->wsdlobj->find(message => $portop->{output}{message})
+              ->{part};
+            $_->{compiled} = $self->wsdlobj->schemas->compile(WRITER => $_->{element})
+              for @{$output_parts};
+
+            $self->encoders({}) unless $self->encoders();
+            $self->encoders->{$name} = sub {
+                my ($doc, $data) = @_;
+                return
+                  [
+                   map {
+                       $_->{compiled}->($doc, $data->{$_->{name}})
+                   } @{$output_parts}
+                  ];
+            };
+        }
+
+        my $actionclass = ($value =~ /^\+/ ? $value :
+          'Catalyst::Action::SOAP::'.$value);
+        (
+         ActionClass => $actionclass,
+        )
+    }
+
+    # this is implemented as to respond a SOAP message according to
+    # what has been sent to $c->stash->{soap}
+    sub end : Private {
+        my ($self, $c) = (shift, shift);
+        my $soap = $c->stash->{soap};
+
+        return $self->NEXT::end($c, @_) unless $soap;
+
+        if (scalar @{$c->error}) {
+            $c->stash->{soap}->fault
+              ({ code => [ 'env:Sender' ],
+                 reason => 'Unexpected Error', detail =>
+                 'Unexpected error in the application: '.(join "\n", @{$c->error} ).'!'});
+            $c->error(0);
+        }
+
+        my $namespace = $soap->namespace || NS_SOAP_ENV;
+        my $response = XML::LibXML->createDocument();
+
+        my $envelope = $response->createElementNS
+          ($namespace,"Envelope");
+
+        $response->setDocumentElement($envelope);
+
+        # TODO: we don't support header generation in response yet.
+
+        my $body = $response->createElementNS
+          ($namespace,"Body");
+
+        $envelope->appendChild($body);
+
+        if ($soap->fault) {
+            my $fault = $response->createElementNS
+              ($namespace, "Fault");
+            $body->appendChild($fault);
+
+            my $code = $response->createElementNS
+              ($namespace, "Code");
+            $fault->appendChild($code);
+
+            $self->_generate_Fault_Code($response,$code,$soap->fault->{code}, $namespace);
+
+            if ($soap->fault->{reason}) {
+                my $reason = $response->createElementNS
+                  ($namespace, "Reason");
+                $fault->appendChild($reason);
+                # TODO: we don't support the xml:lang attribute yet.
+                my $text = $response->createElementNS
+                  ($namespace, "Text");
+                $reason->appendChild($text);
+                $text->appendText($soap->fault->{reason});
+            }
+            if ($soap->fault->{detail}) {
+                my $detail = $response->createElementNS
+                  ($namespace, "Detail");
+                $fault->appendChild($detail);
+                # TODO: we don't support the xml:lang attribute yet.
+                my $text = $response->createElementNS
+                  ($namespace, "Text");
+                $detail->appendChild($text);
+                $text->appendText($soap->fault->{detail});
+            }
+        } else {
+            # TODO: Generate the body.
+            # At this moment, for the sake of getting something ready,
+            # let's implement the string return.
+            if ($soap->string_return) {
+                $body->appendText($soap->string_return);
+            } elsif (my $lit = $soap->literal_return) {
+                if (ref $lit eq 'XML::LibXML::NodeList') {
+                    for ($lit->get_nodelist) {
+                        $body->appendChild($_);
+                    }
+                } else {
+                    $body->appendChild($lit);
+                }
+            } elsif (my $cmp = $soap->compile_return) {
+                die 'Tried to use compile_return without WSDL'
+                  unless $self->wsdlobj;
+
+                my $arr = $self->encoders->{$soap->operation_name}->($response, $cmp);
+                $body->appendChild($_) for @{$arr};
+            }
+        }
+
+        $c->res->content_type('text/xml');
+        $c->res->body($envelope->toString());
+    }
+
+    sub _generate_Fault_Code {
+        my ($self, $document, $codenode, $codeValue, $namespace) = @_;
+
+        my $value = $document->createElementNS
+          ($namespace, "Value");
+        if (ref $codeValue eq 'ARRAY') {
+            $value->appendText($codeValue->[0]);
+            my $subcode = $document->createElementNS
+              ($namespace, 'SubCode');
+            $codenode->appendChild($value);
+            $codenode->appendChild($subcode);
+            $self->_generate_Fault_Code($document, $subcode, $codeValue->[1], $namespace);
+        } else {
+            $value->appendText($codeValue) if $codeValue;
+            $codenode->appendChild($value);
+        }
+    }
+
+
+};
+
+{   package Catalyst::Controller::SOAP::Helper;
+
+    use base qw(Class::Accessor::Fast);
+
+    __PACKAGE__->mk_accessors(qw{envelope parsed_envelope arguments fault namespace
+                                 encoded_return literal_return string_return
+                                 compile_return operation_name});
+
+
+};
+
+1;
+
+__END__
+
+=head1 NAME
+
+Catalyst::Controller::SOAP - Catalyst SOAP Controller
+
+=head1 SYNOPSIS
+
+    package MyApp::Controller::Example;
+    use base 'Catalyst::Controller::SOAP';
+
+    # available in "/example" as operation "ping". The arguments are
+    # treated as a literal document and passed to the method as a
+    # XML::LibXML object
+    # Using XML::Compile here will help you reading the message.
+    sub ping : SOAP('RPCLiteral') {
+        my ( $self, $c, $xml) = @_;
+        my $name = $xml->findValue('some xpath expression');
+    }
+
+    # avaiable as "/example/world" in document context. The entire body
+    # is delivered to the method as a XML::LibXML object.
+    # Using XML::Compile here will help you reading the message.
+    sub world :Local SOAP('DocumentLiteral')  {
+        my ($self, $c, $xml) = @_;
+    }
+
+    # avaiable as "/example/get" in HTTP get context.
+    # the get attributes will be available as any other
+    # get operation in Catalyst.
+    sub get :Local SOAP('HTTPGet')  {
+        my ($self, $c) = @_;
+    }
+
+    # this is the endpoint from where the RPC operations will be
+    # dispatched. This code won't be executed at all.
+    # See Catalyst::Controller::SOAP::RPC.
+    sub index :Local SOAP('RPCEndpoint') {}
+
+=head1 ABSTACT
+
+Implements SOAP serving support in Catalyst.
+
+=head1 DESCRIPTION
+
+SOAP Controller for Catalyst which we tried to make compatible with
+the way Catalyst works with URLS.It is important to notice that this
+controller declares by default an index operation which will dispatch
+the RPC operations under this class.
+
+=head1 ATTRIBUTES
+
+This class implements the SOAP attribute wich is used to do the
+mapping of that operation to the apropriate action class. The name of
+the class used is formed as Catalyst::Action::SOAP::$value, unless the
+parameter of the attribute starts with a '+', which implies complete
+namespace.
+
+The implementation of SOAP Action classes helps delivering specific
+SOAP scenarios, like HTTP GET, RPC Encoded, RPC Literal or Document
+Literal, or even Document RDF or just about any required combination.
+
+See L<Catalyst::Action::SOAP::DocumentLiteral> for an example.
+
+=head1 ACCESSORS
+
+Once you tagged one of the methods, you'll have an $c->stash->{soap}
+accessor which will return an C<Catalyst::Controller::SOAP::Helper>
+object. It's important to notice that this is achieved by the fact
+that all the SOAP Action classes are subclasses of
+Catalyst::Action::SOAP, which implements most of that.
+
+You can query this object as follows:
+
+=over 4
+
+=item $c->stash->{soap}->envelope()
+
+The original SOAP envelope as string.
+
+=item $c->stash->{soap}->parsed_envelope()
+
+The parsed envelope as an XML::LibXML object.
+
+=item $c->stash->{soap}->arguments()
+
+The arguments of a RPC call.
+
+=item $c->stash->{soap}->fault({code => $code,reason => $reason, detail => $detail])
+
+Allows you to set fault code and message. Optionally, you may define
+the code itself as an arrayref where the first item will be this code
+and the second will be the subcode, which recursively may be another
+arrayref.
+
+=item $c->stash->{soap}->encoded_return(\@data)
+
+This method will prepare the return value to be a soap encoded data.
+
+  # TODO: At this moment, only Literals are working...
+
+=item $c->stash->{soap}->literal_return($xml_node)
+
+This method will prepare the return value to be a literal XML
+document, in this case, you can pass just the node that will be the
+root in the return message or a nodelist.
+
+Using XML::Compile will help to elaborate schema based returns.
+
+=item $c->stash->{soap}->string_return($non_xml_text)
+
+In this case, the given text is encoded as CDATA inside the SOAP
+message.
+
+=back
+
+=head1 USING WSDL
+
+If you define "wsdl" as a configuration key,
+Catalyst::Controller::SOAP will automatically map your operations into
+the WSDL operations, in which case you will receive the parsed Perl
+structure as returned by XML::Compile according to the type defined in
+the WSDL message.
+
+You can define additional wsdl files or even additional schema
+files. If $wsdl is an arrayref, the first element is the one passed to
+new, and the others will be the argument to subsequent addWsdl calls.
+If $wsdl is a hashref, the "wsdl" key will be handled like above and
+the "schema" key will be used to importDefinitions. If the content of
+the schema key is an arrayref, it will result in several calls to
+importDefinition.
+
+Also, when using wsdl, you can also define the response using
+
+=over
+
+=item $c->stash->{soap}->compile_return($perl_structure)
+
+In this case, the given structure will be transformed by XML::Compile,
+according to what's described in the WSDL file.
+
+=back
+
+=head1 TODO
+
+No header features are implemented yet.
+
+The SOAP Encoding support is also missing, when that is ready you'll
+be able to do something like the code below:
+
+    # available in "/example" as operation "echo"
+    # parsing the arguments as soap-encoded.
+    sub echo : SOAP('RPCEncoded') {
+        my ( $self, $c, @args ) = @_;
+    }
+
+=head1 SEE ALSO
+
+L<Catalyst::Action::SOAP>, L<XML::LibXML>, L<XML::Compile>
+L<Catalyst::Action::SOAP::DocumentLiteral>,
+L<Catalyst::Action::SOAP::RPCLiteral>,
+L<Catalyst::Action::SOAP::HTTPGet>, L<XML::Compile::WSDL11>,
+L<XML::Compile::Schema>
+
+=head1 AUTHORS
+
+Daniel Ruoso C<daniel.ruoso at verticalone.pt>
+
+=head1 BUG REPORTS
+
+Please submit all bugs regarding C<Catalyst::Controller::SOAP> to
+C<bug-catalyst-controller-soap at rt.cpan.org>
+
+=head1 LICENSE
+
+This library is free software, you can redistribute it and/or modify
+it under the same terms as Perl itself.
+
+=cut

Deleted: Catalyst-Controller-SOAP/1.0/tags/0.5/t/PostApp/lib/PostApp/Controller/WS.pm
===================================================================
--- Catalyst-Controller-SOAP/1.0/trunk/t/PostApp/lib/PostApp/Controller/WS.pm	2008-04-01 14:15:47 UTC (rev 7540)
+++ Catalyst-Controller-SOAP/1.0/tags/0.5/t/PostApp/lib/PostApp/Controller/WS.pm	2008-04-02 15:16:37 UTC (rev 7551)
@@ -1,28 +0,0 @@
-package PostApp::Controller::WS;
-
-use strict;
-use warnings;
-use base 'Catalyst::Controller::SOAP';
-
-sub hello : Local SOAP('DocumentLiteral') {
-    my ( $self, $c, $body ) = @_;
-    my $who = $body->textContent();
-    $c->stash->{soap}->string_return('Hello '.$who.'!');
-}
-
-sub foo : Local SOAP('DocumentLiteral') {
-    my ( $self, $c, $body ) = @_;
-    my $who = $body->textContent();
-
-    my $env = $c->stash->{soap}->parsed_envelope;
-    my $foo = $env->createElement('foo');
-    my $bar = $env->createElement('bar');
-    $foo->appendChild($bar);
-    my $baz = $env->createElement('baz');
-    $bar->appendChild($baz);
-    $baz->appendText('Hello '.$who.'!');
-
-    $c->stash->{soap}->literal_return($foo);
-}
-
-1;

Copied: Catalyst-Controller-SOAP/1.0/tags/0.5/t/PostApp/lib/PostApp/Controller/WS.pm (from rev 7546, Catalyst-Controller-SOAP/1.0/trunk/t/PostApp/lib/PostApp/Controller/WS.pm)
===================================================================
--- Catalyst-Controller-SOAP/1.0/tags/0.5/t/PostApp/lib/PostApp/Controller/WS.pm	                        (rev 0)
+++ Catalyst-Controller-SOAP/1.0/tags/0.5/t/PostApp/lib/PostApp/Controller/WS.pm	2008-04-02 15:16:37 UTC (rev 7551)
@@ -0,0 +1,32 @@
+package PostApp::Controller::WS;
+
+use strict;
+use warnings;
+use base 'Catalyst::Controller::SOAP';
+
+sub hello : Local SOAP('DocumentLiteral') {
+    my ( $self, $c, $body ) = @_;
+    my $who = $body->textContent();
+    $c->stash->{soap}->string_return('Hello '.$who.'!');
+}
+
+sub foo : Local SOAP('DocumentLiteral') {
+    my ( $self, $c, $body ) = @_;
+    my $who = $body->textContent();
+
+    my $env = $c->stash->{soap}->parsed_envelope;
+    my $foo = $env->createElement('foo');
+    my $bar = $env->createElement('bar');
+    $foo->appendChild($bar);
+    my $baz = $env->createElement('baz');
+    $bar->appendChild($baz);
+    $baz->appendText('Hello '.$who.'!');
+
+    $c->stash->{soap}->literal_return($foo);
+}
+
+sub bar : Local SOAP('DocumentLiteral') {
+    die 'exception leaked by an action';
+}
+
+1;

Copied: Catalyst-Controller-SOAP/1.0/tags/0.5/t/PostApp/lib/PostApp/Controller/WithWSDL.pm (from rev 7548, Catalyst-Controller-SOAP/1.0/trunk/t/PostApp/lib/PostApp/Controller/WithWSDL.pm)
===================================================================
--- Catalyst-Controller-SOAP/1.0/tags/0.5/t/PostApp/lib/PostApp/Controller/WithWSDL.pm	                        (rev 0)
+++ Catalyst-Controller-SOAP/1.0/tags/0.5/t/PostApp/lib/PostApp/Controller/WithWSDL.pm	2008-04-02 15:16:37 UTC (rev 7551)
@@ -0,0 +1,19 @@
+package PostApp::Controller::WithWSDL;
+
+use strict;
+use warnings;
+use base 'Catalyst::Controller::SOAP';
+
+__PACKAGE__->config->{wsdl} = 't/hello.wsdl';
+__PACKAGE__->config->{soap_action_prefix} = 'http://example.com/actions/';
+
+sub Greet : Local SOAP('DocumentLiteral') {
+    my ( $self, $c, $args ) = @_;
+    my $who = $args->{parameters}{who};
+    my $grt = $args->{parameters}{greeting};
+    $c->stash->{soap}->compile_return({ details => { greeting => $grt.' '.$who.'!' }});
+}
+
+sub doclw : Local ActionClass('SOAP::DocumentLiteralWrapped') { }
+
+1;

Copied: Catalyst-Controller-SOAP/1.0/tags/0.5/t/PostApp/lib/PostApp/Controller/WithWSDL2.pm (from rev 7546, Catalyst-Controller-SOAP/1.0/trunk/t/PostApp/lib/PostApp/Controller/WithWSDL2.pm)
===================================================================
--- Catalyst-Controller-SOAP/1.0/tags/0.5/t/PostApp/lib/PostApp/Controller/WithWSDL2.pm	                        (rev 0)
+++ Catalyst-Controller-SOAP/1.0/tags/0.5/t/PostApp/lib/PostApp/Controller/WithWSDL2.pm	2008-04-02 15:16:37 UTC (rev 7551)
@@ -0,0 +1,16 @@
+package PostApp::Controller::WithWSDL2;
+
+use strict;
+use warnings;
+use base 'Catalyst::Controller::SOAP::RPC';
+
+__PACKAGE__->config->{wsdl} = 't/hello2.wsdl';
+
+sub Greet : SOAP('RPCLiteral') {
+    my ( $self, $c, $args ) = @_;
+    my $who = $args->{who};
+    my $grt = $args->{greeting};
+    $c->stash->{soap}->compile_return({ greeting => $grt.' '.$who.'!' });
+}
+
+1;

Deleted: Catalyst-Controller-SOAP/1.0/tags/0.5/t/PostApp.t
===================================================================
--- Catalyst-Controller-SOAP/1.0/trunk/t/PostApp.t	2008-04-01 14:15:47 UTC (rev 7540)
+++ Catalyst-Controller-SOAP/1.0/tags/0.5/t/PostApp.t	2008-04-02 15:16:37 UTC (rev 7551)
@@ -1,60 +0,0 @@
-use Test::More tests => 3;
-use File::Spec::Functions;
-use HTTP::Response;
-use IPC::Open3;
-use Symbol;
-
-my $response;
-
-$response = soap_xml_post
-  ('/ws/hello',
-   '<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"><Body>World</Body></Envelope>'
-  );
-
-ok($response->content =~ /Hello World/, 'Document Literal correct response: '.$response->content);
-
-$response = soap_xml_post
-  ('/ws2',
-   '<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"><Body><hello>World</hello></Body></Envelope>'
-  );
-ok($response->content =~ /Hello World/, 'RPC Literal Correct response: '.$response->content);
-
-$response = soap_xml_post
-  ('/ws/foo',
-   '<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"><Body>World</Body></Envelope>'
-  );
-ok($response->content =~ /\<foo\>\<bar\>\<baz\>Hello World\!\<\/baz\>\<\/bar\>\<\/foo\>/, 'Literal response: '.$response->content);
-
-sub soap_xml_post {
-    my $path = shift;
-    my $content = shift;
-
-    local %ENV;
-    $ENV{REMOTE_ADDR} ='127.0.0.1';
-    $ENV{CONTENT_LENGTH} = length $content;
-    $ENV{CONTENT_TYPE} ='application/soap+xml';
-    $ENV{SCRIPT_NAME} = $path;
-    $ENV{QUERY_STRING} = '';
-    $ENV{CATALYST_DEBUG} = 0;
-    $ENV{REQUEST_METHOD} ='POST';
-    $ENV{SERVER_PORT} ='80';
-    $ENV{SERVER_NAME} ='pitombeira';
-
-    my ($writer, $reader, $error) = map { gensym() } 1..3;
-    my $pid = open3($writer, $reader, $error,
-                    $^X, (map { '-I'.$_ } @INC),
-                    catfile(qw(t PostApp script postapp_cgi.pl)));
-
-    print {$writer} $content;
-    close $content;
-
-    my $response_str = join '', <$reader>;
-    map { warn '# '.$_ } <$error>;
-
-    close $reader;
-    close $error;
-    waitpid $pid, 0;
-    return HTTP::Response->parse($response_str);
-}
-
-1;

Copied: Catalyst-Controller-SOAP/1.0/tags/0.5/t/PostApp.t (from rev 7549, Catalyst-Controller-SOAP/1.0/trunk/t/PostApp.t)
===================================================================
--- Catalyst-Controller-SOAP/1.0/tags/0.5/t/PostApp.t	                        (rev 0)
+++ Catalyst-Controller-SOAP/1.0/tags/0.5/t/PostApp.t	2008-04-02 15:16:37 UTC (rev 7551)
@@ -0,0 +1,114 @@
+use Test::More tests => 9;
+use File::Spec::Functions;
+use HTTP::Response;
+use IPC::Open3;
+use Symbol;
+
+my $response;
+
+$response = soap_xml_post
+  ('/ws/hello',
+   '<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"><Body>World</Body></Envelope>'
+  );
+
+ok($response->content =~ /Hello World/, 'Document Literal correct response: '.$response->content);
+
+$response = soap_xml_post
+  ('/ws2',
+   '<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"><Body><hello>World</hello></Body></Envelope>'
+  );
+ok($response->content =~ /Hello World/, 'RPC Literal Correct response: '.$response->content);
+
+$response = soap_xml_post
+  ('/ws/foo',
+   '<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"><Body>World</Body></Envelope>'
+  );
+ok($response->content =~ /\<foo\>\<bar\>\<baz\>Hello World\!\<\/baz\>\<\/bar\>\<\/foo\>/, 'Literal response: '.$response->content);
+
+$response = soap_xml_post
+  ('/withwsdl/Greet',
+   '<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"><Body><GreetingSpecifier><who>World</who><greeting>Hello</greeting></GreetingSpecifier></Body></Envelope>'
+  );
+ok($response->content =~ /greeting\>Hello World\!\<\//, 'Literal response: '.$response->content);
+
+$response = soap_xml_post
+  ('/withwsdl/doclw',
+   '<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"><Body><GreetingSpecifier><who>World</who><greeting>Hello</greeting></GreetingSpecifier></Body></Envelope>'
+  );
+ok($response->content =~ /greeting\>Hello World\!\<\//, ' Document/Literal Wrapped response: '.$response->content);
+
+$response = soap_xml_post
+  ('/withwsdl2/Greet','
+    <Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
+         <Body>
+            <Greet>
+               <who>World</who>
+               <greeting>Hello</greeting>
+            </Greet>
+         </Body>
+    </Envelope>
+  ');
+ok($response->content =~ /greeting[^>]+\>Hello World\!\<\//, 'Literal response: '.$response->content);
+
+$response = soap_xml_post
+  ('/withwsdl2/Greet','
+    <Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
+         <Body>
+            <Greet>
+               <who>World</who>
+               <greeting>Hello</greeting>
+            </Greet>
+         </Body>
+    </Envelope>
+  ');
+ok($response->content =~ /greeting[^>]+\>Hello World\!\<\//, 'Literal response: '.$response->content);
+
+
+$response = soap_xml_post
+  ('/withwsdl/Greet',
+   '<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"><Body><GreetingSpecifier><name>World</name><greeting>Hello</greeting></GreetingSpecifier></Body></Envelope>'
+  );
+ok($response->content =~ /Fault/, 'Fault on malformed body for Document-Literal: '.$response->content);
+
+$response = soap_xml_post
+  ('/ws/bar',
+   '<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"><Body>World</Body></Envelope>'
+  );
+ok($response->content =~ /Fault/, 'Fault for uncaugh exception: '.$response->content);
+
+
+
+sub soap_xml_post {
+    my $path = shift;
+    my $content = shift;
+
+    local %ENV;
+    $ENV{REMOTE_ADDR} ='127.0.0.1';
+    $ENV{CONTENT_LENGTH} = length $content;
+    $ENV{CONTENT_TYPE} ='application/soap+xml';
+    $ENV{SCRIPT_NAME} = $path;
+    $ENV{QUERY_STRING} = '';
+    $ENV{CATALYST_DEBUG} = 0;
+    $ENV{REQUEST_METHOD} ='POST';
+    $ENV{SERVER_PORT} ='80';
+    $ENV{SERVER_NAME} ='pitombeira';
+    $ENV{HTTP_SOAPAction} = 'http://example.com/actions/Greet';    
+
+    my ($writer, $reader, $error) = map { gensym() } 1..3;
+    my $pid = open3($writer, $reader, $error,
+                    $^X, (map { '-I'.$_ } @INC),
+                    catfile(qw(t PostApp script postapp_cgi.pl)));
+
+    print {$writer} $content;
+    close $content;
+
+    my $response_str = join '', <$reader>;
+    map { warn '# '.$_ } <$error>;
+
+    close $reader;
+    close $error;
+    waitpid $pid, 0;
+    return HTTP::Response->parse($response_str);
+}
+
+1;

Copied: Catalyst-Controller-SOAP/1.0/tags/0.5/t/hello.wsdl (from rev 7544, Catalyst-Controller-SOAP/1.0/trunk/t/hello.wsdl)
===================================================================
--- Catalyst-Controller-SOAP/1.0/tags/0.5/t/hello.wsdl	                        (rev 0)
+++ Catalyst-Controller-SOAP/1.0/tags/0.5/t/hello.wsdl	2008-04-02 15:16:37 UTC (rev 7551)
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions
+    xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+    xmlns:s="http://www.w3.org/2001/XMLSchema"
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:hello="http://example.com/hello"
+    xmlns="http://example.com/hello"
+    targetNamespace="http://example.com/hello">
+
+  <wsdl:types>
+    <s:schema elementFormDefault="qualified" targetNamespace="http://example.com/hello">
+      <s:element name="GreetingSpecifier">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="0" maxOccurs="1" name="who" type="s:string"/>
+            <s:element minOccurs="0" maxOccurs="1" name="greeting" type="s:string"/>
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="GreetingResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="0" maxOccurs="1" name="greeting" type="s:string"/>
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+    </s:schema>
+  </wsdl:types>
+  <wsdl:message name="AskGreeting">
+    <wsdl:part name="parameters" element="hello:GreetingSpecifier"/>
+  </wsdl:message>
+  <wsdl:message name="GiveGreeting">
+    <wsdl:part name="details" element="hello:GreetingResponse"/>
+  </wsdl:message>
+  <wsdl:portType name="GreetingPort">
+    <wsdl:operation name="Greet">
+      <wsdl:input message="hello:AskGreeting"/>
+      <wsdl:output message="hello:GiveGreeting"/>
+    </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:binding name="GreetingBind" type="hello:GreetingPort">
+    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+    <wsdl:operation name="Greet">
+      <soap:operation soapAction="http://example.com/" style="document"/>
+      <wsdl:input>
+        <soap:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal"/>
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:service name="GreetService">
+    <wsdl:port name="GreetPort" binding="hello:GreetingBind">
+      <soap:address location="http://localhost:3000/hello"/>
+    </wsdl:port>
+  </wsdl:service>
+</wsdl:definitions>
\ No newline at end of file

Copied: Catalyst-Controller-SOAP/1.0/tags/0.5/t/hello2.wsdl (from rev 7546, Catalyst-Controller-SOAP/1.0/trunk/t/hello2.wsdl)
===================================================================
--- Catalyst-Controller-SOAP/1.0/tags/0.5/t/hello2.wsdl	                        (rev 0)
+++ Catalyst-Controller-SOAP/1.0/tags/0.5/t/hello2.wsdl	2008-04-02 15:16:37 UTC (rev 7551)
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions
+    xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+    xmlns:s="http://www.w3.org/2001/XMLSchema"
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:hello="http://example.com/hello"
+    xmlns="http://example.com/hello"
+    targetNamespace="http://example.com/hello">
+
+  <wsdl:types>
+    <s:schema elementFormDefault="qualified" targetNamespace="http://example.com/hello">
+      <s:element minOccurs="0" maxOccurs="1" name="who" type="s:string"/>
+      <s:element minOccurs="0" maxOccurs="1" name="greeting" type="s:string"/>
+    </s:schema>
+  </wsdl:types>
+  <wsdl:message name="AskGreeting">
+    <wsdl:part name="who" element="hello:who"/>
+    <wsdl:part name="greeting" element="hello:greeting"/>
+  </wsdl:message>
+  <wsdl:message name="GiveGreeting">
+    <wsdl:part name="greeting" element="hello:greeting"/>
+  </wsdl:message>
+  <wsdl:portType name="GreetingPort">
+    <wsdl:operation name="Greet">
+      <wsdl:input message="hello:AskGreeting"/>
+      <wsdl:output message="hello:GiveGreeting"/>
+    </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:binding name="GreetingBind" type="hello:GreetingPort">
+    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/>
+    <wsdl:operation name="Greet">
+      <soap:operation soapAction="http://example.com/" />
+      <wsdl:input>
+        <soap:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal"/>
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:service name="GreetService">
+    <wsdl:port name="GreetPort" binding="hello:GreetingBind">
+      <soap:address location="http://localhost:3000/hello"/>
+    </wsdl:port>
+  </wsdl:service>
+</wsdl:definitions>
\ No newline at end of file




More information about the Catalyst-commits mailing list