This PR was merged into the 5.3-dev branch.
Discussion
----------
[Messenger] Make all the dependencies of AmazonSqsTransport injectable
| Q | A
| ------------- | ---
| Branch? | 5.x for features
| Bug fix? | no
| New feature? | yes - updated changelog
| Deprecations? | no
| Tickets | Fix#38640
| License | MIT
| Doc PR | symfony/symfony-docs#... <!-- required for new features -->
This is a pure refactoring PR that enables more flexibility with service injection without actually changing any behaviour or breaking backwards compatibility. It satisfies only 1 of 2 acceptance criteria of #38640 but since they're independent, I'm not marking the PR as WIP.
## Receiver & sender injection into AmazonSqsTransport
It is now possible to inject your own receiver and sender into `Symfony\Component\Messenger\Bridge\AmazonSqs\Transport\AmazonSqsTransport`.
### Recommended way - AmazonSqsTransport::create
For clean dependency injection, I recommed using the `create` static method, which obliges you to pass all dependencies:
```php
$transport = AmazonSqsTransport::create($connection, $receiver, $sender);
```
For example, this code from `Symfony\Component\Messenger\Bridge\AmazonSqs\Transport\AmazonSqsTransportFactory`:
```php
return new AmazonSqsTransport(Connection::fromDsn($dsn, $options), $serializer);
```
could be replaced with this:
```php
$connection = Connection::fromDsn($dsn, $options);
return AmazonSqsTransport::create(
$connection,
new AmazonSqsReceiver($connection, $serializer),
new AmazonSqsSender($connection, $serializer)
);
```
I didn't replace that code in the factory because I didn't find it essential but I will certainly do it in my custom factory in my project, passing my own receiver implementation.
### Using the main constructor
You can still use the main constructor but it's most suited for backwards compatibility, i.e. when you don't want to inject a receiver or a sender. With the full list of arguments it gets a bit messy due to their optionality.
#### Minimal call
```php
new AmazonSqsTransport($connection);
```
As before this PR, a receiver and a sender will be created using the default serializer, i.e. `Symfony\Component\Messenger\Transport\Serialization\PhpSerializer`.
#### With a custom serializer
```php
new AmazonSqsTransport($connection, $serializer);
```
As before this PR, a receiver and a sender will be created using the passed serializer.
#### With a custom receiver and sender
```php
new AmazonSqsTransport($connection, null, $receiver, $sender);
```
The injected services will be used. The second parameter (serializer) is unnecessary because it was only ever used while creating a receiver and a sender inside the transport. Because of this, I recommend using the new static `create` method.
Commits
-------
281af262e6 [Messenger] Make all the dependencies of AmazonSqsTransport injectable
This PR was merged into the 4.4 branch.
Discussion
----------
[Cache] Add tests on CacheDataCollector
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | no
| New feature? | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| License | MIT
<!--
Replace this notice by a short README for your feature/bugfix. This will help people
understand your PR and can be used as a start for the documentation.
Additionally (see https://symfony.com/releases):
- Always add tests and ensure they pass.
- Never break backward compatibility (see https://symfony.com/bc).
- Bug fixes must be submitted against the lowest maintained branch where they apply
(lowest branches are regularly merged to upper ones so they get the fixes too.)
- Features and deprecations must be submitted against branch 5.x.
-->
The `calculateStatistics()` method of `Symfony\Component\Cache\DataCollector\CacheDataCollector` contain a lot of logic and manipulate multi-dimensional array that could be refactor with VO.
But before doing this, I would add test on this part.
Commits
-------
7b4310f045 Add tests on CacheDataCollector
This PR was merged into the 4.4 branch.
Discussion
----------
[DependencyInjection] Fix circular detection with multiple paths
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | Fix#39056
| License | MIT
| Doc PR | -
There are currently 2 kind of issues related to the Dependency Injection:
1. performance issue when project contains many loops (#37850)
Which has been fixed by #38882
2. Infinity loop in some case (#38970)
Which has been fixed by #38980 and #39021
The new issue #39056 has been introduced by #38882 (The performance issue refactor) because in order to optimize loop detection, I take a short cut and choose to not collect ALL the circular loop but only the one that matters
I was wrong. All loops matters.
This PR fix my previous refacto to collect ALL the paths, with a low CPU footprint
Commits
-------
1c3721e8ad Fix circular detection with multiple paths
This PR was merged into the 4.4 branch.
Discussion
----------
[MimeType] Add missing alias for service @mime_type
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets |
| License | MIT
| Doc PR |
I found that this was missing. Im not sure why these have not been added before. Was it intentional?
Commits
-------
7b733d651d [MimeType] Add missing alias for @mime_type
This PR was squashed before being merged into the 5.3-dev branch.
Discussion
----------
[BrowserKit] Add jsonRequest function to the browser-kit client
| Q | A
| ------------- | ---
| Branch? | 5.x
| Bug fix? | no
| New feature? | yes
| Deprecations? | no
| Tickets | Fix -
| License | MIT
| Doc PR | symfony/symfony-docs#...
If you use the FOSRestBundle for your Api's you have maybe many tests using just:
```php
$client->request('POST', '/api/contacts', ['param' => 1]);
```
To test your JSON api as in the real browser request FOSRestBundle converts the json body into the `$request->request` object. I think something similar is done by ApiPlatform. If you have tests like above they will now fail as the integer is converted to string see also #38591.
This PR add a new `jsonRequest` which will look like the following and will so fix the above problem:
```php
$client->jsonRequest('POST', '/api/contacts', ['param' => 1]);
```
Commits
-------
c2fa2cb376 [BrowserKit] Add jsonRequest function to the browser-kit client
This PR was squashed before being merged into the 5.3-dev branch.
Discussion
----------
[Messenger][SQS] Make sure one can enable debug logs
| Q | A
| ------------- | ---
| Branch? | 5.x
| Bug fix? | no
| New feature? | yes
| Deprecations? | no
| Tickets |
| License | MIT
| Doc PR | Needed
If you add `&debug=true` on your DSN, then we will use `LoggerInterface::debug()` to print HTTP requests and responses.
This has a negative impact on performance, but it will be helpful when debugging.
Commits
-------
66edc59b56 [Messenger][SQS] Make sure one can enable debug logs
This PR was squashed before being merged into the 5.2-dev branch.
Discussion
----------
[Messenger] Fix JSON deserialization of ErrorDetailsStamp and normalization of FlattenException::$statusText
| Q | A
| ------------- | ---
| Branch? | 5.x (bugfix of a 5.x-only feature)
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | Fix#39003
| License | MIT
~WIP~ This is now complete and, thanks to @yceruto, I've fixed two bugs in this PR:
* `ErrorDetailsStamp` couldn't be (de)serialized properly with that constructor argument
* `FlattenException::$statusText` wasn't (de)normalized
Commits
-------
9af554cb41 [Messenger] Fix JSON deserialization of ErrorDetailsStamp and normalization of FlattenException::$statusText
This PR was squashed before being merged into the 3.4 branch.
Discussion
----------
[DoctrineBridge] indexBy could reference to association columns
| Q | A
| ------------- | ---
| Branch? | 3.4
| Bug fix? | yes
| New feature? | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets | Fix#37982 <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License | MIT
| Doc PR | -
<!--
Replace this notice by a short README for your feature/bugfix. This will help people
understand your PR and can be used as a start for the documentation.
Additionally (see https://symfony.com/releases):
- Always add tests and ensure they pass.
- Never break backward compatibility (see https://symfony.com/bc).
- Bug fixes must be submitted against the lowest maintained branch where they apply
(lowest branches are regularly merged to upper ones so they get the fixes too.)
- Features and deprecations must be submitted against branch 5.x.
-->
This is my approach to solve #37982. It partials reverts @xabbuh PR #38604
This is my first Symfony contribution, so please, tell me if I need to do something more or something is wrong.
Also, this bug affects 4.x and 5.x versions. I think merging in this branches is done automatically. If not, please tell me.
Thanks you
Commits
-------
f9a0e000e9 failing test for issue 38861
4c36145664 [DoctrineBridge] indexBy could reference to association columns