Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
fix validator class metadata warning
  • Loading branch information
rande authored and fabpot committed Feb 2, 2011
1 parent de401fd commit e6dc155
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 6 deletions.
Expand Up @@ -81,14 +81,17 @@ protected function guess($class, $property, \Closure $guessForConstraint)
{
$guesses = array();
$classMetadata = $this->metadataFactory->getClassMetadata($class);
$memberMetadatas = $classMetadata->getMemberMetadatas($property);

foreach ($memberMetadatas as $memberMetadata) {
$constraints = $memberMetadata->getConstraints();
if ($classMetadata->hasMemberMetadatas($property)) {
$memberMetadatas = $classMetadata->getMemberMetadatas($property);

foreach ($constraints as $constraint) {
if ($guess = $guessForConstraint($constraint)) {
$guesses[] = $guess;
foreach ($memberMetadatas as $memberMetadata) {
$constraints = $memberMetadata->getConstraints();

foreach ($constraints as $constraint) {
if ($guess = $guessForConstraint($constraint)) {
$guesses[] = $guess;
}
}
}
}
Expand Down
12 changes: 12 additions & 0 deletions src/Symfony/Component/Validator/Mapping/ClassMetadata.php
Expand Up @@ -207,6 +207,18 @@ protected function addMemberMetadata(MemberMetadata $metadata)
$this->members[$property][] = $metadata;
}

/**
* Returns true if metadatas of members is present for the given property.
*
* @param string $property The name of the property
*
* @return Boolean
*/
public function hasMemberMetadatas($property)
{
return array_key_exists($property, $this->members);
}

/**
* Returns all metadatas of members describing the given property
*
Expand Down
Expand Up @@ -109,6 +109,14 @@ public function testMergeConstraintsMergesMemberConstraints()
$this->assertEquals($constraints, $members[0]->getConstraints());
}

public function testMemberMetadatas()
{
$this->metadata->addPropertyConstraint('firstName', new ConstraintA());

$this->assertTrue($this->metadata->hasMemberMetadatas('firstName'));
$this->assertFalse($this->metadata->hasMemberMetadatas('non_existant_field'));
}

public function testMergeConstraintsKeepsPrivateMembersSeperate()
{
$parent = new ClassMetadata(self::PARENTCLASS);
Expand Down

0 comments on commit e6dc155

Please sign in to comment.