Commit Graph

156 Commits

Author SHA1 Message Date
Ener-Getick
a46270a61a Don't use reflections when possible 2016-03-05 18:37:04 +01:00
Vladimir Reznichenko
81f81812a5 [2.3] Static Code Analysis for Components 2016-01-12 12:31:34 +01:00
David Badura
b95b5e217f missing "YAML" in the exception message. 2015-09-10 09:43:17 +02:00
Christian Flothmann
3849cd80b9 improve exceptions when parsing malformed files 2015-09-08 22:16:40 +02:00
Kévin Dunglas
efc1c03866 [Validator] Use strict comparisons in loaders 2015-04-02 22:42:16 +02:00
Dariusz Ruminski
7fd6ba06b1 CS fixes 2015-03-02 15:15:25 +01:00
Dariusz Ruminski
5c9835f230 FilesLoader - fix git conflict 2015-02-18 08:07:05 +01:00
Fabien Potencier
5f6d235a69 removed redundant phpdocs 2015-02-11 14:35:55 +01:00
Fabien Potencier
5ce1dc383c minor #12201 [Validator] Fixed: The state of the XML/YAML loaders was changed even if an exception was thrown upon loading (webmozart)
This PR was merged into the 2.3 branch.

Discussion
----------

[Validator] Fixed: The state of the XML/YAML loaders was changed even if an exception was thrown upon loading

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

Commits
-------

85d464a [Validator] Fixed: The state of the XML/YAML loaders was changed even if an exception was thrown upon loading
2015-02-11 14:32:27 +01:00
Hugo Hamon
b83da8f742 Fixes various phpdoc and coding standards. 2015-01-02 09:58:20 +01:00
Graham Campbell
83c15db887 [2.3] CS And DocBlock Fixes 2014-12-22 16:58:09 +01:00
Graham Campbell
443307edc1 Docblock fixes 2014-11-30 13:33:44 +00:00
Bernhard Schussek
85d464a010 [Validator] Fixed: The state of the XML/YAML loaders was changed even if an exception was thrown upon loading 2014-10-16 11:01:14 +02:00
Fabien Potencier
369aebf431 fixed CS 2014-09-22 10:32:35 +02:00
Christian Flothmann
f5bc18d648 return empty metadata collection if none do exist
The PropertyMetadataContainerInterface defines that the method
getPropertyMetadata() has to return an empty collection if no
metadata have been configured for the given property. Though, its
implementation in the ClassMetadata class didn't check for
existence of such metadata. This behavior led to unexpected PHP
notices when validating a property or a property value of a property
without any configured constraints (only affects the new 2.5 API).
Additionally, the getMemberMetadatas() didn't check for existing
array keys as well which has also been fixed.
2014-08-08 11:23:54 +02:00
Fabien Potencier
e96b018805 fixed types in phpdocs 2014-04-16 12:30:19 +02:00
Fabien Potencier
810b9ed107 made {@inheritdoc} annotations consistent across the board 2014-04-16 09:04:20 +02:00
Fabien Potencier
3c9c10f3a0 made phpdoc types consistent with those defined in Hack 2014-04-15 07:41:45 +02:00
florianv
16b726c043 [Validator] Minor fix in XmlLoader 2014-01-24 14:40:35 +01:00
Jakub Zalas
8fd3256248 [Validator] Replaced inexistent interface.
ClassMetadataFactoryInterface was removed in 2.3 and replaced with MetadataFactoryInterface.
2013-11-28 00:06:02 +00:00
Fabien Potencier
88cef41560 Merge branch '2.2' into 2.3
* 2.2:
  Fix some annotates
  [FrameworkBundle] made sure that the debug event dispatcher is used everywhere
  [HttpKernel] remove unneeded strtoupper
  updated the composer install command to reflect changes in Composer

Conflicts:
	src/Symfony/Component/Console/Application.php
	src/Symfony/Component/Console/Command/Command.php
	src/Symfony/Component/Console/Input/InputDefinition.php
	src/Symfony/Component/CssSelector/Node/CombinedSelectorNode.php
	src/Symfony/Component/Form/Form.php
	src/Symfony/Component/HttpKernel/Debug/ErrorHandler.php
	src/Symfony/Component/HttpKernel/DependencyInjection/RegisterListenersPass.php
	src/Symfony/Component/HttpKernel/Tests/DependencyInjection/RegisterListenersPassTest.php
	src/Symfony/Component/Locale/Locale.php
	src/Symfony/Component/Locale/README.md
	src/Symfony/Component/Locale/Stub/DateFormat/FullTransformer.php
