Skip to content

Commit 4248a31

Browse files
authored
IBX-8534: Changed typehint from abstract Criterion to CriterionInterface (#80)
* IBX-8534: Changed typehint from abstract Criterion to CriterionInterface * Cleaned up baseline * fixed codestyle * Dropped removed isPublished property * added status property * added more concrete ternary operator check * added null check for query::query
1 parent 1485af2 commit 4248a31

File tree

72 files changed

+294
-173
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

72 files changed

+294
-173
lines changed

phpstan-baseline.neon

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -255,11 +255,6 @@ parameters:
255255
count: 1
256256
path: src/lib/CoreFilter/NativeCoreFilter.php
257257

258-
-
259-
message: "#^Method Ibexa\\\\Solr\\\\CoreFilter\\\\NativeCoreFilter\\:\\:getLanguageFilter\\(\\) should return Ibexa\\\\Contracts\\\\Core\\\\Repository\\\\Values\\\\Content\\\\Query\\\\Criterion but returns Ibexa\\\\Contracts\\\\Core\\\\Repository\\\\Values\\\\Content\\\\Query\\\\Criterion\\\\CustomField\\|Ibexa\\\\Contracts\\\\Core\\\\Repository\\\\Values\\\\Content\\\\Query\\\\Criterion\\\\LogicalAnd\\|Ibexa\\\\Contracts\\\\Core\\\\Repository\\\\Values\\\\Content\\\\Query\\\\Criterion\\\\LogicalNot\\|Ibexa\\\\Contracts\\\\Core\\\\Repository\\\\Values\\\\Content\\\\Query\\\\Criterion\\\\LogicalOr\\|false\\.$#"
260-
count: 1
261-
path: src/lib/CoreFilter/NativeCoreFilter.php
262-
263258
-
264259
message: "#^Parameter \\#2 \\$languageCode of method Ibexa\\\\Solr\\\\DocumentMapper\\\\NativeDocumentMapper\\:\\:generateContentDocumentId\\(\\) expects string\\|null, int\\|string given\\.$#"
265260
count: 1
@@ -785,16 +780,6 @@ parameters:
785780
count: 1
786781
path: src/lib/Query/Common/CriterionVisitor/Aggregate.php
787782

788-
-
789-
message: "#^Access to an undefined property Ibexa\\\\Contracts\\\\Core\\\\Repository\\\\Values\\\\Content\\\\Query\\\\Criterion\\:\\:\\$criteria\\.$#"
790-
count: 1
791-
path: src/lib/Query/Common/CriterionVisitor/CompositeCriterion.php
792-
793-
-
794-
message: "#^Cannot call method visit\\(\\) on Ibexa\\\\Contracts\\\\Solr\\\\Query\\\\CriterionVisitor\\|null\\.$#"
795-
count: 1
796-
path: src/lib/Query/Common/CriterionVisitor/CompositeCriterion.php
797-
798783
-
799784
message: "#^Parameter \\#2 \\$array of function array_map expects array, array\\<bool\\|float\\|int\\|string\\>\\|bool\\|float\\|int\\|string given\\.$#"
800785
count: 1
@@ -1080,11 +1065,6 @@ parameters:
10801065
count: 1
10811066
path: src/lib/Query/Content/CriterionVisitor/ParentLocationIdIn.php
10821067

1083-
-
1084-
message: "#^Instanceof between Ibexa\\\\Contracts\\\\Core\\\\Repository\\\\Values\\\\Content\\\\Query\\\\Criterion and Ibexa\\\\Core\\\\Repository\\\\Values\\\\Content\\\\Query\\\\Criterion\\\\PermissionSubtree will always evaluate to false\\.$#"
1085-
count: 1
1086-
path: src/lib/Query/Content/CriterionVisitor/SubtreeIn.php
1087-
10881068
-
10891069
message: "#^Parameter \\#2 \\$array of function array_map expects array, array\\<bool\\|float\\|int\\|string\\>\\|bool\\|float\\|int\\|string given\\.$#"
10901070
count: 1

src/contracts/Query/CriterionVisitor.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
use Ibexa\Contracts\Core\Repository\Values\Content\Query\Criterion;
1111
use Ibexa\Contracts\Core\Repository\Values\Content\Query\Criterion\Operator;
12+
use Ibexa\Contracts\Core\Repository\Values\Content\Query\CriterionInterface;
1213

1314
/**
1415
* Visits the criterion tree into a Solr query.
@@ -20,16 +21,14 @@ abstract class CriterionVisitor
2021
*
2122
* @return bool
2223
*/
23-
abstract public function canVisit(Criterion $criterion);
24+
abstract public function canVisit(CriterionInterface $criterion);
2425

2526
/**
2627
* Map field value to a proper Solr representation.
2728
*
28-
* @param CriterionVisitor $subVisitor
29-
*
3029
* @return string
3130
*/
32-
abstract public function visit(Criterion $criterion, self $subVisitor = null);
31+
abstract public function visit(CriterionInterface $criterion, self $subVisitor = null);
3332

3433
/**
3534
* Get Solr range.

src/lib/CoreFilter/NativeCoreFilter.php

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,14 @@
88
namespace Ibexa\Solr\CoreFilter;
99

1010
use Ibexa\Contracts\Core\Repository\Values\Content\Query;
11-
use Ibexa\Contracts\Core\Repository\Values\Content\Query\Criterion;
1211
use Ibexa\Contracts\Core\Repository\Values\Content\Query\Criterion\CustomField;
1312
use Ibexa\Contracts\Core\Repository\Values\Content\Query\Criterion\LogicalAnd;
1413
use Ibexa\Contracts\Core\Repository\Values\Content\Query\Criterion\LogicalNot;
1514
use Ibexa\Contracts\Core\Repository\Values\Content\Query\Criterion\LogicalOr;
1615
use Ibexa\Contracts\Core\Repository\Values\Content\Query\Criterion\Operator;
1716
use Ibexa\Solr\CoreFilter;
1817
use Ibexa\Solr\Gateway\EndpointResolver;
18+
use RuntimeException;
1919

2020
/**
2121
* Native core filter handles:.
@@ -132,7 +132,7 @@ private function getCoreCriterion(
132132
array $languageCodes,
133133
bool $useAlwaysAvailable,
134134
bool $excludeTranslationsFromAlwaysAvailable = true
135-
): Criterion {
135+
): Query\CriterionInterface {
136136
// Handle languages if given
137137
if (!empty($languageCodes)) {
138138
// Get condition for prioritized languages fallback
@@ -164,10 +164,8 @@ private function getCoreCriterion(
164164
* Returns criteria for prioritized languages fallback.
165165
*
166166
* @param string[] $languageCodes
167-
*
168-
* @return \Ibexa\Contracts\Core\Repository\Values\Content\Query\Criterion
169167
*/
170-
private function getLanguageFilter(array $languageCodes)
168+
private function getLanguageFilter(array $languageCodes): Query\CriterionInterface
171169
{
172170
$languageFilters = [];
173171

@@ -209,6 +207,10 @@ private function getLanguageFilter(array $languageCodes)
209207
return new LogicalAnd($languageFilters);
210208
}
211209

210+
if (empty($languageFilters)) {
211+
throw new RuntimeException('$languageFilters is empty');
212+
}
213+
212214
return reset($languageFilters);
213215
}
214216

