Code cleanup

- updated deprecated calls
- cleaned up PHPDoc comments
This commit is contained in:
cevou 2013-03-02 12:23:44 +01:00
parent dea32f9b56
commit cbe6071969
49 changed files with 199 additions and 103 deletions

View file

@ -10,6 +10,9 @@ use FOQ\ElasticaBundle\Logger\ElasticaLogger;
*/
class Client extends Elastica_Client
{
/**
* @var ElasticaLogger
*/
protected $logger;
public function setLogger(ElasticaLogger $logger)

View file

@ -8,6 +8,10 @@ use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Output\Output;
use FOQ\ElasticaBundle\IndexManager;
use FOQ\ElasticaBundle\Provider\ProviderRegistry;
use FOQ\ElasticaBundle\Resetter;
use FOQ\ElasticaBundle\Provider\ProviderInterface;
/**
* Populate the search index
@ -15,17 +19,17 @@ use Symfony\Component\Console\Output\Output;
class PopulateCommand extends ContainerAwareCommand
{
/**
* @var FOQ\ElasticaBundle\IndexManager
* @var IndexManager
*/
private $indexManager;
/**
* @var FOQ\ElasticaBundle\Provider\ProviderRegistry
* @var ProviderRegistry
*/
private $providerRegistry;
/**
* @var FOQ\ElasticaBundle\Resetter
* @var Resetter
*/
private $resetter;
@ -95,6 +99,7 @@ class PopulateCommand extends ContainerAwareCommand
$this->resetter->resetIndex($index);
}
/** @var $providers ProviderInterface[] */
$providers = $this->providerRegistry->getIndexProviders($index);
foreach ($providers as $type => $provider) {

View file

@ -41,6 +41,7 @@ class SearchCommand extends ContainerAwareCommand
protected function execute(InputInterface $input, OutputInterface $output)
{
$indexName = $input->getOption('index');
/** @var $index \Elastica_Index */
$index = $this->getContainer()->get('foq_elastica.index_manager')->getIndex($indexName ? $indexName : null);
$type = $index->getType($input->getArgument('type'));
$query = Elastica_Query::create($input->getArgument('query'));

View file

@ -3,7 +3,6 @@
namespace FOQ\ElasticaBundle\DependencyInjection\Compiler;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Reference;
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
class RegisterProvidersPass implements CompilerPassInterface

View file

@ -4,7 +4,6 @@ namespace FOQ\ElasticaBundle\DependencyInjection\Compiler;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use Symfony\Component\DependencyInjection\DefinitionDecorator;
use Symfony\Component\DependencyInjection\Reference;
use InvalidArgumentException;

View file

@ -18,7 +18,7 @@ class Configuration
/**
* Generates the configuration tree.
*
* @return \Symfony\Component\DependencyInjection\Configuration\NodeInterface
* @return \Symfony\Component\Config\Definition\NodeInterface
*/
public function getConfigTree()
{
@ -284,7 +284,7 @@ class Configuration
}
/**
* @param Symfony\Component\Config\Definition\Builder\NodeBuilder $node The node to which to attach the field config to
* @param \Symfony\Component\Config\Definition\Builder\NodeBuilder $node The node to which to attach the field config to
* @param array $nestings the nested mappings for the current field level
*/
protected function addFieldConfig($node, $nestings)
@ -319,7 +319,7 @@ class Configuration
}
/**
* @param Symfony\Component\Config\Definition\Builder\NodeBuilder $node The node to which to attach the nested config to
* @param \Symfony\Component\Config\Definition\Builder\NodeBuilder $node The node to which to attach the nested config to
* @param array $nestings The nestings for the current field level
* @param string $property the name of the nested property ('fields' or 'properties')
*/

View file

@ -64,8 +64,9 @@ class FOQElasticaExtension extends Extension
/**
* Loads the configured clients.
*
* @param array $config An array of clients configurations
* @param array $clients An array of clients configurations
* @param ContainerBuilder $container A ContainerBuilder instance
* @return array
*/
protected function loadClients(array $clients, ContainerBuilder $container)
{
@ -87,8 +88,12 @@ class FOQElasticaExtension extends Extension
/**
* Loads the configured indexes.
*
* @param array $config An array of indexes configurations
* @param array $indexes An array of indexes configurations
* @param ContainerBuilder $container A ContainerBuilder instance
* @param array $clientIdsByName
* @param $defaultClientName
* @throws \InvalidArgumentException
* @return array
*/
protected function loadIndexes(array $indexes, ContainerBuilder $container, array $clientIdsByName, $defaultClientName)
{
@ -160,8 +165,11 @@ class FOQElasticaExtension extends Extension
/**
* Loads the configured types.
*
* @param array $config An array of types configurations
* @param array $types An array of types configurations
* @param ContainerBuilder $container A ContainerBuilder instance
* @param $indexName
* @param $indexId
* @param array $typePrototypeConfig
*/
protected function loadTypes(array $types, ContainerBuilder $container, $indexName, $indexId, array $typePrototypeConfig)
{
@ -226,8 +234,12 @@ class FOQElasticaExtension extends Extension
/**
* Loads the optional provider and finder for a type
*
* @return null
**/
* @param array $typeConfig
* @param \Symfony\Component\DependencyInjection\ContainerBuilder $container
* @param \Symfony\Component\DependencyInjection\Definition $typeDef
* @param $indexName
* @param $typeName
*/
protected function loadTypePersistenceIntegration(array $typeConfig, ContainerBuilder $container, Definition $typeDef, $indexName, $typeName)
{
$this->loadDriver($container, $typeConfig['driver']);
@ -409,8 +421,9 @@ class FOQElasticaExtension extends Extension
/**
* Loads the resetter
*
* @return null
**/
* @param array $indexConfigs
* @param \Symfony\Component\DependencyInjection\ContainerBuilder $container
*/
protected function loadResetter(array $indexConfigs, ContainerBuilder $container)
{
$resetterDef = $container->getDefinition('foq_elastica.resetter');

View file

@ -5,7 +5,6 @@ namespace FOQ\ElasticaBundle\Doctrine;
use FOQ\ElasticaBundle\HybridResult;
use FOQ\ElasticaBundle\Transformer\ElasticaToModelTransformerInterface;
use FOQ\ElasticaBundle\Transformer\HighlightableModelInterface;
use Elastica_Document;
use Symfony\Component\Form\Util\PropertyPath;
/**
@ -65,7 +64,8 @@ abstract class AbstractElasticaToModelTransformer implements ElasticaToModelTran
* Transforms an array of elastica objects into an array of
* model objects fetched from the doctrine repository
*
* @param array of elastica objects
* @param array $elasticaObjects of elastica objects
* @throws \RuntimeException
* @return array
**/
public function transform(array $elasticaObjects)

View file

@ -5,6 +5,7 @@ namespace FOQ\ElasticaBundle\Doctrine;
use Doctrine\Common\EventSubscriber;
use Doctrine\Common\Persistence\ObjectManager;
use FOQ\ElasticaBundle\Persister\ObjectPersisterInterface;
use FOQ\ElasticaBundle\Persister\ObjectPersister;
abstract class AbstractListener implements EventSubscriber
{
@ -83,7 +84,7 @@ abstract class AbstractListener implements EventSubscriber
* return a boolean.
*
* @param callback $callback
* @throw RuntimeException if the callback is not callable
* @throws \RuntimeException if the callback is not callable
*/
public function setIsIndexableCallback($callback)
{

View file

@ -35,6 +35,7 @@ abstract class AbstractProvider extends BaseAbstractProvider
{
$queryBuilder = $this->createQueryBuilder();
$nbObjects = $this->countObjects($queryBuilder);
$stepStartTime = 0;
for ($offset = 0; $offset < $nbObjects; $offset += $this->options['batch_size']) {
if ($loggerClosure) {

View file

@ -3,7 +3,6 @@
namespace FOQ\ElasticaBundle\Doctrine\MongoDB;
use FOQ\ElasticaBundle\Doctrine\AbstractElasticaToModelTransformer;
use Elastica_Document;
/**
* Maps Elastica documents with Doctrine objects

View file

@ -3,7 +3,6 @@
namespace FOQ\ElasticaBundle\Doctrine\ORM;
use FOQ\ElasticaBundle\Doctrine\AbstractElasticaToModelTransformer;
use Elastica_Document;
use Doctrine\ORM\Query;
/**

View file

@ -23,7 +23,7 @@ class Provider extends AbstractProvider
$qb = clone $queryBuilder;
return $qb
->select($qb->expr()->count($queryBuilder->getRootAlias()))
->select($qb->expr()->count($queryBuilder->getRootAliases()[0]))
// Remove ordering for efficiency; it doesn't affect the count
->resetDQLPart('orderBy')
->getQuery()

View file

@ -4,7 +4,6 @@ namespace FOQ\ElasticaBundle\Doctrine;
use Doctrine\Common\Annotations\Reader;
use Doctrine\Common\Persistence\ManagerRegistry;
use FOQ\ElasticaBundle\Finder\FinderInterface;
use FOQ\ElasticaBundle\Manager\RepositoryManager as BaseManager;
/**

View file

@ -2,7 +2,6 @@
namespace FOQ\ElasticaBundle\Finder;
use FOQ\ElasticaBundle\Finder\FinderInterface;
use FOQ\ElasticaBundle\Finder\PaginatedFinderInterface;
use FOQ\ElasticaBundle\Transformer\ElasticaToModelTransformerInterface;
use FOQ\ElasticaBundle\Paginator\TransformedPaginatorAdapter;
@ -46,6 +45,11 @@ class TransformedFinder implements PaginatedFinderInterface
return $this->transformer->hybridTransform($results);
}
/**
* @param $query
* @param null|int $limit
* @return array
*/
protected function search($query, $limit = null)
{
$queryObject = Elastica_Query::create($query);
@ -61,6 +65,7 @@ class TransformedFinder implements PaginatedFinderInterface
/**
* Gets a paginator wrapping the result of a search
*
* @param string $query
* @return Pagerfanta
*/
public function findPaginated($query)

View file

@ -10,8 +10,8 @@ class IndexManager
/**
* Constructor.
*
* @param array $indexesByName
* @param string $defaultIndexName
* @param array $indexesByName
* @param \Elastica_Index $defaultIndex
*/
public function __construct(array $indexesByName, \Elastica_Index $defaultIndex)
{
@ -33,8 +33,8 @@ class IndexManager
* Gets an index by its name
*
* @param string $name Index to return, or the default index if null
* @return Elastica_Index
* @throws InvalidArgumentException if no index exists for the given name
* @return \Elastica_Index
* @throws \InvalidArgumentException if no index exists for the given name
*/
public function getIndex($name = null)
{
@ -52,7 +52,7 @@ class IndexManager
/**
* Gets the default index
*
* @return Elastica_Index
* @return \Elastica_Index
*/
public function getDefaultIndex()
{

View file

@ -21,7 +21,8 @@ class ElasticaLogger
/**
* Constructor.
*
* @param LoggerInterface $logger The Symfony logger
* @param LoggerInterface|null $logger The Symfony logger
* @param bool $debug
*/
public function __construct(LoggerInterface $logger = null, $debug = false)
{

View file

@ -2,6 +2,8 @@
namespace FOQ\ElasticaBundle\Paginator;
use FOQ\ElasticaBundle\Paginator\PartialResultsInterface;
interface PaginatorAdapterInterface
{
/**
@ -19,7 +21,7 @@ interface PaginatorAdapterInterface
* @param integer $offset The offset.
* @param integer $length The length.
*
* @return FOQ\ElasticaBundle\Paginator\PartialResults
* @return PartialResultsInterface
*
* @api
*/

View file

@ -4,8 +4,10 @@ namespace FOQ\ElasticaBundle\Paginator;
use Elastica_Searchable;
use Elastica_Query;
use Elastica_ResultSet;
use FOQ\ElasticaBundle\Paginator\PaginatorAdapterInterface;
use FOQ\ElasticaBundle\Paginator\RawPartialResults;
use FOQ\ElasticaBundle\Paginator\PartialResultsInterface;
/**
* Allows pagination of Elastica_Query. Does not map results
@ -13,7 +15,7 @@ use FOQ\ElasticaBundle\Paginator\RawPartialResults;
class RawPaginatorAdapter implements PaginatorAdapterInterface
{
/**
* @var Elastica_SearchableInterface the object to search in
* @var Elastica_Searchable the object to search in
*/
private $searchable = null;
@ -25,8 +27,8 @@ class RawPaginatorAdapter implements PaginatorAdapterInterface
/**
* @see PaginatorAdapterInterface::__construct
*
* @param Elastica_SearchableInterface the object to search in
* @param Elastica_Query the query to search
* @param Elastica_Searchable $searchable the object to search in
* @param Elastica_Query $query the query to search
*/
public function __construct(Elastica_Searchable $searchable, Elastica_Query $query)
{
@ -37,6 +39,8 @@ class RawPaginatorAdapter implements PaginatorAdapterInterface
/**
* Returns the paginated results.
*
* @param $offset
* @param $itemCountPerPage
* @return Elastica_ResultSet
*/
protected function getElasticaResults($offset, $itemCountPerPage)
@ -51,7 +55,9 @@ class RawPaginatorAdapter implements PaginatorAdapterInterface
/**
* Returns the paginated results.
*
* @return FOQ\ElasticaBundle\Paginator\PartialResultInterface
* @param int $offset
* @param int $itemCountPerPage
* @return PartialResultsInterface
*/
public function getResults($offset, $itemCountPerPage)
{

View file

@ -4,6 +4,7 @@ namespace FOQ\ElasticaBundle\Paginator;
use FOQ\ElasticaBundle\Paginator\PartialResultsInterface;
use Elastica_ResultSet;
use Elastica_Result;
/**
* Raw partial results transforms to a simple array
@ -25,7 +26,7 @@ class RawPartialResults implements PartialResultsInterface
*/
public function toArray()
{
return array_map(function($result) {
return array_map(function(Elastica_Result $result) {
return $result->getSource();
}, $this->resultSet->getResults());
}

View file

@ -15,9 +15,9 @@ class TransformedPaginatorAdapter extends RawPaginatorAdapter
private $transformer;
/**
* @param Elastica_SearchableInterface the object to search in
* @param Elastica_Query the query to search
* @param ElasticaToModelTransformerInterface the transformer for fetching the results
* @param Elastica_Searchable $searchable the object to search in
* @param Elastica_Query $query the query to search
* @param ElasticaToModelTransformerInterface $transformer the transformer for fetching the results
*/
public function __construct(Elastica_Searchable $searchable, Elastica_Query $query, ElasticaToModelTransformerInterface $transformer)
{

View file

@ -2,12 +2,9 @@
namespace FOQ\ElasticaBundle\Persister;
use FOQ\ElasticaBundle\Provider\ProviderInterface;
use FOQ\ElasticaBundle\Transformer\ModelToElasticaTransformerInterface;
use Symfony\Component\HttpKernel\Log\LoggerInterface;
use Elastica_Type;
use Elastica_Document;
use Exception;
/**
* Inserts, replaces and deletes single documents in an elastica type
@ -83,7 +80,7 @@ class ObjectPersister implements ObjectPersisterInterface
/**
* Inserts an array of objects in the type
*
* @param array of domain model objects
* @param array $objects array of domain model objects
**/
public function insertMany(array $objects)
{

View file

@ -44,7 +44,7 @@ interface ObjectPersisterInterface
/**
* Inserts an array of objects in the type
*
* @param array of domain model objects
* @param array $objects array of domain model objects
**/
function insertMany(array $objects);
}

View file

@ -4,7 +4,6 @@ namespace FOQ\ElasticaBundle\Propel;
use FOQ\ElasticaBundle\HybridResult;
use FOQ\ElasticaBundle\Transformer\ElasticaToModelTransformerInterface;
use Elastica_Document;
use Symfony\Component\Form\Util\PropertyPath;
/**
@ -49,12 +48,12 @@ class ElasticaToModelTransformer implements ElasticaToModelTransformerInterface
* Transforms an array of elastica objects into an array of
* model objects fetched from the propel repository
*
* @param array of elastica objects
* @param \Elastica_Document[] $elasticaObjects array of elastica objects
* @return array
*/
public function transform(array $elasticaObjects)
{
$ids = array_map(function($elasticaObject) {
$ids = array_map(function(\Elastica_Document $elasticaObject) {
return $elasticaObject->getId();
}, $elasticaObjects);
@ -111,10 +110,8 @@ class ElasticaToModelTransformer implements ElasticaToModelTransformerInterface
/**
* Fetch objects for theses identifier values
*
* @param string $class the model class
* @param string $identifierField like 'id'
* @param array $identifierValues ids values
* @param Boolean $hydrate whether or not to hydrate the objects, false returns arrays
* @param boolean $hydrate whether or not to hydrate the objects, false returns arrays
* @return array of objects or arrays
*/
protected function findByIdentifiers(array $identifierValues, $hydrate)

View file

@ -18,6 +18,7 @@ class Provider extends AbstractProvider
{
$queryClass = $this->objectClass . 'Query';
$nbObjects = $queryClass::create()->count();
$stepStartTime = 0;
for ($offset = 0; $offset < $nbObjects; $offset += $this->options['batch_size']) {
if ($loggerClosure) {

View file

@ -12,7 +12,8 @@ interface ProviderInterface
/**
* Persists all domain objects to ElasticSearch for this provider.
*
* @param Closure $loggerClosure
* @param \Closure $loggerClosure
* @return
*/
function populate(\Closure $loggerClosure = null);
}

View file

@ -12,6 +12,9 @@ use Symfony\Component\DependencyInjection\ContainerInterface;
*/
class ProviderRegistry implements ContainerAwareInterface
{
/**
* @var ContainerInterface
*/
private $container;
private $providers = array();
@ -58,7 +61,7 @@ class ProviderRegistry implements ContainerAwareInterface
*
* @param string $index
* @return array of ProviderInterface instances
* @throws InvalidArgumentException if no providers were registered for the index
* @throws \InvalidArgumentException if no providers were registered for the index
*/
public function getIndexProviders($index)
{
@ -81,7 +84,7 @@ class ProviderRegistry implements ContainerAwareInterface
* @param string $index
* @param string $type
* @return ProviderInterface
* @throws InvalidArgumentException if no provider was registered for the index and type
* @throws \InvalidArgumentException if no provider was registered for the index and type
*/
public function getProvider($index, $type)
{

View file

@ -33,7 +33,7 @@ class Resetter
* Deletes and recreates the named index
*
* @param string $indexName
* @throws InvalidArgumentException if no index exists for the given name
* @throws \InvalidArgumentException if no index exists for the given name
*/
public function resetIndex($indexName)
{
@ -46,7 +46,7 @@ class Resetter
*
* @param string $indexName
* @param string $typeName
* @throws InvalidArgumentException if no index or type mapping exists for the given names
* @throws \InvalidArgumentException if no index or type mapping exists for the given names
*/
public function resetIndexType($indexName, $typeName)
{
@ -66,13 +66,13 @@ class Resetter
* create type mapping object
*
* @param array $indexConfig
* @return Elastica_Type_Mapping
* @return \Elastica_Type_Mapping
*/
protected function createMapping($indexConfig)
{
$mapping = \Elastica_Type_Mapping::create($indexConfig['properties']);
foreach($indexConfig['properties'] as $field => $type) {
foreach($indexConfig['properties'] as $type) {
if (!empty($type['_parent']) && $type['_parent'] !== '~') {
$mapping->setParam('_parent', array('type' => $type['_parent']['type']));
}
@ -84,9 +84,11 @@ class Resetter
/**
* Gets an index config by its name
*
* @param string $index Index name
* @param string $indexName Index name
*
* @param $indexName
* @return array
* @throws InvalidArgumentException if no index config exists for the given name
* @throws \InvalidArgumentException if no index config exists for the given name
*/
protected function getIndexConfig($indexName)
{

View file

@ -5,12 +5,14 @@ namespace FOQ\ElasticaBundle\Subscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Knp\Component\Pager\Event\ItemsEvent;
use FOQ\ElasticaBundle\Paginator\PaginatorAdapterInterface;
use FOQ\ElasticaBundle\Paginator\PartialResultsInterface;
class PaginateElasticaQuerySubscriber implements EventSubscriberInterface
{
public function items(ItemsEvent $event)
{
if ($event->target instanceof PaginatorAdapterInterface) {
/** @var $results PartialResultsInterface */
$results = $event->target->getResults($event->getOffset(), $event->getLimit());
$event->count = $results->getTotalHits();

View file

@ -12,14 +12,17 @@ class ElasticaDataCollectorTest extends \PHPUnit_Framework_TestCase
public function testCorrectAmountOfQueries()
{
/** @var $requestMock \PHPUnit_Framework_MockObject_MockObject|\Symfony\Component\HttpFoundation\Request */
$requestMock = $this->getMockBuilder('Symfony\Component\HttpFoundation\Request')
->disableOriginalConstructor()
->getMock();
/** @var $responseMock \PHPUnit_Framework_MockObject_MockObject|\Symfony\Component\HttpFoundation\Response */
$responseMock = $this->getMockBuilder('Symfony\Component\HttpFoundation\Response')
->disableOriginalConstructor()
->getMock();
/** @var $loggerMock \PHPUnit_Framework_MockObject_MockObject|\FOQ\ElasticaBundle\Logger\ElasticaLogger */
$loggerMock = $this->getMockBuilder('FOQ\ElasticaBundle\Logger\ElasticaLogger')
->disableOriginalConstructor()
->getMock();
@ -37,14 +40,17 @@ class ElasticaDataCollectorTest extends \PHPUnit_Framework_TestCase
public function testCorrectQueriesReturned()
{
/** @var $requestMock \PHPUnit_Framework_MockObject_MockObject|\Symfony\Component\HttpFoundation\Request */
$requestMock = $this->getMockBuilder('Symfony\Component\HttpFoundation\Request')
->disableOriginalConstructor()
->getMock();
/** @var $responseMock \PHPUnit_Framework_MockObject_MockObject|\Symfony\Component\HttpFoundation\Response */
$responseMock = $this->getMockBuilder('Symfony\Component\HttpFoundation\Response')
->disableOriginalConstructor()
->getMock();
/** @var $loggerMock \PHPUnit_Framework_MockObject_MockObject|\FOQ\ElasticaBundle\Logger\ElasticaLogger */
$loggerMock = $this->getMockBuilder('FOQ\ElasticaBundle\Logger\ElasticaLogger')
->disableOriginalConstructor()
->getMock();
@ -62,14 +68,17 @@ class ElasticaDataCollectorTest extends \PHPUnit_Framework_TestCase
public function testCorrectQueriesTime()
{
/** @var $requestMock \PHPUnit_Framework_MockObject_MockObject|\Symfony\Component\HttpFoundation\Request */
$requestMock = $this->getMockBuilder('Symfony\Component\HttpFoundation\Request')
->disableOriginalConstructor()
->getMock();
/** @var $responseMock \PHPUnit_Framework_MockObject_MockObject|\Symfony\Component\HttpFoundation\Response */
$responseMock = $this->getMockBuilder('Symfony\Component\HttpFoundation\Response')
->disableOriginalConstructor()
->getMock();
/** @var $loggerMock \PHPUnit_Framework_MockObject_MockObject|\FOQ\ElasticaBundle\Logger\ElasticaLogger */
$loggerMock = $this->getMockBuilder('FOQ\ElasticaBundle\Logger\ElasticaLogger')
->disableOriginalConstructor()
->getMock();

View file

@ -32,7 +32,7 @@ class RegisterProvidersPassTest extends \PHPUnit_Framework_TestCase
}
/**
* @expectedException InvalidArgumentException
* @expectedException \InvalidArgumentException
*/
public function testProcessShouldRequireProviderImplementation()
{
@ -51,7 +51,7 @@ class RegisterProvidersPassTest extends \PHPUnit_Framework_TestCase
}
/**
* @expectedException InvalidArgumentException
* @expectedException \InvalidArgumentException
*/
public function testProcessShouldRequireTypeAttribute()
{

View file

@ -150,7 +150,7 @@ abstract class AbstractListenerTest extends \PHPUnit_Framework_TestCase
/**
* @dataProvider provideInvalidIsIndexableCallbacks
* @expectedException RuntimeException
* @expectedException \RuntimeException
*/
public function testInvalidIsIndexableCallbacks($isIndexableCallback)
{

View file

@ -136,7 +136,7 @@ class AbstractProviderTest extends \PHPUnit_Framework_TestCase
}
/**
* @return FOQ\ElasticaBundle\Doctrine\AbstractProvider
* @return \FOQ\ElasticaBundle\Doctrine\AbstractProvider|\PHPUnit_Framework_MockObject_MockObject
*/
private function getMockAbstractProvider()
{
@ -149,7 +149,7 @@ class AbstractProviderTest extends \PHPUnit_Framework_TestCase
}
/**
* @return Doctrine\Common\Persistence\ManagerRegistry
* @return \Doctrine\Common\Persistence\ManagerRegistry|\PHPUnit_Framework_MockObject_MockObject
*/
private function getMockManagerRegistry()
{
@ -157,7 +157,7 @@ class AbstractProviderTest extends \PHPUnit_Framework_TestCase
}
/**
* @return FOQ\ElasticaBundle\Tests\Doctrine\ObjectManager
* @return ObjectManager|\PHPUnit_Framework_MockObject_MockObject
*/
private function getMockObjectManager()
{
@ -165,7 +165,7 @@ class AbstractProviderTest extends \PHPUnit_Framework_TestCase
}
/**
* @return FOQ\ElasticaBundle\Persister\ObjectPersisterInterface
* @return \FOQ\ElasticaBundle\Persister\ObjectPersisterInterface|\PHPUnit_Framework_MockObject_MockObject
*/
private function getMockObjectPersister()
{

View file

@ -22,14 +22,17 @@ class RepositoryManagerTest extends \PHPUnit_Framework_TestCase
public function testThatGetRepositoryReturnsDefaultRepository()
{
/** @var $finderMock \PHPUnit_Framework_MockObject_MockObject|\FOQ\ElasticaBundle\Finder\TransformedFinder */
$finderMock = $this->getMockBuilder('FOQ\ElasticaBundle\Finder\TransformedFinder')
->disableOriginalConstructor()
->getMock();
/** @var $registryMock \PHPUnit_Framework_MockObject_MockObject|\Doctrine\Common\Persistence\ManagerRegistry */
$registryMock = $this->getMockBuilder('Doctrine\Common\Persistence\ManagerRegistry')
->disableOriginalConstructor()
->getMock();
/** @var $readerMock \PHPUnit_Framework_MockObject_MockObject|\Doctrine\Common\Annotations\Reader */
$readerMock = $this->getMockBuilder('Doctrine\Common\Annotations\Reader')
->disableOriginalConstructor()
->getMock();
@ -44,14 +47,17 @@ class RepositoryManagerTest extends \PHPUnit_Framework_TestCase
public function testThatGetRepositoryReturnsCustomRepository()
{
/** @var $finderMock \PHPUnit_Framework_MockObject_MockObject|\FOQ\ElasticaBundle\Finder\TransformedFinder */
$finderMock = $this->getMockBuilder('FOQ\ElasticaBundle\Finder\TransformedFinder')
->disableOriginalConstructor()
->getMock();
/** @var $registryMock \PHPUnit_Framework_MockObject_MockObject|\Doctrine\Common\Persistence\ManagerRegistry */
$registryMock = $this->getMockBuilder('Doctrine\Common\Persistence\ManagerRegistry')
->disableOriginalConstructor()
->getMock();
/** @var $readerMock \PHPUnit_Framework_MockObject_MockObject|\Doctrine\Common\Annotations\Reader */
$readerMock = $this->getMockBuilder('Doctrine\Common\Annotations\Reader')
->disableOriginalConstructor()
->getMock();
@ -65,18 +71,21 @@ class RepositoryManagerTest extends \PHPUnit_Framework_TestCase
}
/**
* @expectedException RuntimeException
* @expectedException \RuntimeException
*/
public function testThatGetRepositoryThrowsExceptionIfEntityNotConfigured()
{
/** @var $finderMock \PHPUnit_Framework_MockObject_MockObject|\FOQ\ElasticaBundle\Finder\TransformedFinder */
$finderMock = $this->getMockBuilder('FOQ\ElasticaBundle\Finder\TransformedFinder')
->disableOriginalConstructor()
->getMock();
/** @var $registryMock \PHPUnit_Framework_MockObject_MockObject|\Doctrine\Common\Persistence\ManagerRegistry */
$registryMock = $this->getMockBuilder('Doctrine\Common\Persistence\ManagerRegistry')
->disableOriginalConstructor()
->getMock();
/** @var $readerMock \PHPUnit_Framework_MockObject_MockObject|\Doctrine\Common\Annotations\Reader */
$readerMock = $this->getMockBuilder('Doctrine\Common\Annotations\Reader')
->disableOriginalConstructor()
->getMock();
@ -89,18 +98,21 @@ class RepositoryManagerTest extends \PHPUnit_Framework_TestCase
}
/**
* @expectedException RuntimeException
* @expectedException \RuntimeException
*/
public function testThatGetRepositoryThrowsExceptionIfCustomRepositoryNotFound()
{
/** @var $finderMock \PHPUnit_Framework_MockObject_MockObject|\FOQ\ElasticaBundle\Finder\TransformedFinder */
$finderMock = $this->getMockBuilder('FOQ\ElasticaBundle\Finder\TransformedFinder')
->disableOriginalConstructor()
->getMock();
/** @var $registryMock \PHPUnit_Framework_MockObject_MockObject|\Doctrine\Common\Persistence\ManagerRegistry */
$registryMock = $this->getMockBuilder('Doctrine\Common\Persistence\ManagerRegistry')
->disableOriginalConstructor()
->getMock();
/** @var $readerMock \PHPUnit_Framework_MockObject_MockObject|\Doctrine\Common\Annotations\Reader */
$readerMock = $this->getMockBuilder('Doctrine\Common\Annotations\Reader')
->disableOriginalConstructor()
->getMock();
@ -114,14 +126,17 @@ class RepositoryManagerTest extends \PHPUnit_Framework_TestCase
public function testThatGetRepositoryWorksWithShortEntityName()
{
/** @var $finderMock \PHPUnit_Framework_MockObject_MockObject|\FOQ\ElasticaBundle\Finder\TransformedFinder */
$finderMock = $this->getMockBuilder('FOQ\ElasticaBundle\Finder\TransformedFinder')
->disableOriginalConstructor()
->getMock();
/** @var $registryMock \PHPUnit_Framework_MockObject_MockObject|\Doctrine\Common\Persistence\ManagerRegistry */
$registryMock = $this->getMockBuilder('Doctrine\Common\Persistence\ManagerRegistry')
->disableOriginalConstructor()
->getMock();
/** @var $readerMock \PHPUnit_Framework_MockObject_MockObject|\Doctrine\Common\Annotations\Reader */
$readerMock = $this->getMockBuilder('Doctrine\Common\Annotations\Reader')
->disableOriginalConstructor()
->getMock();

View file

@ -8,6 +8,7 @@ class IndexManagerTest extends \PHPUnit_Framework_TestCase
{
private $defaultIndexName;
private $indexesByName;
/** @var IndexManager */
private $indexManager;
public function setUp()
@ -18,6 +19,7 @@ class IndexManagerTest extends \PHPUnit_Framework_TestCase
'index2' => 'test2',
);
/** @var $defaultIndex \PHPUnit_Framework_MockObject_MockObject|\Elastica_Index */
$defaultIndex = $this->getMockBuilder('Elastica_Index')
->disableOriginalConstructor()
->getMock();
@ -41,7 +43,7 @@ class IndexManagerTest extends \PHPUnit_Framework_TestCase
}
/**
* @expectedException InvalidArgumentException
* @expectedException \InvalidArgumentException
*/
public function testGetIndexShouldThrowExceptionForInvalidName()
{

View file

@ -63,6 +63,7 @@ class ElasticaLoggerTest extends \PHPUnit_Framework_TestCase
public function testQueryIsLogged()
{
/** @var $loggerMock \PHPUnit_Framework_MockObject_MockObject|\Symfony\Component\HttpKernel\Log\LoggerInterface */
$loggerMock = $this->getMockBuilder('Symfony\Component\HttpKernel\Log\LoggerInterface')
->disableOriginalConstructor()
->getMock();

View file

@ -16,10 +16,12 @@ class RepositoryManagerTest extends \PHPUnit_Framework_TestCase
public function testThatGetRepositoryReturnsDefaultRepository()
{
/** @var $finderMock \PHPUnit_Framework_MockObject_MockObject|\FOQ\ElasticaBundle\Finder\TransformedFinder */
$finderMock = $this->getMockBuilder('FOQ\ElasticaBundle\Finder\TransformedFinder')
->disableOriginalConstructor()
->getMock();
/** @var $readerMock \PHPUnit_Framework_MockObject_MockObject|\Doctrine\Common\Annotations\Reader */
$readerMock = $this->getMockBuilder('Doctrine\Common\Annotations\Reader')
->disableOriginalConstructor()
->getMock();
@ -34,10 +36,12 @@ class RepositoryManagerTest extends \PHPUnit_Framework_TestCase
public function testThatGetRepositoryReturnsCustomRepository()
{
/** @var $finderMock \PHPUnit_Framework_MockObject_MockObject|\FOQ\ElasticaBundle\Finder\TransformedFinder */
$finderMock = $this->getMockBuilder('FOQ\ElasticaBundle\Finder\TransformedFinder')
->disableOriginalConstructor()
->getMock();
/** @var $readerMock \PHPUnit_Framework_MockObject_MockObject|\Doctrine\Common\Annotations\Reader */
$readerMock = $this->getMockBuilder('Doctrine\Common\Annotations\Reader')
->disableOriginalConstructor()
->getMock();
@ -51,14 +55,16 @@ class RepositoryManagerTest extends \PHPUnit_Framework_TestCase
}
/**
* @expectedException RuntimeException
* @expectedException \RuntimeException
*/
public function testThatGetRepositoryThrowsExceptionIfEntityNotConfigured()
{
/** @var $finderMock \PHPUnit_Framework_MockObject_MockObject|\FOQ\ElasticaBundle\Finder\TransformedFinder */
$finderMock = $this->getMockBuilder('FOQ\ElasticaBundle\Finder\TransformedFinder')
->disableOriginalConstructor()
->getMock();
/** @var $readerMock \PHPUnit_Framework_MockObject_MockObject|\Doctrine\Common\Annotations\Reader */
$readerMock = $this->getMockBuilder('Doctrine\Common\Annotations\Reader')
->disableOriginalConstructor()
->getMock();
@ -71,14 +77,16 @@ class RepositoryManagerTest extends \PHPUnit_Framework_TestCase
}
/**
* @expectedException RuntimeException
* @expectedException \RuntimeException
*/
public function testThatGetRepositoryThrowsExceptionIfCustomRepositoryNotFound()
{
/** @var $finderMock \PHPUnit_Framework_MockObject_MockObject|\FOQ\ElasticaBundle\Finder\TransformedFinder */
$finderMock = $this->getMockBuilder('FOQ\ElasticaBundle\Finder\TransformedFinder')
->disableOriginalConstructor()
->getMock();
/** @var $readerMock \PHPUnit_Framework_MockObject_MockObject|\Doctrine\Common\Annotations\Reader */
$readerMock = $this->getMockBuilder('Doctrine\Common\Annotations\Reader')
->disableOriginalConstructor()
->getMock();

View file

@ -41,6 +41,7 @@ class ObjectPersisterTest extends \PHPUnit_Framework_TestCase
{
$modelTransformer = new ModelToElasticaAutoTransformer();
/** @var $typeMock \PHPUnit_Framework_MockObject_MockObject|\Elastica_Type */
$typeMock = $this->getMockBuilder('Elastica_Type')
->disableOriginalConstructor()
->getMock();
@ -63,6 +64,7 @@ class ObjectPersisterTest extends \PHPUnit_Framework_TestCase
{
$modelTransformer = new ModelToElasticaAutoTransformer();
/** @var $typeMock \PHPUnit_Framework_MockObject_MockObject|\Elastica_Type */
$typeMock = $this->getMockBuilder('Elastica_Type')
->disableOriginalConstructor()
->getMock();
@ -81,6 +83,7 @@ class ObjectPersisterTest extends \PHPUnit_Framework_TestCase
{
$modelTransformer = new ModelToElasticaAutoTransformer();
/** @var $typeMock \PHPUnit_Framework_MockObject_MockObject|\Elastica_Type */
$typeMock = $this->getMockBuilder('Elastica_Type')
->disableOriginalConstructor()
->getMock();
@ -102,6 +105,7 @@ class ObjectPersisterTest extends \PHPUnit_Framework_TestCase
{
$modelTransformer = new ModelToElasticaAutoTransformer();
/** @var $typeMock \PHPUnit_Framework_MockObject_MockObject|\Elastica_Type */
$typeMock = $this->getMockBuilder('Elastica_Type')
->disableOriginalConstructor()
->getMock();
@ -120,6 +124,7 @@ class ObjectPersisterTest extends \PHPUnit_Framework_TestCase
{
$modelTransformer = new ModelToElasticaAutoTransformer();
/** @var $typeMock \PHPUnit_Framework_MockObject_MockObject|\Elastica_Type */
$typeMock = $this->getMockBuilder('Elastica_Type')
->disableOriginalConstructor()
->getMock();
@ -141,6 +146,7 @@ class ObjectPersisterTest extends \PHPUnit_Framework_TestCase
{
$modelTransformer = new ModelToElasticaAutoTransformer();
/** @var $typeMock \PHPUnit_Framework_MockObject_MockObject|\Elastica_Type */
$typeMock = $this->getMockBuilder('Elastica_Type')
->disableOriginalConstructor()
->getMock();
@ -159,6 +165,7 @@ class ObjectPersisterTest extends \PHPUnit_Framework_TestCase
{
$modelTransformer = new ModelToElasticaAutoTransformer();
/** @var $typeMock \PHPUnit_Framework_MockObject_MockObject|\Elastica_Type */
$typeMock = $this->getMockBuilder('Elastica_Type')
->disableOriginalConstructor()
->getMock();
@ -182,6 +189,7 @@ class ObjectPersisterTest extends \PHPUnit_Framework_TestCase
{
$modelTransformer = new ModelToElasticaAutoTransformer();
/** @var $typeMock \PHPUnit_Framework_MockObject_MockObject|\Elastica_Type */
$typeMock = $this->getMockBuilder('Elastica_Type')
->disableOriginalConstructor()
->getMock();

View file

@ -7,6 +7,9 @@ use Symfony\Component\DependencyInjection\ContainerInterface;
class ProviderRegistryTest extends \PHPUnit_Framework_TestCase
{
/**
* @var \PHPUnit_Framework_MockObject_MockObject|ContainerInterface
*/
private $container;
private $registry;

View file

@ -14,6 +14,7 @@ class RepositoryTest extends \PHPUnit_Framework_TestCase
{
$testQuery = 'Test Query';
/** @var $typeMock \PHPUnit_Framework_MockObject_MockObject|\FOQ\ElasticaBundle\Finder\TransformedFinder */
$finderMock = $this->getMockBuilder('FOQ\ElasticaBundle\Finder\TransformedFinder')
->disableOriginalConstructor()
->getMock();
@ -30,6 +31,7 @@ class RepositoryTest extends \PHPUnit_Framework_TestCase
$testQuery = 'Test Query';
$testLimit = 20;
/** @var $typeMock \PHPUnit_Framework_MockObject_MockObject|\FOQ\ElasticaBundle\Finder\TransformedFinder */
$finderMock = $this->getMockBuilder('FOQ\ElasticaBundle\Finder\TransformedFinder')
->disableOriginalConstructor()
->getMock();
@ -45,6 +47,7 @@ class RepositoryTest extends \PHPUnit_Framework_TestCase
{
$testQuery = 'Test Query';
/** @var $typeMock \PHPUnit_Framework_MockObject_MockObject|\FOQ\ElasticaBundle\Finder\TransformedFinder */
$finderMock = $this->getMockBuilder('FOQ\ElasticaBundle\Finder\TransformedFinder')
->disableOriginalConstructor()
->getMock();
@ -61,6 +64,7 @@ class RepositoryTest extends \PHPUnit_Framework_TestCase
$testQuery = 'Test Query';
$testLimit = 20;
/** @var $typeMock \PHPUnit_Framework_MockObject_MockObject|\FOQ\ElasticaBundle\Finder\TransformedFinder */
$finderMock = $this->getMockBuilder('FOQ\ElasticaBundle\Finder\TransformedFinder')
->disableOriginalConstructor()
->getMock();

View file

@ -71,7 +71,7 @@ class ResetterTest extends \PHPUnit_Framework_TestCase
}
/**
* @expectedException InvalidArgumentException
* @expectedException \InvalidArgumentException
*/
public function testResetIndexShouldThrowExceptionForInvalidIndex()
{
@ -101,7 +101,7 @@ class ResetterTest extends \PHPUnit_Framework_TestCase
}
/**
* @expectedException InvalidArgumentException
* @expectedException \InvalidArgumentException
*/
public function testResetIndexTypeShouldThrowExceptionForInvalidIndex()
{
@ -110,7 +110,7 @@ class ResetterTest extends \PHPUnit_Framework_TestCase
}
/**
* @expectedException InvalidArgumentException
* @expectedException \InvalidArgumentException
*/
public function testResetIndexTypeShouldThrowExceptionForInvalidType()
{
@ -141,7 +141,7 @@ class ResetterTest extends \PHPUnit_Framework_TestCase
}
/**
* @return Elastica_Index
* @return \Elastica_Index
*/
private function getMockElasticaIndex()
{
@ -151,7 +151,7 @@ class ResetterTest extends \PHPUnit_Framework_TestCase
}
/**
* @return Elastica_Type
* @return \Elastica_Type
*/
private function getMockElasticaType()
{

View file

@ -201,7 +201,7 @@ class ModelToElasticaAutoTransformerTest extends \PHPUnit_Framework_TestCase
}
/**
* @expectedException \Symfony\Component\Form\Exception\PropertyAccessDeniedException
* @expectedException \Symfony\Component\PropertyAccess\Exception\PropertyAccessDeniedException
*/
public function testThatCannotTransformObjectWhenGetterDoesNotExistForPrivateMethod()
{

View file

@ -15,4 +15,5 @@ spl_autoload_register(function($class) {
require_once $path;
return true;
}
return false;
});

View file

@ -3,7 +3,7 @@
namespace FOQ\ElasticaBundle\Transformer;
use FOQ\ElasticaBundle\HybridResult;
use Symfony\Component\Form\Util\PropertyPath;
use Elastica_Document;
/**
* Holds a collection of transformers for an index wide transformation.
@ -12,6 +12,9 @@ use Symfony\Component\Form\Util\PropertyPath;
*/
class ElasticaToModelTransformerCollection implements ElasticaToModelTransformerInterface
{
/**
* @var ElasticaToModelTransformerInterface[]
*/
protected $transformers = array();
public function __construct(array $transformers)
@ -21,7 +24,7 @@ class ElasticaToModelTransformerCollection implements ElasticaToModelTransformer
public function getObjectClass()
{
return array_map(function ($transformer) {
return array_map(function (ElasticaToModelTransformerInterface $transformer) {
return $transformer->getObjectClass();
}, $this->transformers);
}
@ -31,11 +34,15 @@ class ElasticaToModelTransformerCollection implements ElasticaToModelTransformer
*/
public function getIdentifierField()
{
return array_map(function ($transformer) {
return array_map(function (ElasticaToModelTransformerInterface $transformer) {
return $transformer->getIdentifierField();
}, $this->transformers);
}
/**
* @param Elastica_Document[] $elasticaObjects
* @return array
*/
public function transform(array $elasticaObjects)
{
$sorted = array();
@ -80,7 +87,7 @@ class ElasticaToModelTransformerCollection implements ElasticaToModelTransformer
protected function getTypeToClassMap()
{
return array_map(function ($transformer) {
return array_map(function (ElasticaToModelTransformerInterface $transformer) {
return $transformer->getObjectClass();
}, $this->transformers);
}

View file

@ -11,7 +11,7 @@ interface ElasticaToModelTransformerInterface
* Transforms an array of elastica objects into an array of
* model objects fetched from the doctrine repository
*
* @param array of elastica objects
* @param array $elasticaObjects array of elastica objects
* @return array of model objects
**/
function transform(array $elasticaObjects);

View file

@ -10,7 +10,7 @@ interface HighlightableModelInterface
/**
* Set ElasticSearch highlight data.
*
* @param array of highlight strings
* @param array $highlights array of highlight strings
*/
public function setElasticHighlights(array $highlights);
}

View file

@ -2,7 +2,7 @@
namespace FOQ\ElasticaBundle\Transformer;
use Symfony\Component\Form\Util\PropertyPath;
use Symfony\Component\PropertyAccess\PropertyAccess;
/**
* Maps Elastica documents with Doctrine objects
@ -36,32 +36,30 @@ class ModelToElasticaAutoTransformer implements ModelToElasticaTransformerInterf
* @param object $object the object to convert
* @param array $fields the keys we want to have in the returned array
*
* @return Elastica_Document
* @return \Elastica_Document
**/
public function transform($object, array $fields)
{
$identifierProperty = new PropertyPath($this->options['identifier']);
$identifier = $identifierProperty->getValue($object);
$accessor = PropertyAccess::getPropertyAccessor();
$identifier = $accessor->getValue($object, $this->options['identifier']);
$document = new \Elastica_Document($identifier);
foreach ($fields as $key => $mapping) {
$property = new PropertyPath($key);
if (!empty($mapping['_parent']) && $mapping['_parent'] !== '~') {
$parent = $property->getValue($object);
$identifierProperty = new PropertyPath($mapping['_parent']['identifier']);
$document->setParent($identifierProperty->getValue($parent));
$parent = $accessor->getValue($object, $key);
$document->setParent($accessor->getValue($parent, $mapping['_parent']['identifier']));
} else if (isset($mapping['type']) && in_array($mapping['type'], array('nested', 'object'))) {
$submapping = $mapping['properties'];
$subcollection = $property->getValue($object);
$subcollection = $accessor->getValue($object, $key);
$document->add($key, $this->transformNested($subcollection, $submapping, $document));
} else if (isset($mapping['type']) && $mapping['type'] == 'attachment') {
$attachment = $property->getValue($object);
$attachment = $accessor->getValue($object, $key);
if ($attachment instanceof \SplFileInfo) {
$document->addFile($key, $attachment->getPathName());
} else {
$document->addFileContent($key, $attachment);
}
} else {
$document->add($key, $this->normalizeValue($property->getValue($object)));
$document->add($key, $this->normalizeValue($accessor->getValue($object, $key)));
}
}
return $document;
@ -70,13 +68,12 @@ class ModelToElasticaAutoTransformer implements ModelToElasticaTransformerInterf
/**
* transform a nested document or an object property into an array of ElasticaDocument
*
* @param array $objects the object to convert
* @param array $fields the keys we want to have in the returned array
* @param Elastica_Document $parent the parent document
* @param array|\Traversable|\ArrayAccess $objects the object to convert
* @param array $fields the keys we want to have in the returned array
*
* @return array
*/
protected function transformNested($objects, array $fields, $parent)
protected function transformNested($objects, array $fields)
{
if (is_array($objects) || $objects instanceof \Traversable || $objects instanceof \ArrayAccess) {
$documents = array();

View file

@ -12,7 +12,7 @@ interface ModelToElasticaTransformerInterface
*
* @param object $object the object to convert
* @param array $fields the keys we want to have in the returned array
* @return Elastica_Document
* @return \Elastica_Document
**/
function transform($object, array $fields);
}

View file

@ -12,20 +12,24 @@
],
"require": {
"php": ">=5.3.2",
"symfony/framework-bundle": ">=2.1.0,<2.3-dev",
"symfony/console": ">=2.1.0,<2.3-dev",
"symfony/form": ">=2.1.0,<2.3-dev",
"symfony/framework-bundle": ">=2.2.0,<2.3-dev",
"symfony/console": ">=2.2.0,<2.3-dev",
"symfony/form": ">=2.2.0,<2.3-dev",
"ruflin/elastica": "0.19.8"
},
"require-dev":{
"doctrine/orm":">=2.2,<2.5-dev",
"doctrine/mongodb-odm":"dev-master",
"propel/propel1":"1.6.*"
"propel/propel1":"1.6.*",
"pagerfanta/pagerfanta":"1.x",
"knplabs/knp-components":"1.2.x"
},
"suggest": {
"doctrine/orm": ">=2.2,<2.5-dev",
"doctrine/mongodb-odm": ">=3.0.0-beta2,<3.1-dev",
"propel/propel1": "1.6.*"
"propel/propel1": "1.6.*",
"pagerfanta/pagerfanta":"1.x",
"knplabs/knp-components":"1.2.x"
},
"autoload": {
"psr-0": { "FOQ\\ElasticaBundle": "" }