2017 © Pedro Peláez
 

library jms-soap-serializer

JMS serialize visitor that (de)serializes SOAP requests/responses

image

dmt-software/jms-soap-serializer

JMS serialize visitor that (de)serializes SOAP requests/responses

  • Saturday, July 28, 2018
  • by proggeler
  • Repository
  • 1 Watchers
  • 0 Stars
  • 5 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 2 Open issues
  • 5 Versions
  • 0 % Grown

The README.md

SOAP Serializer

Latest Stable Version Build Status Scrutinizer Code Quality Code Coverage License, (*1)

Install

composer require dmt-software/jms-soap-serializer, (*2)

Usage

Configure Serializer

use DMT\Soap\Serializer\SoapDeserializationVisitorFactory;
use DMT\Soap\Serializer\SoapSerializationVisitorFactory;
use DMT\Soap\Serializer\SoapMessageEventSubscriber;
use JMS\Serializer\EventDispatcher\EventDispatcher;
use JMS\Serializer\SerializerBuilder;

$builder = SerializerBuilder::create()
    ->setSerializationVisitor('soap', new SoapSerializationVisitorFactory())
    ->setDeserializationVisitor('soap', new SoapDeserializationVisitorFactory())
    ->configureListeners(
        function (EventDispatcher $dispatcher) {
            $dispatcher->addSubscriber(
                new SoapMessageEventSubscriber()
            );
        }
    );

$serializer = $builder->build();

Enable (de)serialization of DateTime objects

use DMT\Soap\Serializer\SoapDateHandler;
use JMS\Serializer\Handler\HandlerRegistry;

/** @var JMS\Serializer\SerializerBuilder $builder */
$builder->configureHandlers(
    function(HandlerRegistry $registry) {
        $registry->registerSubscribingHandler(new SoapDateHandler());
    }
);

Configure Serializer with SoapHeader

use DMT\Soap\Serializer\SoapHeaderInterface;
use DMT\Soap\Serializer\SoapHeaderEventSubscriber;
use DMT\Soap\Serializer\SoapMessageEventSubscriber;
use JMS\Serializer\EventDispatcher\EventDispatcher;

/** @var JMS\Serializer\SerializerBuilder $builder */
$builder->configureListeners(
    function (EventDispatcher $dispatcher) {
        $dispatcher->addSubscriber(
            new SoapMessageEventSubscriber()
        );
        /** @var SoapHeaderInterface $soapHeader */
        $dispatcher->addSubscriber(
            new SoapHeaderEventSubscriber($soapHeader)
        );
    }
);

Using SOAP 1.2

use DMT\Soap\Serializer\SoapNamespaceInterface;
use DMT\Soap\Serializer\SoapSerializationVisitorFactory;

/** @var JMS\Serializer\SerializerBuilder $builder */
$builder->setSerializationVisitor(
    'soap',
    (new SoapSerializationVisitorFactory())
        ->setSoapVersion(SoapNamespaceInterface::SOAP_1_2)
);

Using Serializer

Serialize SOAP Request

use JMS\Serializer\Serializer;

/** @var Message $requestMessage */
/** @var Serializer $serializer */
$request = $serializer->serialize($requestMessage, 'soap');

// $request = '<soap:Envelope ...><soap:Body><ns1:Message>...</ns1:Message></soap:Body></soap:Envelope>';

Deserialize SOAP Response

use JMS\Serializer\Serializer;

/** @var Serializer $serializer */
$response = $serializer->deserialize('<env:Envelope ... </env:Envelope>', ResponseMessage::class, 'soap');

// $response instanceof ResponseMessage

Debugging

Failing to make a request

When creating a SOAP message you must provide a XmlRoot and XmlRootNamespace. If you forgot to provide them an exception is thrown:, (*3)

Missing XmlRootName or XmlRootNamespace for {{ YourSOAPRequest }}., (*4)

To fix this, add the XmlRoot annotation to your configuration:, (*5)

namespace Any\NS; 

use JMS\Serializer\Annotation as JMS;

/** 
 * @JMS\XmlRoot("YourSOAPRequest", namespace="http://ns-for-your-request")
 */
class YourSOAPRequest
{
    //...
}

or if you're using yaml configuration:, (*6)

Any\NS\YourSOAPRequest:
  ...
  xml_root_name: YourSOAPRequest
  xml_root_namespace: http://ns-for-your-request
  ...   

The Versions

28/07 2018

dev-master

9999999-dev

JMS serialize visitor that (de)serializes SOAP requests/responses

  Sources   Download

MIT

The Requires

 

The Development Requires

by Bas de Mes

28/07 2018

1.0.x-dev

1.0.9999999.9999999-dev

JMS serialize visitor that (de)serializes SOAP requests/responses

  Sources   Download

MIT

The Requires

 

The Development Requires

by Bas de Mes

06/07 2018

v1.0.1

1.0.1.0

JMS serialize visitor that (de)serializes SOAP requests/responses

  Sources   Download

MIT

The Requires

 

The Development Requires

by Bas de Mes

04/07 2018

v1.0.0

1.0.0.0

JMS serialize visitor that (de)serializes SOAP requests/responses

  Sources   Download

MIT

The Requires

 

The Development Requires

by Bas de Mes

28/06 2018

v0.0.1

0.0.1.0

JMS serialize visitor that (de)serializes SOAP requests/responses

  Sources   Download

MIT

The Requires

 

The Development Requires

by Bas de Mes