@@ -220,7 +222,7 @@ private function getLanguageFilter(array $languageCodes)
220222
private function getAlwaysAvailableFilter(
221223
array $languageCodes,
222224
bool $excludeTranslationsFromAlwaysAvailable = true
223-
): Criterion {
225+
): Query\CriterionInterface {
224226
$excludeOnField = $excludeTranslationsFromAlwaysAvailable
225227
// Exclude all translations by given languages
226228
? self::FIELD_LANGUAGES

src/lib/Handler.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ public function findContent(Query $query, array $languageFilter = [])
173173
*
174174
* @return \Ibexa\Contracts\Core\Persistence\Content
175175
*/
176-
public function findSingle(Criterion $filter, array $languageFilter = [])
176+
public function findSingle(Query\CriterionInterface $filter, array $languageFilter = [])
177177
{
178178
$query = new Query();
179179
$query->filter = $filter;

src/lib/Query/Common/CriterionVisitor/Aggregate.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
use Ibexa\Contracts\Core\Repository\Exceptions\NotImplementedException;
1111
use Ibexa\Contracts\Core\Repository\Values\Content\Query\Criterion;
12+
use Ibexa\Contracts\Core\Repository\Values\Content\Query\CriterionInterface;
1213
use Ibexa\Contracts\Solr\Query\CriterionVisitor;
1314

1415
/**
@@ -48,7 +49,7 @@ public function addVisitor(CriterionVisitor $visitor)
4849
*
4950
* @return bool
5051
*/
51-
public function canVisit(Criterion $criterion)
52+
public function canVisit(CriterionInterface $criterion)
5253
{
5354
return true;
5455
}
@@ -62,14 +63,14 @@ public function canVisit(Criterion $criterion)
6263
*
6364
* @return string
6465
*/
65-
public function visit(Criterion $criterion, CriterionVisitor $subVisitor = null)
66+
public function visit(CriterionInterface $criterion, CriterionVisitor $subVisitor = null)
6667
{
6768
foreach ($this->visitors as $visitor) {
6869
if ($visitor->canVisit($criterion)) {
6970
return $visitor->visit($criterion, $this);
7071
}
7172
}
7273

73-
throw new NotImplementedException('No visitor available for: ' . \get_class($criterion) . ' with operator ' . $criterion->operator);
74+
throw new NotImplementedException('No visitor available for: ' . \get_class($criterion));
7475
}
7576
}

src/lib/Query/Common/CriterionVisitor/BaseIsContainer.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
use Ibexa\Contracts\Core\Repository\Values\Content\Query\Criterion;
1212
use Ibexa\Contracts\Core\Repository\Values\Content\Query\Criterion\Operator;
13+
use Ibexa\Contracts\Core\Repository\Values\Content\Query\CriterionInterface;
1314
use Ibexa\Contracts\Solr\Query\CriterionVisitor;
1415

1516
/**
@@ -19,12 +20,15 @@ abstract class BaseIsContainer extends CriterionVisitor
1920
{
2021
abstract protected function getTargetField(): string;
2122

22-
public function canVisit(Criterion $criterion): bool
23+
public function canVisit(CriterionInterface $criterion): bool
2324
{
2425
return $criterion instanceof Criterion\IsContainer && $criterion->operator === Operator::EQ;
2526
}
2627

27-
public function visit(Criterion $criterion, CriterionVisitor $subVisitor = null): string
28+
/**
29+
* @param \Ibexa\Contracts\Core\Repository\Values\Content\Query\Criterion\IsContainer $criterion
30+
*/
31+
public function visit(CriterionInterface $criterion, CriterionVisitor $subVisitor = null): string
2832
{
2933
$value = $criterion->value;
3034

src/lib/Query/Common/CriterionVisitor/CompositeCriterion.php

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,21 @@
99
namespace Ibexa\Solr\Query\Common\CriterionVisitor;
1010

1111
use Ibexa\Contracts\Core\Repository\Values\Content\Query\Criterion;
12+
use Ibexa\Contracts\Core\Repository\Values\Content\Query\CriterionInterface;
1213
use Ibexa\Contracts\Solr\Query\CriterionVisitor;
1314

1415
final class CompositeCriterion extends CriterionVisitor
1516
{
16-
public function canVisit(Criterion $criterion): bool
17+
public function canVisit(CriterionInterface $criterion): bool
1718
{
1819
return $criterion instanceof Criterion\CompositeCriterion;
1920
}
2021

21-
public function visit(Criterion $criterion, ?CriterionVisitor $subVisitor = null): string
22+
/**
23+
* @param \Ibexa\Contracts\Core\Repository\Values\Content\Query\Criterion\CompositeCriterion $criterion
24+
*/
25+
public function visit(CriterionInterface $criterion, ?CriterionVisitor $subVisitor = null): string
2226
{
23-
return $subVisitor->visit($criterion->criteria, $subVisitor);
27+
return $subVisitor?->visit($criterion->criteria, $subVisitor) ?? '';
2428
}
2529
}

src/lib/Query/Common/CriterionVisitor/ContentIdIn.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
use Ibexa\Contracts\Core\Repository\Values\Content\Query\Criterion;
1111
use Ibexa\Contracts\Core\Repository\Values\Content\Query\Criterion\Operator;
12+
use Ibexa\Contracts\Core\Repository\Values\Content\Query\CriterionInterface;
1213
use Ibexa\Contracts\Solr\Query\CriterionVisitor;
1314

1415
/**
@@ -21,7 +22,7 @@ class ContentIdIn extends CriterionVisitor
2122
*
2223
* @return bool
2324
*/
24-
public function canVisit(Criterion $criterion)
25+
public function canVisit(CriterionInterface $criterion)
2526
{
2627
return
2728
$criterion instanceof Criterion\ContentId &&
@@ -34,11 +35,12 @@ public function canVisit(Criterion $criterion)
3435
/**
3536
* Map field value to a proper Solr representation.
3637
*
38+
* @param \Ibexa\Contracts\Core\Repository\Values\Content\Query\Criterion\ContentId $criterion
3739
* @param \Ibexa\Contracts\Solr\Query\CriterionVisitor $subVisitor
3840
*
3941
* @return string
4042
*/
41-
public function visit(Criterion $criterion, CriterionVisitor $subVisitor = null)
43+
public function visit(CriterionInterface $criterion, CriterionVisitor $subVisitor = null)
4244
{
4345
return '(' .
4446
implode(

src/lib/Query/Common/CriterionVisitor/ContentTypeGroupIdIn.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
use Ibexa\Contracts\Core\Repository\Values\Content\Query\Criterion;
1111
use Ibexa\Contracts\Core\Repository\Values\Content\Query\Criterion\Operator;
12+
use Ibexa\Contracts\Core\Repository\Values\Content\Query\CriterionInterface;
1213
use Ibexa\Contracts\Solr\Query\CriterionVisitor;
1314

1415
/**
@@ -21,7 +22,7 @@ class ContentTypeGroupIdIn extends CriterionVisitor
2122
*
2223
* @return bool
2324
*/
24-
public function canVisit(Criterion $criterion)
25+
public function canVisit(CriterionInterface $criterion)
2526
{
2627
return
2728
$criterion instanceof Criterion\ContentTypeGroupId &&
@@ -34,11 +35,12 @@ public function canVisit(Criterion $criterion)
3435
/**
3536
* Map field value to a proper Solr representation.
3637
*
38+
* @param \Ibexa\Contracts\Core\Repository\Values\Content\Query\Criterion\ContentTypeGroupId $criterion
3739
* @param \Ibexa\Contracts\Solr\Query\CriterionVisitor $subVisitor
3840
*
3941
* @return string
4042
*/
41-
public function visit(Criterion $criterion, CriterionVisitor $subVisitor = null)
43+
public function visit(CriterionInterface $criterion, CriterionVisitor $subVisitor = null)
4244
{
4345
return '(' .
4446
implode(

src/lib/Query/Common/CriterionVisitor/ContentTypeIdIn.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
use Ibexa\Contracts\Core\Repository\Values\Content\Query\Criterion;
1111
use Ibexa\Contracts\Core\Repository\Values\Content\Query\Criterion\Operator;
12+
use Ibexa\Contracts\Core\Repository\Values\Content\Query\CriterionInterface;
1213
use Ibexa\Contracts\Solr\Query\CriterionVisitor;
1314

1415
/**
@@ -21,7 +22,7 @@ class ContentTypeIdIn extends CriterionVisitor
2122
*
2223
* @return bool
2324
*/
24-
public function canVisit(Criterion $criterion)
25+
public function canVisit(CriterionInterface $criterion)
2526
{
2627
return
2728
$criterion instanceof Criterion\ContentTypeId &&
@@ -34,11 +35,12 @@ public function canVisit(Criterion $criterion)
3435
/**
3536
* Map field value to a proper Solr representation.
3637
*
38+
* @param \Ibexa\Contracts\Core\Repository\Values\Content\Query\Criterion\ContentTypeId $criterion
3739
* @param \Ibexa\Contracts\Solr\Query\CriterionVisitor $subVisitor
3840
*
3941
* @return string
4042
*/
41-
public function visit(Criterion $criterion, CriterionVisitor $subVisitor = null)
43+
public function visit(CriterionInterface $criterion, CriterionVisitor $subVisitor = null)
4244
{
4345
return '(' .
4446
implode(

0 commit comments

Comments
 (0)