summaryrefslogtreecommitdiff
path: root/server/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Factory.php
diff options
context:
space:
mode:
authorArnaudVOTA <arnaud.vota@gmail.com>2016-01-27 11:04:02 +0100
committerArnaudVOTA <arnaud.vota@gmail.com>2016-01-27 11:04:02 +0100
commitb10e4679e0f0316bfe24098a84db040dcfc8d38f (patch)
tree3bdc7cb4b721a870eb9bab9696326071b1388ce6 /server/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Factory.php
parent5466ce78f00038e742ef2a108c755f57ede451f5 (diff)
parent81d5c2a6464771c9a180d0214706a2f65f0b1d18 (diff)
Merge remote-tracking branch 'refs/remotes/origin/master' into vota_overlay
Diffstat (limited to 'server/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Factory.php')
-rw-r--r--server/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Factory.php63
1 files changed, 39 insertions, 24 deletions
diff --git a/server/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Factory.php b/server/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Factory.php
index a4570f6..8cd25c1 100644
--- a/server/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Factory.php
+++ b/server/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Factory.php
@@ -19,11 +19,28 @@ use JsonSchema\Validator;
class Factory
{
/**
- * @var UriRetriever
+ * @var UriRetriever $uriRetriever
*/
protected $uriRetriever;
/**
+ * @var array $constraintMap
+ */
+ protected $constraintMap = array(
+ 'array' => 'JsonSchema\Constraints\CollectionConstraint',
+ 'collection' => 'JsonSchema\Constraints\CollectionConstraint',
+ 'object' => 'JsonSchema\Constraints\ObjectConstraint',
+ 'type' => 'JsonSchema\Constraints\TypeConstraint',
+ 'undefined' => 'JsonSchema\Constraints\UndefinedConstraint',
+ 'string' => 'JsonSchema\Constraints\StringConstraint',
+ 'number' => 'JsonSchema\Constraints\NumberConstraint',
+ 'enum' => 'JsonSchema\Constraints\EnumConstraint',
+ 'format' => 'JsonSchema\Constraints\FormatConstraint',
+ 'schema' => 'JsonSchema\Constraints\SchemaConstraint',
+ 'validator' => 'JsonSchema\Validator',
+ );
+
+ /**
* @param UriRetriever $uriRetriever
*/
public function __construct(UriRetriever $uriRetriever = null)
@@ -44,6 +61,25 @@ class Factory
}
/**
+ * @param string $name
+ * @param string $class
+ * @return Factory
+ */
+ public function setConstraintClass($name, $class)
+ {
+ // Ensure class exists
+ if (!class_exists($class)) {
+ throw new InvalidArgumentException('Unknown constraint ' . $name);
+ }
+ // Ensure class is appropriate
+ if (!in_array('JsonSchema\Constraints\ConstraintInterface', class_implements($class))) {
+ throw new InvalidArgumentException('Invalid class ' . $name);
+ }
+ $this->constraintMap[$name] = $class;
+ return $this;
+ }
+
+ /**
* Create a constraint instance for the given constraint name.
*
* @param string $constraintName
@@ -52,30 +88,9 @@ class Factory
*/
public function createInstanceFor($constraintName)
{
- switch ($constraintName) {
- case 'array':
- case 'collection':
- return new CollectionConstraint(Constraint::CHECK_MODE_NORMAL, $this->uriRetriever, $this);
- case 'object':
- return new ObjectConstraint(Constraint::CHECK_MODE_NORMAL, $this->uriRetriever, $this);
- case 'type':
- return new TypeConstraint(Constraint::CHECK_MODE_NORMAL, $this->uriRetriever, $this);
- case 'undefined':
- return new UndefinedConstraint(Constraint::CHECK_MODE_NORMAL, $this->uriRetriever, $this);
- case 'string':
- return new StringConstraint(Constraint::CHECK_MODE_NORMAL, $this->uriRetriever, $this);
- case 'number':
- return new NumberConstraint(Constraint::CHECK_MODE_NORMAL, $this->uriRetriever, $this);
- case 'enum':
- return new EnumConstraint(Constraint::CHECK_MODE_NORMAL, $this->uriRetriever, $this);
- case 'format':
- return new FormatConstraint(Constraint::CHECK_MODE_NORMAL, $this->uriRetriever, $this);
- case 'schema':
- return new SchemaConstraint(Constraint::CHECK_MODE_NORMAL, $this->uriRetriever, $this);
- case 'validator':
- return new Validator(Constraint::CHECK_MODE_NORMAL, $this->uriRetriever, $this);
+ if (array_key_exists($constraintName, $this->constraintMap)) {
+ return new $this->constraintMap[$constraintName](Constraint::CHECK_MODE_NORMAL, $this->uriRetriever, $this);
}
-
throw new InvalidArgumentException('Unknown constraint ' . $constraintName);
}
}