Skip to content

Commit 896b62c

Browse files
committed
Merge branch 'release/0.1.0'
2 parents dbd7398 + 3ce69e0 commit 896b62c

Some content is hidden

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

44 files changed

+214
-136
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
vendor
22
node_modules
33
bin
4+
phpunit.xml

README.md

+6
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@ Patch Manager
77

88
A php library to manage PATCH requests in a standardized (and elegant) way
99

10+
### Be careful!!!
11+
12+
*From version 0.3 namespace will change from PatchManager\\... to Cypress\\PatchManager\\...*
13+
14+
## Install
15+
1016
Install with composer
1117

1218
``` json

composer.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222
},
2323
"autoload": {
2424
"psr-4": {
25-
"PatchManager\\": "src/PatchManager/",
26-
"PatchManager\\Tests\\": "tests/PatchManager/"
25+
"Cypress\\PatchManager\\": "src/PatchManager/",
26+
"Cypress\\PatchManager\\Tests\\": "tests/PatchManager/"
2727
}
2828
},
2929
"license": "LGPL-3.0+",

examples/data_handler.php

+5-5
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22

33
require_once __DIR__.'/../vendor/autoload.php';
44

5-
use PatchManager\Request\Operations;
6-
use PatchManager\OperationMatcher;
7-
use PatchManager\Handler\DataHandler;
8-
use PatchManager\PatchManager;
5+
use Cypress\PatchManager\Request\Operations;
6+
use Cypress\PatchManager\OperationMatcher;
7+
use Cypress\PatchManager\Handler\DataHandler;
8+
use Cypress\PatchManager\PatchManager;
99

10-
class Subject implements \PatchManager\Patchable
10+
class Subject implements \Cypress\PatchManager\Patchable
1111
{
1212
private $a = 1;
1313

src/PatchManager/Bundle/DependencyInjection/Configuration.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
namespace PatchManager\Bundle\DependencyInjection;
3+
namespace Cypress\PatchManager\Bundle\DependencyInjection;
44

55
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
66
use Symfony\Component\Config\Definition\ConfigurationInterface;

src/PatchManager/Bundle/DependencyInjection/PatchManagerCompilerPass.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
namespace PatchManager\Bundle\DependencyInjection;
3+
namespace Cypress\PatchManager\Bundle\DependencyInjection;
44

55
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
66
use Symfony\Component\DependencyInjection\ContainerBuilder;

src/PatchManager/Bundle/DependencyInjection/PatchManagerExtension.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
namespace PatchManager\Bundle\DependencyInjection;
3+
namespace Cypress\PatchManager\Bundle\DependencyInjection;
44

55
use Symfony\Component\Config\FileLocator;
66
use Symfony\Component\DependencyInjection\ContainerBuilder;

src/PatchManager/Bundle/PatchManagerBundle.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<?php
22

3-
namespace PatchManager\Bundle;
3+
namespace Cypress\PatchManager\Bundle;
44

5-
use PatchManager\Bundle\DependencyInjection\PatchManagerCompilerPass;
5+
use Cypress\PatchManager\Bundle\DependencyInjection\PatchManagerCompilerPass;
66
use Symfony\Component\DependencyInjection\ContainerBuilder;
77
use Symfony\Component\HttpKernel\Bundle\Bundle;
88

src/PatchManager/Bundle/RequestAdapter/RequestStackAdapter.php

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<?php
22

3-
namespace PatchManager\Bundle\RequestAdapter;
3+
namespace Cypress\PatchManager\Bundle\RequestAdapter;
44

5-
use PatchManager\Request\Adapter;
6-
use PatchManager\Request\Operations;
5+
use Cypress\PatchManager\Request\Adapter;
6+
use Cypress\PatchManager\Request\Operations;
77
use Symfony\Component\HttpFoundation\RequestStack;
88

99
class RequestStackAdapter implements Adapter

src/PatchManager/Bundle/Resources/config/handlers/data.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@
55
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
66

77
<services>
8-
<service id="patch_manager.handler.data" public="false" class="PatchManager\Handler\DataHandler" />
8+
<service id="patch_manager.handler.data" public="false" class="Cypress\PatchManager\Handler\DataHandler" />
99
</services>
1010
</container>

src/PatchManager/Bundle/Resources/config/handlers/data_doctrine.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@
55
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
66

77
<services>
8-
<service id="patch_manager.handler.data" public="false" class="PatchManager\Handler\DataDoctrineHandler" />
8+
<service id="patch_manager.handler.data" public="false" class="Cypress\PatchManager\Handler\DataDoctrineHandler" />
99
</services>
1010
</container>

src/PatchManager/Bundle/Resources/config/handlers/state_machine.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
66

77
<services>
8-
<service id="patch_manager.handler.state_machine" public="false" class="PatchManager\Handler\FiniteHandler">
8+
<service id="patch_manager.handler.state_machine" public="false" class="Cypress\PatchManager\Handler\FiniteHandler">
99
<argument type="service" id="finite.factory" />
1010
</service>
1111
</services>

src/PatchManager/Bundle/Resources/config/services.xml

+4-4
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,16 @@
55
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
66

77
<services>
8-
<service id="patch_manager.request_adapter" class="PatchManager\Bundle\RequestAdapter\RequestStackAdapter">
8+
<service id="patch_manager.request_adapter" class="Cypress\PatchManager\Bundle\RequestAdapter\RequestStackAdapter">
99
<argument type="service" id="request_stack" />
1010
</service>
11-
<service id="patch_manager.operations" public="false" class="PatchManager\Request\Operations">
11+
<service id="patch_manager.operations" public="false" class="Cypress\PatchManager\Request\Operations">
1212
<configurator service="patch_manager.request_adapter" method="setRequestBody" />
1313
</service>
14-
<service id="patch_manager.operation_matcher" public="false" class="PatchManager\OperationMatcher">
14+
<service id="patch_manager.operation_matcher" public="false" class="Cypress\PatchManager\OperationMatcher">
1515
<argument type="service" id="patch_manager.operations" />
1616
</service>
17-
<service id="patch_manager" public="true" class="PatchManager\PatchManager">
17+
<service id="patch_manager" public="true" class="Cypress\PatchManager\PatchManager">
1818
<argument type="service" id="patch_manager.operation_matcher" />
1919
<argument>%patch_manager.strict_mode%</argument>
2020
</service>

src/PatchManager/Event/PatchManagerEvent.php

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<?php
22

3-
namespace PatchManager\Event;
3+
namespace Cypress\PatchManager\Event;
44

5-
use PatchManager\MatchedPatchOperation;
6-
use PatchManager\Patchable;
5+
use Cypress\PatchManager\MatchedPatchOperation;
6+
use Cypress\PatchManager\Patchable;
77
use Symfony\Component\EventDispatcher\Event;
88

99
class PatchManagerEvent extends Event

src/PatchManager/Event/PatchManagerEvents.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
namespace PatchManager\Event;
3+
namespace Cypress\PatchManager\Event;
44

55
final class PatchManagerEvents
66
{

src/PatchManager/Exception/HandlerNotFoundException.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?php
22

33

4-
namespace PatchManager\Exception;
4+
namespace Cypress\PatchManager\Exception;
55

66

77
use Exception;

src/PatchManager/Exception/InvalidJsonRequestContent.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
namespace PatchManager\Exception;
3+
namespace Cypress\PatchManager\Exception;
44

55
class InvalidJsonRequestContent extends PatchManagerException
66
{

src/PatchManager/Exception/MissingOperationNameRequest.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
namespace PatchManager\Exception;
3+
namespace Cypress\PatchManager\Exception;
44

55
use Exception;
66

src/PatchManager/Exception/MissingOperationRequest.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?php
22

33

4-
namespace PatchManager\Exception;
4+
namespace Cypress\PatchManager\Exception;
55

66

77
class MissingOperationRequest extends PatchManagerException

src/PatchManager/Exception/NonExistentOperationException.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
namespace PatchManager\Exception;
3+
namespace Cypress\PatchManager\Exception;
44

55
class NonExistentOperationException extends PatchManagerException
66
{

src/PatchManager/Exception/PatchManagerException.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
namespace PatchManager\Exception;
3+
namespace Cypress\PatchManager\Exception;
44

55
class PatchManagerException extends \Exception
66
{

src/PatchManager/Handler/DataDoctrineHandler.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<?php
22

3-
namespace PatchManager\Handler;
3+
namespace Cypress\PatchManager\Handler;
44

55
use Doctrine\ORM\EntityManagerInterface;
6-
use PatchManager\OperationData;
6+
use Cypress\PatchManager\OperationData;
77
use Symfony\Component\PropertyAccess\PropertyAccessor;
88
use Doctrine\Common\Persistence\Proxy;
99

src/PatchManager/Handler/DataHandler.php

+14-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<?php
22

3-
namespace PatchManager\Handler;
3+
namespace Cypress\PatchManager\Handler;
44

5-
use PatchManager\OperationData;
6-
use PatchManager\PatchOperationHandler;
5+
use Cypress\PatchManager\OperationData;
6+
use Cypress\PatchManager\PatchOperationHandler;
77
use Symfony\Component\OptionsResolver\OptionsResolver;
88
use Symfony\Component\PropertyAccess\PropertyAccessor;
99

@@ -54,4 +54,15 @@ public function configureOptions(OptionsResolver $optionsResolver)
5454
{
5555
$optionsResolver->setRequired(array('property', 'value'));
5656
}
57+
58+
/**
59+
* wether the handler is able to handle the given subject
60+
*
61+
* @param $subject
62+
* @return bool
63+
*/
64+
public function canHandle($subject)
65+
{
66+
return true;
67+
}
5768
}

src/PatchManager/Handler/FiniteHandler.php

+14-3
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
<?php
22

3-
namespace PatchManager\Handler;
3+
namespace Cypress\PatchManager\Handler;
44

55
use Finite\Factory\FactoryInterface;
6-
use PatchManager\OperationData;
7-
use PatchManager\PatchOperationHandler;
6+
use Cypress\PatchManager\OperationData;
7+
use Cypress\PatchManager\PatchOperationHandler;
88
use Symfony\Component\OptionsResolver\OptionsResolver;
99

1010
class FiniteHandler implements PatchOperationHandler
@@ -60,4 +60,15 @@ public function configureOptions(OptionsResolver $optionsResolver)
6060
->setDefined(array('check'))
6161
->setDefaults(array('check' => false));
6262
}
63+
64+
/**
65+
* wether the handler is able to handle the given subject
66+
*
67+
* @param $subject
68+
* @return bool
69+
*/
70+
public function canHandle($subject)
71+
{
72+
return true;
73+
}
6374
}

src/PatchManager/MatchedPatchOperation.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
namespace PatchManager;
3+
namespace Cypress\PatchManager;
44

55
use Symfony\Component\OptionsResolver\OptionsResolver;
66

src/PatchManager/OperationData.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<?php
22

33

4-
namespace PatchManager;
4+
namespace Cypress\PatchManager;
55

6-
use PatchManager\Request\Operations;
6+
use Cypress\PatchManager\Request\Operations;
77
use PhpCollection\Map;
88
use PhpCollection\Sequence;
99

src/PatchManager/OperationMatcher.php

+21-7
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
<?php
22

3-
namespace PatchManager;
3+
namespace Cypress\PatchManager;
44

5-
use PatchManager\Request\Operations;
5+
use Cypress\PatchManager\Request\Operations;
66
use PhpCollection\Sequence;
7+
use PhpOption\Option;
78

89
/**
910
* Match the correct handlers based on actual operations
@@ -38,35 +39,48 @@ public function addHandler(PatchOperationHandler $handler)
3839
}
3940

4041
/**
42+
* @param $subject
43+
*
4144
* @return Sequence
45+
*
46+
* @throws Exception\MissingOperationNameRequest
47+
* @throws Exception\MissingOperationRequest
4248
*/
43-
public function getMatchedOperations()
49+
public function getMatchedOperations($subject)
4450
{
4551
$handlers = $this->handlers;
4652
return $this->operations
4753
->all()
4854
->foldLeft(
4955
new Sequence(),
50-
function (Sequence $matchedOperations, array $operationData) use ($handlers) {
56+
function (Sequence $matchedOperations, array $operationData) use ($handlers, $subject) {
57+
/** @var Option $handler */
5158
$handler = $handlers->find(function (PatchOperationHandler $handler) use ($operationData) {
5259
return $operationData[Operations::OP_KEY_NAME] === $handler->getName();
5360
});
5461
if ($handler->isDefined()) {
55-
$matchedOperations->add(MatchedPatchOperation::create($operationData, $handler->get()));
62+
/** @var PatchOperationHandler $patchOperationHandler */
63+
$patchOperationHandler = $handler->get();
64+
if ($patchOperationHandler->canHandle($subject)) {
65+
$matchedOperations->add(MatchedPatchOperation::create($operationData, $handler->get()));
66+
}
5667
}
5768
return $matchedOperations;
5869
}
5970
);
6071
}
6172

6273
/**
74+
* @param $subject
75+
*
6376
* @return Sequence
77+
*
6478
* @throws Exception\MissingOperationNameRequest
6579
* @throws Exception\MissingOperationRequest
6680
*/
67-
public function getUnmatchedOperations()
81+
public function getUnmatchedOperations($subject)
6882
{
69-
$matchedOperations = $this->getMatchedOperations();
83+
$matchedOperations = $this->getMatchedOperations($subject);
7084
return $this->operations
7185
->all()
7286
->filter(function (array $operationData) use ($matchedOperations) {

0 commit comments

Comments
 (0)