Commit Graph

9377 Commits

Author SHA1 Message Date
Fabien Potencier
a693545324 fixed types in phpdocs 2014-04-16 08:51:57 +02:00
Grégoire Pineau
2ce8cd993e [Debug] Fixed ClassNotFoundFatalErrorHandler on windows.
Because $path is realpath'ed. So we have to use DIRECTORY_SEPARATOR
instead of / because the default directory separator on windows is
\. And so the str_replace can not work and can lead to a fatal error
because class could already be loaded. For example, the Response class
in symfony full stack is in the bootstrap.php.cache.
2014-04-15 18:41:05 +02:00
Fabien Potencier
c2e134fbb9 minor #10701 Made types used by Symfony compatible with the ones of Hack (fabpot)
This PR was merged into the 2.3 branch.

Discussion
----------

Made types used by Symfony compatible with the ones of Hack

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

PHP supports several ways to express types: like Boolean/bool or integer/int. Hack only supports one of them, so this PR proposes to use the Hack type to make Symfony a bit more "compatible" with Hack (gradual upgrade ;)).

Commits
-------

3c9c10f made phpdoc types consistent with those defined in Hack
0555b7f made types consistent with those defined in Hack
2014-04-15 07:44:12 +02:00
Fabien Potencier
3c9c10f3a0 made phpdoc types consistent with those defined in Hack 2014-04-15 07:41:45 +02:00
Fabien Potencier
5033e7ac3b minor #10708 Add support Thai translations (liverbool)
This PR was squashed before being merged into the 2.3 branch (closes #10708).

Discussion
----------

Add support Thai translations

Add [Thai](http://www.thai-language.com/) translations to:
+ Symfony/Component/Validator/Resources/translations/
+ Symfony/Component/Security/Resources/translations/

Commits
-------

4bc2951 Add support Thai translations
2014-04-15 07:28:39 +02:00
ツ Liverbool
4bc2951616 Add support Thai translations 2014-04-15 07:28:35 +02:00
jskvara
995ec7208d [Validator] Add missing czech translations 2014-04-15 00:10:03 +01:00
Fabien Potencier
0555b7f2ab made types consistent with those defined in Hack 2014-04-13 20:00:14 +02:00
Fabien Potencier
4b7a275363 removed extra/unsupported arguments 2014-04-12 19:21:42 +02:00
Fabien Potencier
f4adfc4d79 [HttpKernel] fixed an error message 2014-04-12 19:21:42 +02:00
Fabien Potencier
f50b2c59d5 bug #10697 [Translation] Make IcuDatFileLoader/IcuResFileLoader::load invalid resource compatible with HHVM. (idn2104)
This PR was squashed before being merged into the 2.3 branch (closes #10697).

Discussion
----------

[Translation] Make IcuDatFileLoader/IcuResFileLoader::load invalid resource compatible with HHVM.

[Translation] HHVM throws when an invalid ResourceBundle is constructed, while zend returns FALSE from the constructor. This patch makes IcuResFileLoader and IcuDatFileLoader compatible with HHVM.

The following tests now pass on HHVM:
https://github.com/symfony/symfony/blob/2.3/src/Symfony/Component/Translation/Tests/Loader/IcuDatFileLoaderTest.php#L33
https://github.com/symfony/symfony/blob/2.3/src/Symfony/Component/Translation/Tests/Loader/IcuResFileLoaderTest.php#L54

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | N/A
| License       | MIT
| Doc PR        | N/A

Commits
-------

9bc08c0 [Translation] Make IcuDatFileLoader/IcuResFileLoader::load invalid resource compatible with HHVM.
2014-04-12 17:24:40 +02:00
Ioan Negulescu
9bc08c0279 [Translation] Make IcuDatFileLoader/IcuResFileLoader::load invalid resource compatible with HHVM. 2014-04-12 17:24:34 +02:00
Fabien Potencier
c875acf3a2 bumped Symfony version to 2.5.0 2014-04-12 16:58:29 +02:00
Fabien Potencier
2aea588ceb updated VERSION for 2.5.0-BETA1 2014-04-11 22:04:22 +02:00
Fabien Potencier
203a532257 fixed a test 2014-04-11 21:30:22 +02:00
Fabien Potencier
dd957bca47 fixed a test 2014-04-11 21:14:26 +02:00
Fabien Potencier
1251e136b4 Merge branch '2.4'
* 2.4:
  [Validator] Fix hack for nested Collection/All losing context
  [Config] Fix NodeBuilderTest::testNumericNodeCreation to use BaseNodeBuilder alias.
  [Profiler] Prevent throwing fatal errors when searching timestamps or invalid dates
  [HttpKernel] Added the resource ID when printing a resource in the DataCollector
  [HttpFoundation] use insert or replace for sqlite session handler
  [HttpFoundation] use MERGE SQL for MS SQL Server session storage
  [HttpFoundation] fix PDO session handler under high concurrency

Conflicts:
	src/Symfony/Component/Validator/Tests/ExecutionContextTest.php
2014-04-11 20:34:16 +02:00
Fabien Potencier
55351677ca Merge branch '2.3' into 2.4
* 2.3:
  [Config] Fix NodeBuilderTest::testNumericNodeCreation to use BaseNodeBuilder alias.
  [Profiler] Prevent throwing fatal errors when searching timestamps or invalid dates
  [HttpKernel] Added the resource ID when printing a resource in the DataCollector
  [HttpFoundation] use insert or replace for sqlite session handler
  [HttpFoundation] use MERGE SQL for MS SQL Server session storage
  [HttpFoundation] fix PDO session handler under high concurrency

Conflicts:
	src/Symfony/Component/HttpKernel/DataCollector/DataCollector.php
	src/Symfony/Component/HttpKernel/Tests/Profiler/ProfilerTest.php
2014-04-11 20:33:45 +02:00
Fabien Potencier
e81c872bc8 bug #10652 [HttpFoundation] fix PDO session handler under high concurrency (Tobion)
This PR was merged into the 2.3 branch.

Discussion
----------

[HttpFoundation] fix PDO session handler under high concurrency

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #8448 and http://trac.symfony-project.org/ticket/4777 (which was never really fixed as you can see here)
| License       | MIT

- The first commit fixes PDO session handler under high concurrency.
- The second commit uses MERGE SQL for MS SQL Server. Tested with http://sqlfiddle.com/#!6/66b6d/14
- The third commit uses INSERT OR REPLACE for sqlite session handler http://sqlfiddle.com/#!7/e6707/3

What I find rather bad with the class design is that it depends on the table definition, but it's not part of the class. Also it doesn't make use of open() and close() which could be used to make the database connection lazy instead of having is open all the time when not needed. Doctrine also only lazy connects, but we use PDO directly here.
Furthermore, the session handlers should not throw exceptions, from what I read, but return false when an error occurs. This is not followed in this class. Maybe @drak knows how php session management behaves when the session handlers return false?

Commits
-------

5c08e29 [HttpFoundation] use insert or replace for sqlite session handler
05ea19a [HttpFoundation] use MERGE SQL for MS SQL Server session storage
e58d7cf [HttpFoundation] fix PDO session handler under high concurrency
2014-04-11 20:29:09 +02:00
Jérôme Tamarelle
edfa6d547d [Validator] Fix hack for nested Collection/All losing context 2014-04-11 13:48:13 +02:00
Fabien Potencier
241dc10245 bug #10669 [Profiler] Prevent throwing fatal errors when searching timestamps or invalid dates (stloyd)
This PR was merged into the 2.3 branch.

Discussion
----------

[Profiler] Prevent throwing fatal errors when searching timestamps or invalid dates

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| License       | MIT

Commits
-------

eea9d24 [Profiler] Prevent throwing fatal errors when searching timestamps or invalid dates
2014-04-11 13:44:37 +02:00
Ioan Negulescu
022c4af446 [Config] Fix NodeBuilderTest::testNumericNodeCreation to use BaseNodeBuilder alias. 2014-04-11 13:41:46 +02:00
Charles Sarrazin
f1a7361aae Fixed wrong typehint in documentation for XmlEncoder 2014-04-11 10:02:41 +02:00
Joseph Bielawski
eea9d24719 [Profiler] Prevent throwing fatal errors when searching timestamps or invalid dates 2014-04-11 08:45:03 +02:00
Bernhard Schussek
01983a553a [HttpKernel] Added the resource ID when printing a resource in the DataCollector 2014-04-10 19:43:37 +02:00
Fabien Potencier
a45e464bc3 Merge branch '2.4'
* 2.4:
  Update MimeTypeExtensionGuesser.php
  [Validator] Add missing polish translations
  [Validator] Added missing strings from Image validator
  [Templating] PhpEngine should propagate charset to its helpers
  Fix ticket #10663 - Added setCharset method call to PHP templating engine.
  Changed the typehint of the EsiFragmentRenderer to the interface
  [Form] Improved test coverage of UrlType
  [BrowserKit] Fix #10641 : BrowserKit is broken when using ip as host
2014-04-10 15:01:02 +02:00
Fabien Potencier
144b58ccef Merge branch '2.3' into 2.4
* 2.3:
  Update MimeTypeExtensionGuesser.php
  [Templating] PhpEngine should propagate charset to its helpers
  Fix ticket #10663 - Added setCharset method call to PHP templating engine.
  Changed the typehint of the EsiFragmentRenderer to the interface
  [Form] Improved test coverage of UrlType
  [BrowserKit] Fix #10641 : BrowserKit is broken when using ip as host

Conflicts:
	src/Symfony/Component/HttpKernel/Fragment/EsiFragmentRenderer.php
	src/Symfony/Component/Templating/PhpEngine.php
2014-04-10 15:00:56 +02:00
Mark Topper
be0e362116 Update MimeTypeExtensionGuesser.php
Fixed bug for MimeType `image/x-ms-bmp`
2014-04-10 14:53:44 +02:00
WouterJ
9ba2861408 Fixed Yaml loader/dumper to use underscores 2014-04-10 14:44:40 +02:00
Joseph Bielawski
6e014050ca [Validator] Add missing polish translations 2014-04-10 09:02:51 +02:00
Mario Young
df37461b99 [Validator] Added missing strings from Image validator 2014-04-10 04:21:46 +02:00
Fabien Potencier
5599eb0aae bug #10670 [Templating] PhpEngine should propagate charset to its helpers (stloyd)
This PR was merged into the 2.3 branch.

Discussion
----------

[Templating] PhpEngine should propagate charset to its helpers

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #10666
| License       | MIT

Commits
-------

ed9e48b [Templating] PhpEngine should propagate charset to its helpers
2014-04-10 04:17:51 +02:00
Charles Sarrazin
db44f0fdd7 [Serializer] Refactored XmlEncoder to remove dependency to SimpleXml 2014-04-10 02:57:01 +02:00
Joseph Bielawski
ed9e48b472 [Templating] PhpEngine should propagate charset to its helpers 2014-04-09 20:38:51 +02:00
Tobias Schultze
5c08e29b97 [HttpFoundation] use insert or replace for sqlite session handler 2014-04-09 16:14:23 +02:00
Christophe Coevoet
d1fca907f9 Changed the typehint of the EsiFragmentRenderer to the interface 2014-04-09 15:45:02 +02:00
Bernhard Schussek
f3e172f6e5 [Form] Improved test coverage of UrlType 2014-04-09 05:11:36 +02:00
Fabien Potencier
9a95f520c9 bug #10649 [BrowserKit] Fix #10641 : BrowserKit is broken when using ip as host (romainneutron)
This PR was merged into the 2.3 branch.

Discussion
----------

[BrowserKit] Fix #10641 : BrowserKit is broken when using ip as host

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #10641
| License       | MIT

As documented in http://php.net/manual/en/function.preg-replace.php, we have to use the `$` notation for replacing the backreference

>When working with a replacement pattern where a backreference is immediately followed by another number (i.e.: placing a literal number immediately after a matched pattern), you cannot use the familiar \\1 notation for your backreference. \\11, for example, would confuse preg_replace() since it does not know whether you want the \\1 backreference followed by a literal 1, or the \\11 backreference followed by nothing. In this case the solution is to use \${1}1. This creates an isolated $1 backreference, leaving the 1 as a literal.

Commits
-------

e946da3 [BrowserKit] Fix #10641 : BrowserKit is broken when using ip as host
2014-04-09 05:10:38 +02:00
Tobias Schultze
05ea19a4bf [HttpFoundation] use MERGE SQL for MS SQL Server session storage 2014-04-08 22:01:45 +02:00
Tobias Schultze
e58d7cf6c6 [HttpFoundation] fix PDO session handler under high concurrency 2014-04-08 21:48:40 +02:00
Romain Neutron
e946da303d [BrowserKit] Fix #10641 : BrowserKit is broken when using ip as host 2014-04-08 15:30:36 +02:00
Fabien Potencier
40db85d9da bumped Symfony version to 2.4.4 2014-04-05 13:49:17 +02:00
Fabien Potencier
3199b2e0d1 updated VERSION for 2.4.3 2014-04-04 12:27:02 +02:00
Romain Neutron
8163427b71 [DependencyInjection] Fix #10626, use better check on attribute existence and values on XML load 2014-04-03 14:00:33 +02:00
Fabien Potencier
a18ee423f9 bumped Symfony version to 2.3.13 2014-04-03 10:18:27 +02:00
Fabien Potencier
3574df3d5e updated VERSION for 2.3.12 2014-04-03 07:42:39 +02:00
Fabien Potencier
8d69022c04 Merge branch '2.4'
* 2.4:
  Revert PHPUnit version, revert APC configuration
  removed APC on the CLI for Travis as it does not work well with PHPUnit and Composer anyway
  [Security] Replace exception mocks with actual exception instances.
  Remove an unused argument.
  Use `Filesystem::chmod` instead of `chmod` when dumping file
  [Form] Added test for disabling buttons
  [Form] Added check for parent disabled status in Button form elements
  Fixes URL validator to accept single part urls
  tweaked Travis configuration to get more tests running
  fixed float comparison in unit tests for HHVM
  upgraded PHPUnit to version 4 for better HHVM support
  [Process] fixed HHVM usage on the CLI
  Fix class names in ApcUniversalClassLoader tests.
  fixed the profiler when an uncalled listener throws an exception when instantiated
  fixed CS
  Added test case for 4c6a2d15095c13b2a35751b2b2712b183be489c4
  Fixed bug in ChoiceType triggering a warning when not using utf-8
  fixed CS
  Avoid levenshtein comparison when using ContainerBuilder.
2014-04-03 07:23:57 +02:00
Fabien Potencier
785e82f814 Merge branch '2.3' into 2.4
* 2.3:
  Revert PHPUnit version, revert APC configuration
  removed APC on the CLI for Travis as it does not work well with PHPUnit and Composer anyway
  [Security] Replace exception mocks with actual exception instances.
  Remove an unused argument.
  Use `Filesystem::chmod` instead of `chmod` when dumping file
  [Form] Added test for disabling buttons
  [Form] Added check for parent disabled status in Button form elements
  Fixes URL validator to accept single part urls
  tweaked Travis configuration to get more tests running
  fixed float comparison in unit tests for HHVM
  upgraded PHPUnit to version 4 for better HHVM support
  [Process] fixed HHVM usage on the CLI
  Fix class names in ApcUniversalClassLoader tests.
  fixed the profiler when an uncalled listener throws an exception when instantiated
  fixed CS
  Added test case for 4c6a2d15095c13b2a35751b2b2712b183be489c4
  Fixed bug in ChoiceType triggering a warning when not using utf-8
  fixed CS
  Avoid levenshtein comparison when using ContainerBuilder.

Conflicts:
	src/Symfony/Component/Form/Extension/Core/Type/ChoiceType.php
	src/Symfony/Component/HttpKernel/Debug/TraceableEventDispatcher.php
2014-04-03 07:23:50 +02:00
Fabien Potencier
b7be0b86b9 Merge branch '2.4'
* 2.4:
  [Process] Fix Process test suite
  [Form] Fixed infinite tests when ICU is available
2014-04-02 19:10:49 +02:00
Romain Neutron
099e480c1c Fix travis build 2014-04-02 18:54:39 +02:00
Fabien Potencier
db4230ef8c feature #10619 [DependencyInjection] Use DOM instead of SimpleXML for namespace support (sandermarechal, romainneutron)
This PR was merged into the 2.5-dev branch.

Discussion
----------

[DependencyInjection] Use DOM instead of SimpleXML for namespace support

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets | #9345
| License       | MIT

This PR replaces #9350

Commits
-------

a3c60c8 [DependencyInjection] Deprecate SimpleXMLElement
33c91f9 [DependencyInjection] Use DOM instead of SimpleXML for namespace support
2014-04-02 17:51:57 +02:00
Fabien Potencier
afc34cf14c feature #10606 [Console] added a better way to ask questions to the user (fabpot, romainneutron)
This PR was merged into the 2.5-dev branch.

Discussion
----------

[Console] added a better way to ask questions to the user

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | not yet

This PR replaces #9811

- [x] add missing phpdocs
- [x] add unit tests
- [ ] submit doc PR

Commits
-------

336bba2 [Console] Add docblocks and unit tests to QuestionHelper
c413f89 [Console] added a better way to ask questions to the user
2014-04-02 17:45:58 +02:00
Romain Neutron
a3c60c8039 [DependencyInjection] Deprecate SimpleXMLElement 2014-04-02 17:32:21 +02:00
Sander Marechal
33c91f9be8 [DependencyInjection] Use DOM instead of SimpleXML for namespace support 2014-04-02 17:32:21 +02:00
Romain Neutron
336bba2fd8 [Console] Add docblocks and unit tests to QuestionHelper 2014-04-02 17:11:48 +02:00
Fabien Potencier
01f21e3c31 bug #10604 [PropertyAccessor] Wrong number of parameters (coma)
This PR was merged into the 2.5-dev branch.

Discussion
----------

[PropertyAccessor] Wrong number of parameters

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

Since [6d2af217aafd03e3f1600ce0ebc9c30cf0a7fc70#diff-3e45cf556c0330623c0167841d303dff](6d2af217aa (diff-3e45cf556c0330623c0167841d303dff)) the PropertyAccessor is failing on setters with default values because  [ReflectionFunctionAbstract::getNumberOfRequiredParameters](http://www.php.net/manual/es/reflectionfunctionabstract.getnumberofparameters.php) only count the parameters without default values.

Commits
-------

6157be0 Wrong number of parameters
2014-04-01 18:23:27 +02:00
Jakub Zalas
9438f88af0 [Security] Replace exception mocks with actual exception instances.
It is done for two reasons:
* consistency - we use real exception objects in most of the code
* latest phpunit does not like the way we were creating mocks for exceptions (it could be also fixed by letting phpunit to call the original constructor)
2014-04-01 15:48:06 +01:00
Fabien Potencier
c413f89723 [Console] added a better way to ask questions to the user 2014-04-01 14:31:41 +02:00
Eduardo García Sanz
6157be0a1d Wrong number of parameters
Wrong number of parameters

Wrong number of parameters

Wrong number of parameters
2014-04-01 14:30:09 +02:00
Romain Neutron
140f807346 [DependencyInjection] Update dumpers and loaders, add unit tests 2014-04-01 14:25:44 +02:00
Jakub Zalas
8882dad46e Remove an unused argument. 2014-03-31 22:49:46 +01:00
Fabien Potencier
1eb1f4dd73 [DependencyInjection] added a simple way to replace a service by keeping a reference to the old one 2014-03-31 20:47:44 +02:00
Romain Neutron
1642094cfe [Templating] Update changelog 2014-03-31 15:27:29 +02:00
Martin Hasoň
6fce503432 [Templating] Added ability to set a specific version of the asset 2014-03-31 15:27:29 +02:00
Fabien Potencier
7792ba90db fixed typo in composer.json 2014-03-31 13:19:58 +02:00
Fabien Potencier
b094ea7fe2 bug #10586 Fixes URL validator to accept single part urls (merk)
This PR was merged into the 2.3 branch.

Discussion
----------

Fixes URL validator to accept single part urls

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #3207 #6817
| License       | MIT
| Doc PR        | N/A

This PR replaces #6817 and has been rebased for 2.3, making a change to the regex to be simpler for single dot matches. (changing `([\pL\pN\pS-\.])+([\.]{0,1}[\pL]+[\.]{0,1})` to `([\pL\pN\pS-\.])+(\.?[\pL]+\.?)`)

Commits
-------

91e226e Fixes URL validator to accept single part urls
2014-03-31 13:10:34 +02:00
Fabien Potencier
3e678e7923 minor #10590 [2.3] Use Filesystem::chmod instead of chmod when dumping file (romainneutron)
This PR was merged into the 2.3 branch.

Discussion
----------

[2.3] Use `Filesystem::chmod` instead of `chmod` when dumping file

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| License       | MIT

This adds consistency as discussed in ca5eea5c19 (commitcomment-5804089)

Commits
-------

c2ffefd Use `Filesystem::chmod` instead of `chmod` when dumping file
2014-03-31 13:09:33 +02:00
Fabien Potencier
bd577b11a2 feature #10287 [WIP][Validator] New NodeTraverser implementation (webmozart)
This PR was merged into the 2.5-dev branch.

Discussion
----------

[WIP][Validator] New NodeTraverser implementation

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets | TODO
| License       | MIT
| Doc PR        | TODO

This PR is ready for review.

#### Todo

- [x] Test extensively to avoid regressions
- [x] Test more extensively
- [x] Finish inline documentation
- [x] Provide a layer to choose the desired API through ValidatorBuilder
- [x] Provide a layer to choose the desired API through FrameworkBundle
- [x] Update UPGRADE file
- [x] Update CHANGELOG
- [ ] Update user documentation

#### Goal

The goal of this PR is to be able to fix the following tickets:

- [x] #6138 Simplify adding of constraint violations
- [x] #7146 Support group sequences in Validator API
- [x] #7432 Poorly implemented Visitor Pattern
- [x] #8617 Control traversal on class level
- [x] #9888 Improve support for collection validation (PR: #9988)

The following tickets are probably fixed, but require testing first:

- [ ] #8376 Using validation_group causes error message to display multiple times
- [ ] #9939 GroupSequences still execute next group if first fail

Of course, full backwards compatibility **must** be guaranteed.

Other tickets I want to fix in follow-up PRs:

* #3622 Constraints\Valid does not respect "groups" option
* #4453 walk constraints by groups
* #7700 Propagate implicit group names in constraints
* #9051 Always ask value event if field isn't in the validating group
* #10163 poor collection validation test coverage
* #10221 TypeValidator does not enforce desired type when value is NULL
* #10495 Class Valid Constraint can't be used on a Form Type

#### In a nutshell

The implementation removes the Visitor pattern, which was implemented badly. I tried fixing it via a NodeTraverser/NodeVisitor implementation, but performance degraded too much so I decided to remove the pattern altogether.

A couple of new features and bug fixes are possible thanks to the new implementation. See below for details.

#### PHP Versions

PHP 5.3.8 and older does not allow to implement two different interfaces which both contain a method with the same name. This is used in the compatibility layer that supports both the old and the new API.

For this reason, the compatibility layer is disabled on PHP < 5.3.9. Older PHP versions need to decide on the old API or the new API (without compatibility layer).

#### Choosing the API Version

The API version can be specified by one of `Validation::API_VERSION_2_4`, `Validation::API_VERSION_2_5` and `Validation::API_VERSION_2_5_BC` to `setApiVersion()` when building the validator:

```php
// Old implementation
$validator = Validation::createValidatorBuilder()
    ->setApiVersion(Validation::API_VERSION_2_4)
    ->getValidator();

// New implementation with BC API
// Does not work on PHP < 5.3.9
$validator = Validation::createValidatorBuilder()
    ->setApiVersion(Validation::API_VERSION_2_5)
    ->getValidator();

// New implementation without BC API
$validator = Validation::createValidatorBuilder()
    ->setApiVersion(Validation::API_VERSION_2_5_BC)
    ->getValidator();
```

#### Features

##### Constraint validation as first-class citizen

The new API merges `validateValue()` and `validate()`. The idea is that the validation of values against constraints should be as simple as possible. Object validation is a special case where an object is tested against the `Valid` constraint. A backwards compatibility layer is provided to use both `validate()` and `validateValue()` with the old signature.

```php
// Validate against explicit constraints
$violations = $validator->validate($firstName, array(
    new NotNull(),
    new Length(array('min' => 3)),
));

// Validate against metadata
$violations = $validator->validate($object);

// Same, more expressive notation
$violations = $validator->validate($object, new Valid());

// Validate each entry against its metadata
$violations = $validator->validate($array);
```

##### Aggregate violations

It is now possible to call the methods of the validator multiple times and aggregate the violations to a common violation list. To do so, call `startContext()`, execute the calls and call `getViolations()` in the end to retrieve the violations:

```php
$violations = $validator->startContext()
    ->validate($title, new NotNull())
    ->validate($text, new NotNull())
    ->validate($author->getName(), new NotNull())
    ->getViolations()
```

Most of the time, you will want to specify a property path for each validation. Use the method `atPath()` for that:

```php
$violations = $validator->startContext()
    ->atPath('title')->validate($title, new NotNull())
    ->atPath('text')->validate($text, new NotNull())
    ->atPath('author.name')->validate($author->getName(), new NotNull())
    ->getViolations()
```

##### Control the context of nested validations

In Symfony <= 2.4, you can validate objects or constraints from within a constraint validator like this:

```php
$this->context->validate($object);
$this->context->validateValue($value, new Length(array('min' => 3)));
```

The validations will run and all violations will be added to the current context.

This way, it is impossible though to validate something, inspect the result and then decide what kind of violations to add to the context. This is needed, for example, for the `Some` constraint (proposed in #9888), which should succeed if any of the validated values did *not* generate violations.

For this reason, the new context API features a method `getValidator()`. This method returns the validator instance, you can use it to validate anything in a new context (as the validator always does):

```php
$validator = $this->context->getValidator();
$violations = $validator->validate($object);

if (count($violations)  > 0) {
    $this->context->addViolation('The validation did not pass');
}
```

You can also explicitly start a new context:

```php
$validator = $this->context->getValidator();
$violations = $validator->startContext()
    ->atPath('title')->validate($title, new NotNull())
    ->atPath('text')->validate($text, new NotNull())
    ->getViolations()
```

If you want to execute the validation in the current context, use the `inContext()` method of the validator instead:

```php
// violations are added to $this->context
$validator->inContext($this->context)
    ->atPath('title')->validate($title, new NotNull())
    ->atPath('text')->validate($text, new NotNull())
;
```

With this feature, #9888 (especially the PR for it: #9988) can be finished.

##### Custom group sequences (#7146)

It is now possible to pass `GroupSequence` instances whenever you can pass a group to the validator. For example:

```php
$violations = $validator->validate($object, new Valid(), new GroupSequence('Basic', 'Strict'));
```

Or in the context of the Form component:

```php
$form = $this->createForm(new BlogType(), new Blog(), array(
    'validation_groups' => new GroupSequence('Basic', 'Strict'),
));
```

##### Constraint violation builders (#6138)

The API for adding constraint violations was simplified:

```php
$this->context->addViolation('message', array('param' => 'value'));

// or

$this->context->buildViolation('message')
    ->atPath('property')
    ->setParameter('param', 'value')
    ->setTranslationDomain('validation_strict')
    ->addViolation();
```

##### Control traversal at class level (#8617)

Currently, it is possible whether to traverse a `Traversable` object or not in the `Valid` constraint:

```php
/**
 * @Assert\Valid(traverse=true)
 */
private $tags = new TagList();
```

(actually, `true` is the default)

In this way, the validator will iterate the `TagList` instance and validate each of the contained objects. You can also set "traverse" to `false` to disable iteration.

What if you want to specify, that `TagList` instances should always (or never) be traversed? That's currently not possible.

With this PR, you can do the following:

```php
/**
 * @Assert\Traverse(false)
 */
class TagList implements \IteratorAggregate
{
    // ...
}
```

#### Follow-up features

Features of the follow-up PRs will be described directly there.

#### Backwards compatibility

I implemented a new `AbstractValidatorTest` which tests both the old and the new implementation for compatibility. I still want to extend this test to make sure we don't introduce any regressions.

Almost none of the existing classes were modified (or only slightly). If users depend on the current (now "legacy") implementation, they will have the choice to continue using it until 3.0 (of course, without the new features).

#### Your task

Congrats, you made it till here :) If you have time, please skim over the code and give me feedback on the overall implementation and the class/method names. Again, no feedback on details yet, there are quite a few areas in the code that are still work in progress.

Thanks,
Bernhard

[1] That means that only the nodes from the root of the graph until the currently validated node are held in memory.

Commits
-------

ca6a722 [Validator] Converted `@deprecate` doc comment into regular doc comment
68d8018 [Validator] Documented changes in the UPGRADE files
b1badea [Validator] Fixed failing CsrfFormLoginTest
0bfde4a [Validator] Fixed misnamed method calls in FrameworkExtension
3dc2b4d [Validator] Made "symfony/property-access" an optional dependency
c5629bb [Validator] Added getObject() to ExecutionContextInterface
9b204c9 [FrameworkBundle] Implemented configuration to select the desired Validator API
0946dbe [Validator] Adapted CHANGELOG
1b111d0 [Validator] Fixed typos pointed out by @cordoval
7bc952d [Validator] Improved inline documentation of RecursiveContextualValidator
166d71a [Validator] Removed unused property
90c27bb [Validator] Removed traverser implementation
3183aed [Validator] Improved performance of cache key generation
029a716 [Validator] Moved logic of replaceDefaultGroup() to validateNode()
2f23d97 [Validator] Reduced number of method calls on the execution context
73c9cc5 [Validator] Optimized performance by calling spl_object_hash() only once per object
94ef21e [Validator] Optimized use statements
1622eb3 [Validator] Fixed reference to removed class in ValidatorBuilder
be508e0 [Validator] Merged DefaultGroupReplacingVisitor and ContextUpdateVisitor into NodeValidationVisitor
50bb84d [Validator] Optimized RecursiveContextualValidator
eed29d8 [Validator] Improved performance of *ContextualValidator::validate()
5c479d8 [Validator] Simplified validateNodeForGroup
eeed509 [Validator] Improved phpdoc of RecursiveValidator
274d4e6 [Validator] Changed ValidatorBuilder to always use LegacyExecutionContext
38e26fb [Validator] Decoupled RecursiveContextualValidator from Node
23534ca [Validator] Added a recursive clone of the new implementation for speed comparison
f61d31e [Validator] Fixed grammar
886e05e [Validator] Removed unused use statement
93fdff7 [Validator] The supported API versions can now be passed to the ValidatorBuilder
987313d [Validator] Improved inline documentation of the violation builder
79387a7 [Validator] Improved inline documentation of the metadata classes
01ceeda [Validator] Improved test coverage of the Traverse constraint
9ca61df [Validator] Improved inline documentation of CascadingStrategy and TraversalStrategy
524a953 [Validator] Improved inline documentation of the validators
9986f03 [Validator] Added inline documentation for the PropertyPath utility class
be7f055 [Validator] Visitors may now abort the traversal by returning false from beforeTraversal()
299c2dc [Validator] Improved test coverage and prevented duplicate validation of constraints
186c115 [Validator] Improved test coverage of NonRecursiveNodeTraverser
822fe47 [Validator] Completed inline documentation of the Node classes and the NodeTraverser
dbce5a2 [Validator] Updated outdated doc blocks
8558377 [Validator] Added deprecation notes
e8fa15b [Validator] Fixed the new validator API under PHP < 5.3.9
2936d10 [Validator] Removed unused use statement
6fc6ecd [Validator] Fixed tests under PHP<5.3.9
778ec24 [Validator] Removed helper class Traversal
76d8c9a [Validator] Fixed typos
4161371 [Validator] Removed unused use statements
aeb6822 [Validator] Improved visitor names
08172bf [Validator] Merged validate(), validateObject() and validateObjects() to simplify usage
51197f6 [Validator] Made traversal of Traversables consistent
117b1b9 [Validator] Wrapped collections into CollectionNode instances
94583a9 [Validator] Changed NodeTraverser to traverse nodes iteratively, not recursively
cf1281f [Validator] Added "Visitor" suffix to all node visitors
230f2a7 [Validator] Fixed exception message
e057b19 [Validator] Decoupled ContextRefresher from ExecutionContext
e440690 [Validator] Renamed validateCollection() to validateObjects()
df41974 [Validator] Changed context manager to context factory
26eafa4 [Validator] Removed unused use statements
bc29591 [Validator] Clearly separated classes supporting the API <2.5/2.5+
a3555fb [Validator] Fixed: Objects are not traversed unless they are instances of Traversable
2c65a28 [Validator] Completed test coverage and documentation of the Node classes
9c9e715 [Validator] Completed documentation of GroupManagerInterface
1e81f3b [Validator] Finished test coverage and documentation of ExecutionContextManager
feb3d6f [Validator] Tested the validation in a separate context
718601c [Validator] Changed validateValue() to validate() in the new API
ee1adad [Validator] Implemented handling of arrays and Traversables in LegacyExecutionContext::validate()
09f744b [Validator] Implemented BC traversal of traversables through validate()
297ba4f [Validator] Added a note why scalars are passed to cascadeObject() in NodeTraverser
9b07b0c [Validator] Implemented BC validation of arrays through validate()
405a03b [Validator] Updated deprecation notes in GroupSequence
499b2bb [Validator] Completed test coverage of ExecutionContext
adc1437 [Validator] Fixed failing tests
4ea3ff6 [Validator] Finished inline documentation of ExecutionContext[Interface]
f6b7288 [Validator] Removed unused use statement
8318286 [Validator] Completed GroupSequence implementation
5fbf848 [Validator] Added note about Callback constraint to CHANGELOG
c1b1e03 [Validator] Added TODO reminder
8ae68c9 [Validator] Made tests green (yay!)
680f1ee [Validator] Renamed $params to $parameters
321d5bb [Validator] Throw exception if ObjectInitializer is constructed without visitors
1156bde [Validator] Extracted code for group sequence resolving into GroupSequenceResolver
b1a9477 [Validator] Added ObjectInitializer visitor
7e3a41d [Validator] Moved visitors to NodeVisitor namespace
a40189c [Validator] Decoupled the new classes a bit
a6ed4ca [Validator] Prototype of the traverser implementation
25cdc68 [Validator] Refactored ValidatorTest and ValidationVisitorTest into an abstract validator test class
2014-03-31 13:08:13 +02:00
Fabien Potencier
880880b838 feature #10569 [Form] Accept interfaces to be passed to "data_class" (webmozart)
This PR was merged into the 2.5-dev branch.

Discussion
----------

[Form] Accept interfaces to be passed to "data_class"

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #8669
| License       | MIT
| Doc PR        | -

Commits
-------

b44e07b [Form] Added test case for 4759e062ed004749dbdc2ba31aef0f8ac2601895
7bc7a8a [Form] Accept interfaces to be passed to "data_class"
2014-03-31 13:06:03 +02:00
Fabien Potencier
c5a3008123 feature #10570 [PropertyAccess] Added isReadable() and isWritable() (webmozart)
This PR was merged into the 2.5-dev branch.

Discussion
----------

[PropertyAccess] Added isReadable() and isWritable()

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | yes
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #8659
| License       | MIT
| Doc PR        | symfony/symfony-docs#3729

This PR introduces BC breaks that are described in detail in the UPGRADE file. The BC breaks conform to our policy. They shouldn't affect many people, so I think we can safely do them.

Commits
-------

f7fb855 [PropertyAccess] Added missing exceptions to phpdoc
9aee2ad [PropertyAccess] Removed the argument $value from isWritable()
4262707 [PropertyAccess] Fixed CS and added missing documentation
6d2af21 [PropertyAccess] Added isReadable() and isWritable()
20e6bf8 [PropertyAccess] Refactored PropertyAccessorCollectionTest
0488389 [PropertyAccess] Refactored PropertyAccessorTest
2014-03-31 13:04:12 +02:00
Fabien Potencier
2ab27aba8b feature #10572 [Form] ObjectChoiceList now compares choices by their value, if a value path is given (webmozart)
This PR was merged into the 2.5-dev branch.

Discussion
----------

[Form] ObjectChoiceList now compares choices by their value, if a value path is given

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #8825
| License       | MIT
| Doc PR        | -

Commits
-------

ce0efb1 [Form] ObjectChoiceList now compares choices by their value, if a value path is given
2014-03-31 12:59:41 +02:00
Romain Neutron
c2ffefd0ef Use Filesystem::chmod instead of chmod when dumping file
This adds consistency as discussed in ca5eea5c19 (commitcomment-5804089)
2014-03-31 12:15:50 +02:00
Bernhard Schussek
ebfee723c9 [Form] Added test for disabling buttons 2014-03-31 11:59:54 +02:00
Adrià López Lozano
6bb355e2fd [Form] Added check for parent disabled status in Button form elements
The Button form element did not check for the parent disabled configuration status,
making them behave differently to all other form widgets.
2014-03-31 11:59:54 +02:00
Bernhard Schussek
f7fb855f46 [PropertyAccess] Added missing exceptions to phpdoc 2014-03-31 10:36:17 +02:00
Bernhard Schussek
9dfebd529e [Form] Disabled violation mapping of unsubmitted forms 2014-03-31 10:27:06 +02:00
Romain Neutron
a42fbd7ade [Process] Fix Process test suite 2014-03-31 10:11:45 +02:00
Tim Nagel
91e226e06e Fixes URL validator to accept single part urls 2014-03-31 10:23:29 +11:00
Bernhard Schussek
ca6a722a45 [Validator] Converted @deprecate doc comment into regular doc comment 2014-03-30 20:08:02 +02:00
Bernhard Schussek
68d80187ed [Validator] Documented changes in the UPGRADE files 2014-03-30 20:03:32 +02:00
Bernhard Schussek
3dc2b4d861 [Validator] Made "symfony/property-access" an optional dependency 2014-03-30 18:31:31 +02:00
Bernhard Schussek
c5629bb7ee [Validator] Added getObject() to ExecutionContextInterface 2014-03-30 18:31:00 +02:00
Bernhard Schussek
9b204c9354 [FrameworkBundle] Implemented configuration to select the desired Validator API 2014-03-30 18:31:00 +02:00
Bernhard Schussek
0946dbe7a0 [Validator] Adapted CHANGELOG 2014-03-30 18:30:09 +02:00
Bernhard Schussek
1b111d0e83 [Validator] Fixed typos pointed out by @cordoval 2014-03-30 18:30:09 +02:00
Bernhard Schussek
7bc952de55 [Validator] Improved inline documentation of RecursiveContextualValidator 2014-03-30 18:30:09 +02:00
Bernhard Schussek
166d71a7de [Validator] Removed unused property 2014-03-30 18:30:09 +02:00
Bernhard Schussek
90c27bb1e7 [Validator] Removed traverser implementation
The traverser is too slow compared to the current, recursive approach.
Testing showed a performance decrease of about 70% without a lot of
optimization potential.
2014-03-30 18:30:09 +02:00
Bernhard Schussek
3183aed7cd [Validator] Improved performance of cache key generation 2014-03-30 18:30:09 +02:00
Bernhard Schussek
029a71638e [Validator] Moved logic of replaceDefaultGroup() to validateNode() 2014-03-30 18:30:09 +02:00
Bernhard Schussek
2f23d9725b [Validator] Reduced number of method calls on the execution context 2014-03-30 18:30:09 +02:00
Bernhard Schussek
73c9cc5806 [Validator] Optimized performance by calling spl_object_hash() only once per object 2014-03-30 18:30:09 +02:00
Bernhard Schussek
94ef21e495 [Validator] Optimized use statements 2014-03-30 18:30:09 +02:00
Bernhard Schussek
1622eb3a98 [Validator] Fixed reference to removed class in ValidatorBuilder 2014-03-30 18:28:59 +02:00
Bernhard Schussek
be508e01dd [Validator] Merged DefaultGroupReplacingVisitor and ContextUpdateVisitor into NodeValidationVisitor 2014-03-30 18:28:59 +02:00
Bernhard Schussek
50bb84d06b [Validator] Optimized RecursiveContextualValidator 2014-03-30 18:28:59 +02:00
Bernhard Schussek
eed29d8ad3 [Validator] Improved performance of *ContextualValidator::validate() 2014-03-30 18:28:59 +02:00
Bernhard Schussek
5c479d803c [Validator] Simplified validateNodeForGroup 2014-03-30 18:28:59 +02:00
Bernhard Schussek
eeed509dfc [Validator] Improved phpdoc of RecursiveValidator 2014-03-30 18:28:59 +02:00
Bernhard Schussek
274d4e6195 [Validator] Changed ValidatorBuilder to always use LegacyExecutionContext
This is necessary because, until Symfony 3.0, constraint validators will continue
to rely on the old context methods in order to be backwards compatible.
2014-03-30 18:28:59 +02:00
Bernhard Schussek
38e26fbcaf [Validator] Decoupled RecursiveContextualValidator from Node 2014-03-30 18:28:59 +02:00
Bernhard Schussek
23534ca6ab [Validator] Added a recursive clone of the new implementation for speed comparison 2014-03-30 18:28:59 +02:00
Bernhard Schussek
f61d31e5fa [Validator] Fixed grammar 2014-03-30 18:28:58 +02:00
Bernhard Schussek
886e05e7ed [Validator] Removed unused use statement 2014-03-30 18:28:58 +02:00
Bernhard Schussek
93fdff764a [Validator] The supported API versions can now be passed to the ValidatorBuilder 2014-03-30 18:28:58 +02:00
Bernhard Schussek
987313d315 [Validator] Improved inline documentation of the violation builder 2014-03-30 18:28:58 +02:00
Bernhard Schussek
79387a7d5e [Validator] Improved inline documentation of the metadata classes 2014-03-30 18:28:58 +02:00
Bernhard Schussek
01ceeda376 [Validator] Improved test coverage of the Traverse constraint 2014-03-30 18:28:58 +02:00
Bernhard Schussek
9ca61df923 [Validator] Improved inline documentation of CascadingStrategy and TraversalStrategy 2014-03-30 18:28:58 +02:00
Bernhard Schussek
524a9538bc [Validator] Improved inline documentation of the validators 2014-03-30 18:28:58 +02:00
Bernhard Schussek
9986f03ce2 [Validator] Added inline documentation for the PropertyPath utility class 2014-03-30 18:28:58 +02:00
Bernhard Schussek
be7f055237 [Validator] Visitors may now abort the traversal by returning false from beforeTraversal() 2014-03-30 18:28:58 +02:00
Bernhard Schussek
299c2dca10 [Validator] Improved test coverage and prevented duplicate validation of constraints 2014-03-30 18:28:58 +02:00
Bernhard Schussek
186c115894 [Validator] Improved test coverage of NonRecursiveNodeTraverser 2014-03-30 18:28:58 +02:00
Bernhard Schussek
822fe4712f [Validator] Completed inline documentation of the Node classes and the NodeTraverser 2014-03-30 18:28:58 +02:00
Bernhard Schussek
dbce5a2f6a [Validator] Updated outdated doc blocks 2014-03-30 18:28:58 +02:00
Bernhard Schussek
8558377945 [Validator] Added deprecation notes 2014-03-30 18:28:57 +02:00
Bernhard Schussek
e8fa15b27c [Validator] Fixed the new validator API under PHP < 5.3.9 2014-03-30 18:28:57 +02:00
Bernhard Schussek
2936d10aa4 [Validator] Removed unused use statement 2014-03-30 18:28:57 +02:00
Bernhard Schussek
6fc6ecdd8e [Validator] Fixed tests under PHP<5.3.9
The new implementation is disabled on those PHP versions.
2014-03-30 18:28:57 +02:00
Bernhard Schussek
778ec2458b [Validator] Removed helper class Traversal 2014-03-30 18:28:57 +02:00
Bernhard Schussek
76d8c9a1f7 [Validator] Fixed typos 2014-03-30 18:28:57 +02:00
Bernhard Schussek
416137165e [Validator] Removed unused use statements 2014-03-30 18:28:57 +02:00
Bernhard Schussek
aeb68228b1 [Validator] Improved visitor names 2014-03-30 18:28:56 +02:00
Bernhard Schussek
08172bfe7b [Validator] Merged validate(), validateObject() and validateObjects() to simplify usage 2014-03-30 18:28:56 +02:00
Bernhard Schussek
51197f68a3 [Validator] Made traversal of Traversables consistent
If the traversal strategy is IMPLICIT (the default), the validator will now
traverse any object that implements \Traversable and any array
2014-03-30 18:28:56 +02:00
Bernhard Schussek
117b1b9a17 [Validator] Wrapped collections into CollectionNode instances 2014-03-30 18:28:56 +02:00
Bernhard Schussek
94583a9289 [Validator] Changed NodeTraverser to traverse nodes iteratively, not recursively
In this way, the deep method call chains are avoided. Also, it is possible to
avoid the many calls to leaveNode(), which are currently not really needed.
2014-03-30 18:28:56 +02:00
Bernhard Schussek
cf1281feef [Validator] Added "Visitor" suffix to all node visitors 2014-03-30 18:28:56 +02:00
Bernhard Schussek
230f2a72fa [Validator] Fixed exception message 2014-03-30 18:28:56 +02:00
Bernhard Schussek
e057b19964 [Validator] Decoupled ContextRefresher from ExecutionContext 2014-03-30 18:28:56 +02:00
Bernhard Schussek
e440690bb4 [Validator] Renamed validateCollection() to validateObjects() 2014-03-30 18:28:56 +02:00
Bernhard Schussek
df41974f31 [Validator] Changed context manager to context factory
The current context is not stored anymore. Instead, it is passed around the traverser
and the visitors. For this reason, validation can occur in multiple contexts at the
same time.
2014-03-30 18:28:56 +02:00
Bernhard Schussek
26eafa43f7 [Validator] Removed unused use statements 2014-03-30 18:28:56 +02:00
Bernhard Schussek
bc29591935 [Validator] Clearly separated classes supporting the API <2.5/2.5+ 2014-03-30 18:28:55 +02:00
Bernhard Schussek
a3555fbd99 [Validator] Fixed: Objects are not traversed unless they are instances of Traversable 2014-03-30 18:28:55 +02:00
Bernhard Schussek
2c65a28608 [Validator] Completed test coverage and documentation of the Node classes 2014-03-30 18:28:55 +02:00
Bernhard Schussek
9c9e715ca8 [Validator] Completed documentation of GroupManagerInterface 2014-03-30 18:28:55 +02:00
Bernhard Schussek
1e81f3bdc8 [Validator] Finished test coverage and documentation of ExecutionContextManager 2014-03-30 18:28:55 +02:00
Bernhard Schussek
feb3d6f202 [Validator] Tested the validation in a separate context 2014-03-30 18:28:55 +02:00
Bernhard Schussek
718601c6c3 [Validator] Changed validateValue() to validate() in the new API
The validation of values against constraints should be a first-class citizen
in the API. For this reason, validate() now takes a value and a constraint or
a list of constraints. This method should be used for the most basic use
cases.

If users want to annotate objects with constraints (this is optional,
advanced functionality), they can use the more expressive validateObject()
method now. For traversing arrays or Traversables, a new method
validateCollection() is now available in the API.
2014-03-30 18:28:55 +02:00
Bernhard Schussek
ee1adadbfb [Validator] Implemented handling of arrays and Traversables in LegacyExecutionContext::validate() 2014-03-30 18:28:55 +02:00
Bernhard Schussek
09f744b89c [Validator] Implemented BC traversal of traversables through validate() 2014-03-30 18:28:55 +02:00
Bernhard Schussek
297ba4f585 [Validator] Added a note why scalars are passed to cascadeObject() in NodeTraverser 2014-03-30 18:28:55 +02:00
Bernhard Schussek
9b07b0c672 [Validator] Implemented BC validation of arrays through validate() 2014-03-30 18:28:55 +02:00
Bernhard Schussek
405a03b365 [Validator] Updated deprecation notes in GroupSequence 2014-03-30 18:28:55 +02:00
Bernhard Schussek
499b2bb601 [Validator] Completed test coverage of ExecutionContext 2014-03-30 18:28:55 +02:00
Bernhard Schussek
adc1437fab [Validator] Fixed failing tests 2014-03-30 18:28:54 +02:00
Bernhard Schussek
4ea3ff6688 [Validator] Finished inline documentation of ExecutionContext[Interface] 2014-03-30 18:28:54 +02:00
Bernhard Schussek
f6b7288449 [Validator] Removed unused use statement 2014-03-30 18:28:54 +02:00