2013-09-19 11:45:20 +02:00
bronze1man
de39bd5433 Fix some annotates 2013-09-19 11:36:05 +02:00
Fabien Potencier
b8381cdd62 Merge branch '2.2' into 2.3
* 2.2:
  [Locale] Fixed: StubLocale::setDefault() throws no exception when "en" is passed
  [Yaml] fixed embedded folded string parsing
  [Validator] fixed Boolean handling in XML constraint mappings (closes #5603)

Conflicts:
	src/Symfony/Component/Locale/Stub/StubLocale.php
	src/Symfony/Component/Locale/Tests/Stub/StubLocaleTest.php
2013-08-24 17:26:22 +02:00
Fabien Potencier
33b0a177b5 [Validator] fixed Boolean handling in XML constraint mappings (closes #5603) 2013-08-23 17:55:54 +02:00
Fabien Potencier
11018011dd Merge branch '2.2' into 2.3
* 2.2:
  corrected English grammar (s/does not exists/does not exist)
  [Process] Add more precision to Process::stop timeout
  [Process] Avoid zombie process in case of unit tests failure
  [Process] Fix #8739
  [Process] Add failing test for #8739
  [Process] Fix CS
  Fixed documentation grammar for AuthenticationManagerInterface::authenticate()
  [Validator] fixed the wrong isAbstract() check against the class (fixed #8589)
  [TwigBridge] Prevent code extension to display warning
  Use strstr instead of strpos

Conflicts:
	src/Symfony/Component/Finder/Shell/Command.php
	src/Symfony/Component/Process/Process.php
2013-08-13 22:18:00 +02:00
marcj
18896d5a9e [Validator] fixed the wrong isAbstract() check against the class (fixed #8589) 2013-08-12 23:46:36 +02:00
Fabien Potencier
3911cfa66f Merge branch '2.2' into 2.3
* 2.2:
  [Validator] fixed metadata serialization
  Fixed metadata serialization
2013-08-06 07:59:49 +02:00
Fabien Potencier
5d93815d84 Merge branch '2.1' into 2.2
* 2.1:
  [Validator] fixed metadata serialization
  Fixed metadata serialization
2013-08-06 07:59:38 +02:00
Fabien Potencier
5129d3f5d8 [Validator] fixed metadata serialization 2013-08-06 07:58:11 +02:00
Fabien Potencier
97fbb28f75 Merge branch '2.0' into 2.1
* 2.0:
  Fixed metadata serialization
2013-08-06 07:56:20 +02:00
Bernhard Schussek
6d555bc1a6 Fixed metadata serialization 2013-08-06 07:55:32 +02:00
Fabien Potencier
64535bbcb2 Merge branch '2.2' into 2.3
* 2.2:
  [HttpKernel] added a missing dep for dev
  [Form] fixed wrong call to setTimeZone() (closes #8644)
  Fix issue with \DateTimeZone::UTC / 'UTC' for PHP 5.4
  [Form] Removed the "disabled" attribute from the placeholder option in select fields due to problems with the BlackBerry 10 browser
  [routing] added ability for apache matcher to handle array values
  removed dead code and fixed CS
  [Validator] fixed StaticMethodLoader trying to invoke methods of abstract classes (closes #8589)

Conflicts:
	src/Symfony/Bundle/TwigBundle/TokenParser/RenderTokenParser.php
	src/Symfony/Component/Form/FormConfigBuilder.php
	src/Symfony/Component/HttpKernel/composer.json
	src/Symfony/Component/Validator/Tests/GraphWalkerTest.php
2013-08-02 22:53:38 +02:00
Fabien Potencier
b41cf82651 [Validator] fixed StaticMethodLoader trying to invoke methods of abstract classes (closes #8589) 2013-07-28 20:24:29 +02:00
Fabien Potencier
0586c7eb16 made some optimization when parsing YAML files 2013-05-05 19:11:25 +02:00
dantleech
e655120f05 Enforce sprintf for exceptions 2013-04-11 08:50:46 +02:00
Dariusz Górecki
7c47e34928 [CS Fix] Consistent coding-style of concatenation operator usage 2013-04-02 10:39:57 +01:00
Fabien Potencier
e0385a2c1c [Validator] removed deprecated methods 2013-03-23 11:48:19 +01:00
Jean-François Simon
b6a545711a [Validator] Fixed member (getter/property) metadata readers.
[Validator] added overridden getter metadata test
[Validator] class member reflection build requires object instance
[Validator] fixed error
[Validation] fixed member metadata reflection cache
[Validation] added property metedata test
[Validation] fixed class/member metadata mapping
[Validation] removed var_dump
2013-03-18 15:05:03 +01:00
Gladhon
9b6cd808c7 Update src/Symfony/Component/Validator/Mapping/GetterMetadata.php
Please use the concrete Class Methods to check validations. Its realy unexpected that Validator don't use the normal Object way and can call anything...
2013-02-14 14:33:52 +01:00
Florin Patan
4cbdbcb1f9 [Validator] Add check for existing metadata on property 2013-02-11 12:11:43 +01:00
Christian Eikermann
2061cc03b7 Update src/Symfony/Component/Validator/Mapping/ClassMetadata.php
getValue() is deprecated since version 2.2 and will be removed in 2.3. Use getPropertyValue() instead.

ClassMetadata is still using the deprecated method, changed it to getPropertyValue to prevent a trigger error.
2013-01-14 09:10:09 +01:00
Christophe Coevoet
68257d372f Enhanced the triggering of E_USER_DEPRECATED errors
- Removed useless error handlers around FormEvent as the triggering has
  been fixed in it.
- Enhanced the triggering of deprecation errors for places where the BC
  method provide some user logic needing to be converted to a new way.
- Enhanced the deprecation messages to mention the replacement whenever
  possible.
2013-01-10 09:22:55 +01:00
Florin Patan
c2acc6c2cb Fixed most of the docblocks/unused namespaces 2012-12-19 08:09:49 +01:00
Colin Frei
07316c9aa0 [Validator] catch deprecated methods 2012-12-17 21:38:04 +01:00
Colin Frei
6b105504f4 Merge branch 'master' of github.com:symfony/symfony into deprecationErrors 2012-12-14 23:30:36 +01:00
Martin Hasoň
d6f08809dd [Validator] Added dependency to Config component to loading XML files 2012-12-14 15:33:59 +01:00
Fabien Potencier
fdb11be242 fixed CS 2012-12-11 11:49:22 +01:00
Colin Frei
3241157114 [Validator] Trigger errors for deprecations 2012-12-06 21:23:28 +01:00
Fabien Potencier
ee90986c9f merged branch bschussek/drupal-validator (PR #6096)
This PR was merged into the master branch.

Commits
-------

1858b96 [Form] Adapted FormValidator to latest changes in the Validator
1f752e8 [DoctrineBridge] Adapted UniqueValidator to latest changes in the Validator
efe42cb [Validator] Refactored the GraphWalker into an implementation of the Visitor design pattern.

Discussion
----------

[Validator] Refactored the Validator for use in Drupal

Bug fix: no
Feature addition: no
Backwards compatibility break: yes
Symfony2 tests pass: yes
Fixes the following tickets: -
Todo: -
License of the code: MIT
Documentation PR: TODO

Drupal wants to use the Symfony Validator component in their next version. I was talking to @fago recently about the changes that we'd need to make and implemented these changes in this PR. I don't want to rush this, but the deadline is tight, since Drupal feature freeze is on December 1st and @fago needs at least a couple of days to integrate the Validator into Drupal.

This PR introduces two significant changes:

* Interfaces were created for all classes that constitute the Validator's API. This is were the PR breaks BC, because `ConstraintValidatorInterface::initialize()` is now type hinted against `ExecutionContextInterface` instead of `ExecutionContext`.

* The graph walker was refactored into an implementation of the Visitor pattern. This way, the validator was decoupled from the structure of the metadata (class → properties and getter methods) and makes it possible to implement a different metadata structure, as is required by the Drupal Entity API.

As a consequence of the API change, custom validation code is now much easier to write, because `ValidatorInterface` and `ExecutionContextInterface` share the following set of methods:

```php
interface ValidatorInterface
{
    public function validate($value, $groups = null, $traverse = false, $deep = false);
    public function validateValue($value, $constraints, $groups = null);
    public function getMetadataFor($value);
}

interface ExecutionContextInterface
{
    public function validate($value, $subPath = '', $groups = null, $traverse = false, $deep = false);
    public function validateValue($value, $constraints, $subPath = '', $groups = null);
    public function getMetadataFor($value);
}
```

No more juggling with property paths, no more fiddling with the graph walker. Just call on the execution context what you'd call on the validator and you're done.

There are two controversial things to discuss and decide (cc @fabpot):

* I moved the `@api` tags of all implementations to the respective interfaces. Is this ok?
* I would like to deprecate `ValidatorInterface::getMetadataFactory()` (tagged as `@api`) in favor of the added `ValidatorInterface::getMetadataFor()`, which offers the exact same functionality, but with a different API and better encapsulation, which makes it easier to maintain for us. We can tag `getMetadataFor()` as `@api`, as I don't expect it to change. Can we do this or should we leave the old method in?

I would like to decide the major issues of this PR until **Sunday November 25th** in order to give @fago enough room for his implementation.

Let me hear your thoughts.
2012-11-24 13:18:53 +01:00
Bernhard Schussek
efe42cbb1f [Validator] Refactored the GraphWalker into an implementation of the Visitor design pattern.
With this refactoring comes a decoupling of the validator from the structure of
the underlying metadata. This way it is possible for Drupal to use the validator
for validating their Entity API by using their own metadata layer, which is not
modeled as classes and properties/getter methods.
2012-11-24 13:00:28 +01:00