From 962b0fcd2aef7725c4c6f8f1a1d8f38bb6eba66e Mon Sep 17 00:00:00 2001 From: Slawomir Dolzycki-Uchto Date: Thu, 26 Jan 2023 16:29:45 +0100 Subject: [PATCH] IBX-4918: Moved Specification abstraction from AdminUi to Core (#684) --- .../Specification/AbstractSpecification.php | 41 +++---------------- src/lib/Specification/AndSpecification.php | 26 ++++-------- src/lib/Specification/NotSpecification.php | 23 ++++------- src/lib/Specification/OrSpecification.php | 26 ++++-------- .../Specification/SpecificationInterface.php | 32 +++------------ 5 files changed, 39 insertions(+), 109 deletions(-) diff --git a/src/lib/Specification/AbstractSpecification.php b/src/lib/Specification/AbstractSpecification.php index 389974cf1a..a796725a29 100644 --- a/src/lib/Specification/AbstractSpecification.php +++ b/src/lib/Specification/AbstractSpecification.php @@ -8,42 +8,13 @@ namespace Ibexa\AdminUi\Specification; -abstract class AbstractSpecification implements SpecificationInterface -{ - /** - * @param $item - * - * @return bool - */ - abstract public function isSatisfiedBy($item): bool; - - /** - * @param SpecificationInterface $other - * - * @return SpecificationInterface - */ - public function and(SpecificationInterface $other): SpecificationInterface - { - return new AndSpecification($this, $other); - } - - /** - * @param SpecificationInterface $other - * - * @return SpecificationInterface - */ - public function or(SpecificationInterface $other): SpecificationInterface - { - return new OrSpecification($this, $other); - } +use Ibexa\Contracts\Core\Specification\AbstractSpecification as BaseAbstractSpecification; - /** - * @return SpecificationInterface - */ - public function not(): SpecificationInterface - { - return new NotSpecification($this); - } +/** + * @deprecated 4.4.0 Use \Ibexa\Contracts\Core\Specification\AbstractSpecification + */ +abstract class AbstractSpecification extends BaseAbstractSpecification +{ } class_alias(AbstractSpecification::class, 'EzSystems\EzPlatformAdminUi\Specification\AbstractSpecification'); diff --git a/src/lib/Specification/AndSpecification.php b/src/lib/Specification/AndSpecification.php index 65d8d355db..f44661ef8b 100644 --- a/src/lib/Specification/AndSpecification.php +++ b/src/lib/Specification/AndSpecification.php @@ -8,32 +8,24 @@ namespace Ibexa\AdminUi\Specification; +use Ibexa\Contracts\Core\Specification\AndSpecification as BaseAndSpecification; +use Ibexa\Contracts\Core\Specification\SpecificationInterface; + +/** + * @deprecated 4.4.0 Use \Ibexa\Contracts\Core\Specification\AndSpecification + */ class AndSpecification extends AbstractSpecification { - /** @var SpecificationInterface */ - private $one; - - /** @var SpecificationInterface */ - private $two; + private SpecificationInterface $baseSpecification; - /** - * @param SpecificationInterface $one - * @param SpecificationInterface $two - */ public function __construct(SpecificationInterface $one, SpecificationInterface $two) { - $this->one = $one; - $this->two = $two; + $this->baseSpecification = new BaseAndSpecification($one, $two); } - /** - * @param $item - * - * @return bool - */ public function isSatisfiedBy($item): bool { - return $this->one->isSatisfiedBy($item) && $this->two->isSatisfiedBy($item); + return $this->baseSpecification->isSatisfiedBy($item); } } diff --git a/src/lib/Specification/NotSpecification.php b/src/lib/Specification/NotSpecification.php index 2bdcdd51ec..56f49a4008 100644 --- a/src/lib/Specification/NotSpecification.php +++ b/src/lib/Specification/NotSpecification.php @@ -8,29 +8,24 @@ namespace Ibexa\AdminUi\Specification; +use Ibexa\Contracts\Core\Specification\NotSpecification as BaseNotSpecification; +use Ibexa\Contracts\Core\Specification\SpecificationInterface; + +/** + * @deprecated 4.4.0 Use \Ibexa\Contracts\Core\Specification\NotSpecification + */ class NotSpecification extends AbstractSpecification { - /** - * @var SpecificationInterface - */ - private $specification; + private SpecificationInterface $baseSpecification; - /** - * @param SpecificationInterface $specification - */ public function __construct(SpecificationInterface $specification) { - $this->specification = $specification; + $this->baseSpecification = new BaseNotSpecification($specification); } - /** - * @param $item - * - * @return bool - */ public function isSatisfiedBy($item): bool { - return !$this->specification->isSatisfiedBy($item); + return $this->baseSpecification->isSatisfiedBy($item); } } diff --git a/src/lib/Specification/OrSpecification.php b/src/lib/Specification/OrSpecification.php index af1e057f45..1962f89819 100644 --- a/src/lib/Specification/OrSpecification.php +++ b/src/lib/Specification/OrSpecification.php @@ -8,32 +8,24 @@ namespace Ibexa\AdminUi\Specification; +use Ibexa\Contracts\Core\Specification\OrSpecification as BaseOrSpecification; +use Ibexa\Contracts\Core\Specification\SpecificationInterface; + +/** + * @deprecated 4.4.0 Use \Ibexa\Contracts\Core\Specification\OrSpecification + */ class OrSpecification extends AbstractSpecification { - /** @var SpecificationInterface */ - private $one; - - /** @var SpecificationInterface */ - private $two; + private SpecificationInterface $baseSpecification; - /** - * @param SpecificationInterface $one - * @param SpecificationInterface $two - */ public function __construct(SpecificationInterface $one, SpecificationInterface $two) { - $this->one = $one; - $this->two = $two; + $this->baseSpecification = new BaseOrSpecification($one, $two); } - /** - * @param $item - * - * @return bool - */ public function isSatisfiedBy($item): bool { - return $this->one->isSatisfiedBy($item) || $this->two->isSatisfiedBy($item); + return $this->baseSpecification->isSatisfiedBy($item); } } diff --git a/src/lib/Specification/SpecificationInterface.php b/src/lib/Specification/SpecificationInterface.php index ebb0974ba1..5a2a901e62 100644 --- a/src/lib/Specification/SpecificationInterface.php +++ b/src/lib/Specification/SpecificationInterface.php @@ -8,33 +8,13 @@ namespace Ibexa\AdminUi\Specification; -interface SpecificationInterface -{ - /** - * @param $item - * - * @return bool - */ - public function isSatisfiedBy($item): bool; - - /** - * @param SpecificationInterface $other - * - * @return SpecificationInterface - */ - public function and(SpecificationInterface $other): SpecificationInterface; - - /** - * @param SpecificationInterface $other - * - * @return SpecificationInterface - */ - public function or(SpecificationInterface $other): SpecificationInterface; +use Ibexa\Contracts\Core\Specification\SpecificationInterface as BaseSpecificationInterface; - /** - * @return SpecificationInterface - */ - public function not(): SpecificationInterface; +/** + * @deprecated 4.4.0 Use \Ibexa\Contracts\Core\Specification\SpecificationInterface + */ +interface SpecificationInterface extends BaseSpecificationInterface +{ } class_alias(SpecificationInterface::class, 'EzSystems\EzPlatformAdminUi\Specification\SpecificationInterface');