diff --git a/core/lib/Drupal/Core/CoreBundle.php b/core/lib/Drupal/Core/CoreBundle.php index 5a07c55..2eaabf2 100644 --- a/core/lib/Drupal/Core/CoreBundle.php +++ b/core/lib/Drupal/Core/CoreBundle.php @@ -54,6 +54,8 @@ public function build(ContainerBuilder $container) { ->setFactoryMethod('getConnection') ->addArgument('slave'); $container->register('typed_data', 'Drupal\Core\TypedData\TypedDataManager'); + $container->register('constraint', 'Drupal\Core\Validation\Constraint\ConstraintManager'); + // Add the user's storage for temporary, non-cache data. $container->register('lock', 'Drupal\Core\Lock\DatabaseLockBackend'); $container->register('user.tempstore', 'Drupal\user\TempStoreFactory') diff --git a/core/lib/Drupal/Core/Validation/Constraint/ConstraintBundle.php b/core/lib/Drupal/Core/Validation/Constraint/ConstraintBundle.php new file mode 100644 index 0000000..ddd04a1 --- /dev/null +++ b/core/lib/Drupal/Core/Validation/Constraint/ConstraintBundle.php @@ -0,0 +1,25 @@ +register('plugin.manager.constraint', 'Drupal\Core\Validation\Constraint\ConstraintManager'); + } +} diff --git a/core/lib/Drupal/Core/Validation/Constraint/ConstraintFactory.php b/core/lib/Drupal/Core/Validation/Constraint/ConstraintFactory.php new file mode 100644 index 0000000..ee7bdee --- /dev/null +++ b/core/lib/Drupal/Core/Validation/Constraint/ConstraintFactory.php @@ -0,0 +1,34 @@ +discovery->getDefinition($plugin_id); + $plugin_class = $definition['class']; + return new $plugin_class(); + } +} diff --git a/core/lib/Drupal/Core/Validation/Constraint/ConstraintInterface.php b/core/lib/Drupal/Core/Validation/Constraint/ConstraintInterface.php new file mode 100644 index 0000000..5a793bb --- /dev/null +++ b/core/lib/Drupal/Core/Validation/Constraint/ConstraintInterface.php @@ -0,0 +1,26 @@ +discovery = new AnnotatedClassDiscovery('Validation', 'Constraint'); + $this->factory = new ConstraintFactory($this->discovery); + } + + /** + * Implements Drupal\Component\Plugin\PluginManagerInterface::createInstance(). + * + * @param string $plugin_id + * The id of a plugin, i.e. the data type. + * + * @return Drupal\Core\TypedData\TypedDataInterface + */ + public function createInstance($plugin_id, array $configuration = array()) { + return $this->factory->createInstance($plugin_id, $configuration); + } + +} diff --git a/core/lib/Drupal/Core/Validation/Constraint/test.php b/core/lib/Drupal/Core/Validation/Constraint/test.php new file mode 100644 index 0000000..9993787 --- /dev/null +++ b/core/lib/Drupal/Core/Validation/Constraint/test.php @@ -0,0 +1,14 @@ +get('constraint'); +dpm($x); +$y = $x->createInstance('notnull', array()); +dpm($y); +dpm($y->validate(1), 'validate 1'); +dpm($y->validate(0), 'validate 0'); +dpm($y->validate(NULL), 'validate NULL'); + +} catch (\Exception $e) { + dpm( $e, 'ooops'); +} diff --git a/core/lib/Drupal/Core/Validation/Validator/ValidatorInterface.php b/core/lib/Drupal/Core/Validation/Validator/ValidatorInterface.php new file mode 100644 index 0000000..c3ef05f --- /dev/null +++ b/core/lib/Drupal/Core/Validation/Validator/ValidatorInterface.php @@ -0,0 +1,23 @@ + 'ValidationConstraintTest', + 'description' => "Test constraint.", + 'group' => 'Validation', + ); + } + + public function setUp() { + parent::setUp(); + } + + /** + * Tests generating a UUID. + */ + public function testNotNullConstraint() { + $constraint = drupal_container()->get('constraint')->createInstance('notnull', array()); + $this->assertTrue($constraint->validate(1)); + $this->assertTrue($constraint->validate(0)); + $this->assertFalse($constraint->validate(NULL)); + } +}