/** * @test */ public function applyUnionWorks() { $index1 = new \TYPO3\Flow\Aop\Builder\ClassNameIndex(); $index1->setClassNames(array('\\Foo\\Bar', '\\Foo\\Baz')); $index2 = new \TYPO3\Flow\Aop\Builder\ClassNameIndex(); $index2->setClassNames(array('\\Foo\\Baz', '\\Foo\\Blubb')); $index1->applyUnion($index2); $index1->sort(); $this->assertEquals(array('\\Foo\\Bar', '\\Foo\\Baz', '\\Foo\\Blubb'), $index1->getClassNames()); }
/** * This method is used to optimize the matching process. * * @param \TYPO3\Flow\Aop\Builder\ClassNameIndex $classNameIndex * @return \TYPO3\Flow\Aop\Builder\ClassNameIndex */ public function reduceTargetClassNames(\TYPO3\Flow\Aop\Builder\ClassNameIndex $classNameIndex) { if ($this->filters === array()) { $this->buildPointcutFilters(); } $result = new \TYPO3\Flow\Aop\Builder\ClassNameIndex(); foreach ($this->filters as $resources) { /** @var $filterForResource \TYPO3\Flow\Aop\Pointcut\PointcutFilterInterface */ foreach ($resources as $filterForResource) { $result->applyUnion($filterForResource->reduceTargetClassNames($classNameIndex)); } } return $result; }