Skip to content

Commit 0924fbc

Browse files
committed
Merge pull request #106 from magento-mustang/MAGETWO-40172
[Mustangs] Milestone 11 Sprint 5 Changes
2 parents 79fa1ec + 2644cac commit 0924fbc

File tree

16 files changed

+231
-46
lines changed

16 files changed

+231
-46
lines changed

app/code/Magento/Braintree/Model/PaymentMethod.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,8 +250,9 @@ public function __construct(
250250
*
251251
* @param \Magento\Framework\DataObject|mixed $data
252252
* @return $this
253+
* @throws LocalizedException
253254
*/
254-
public function assignData($data)
255+
public function assignData(\Magento\Framework\DataObject $data)
255256
{
256257
parent::assignData($data);
257258
$infoInstance = $this->getInfoInstance();

app/code/Magento/Braintree/Model/PaymentMethod/PayPal.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,8 +148,9 @@ public function getConfigData($field, $storeId = null)
148148
*
149149
* @param \Magento\Framework\DataObject|mixed $data
150150
* @return $this
151+
* @throws LocalizedException
151152
*/
152-
public function assignData($data)
153+
public function assignData(\Magento\Framework\DataObject $data)
153154
{
154155
$infoInstance = $this->getInfoInstance();
155156
$infoInstance->setAdditionalInformation('payment_method_nonce', $data->getPaymentMethodNonce());

app/code/Magento/OfflinePayments/Model/Purchaseorder.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,9 @@ class Purchaseorder extends \Magento\Payment\Model\Method\AbstractMethod
4343
*
4444
* @param \Magento\Framework\DataObject|mixed $data
4545
* @return $this
46+
* @throws \Magento\Framework\Exception\LocalizedException
4647
*/
47-
public function assignData($data)
48+
public function assignData(\Magento\Framework\DataObject $data)
4849
{
4950
if (!$data instanceof \Magento\Framework\DataObject) {
5051
$data = new \Magento\Framework\DataObject($data);

app/code/Magento/Payment/Block/ConfigurableInfo.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,13 @@ public function __construct(
3333
$this->config->setPathPattern($data['pathPattern']);
3434
}
3535

36-
if (isset($data['pathPattern'])) {
36+
if (isset($data['methodCode'])) {
3737
$this->config->setMethodCode($data['methodCode']);
3838
}
3939
}
4040

4141
/**
42-
* Prepare PayPal-specific payment information
42+
* Prepare payment information
4343
*
4444
* @param \Magento\Framework\DataObject|array|null $transport
4545
* @return \Magento\Framework\DataObject
@@ -48,15 +48,15 @@ protected function _prepareSpecificInformation($transport = null)
4848
{
4949
$transport = parent::_prepareSpecificInformation($transport);
5050
$payment = $this->getInfo();
51-
$fieldsToStore = explode(',', (string)$this->config->getValue('paymentInfoKeys'));
51+
$storedFields = explode(',', (string)$this->config->getValue('paymentInfoKeys'));
5252
if ($this->getIsSecureMode()) {
53-
$fieldsToStore = array_diff(
54-
$fieldsToStore,
53+
$storedFields = array_diff(
54+
$storedFields,
5555
explode(',', (string)$this->config->getValue('privateInfoKeys'))
5656
);
5757
}
5858

59-
foreach ($fieldsToStore as $field) {
59+
foreach ($storedFields as $field) {
6060
if ($payment->getAdditionalInformation($field) !== null) {
6161
$this->setDataToTransfer(
6262
$transport,

app/code/Magento/Payment/Gateway/Command/GatewayCommand.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ public function execute(array $commandSubject)
7777
);
7878

7979
$response = $this->client->placeRequest($transferO);
80-
if ($this->validator) {
80+
if ($this->validator !== null) {
8181
$result = $this->validator->validate(
8282
array_merge($commandSubject, ['response' => $response])
8383
);

app/code/Magento/Payment/Model/Method/AbstractMethod.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -763,9 +763,10 @@ public function getConfigData($field, $storeId = null)
763763
*
764764
* @param array|\Magento\Framework\DataObject $data
765765
* @return $this
766+
* @throws \Magento\Framework\Exception\LocalizedException
766767
* @api
767768
*/
768-
public function assignData($data)
769+
public function assignData(\Magento\Framework\DataObject $data)
769770
{
770771
if (is_array($data)) {
771772
$this->getInfoInstance()->addData($data);

app/code/Magento/Payment/Model/Method/Adapter.php

Lines changed: 42 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -87,12 +87,12 @@ class Adapter implements MethodInterface
8787
public function __construct(
8888
ManagerInterface $eventManager,
8989
ValueHandlerPoolInterface $valueHandlerPool,
90-
ValidatorPoolInterface $validatorPool,
91-
CommandPoolInterface $commandPool,
9290
PaymentDataObjectFactory $paymentDataObjectFactory,
9391
$code,
9492
$formBlockType,
95-
$infoBlockType
93+
$infoBlockType,
94+
CommandPoolInterface $commandPool = null,
95+
ValidatorPoolInterface $validatorPool = null
9696
) {
9797
$this->valueHandlerPool = $valueHandlerPool;
9898
$this->validatorPool = $validatorPool;
@@ -104,6 +104,20 @@ public function __construct(
104104
$this->paymentDataObjectFactory = $paymentDataObjectFactory;
105105
}
106106

107+
/**
108+
* Returns Validator pool
109+
*
110+
* @return ValidatorPoolInterface
111+
* @throws \DomainException
112+
*/
113+
public function getValidatorPool()
114+
{
115+
if ($this->validatorPool === null) {
116+
throw new \DomainException('Validator pool is not configured for use.');
117+
}
118+
return $this->validatorPool;
119+
}
120+
107121
/**
108122
* {inheritdoc}
109123
*/
@@ -244,15 +258,15 @@ public function isAvailable(CartInterface $quote = null)
244258
$checkResult = new DataObject();
245259
$checkResult->setData('is_available', true);
246260
try {
247-
$validator = $this->validatorPool->get('availability');
261+
$validator = $this->getValidatorPool()->get('availability');
248262
$result = $validator->validate(
249263
[
250264
'payment' => $this->paymentDataObjectFactory->create($this->getInfoInstance())
251265
]
252266
);
253267

254268
$checkResult->setData('is_available', $result->isValid());
255-
} catch (NotFoundException $e) {
269+
} catch (\Exception $e) {
256270
// pass
257271
}
258272

@@ -283,8 +297,8 @@ public function isActive($storeId = null)
283297
public function canUseForCountry($country)
284298
{
285299
try {
286-
$validator = $this->validatorPool->get('country');
287-
} catch (NotFoundException $e) {
300+
$validator = $this->getValidatorPool()->get('country');
301+
} catch (\Exception $e) {
288302
return true;
289303
}
290304

@@ -298,8 +312,8 @@ public function canUseForCountry($country)
298312
public function canUseForCurrency($currencyCode)
299313
{
300314
try {
301-
$validator = $this->validatorPool->get('currency');
302-
} catch (NotFoundException $e) {
315+
$validator = $this->getValidatorPool()->get('currency');
316+
} catch (\Exception $e) {
303317
return true;
304318
}
305319

@@ -353,8 +367,8 @@ public function getConfigData($field, $storeId = null)
353367
public function validate()
354368
{
355369
try {
356-
$validator = $this->validatorPool->get('global');
357-
} catch (NotFoundException $e) {
370+
$validator = $this->getValidatorPool()->get('global');
371+
} catch (\Exception $e) {
358372
return $this;
359373
}
360374

@@ -500,10 +514,15 @@ public function denyPayment(InfoInterface $payment)
500514
* @return void
501515
* @throws NotFoundException
502516
* @throws \Exception
517+
* @throws \DomainException
503518
*/
504519
private function executeCommand($commandCode, InfoInterface $payment, array $arguments = [])
505520
{
506521
if ($this->canPerformCommand($commandCode)) {
522+
if ($this->commandPool === null) {
523+
throw new \DomainException('Command pool is not configured for use.');
524+
}
525+
507526
try {
508527
$command = $this->commandPool->get($commandCode);
509528
$arguments['payment'] = $this->paymentDataObjectFactory->create($payment);
@@ -580,14 +599,20 @@ public function setInfoInstance(InfoInterface $info)
580599

581600
/**
582601
* {inheritdoc}
602+
* @param DataObject $data
603+
* @return $this
583604
*/
584-
public function assignData($data)
605+
public function assignData(\Magento\Framework\DataObject $data)
585606
{
586-
if (is_array($data)) {
587-
$this->getInfoInstance()->addData($data);
588-
} elseif ($data instanceof \Magento\Framework\DataObject) {
589-
$this->getInfoInstance()->addData($data->getData());
590-
}
607+
$this->eventManager->dispatch(
608+
'payment_method_assign_data_' . $this->getCode(),
609+
[
610+
'method' => $this,
611+
'data' => $data
612+
]
613+
);
614+
615+
$this->getInfoInstance()->addData($data->getData());
591616
return $this;
592617
}
593618

app/code/Magento/Payment/Model/Method/Cc.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,9 @@ public function __construct(
8686
*
8787
* @param \Magento\Framework\DataObject|mixed $data
8888
* @return $this
89+
* @throws \Magento\Framework\Exception\LocalizedException
8990
*/
90-
public function assignData($data)
91+
public function assignData(\Magento\Framework\DataObject $data)
9192
{
9293
if (!$data instanceof \Magento\Framework\DataObject) {
9394
$data = new \Magento\Framework\DataObject($data);

app/code/Magento/Payment/Model/MethodInterface.php

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
*/
66
namespace Magento\Payment\Model;
77

8+
use Magento\Framework\DataObject;
89
use Magento\Quote\Api\Data\CartInterface;
910

1011
/**
@@ -237,7 +238,7 @@ public function validate();
237238
/**
238239
* Order payment abstract method
239240
*
240-
* @param \Magento\Framework\DataObject|InfoInterface $payment
241+
* @param InfoInterface $payment
241242
* @param float $amount
242243
* @return $this
243244
* @api
@@ -247,7 +248,7 @@ public function order(\Magento\Payment\Model\InfoInterface $payment, $amount);
247248
/**
248249
* Authorize payment abstract method
249250
*
250-
* @param \Magento\Framework\DataObject|InfoInterface $payment
251+
* @param InfoInterface $payment
251252
* @param float $amount
252253
* @return $this
253254
* @api
@@ -257,7 +258,7 @@ public function authorize(\Magento\Payment\Model\InfoInterface $payment, $amount
257258
/**
258259
* Capture payment abstract method
259260
*
260-
* @param \Magento\Framework\DataObject|InfoInterface $payment
261+
* @param InfoInterface $payment
261262
* @param float $amount
262263
* @return $this
263264
* @api
@@ -267,7 +268,7 @@ public function capture(\Magento\Payment\Model\InfoInterface $payment, $amount);
267268
/**
268269
* Refund specified amount for payment
269270
*
270-
* @param \Magento\Framework\DataObject|InfoInterface $payment
271+
* @param InfoInterface $payment
271272
* @param float $amount
272273
* @return $this
273274
* @api
@@ -277,7 +278,7 @@ public function refund(\Magento\Payment\Model\InfoInterface $payment, $amount);
277278
/**
278279
* Cancel payment abstract method
279280
*
280-
* @param \Magento\Framework\DataObject|InfoInterface $payment
281+
* @param InfoInterface $payment
281282
* @return $this
282283
* @api
283284
*/
@@ -286,7 +287,7 @@ public function cancel(\Magento\Payment\Model\InfoInterface $payment);
286287
/**
287288
* Void payment abstract method
288289
*
289-
* @param \Magento\Framework\DataObject|InfoInterface $payment
290+
* @param InfoInterface $payment
290291
* @return $this
291292
* @api
292293
*/
@@ -332,12 +333,11 @@ public function getConfigData($field, $storeId = null);
332333
/**
333334
* Assign data to info model instance
334335
*
335-
* @param array|\Magento\Framework\DataObject $data
336+
* @param DataObject $data
336337
* @return $this
337338
* @api
338-
* @deprecated
339339
*/
340-
public function assignData($data);
340+
public function assignData(DataObject $data);
341341

342342
/**
343343
* Check whether payment method can be used
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Payment\Observer;
7+
8+
use Magento\Framework\DataObject;
9+
use Magento\Framework\Event\Observer;
10+
use Magento\Framework\Event\ObserverInterface;
11+
use Magento\Payment\Model\MethodInterface;
12+
13+
abstract class AbstractDataAssignObserver implements ObserverInterface
14+
{
15+
const METHOD_CODE = 'method';
16+
17+
const DATA_CODE = 'data';
18+
19+
/**
20+
* Reads method argument
21+
*
22+
* @param Observer $observer
23+
* @return MethodInterface
24+
*/
25+
protected function readMethodArgument(Observer $observer)
26+
{
27+
return $this->readArgument($observer, static::METHOD_CODE, MethodInterface::class);
28+
}
29+
30+
/**
31+
* Reads data argument
32+
*
33+
* @param Observer $observer
34+
* @return DataObject
35+
*/
36+
protected function readDataArgument(Observer $observer)
37+
{
38+
return $this->readArgument($observer, static::DATA_CODE, DataObject::class);
39+
}
40+
41+
/**
42+
* Reads argument of certain type
43+
*
44+
* @param Observer $observer
45+
* @param string $key
46+
* @param string $type
47+
* @return mixed
48+
* @throws \LogicException
49+
*/
50+
protected function readArgument(Observer $observer, $key, $type)
51+
{
52+
$event = $observer->getEvent();
53+
$argument = $event->getDataByKey($key);
54+
55+
if (!$argument instanceof $type) {
56+
throw new \LogicException('Wrong argument type provided.');
57+
}
58+
59+
return $argument;
60+
}
61+
}

app/code/Magento/Payment/Test/Unit/Model/Method/AdapterTest.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,12 +86,12 @@ public function setUp()
8686
$this->adapter = new Adapter(
8787
$this->eventManager,
8888
$this->valueHandlerPool,
89-
$this->validatorPool,
90-
$this->commandPool,
9189
$this->paymentDataObjectFactory,
9290
$this->code,
9391
$this->formBlockType,
94-
$this->infoBlockType
92+
$this->infoBlockType,
93+
$this->commandPool,
94+
$this->validatorPool
9595
);
9696
}
9797

app/code/Magento/Paypal/Model/Express.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -662,8 +662,9 @@ public function getApi()
662662
*
663663
* @param array|\Magento\Framework\DataObject $data
664664
* @return \Magento\Payment\Model\Info
665+
* @throws \Magento\Framework\Exception\LocalizedException
665666
*/
666-
public function assignData($data)
667+
public function assignData(\Magento\Framework\DataObject $data)
667668
{
668669
$result = parent::assignData($data);
669670
$key = ExpressCheckout::PAYMENT_INFO_TRANSPORT_BILLING_AGREEMENT;

0 commit comments

Comments
 (0)