From 425aa595b0e12f672676395d5ae5931b542b92ce Mon Sep 17 00:00:00 2001
From: Andy Summers <andrew.summers@wisc.edu>
Date: Fri, 11 Aug 2017 09:57:13 -0500
Subject: [PATCH] PHP7-ify Order Header classes, add `ServiceResponseInterface`

---
 .../edu/wisc/services/cbs/api/MockService.php |  8 +--
 .../cbs/common/AbstractServiceResponse.php    |  6 +--
 .../cbs/common/ServiceResponseInterface.php   | 20 +++++++
 .../cbs/order/OrderServiceResponse.php        |  3 +-
 .../order/header/MockOrderHeaderService.php   |  7 +--
 .../services/cbs/order/header/OrderHeader.php | 54 +++++++++----------
 .../OrderHeaderInputParametersMapper.php      |  2 +-
 .../cbs/order/header/OrderHeaderService.php   |  2 +-
 .../order/header/SoapOrderHeaderService.php   |  2 +-
 .../MockOrderInterfacingService.php           |  6 +--
 .../cbs/order/line/MockOrderLineService.php   |  4 +-
 .../services/cbs/price/MockPriceService.php   |  4 +-
 .../cbs/product/MockProductService.php        |  4 +-
 13 files changed, 73 insertions(+), 49 deletions(-)
 create mode 100644 src/main/edu/wisc/services/cbs/common/ServiceResponseInterface.php

diff --git a/src/main/edu/wisc/services/cbs/api/MockService.php b/src/main/edu/wisc/services/cbs/api/MockService.php
index 280cf16..940b661 100644
--- a/src/main/edu/wisc/services/cbs/api/MockService.php
+++ b/src/main/edu/wisc/services/cbs/api/MockService.php
@@ -1,7 +1,7 @@
 <?php
 namespace edu\wisc\services\cbs\api;
 
-use edu\wisc\services\cbs\common\AbstractServiceResponse;
+use edu\wisc\services\cbs\common\ServiceResponseInterface;
 
 /**
  * A mock implementation of a CBS service.
@@ -12,9 +12,9 @@ interface MockService extends Service
     /**
      * Creates a mock implementation of a {@link Service}.
      *
-     * Service will respond with the given {@link AbstractServiceResponse}, or a successful response if one is not
+     * Service will respond with the given {@link ServiceResponseInterface}, or a successful response if one is not
      * given.
-     * @param AbstractServiceResponse|null $response  defaults to successful if null
+     * @param ServiceResponseInterface|null $response  defaults to successful if null
      */
-    public function __construct(AbstractServiceResponse $response = null);
+    public function __construct(ServiceResponseInterface $response = null);
 }
diff --git a/src/main/edu/wisc/services/cbs/common/AbstractServiceResponse.php b/src/main/edu/wisc/services/cbs/common/AbstractServiceResponse.php
index a8d6ae8..603c75a 100644
--- a/src/main/edu/wisc/services/cbs/common/AbstractServiceResponse.php
+++ b/src/main/edu/wisc/services/cbs/common/AbstractServiceResponse.php
@@ -5,7 +5,7 @@ namespace edu\wisc\services\cbs\common;
 /**
  * Abstract base class defining common service response functions.
  */
-abstract class AbstractServiceResponse
+abstract class AbstractServiceResponse implements ServiceResponseInterface
 {
 
     /** @var boolean */
@@ -28,7 +28,7 @@ abstract class AbstractServiceResponse
     /**
      * @return bool
      */
-    public function isSuccess()
+    public function isSuccess(): bool
     {
         return $this->success;
     }
@@ -36,7 +36,7 @@ abstract class AbstractServiceResponse
     /**
      * @return string
      */
-    public function getMessage()
+    public function getMessage(): string
     {
         return $this->message;
     }
diff --git a/src/main/edu/wisc/services/cbs/common/ServiceResponseInterface.php b/src/main/edu/wisc/services/cbs/common/ServiceResponseInterface.php
new file mode 100644
index 0000000..fdc7d52
--- /dev/null
+++ b/src/main/edu/wisc/services/cbs/common/ServiceResponseInterface.php
@@ -0,0 +1,20 @@
+<?php
+
+namespace edu\wisc\services\cbs\common;
+
+/**
+ */
+interface ServiceResponseInterface
+{
+
+    /**
+     * @return bool
+     */
+    public function isSuccess(): bool;
+
+    /**
+     * @return string
+     */
+    public function getMessage(): string;
+
+}
\ No newline at end of file
diff --git a/src/main/edu/wisc/services/cbs/order/OrderServiceResponse.php b/src/main/edu/wisc/services/cbs/order/OrderServiceResponse.php
index a280870..9eabfc9 100644
--- a/src/main/edu/wisc/services/cbs/order/OrderServiceResponse.php
+++ b/src/main/edu/wisc/services/cbs/order/OrderServiceResponse.php
@@ -3,10 +3,11 @@
 namespace edu\wisc\services\cbs\order;
 
 use edu\wisc\services\cbs\common\AbstractServiceResponse;
+use edu\wisc\services\cbs\common\ServiceResponseInterface;
 
 /**
  * The status of a call to an {@link OrderService} class.
  */
-class OrderServiceResponse extends AbstractServiceResponse
+class OrderServiceResponse extends AbstractServiceResponse implements ServiceResponseInterface
 {
 }
diff --git a/src/main/edu/wisc/services/cbs/order/header/MockOrderHeaderService.php b/src/main/edu/wisc/services/cbs/order/header/MockOrderHeaderService.php
index 23193aa..1573fb8 100644
--- a/src/main/edu/wisc/services/cbs/order/header/MockOrderHeaderService.php
+++ b/src/main/edu/wisc/services/cbs/order/header/MockOrderHeaderService.php
@@ -3,9 +3,10 @@
 namespace edu\wisc\services\cbs\order\header;
 
 use edu\wisc\services\cbs\api\MockService;
+use edu\wisc\services\cbs\common\ServiceResponseInterface;
 use edu\wisc\services\cbs\order\OrderServiceResponse;
 
-class MockOrderHeaderService implements OrderHeaderService
+class MockOrderHeaderService implements OrderHeaderService, MockService
 {
 
     /** @var OrderServiceResponse */
@@ -14,7 +15,7 @@ class MockOrderHeaderService implements OrderHeaderService
     /**
      * {@inheritdoc}
      */
-    public function __construct(OrderServiceResponse $response = null)
+    public function __construct(ServiceResponseInterface $response = null)
     {
         if ($response === null) {
             $this->response = new OrderServiceResponse(
@@ -29,7 +30,7 @@ class MockOrderHeaderService implements OrderHeaderService
     /**
      * {@inheritdoc}
      */
-    public function createOrderHeader(OrderHeader $header)
+    public function createOrderHeader(OrderHeader $header): OrderServiceResponse
     {
         return $this->response;
     }
diff --git a/src/main/edu/wisc/services/cbs/order/header/OrderHeader.php b/src/main/edu/wisc/services/cbs/order/header/OrderHeader.php
index 1fa7730..4bd791d 100644
--- a/src/main/edu/wisc/services/cbs/order/header/OrderHeader.php
+++ b/src/main/edu/wisc/services/cbs/order/header/OrderHeader.php
@@ -11,7 +11,7 @@ use edu\wisc\services\cbs\order\payment\OrderPayment;
 class OrderHeader extends MagentoOrder
 {
 
-    /** @var string order number from Magento */
+    /** @var float order number from Magento */
     private $orderNumber;
 
     /** @var string Unique identifier, format "MAGE" + Magento order number */
@@ -61,18 +61,18 @@ class OrderHeader extends MagentoOrder
     private $testMode;
 
     /**
-     * @return string
+     * @return float
      */
-    public function getOrderNumber()
+    public function getOrderNumber(): float
     {
         return $this->orderNumber;
     }
 
     /**
-     * @param string $orderNumber
+     * @param float $orderNumber
      * @return OrderHeader
      */
-    public function setOrderNumber($orderNumber)
+    public function setOrderNumber(float $orderNumber): OrderHeader
     {
         $this->orderNumber = $orderNumber;
         return $this;
@@ -81,7 +81,7 @@ class OrderHeader extends MagentoOrder
     /**
      * @return string
      */
-    public function getOrigSystemDocumentRef()
+    public function getOrigSystemDocumentRef(): string
     {
         return $this->origSystemDocumentRef;
     }
@@ -90,7 +90,7 @@ class OrderHeader extends MagentoOrder
      * @param string $origSystemDocumentRef
      * @return OrderHeader
      */
-    public function setOrigSystemDocumentRef($origSystemDocumentRef)
+    public function setOrigSystemDocumentRef(string $origSystemDocumentRef): OrderHeader
     {
         $this->origSystemDocumentRef = $origSystemDocumentRef;
         return $this;
@@ -99,7 +99,7 @@ class OrderHeader extends MagentoOrder
     /**
      * @return string
      */
-    public function getCustomerType()
+    public function getCustomerType(): string
     {
         return $this->customerType;
     }
@@ -108,7 +108,7 @@ class OrderHeader extends MagentoOrder
      * @param string $customerType
      * @return OrderHeader
      */
-    public function setCustomerType($customerType)
+    public function setCustomerType(string $customerType): OrderHeader
     {
         $this->customerType = $customerType;
         return $this;
@@ -117,7 +117,7 @@ class OrderHeader extends MagentoOrder
     /**
      * @return string
      */
-    public function getCustomerIdentifier()
+    public function getCustomerIdentifier(): string
     {
         return $this->customerIdentifier;
     }
@@ -126,7 +126,7 @@ class OrderHeader extends MagentoOrder
      * @param string $customerIdentifier
      * @return OrderHeader
      */
-    public function setCustomerIdentifier($customerIdentifier)
+    public function setCustomerIdentifier(string $customerIdentifier): OrderHeader
     {
         $this->customerIdentifier = $customerIdentifier;
         return $this;
@@ -135,7 +135,7 @@ class OrderHeader extends MagentoOrder
     /**
      * @return string
      */
-    public function getCustomerIdentifierType()
+    public function getCustomerIdentifierType(): string
     {
         return $this->customerIdentifierType;
     }
@@ -144,7 +144,7 @@ class OrderHeader extends MagentoOrder
      * @param string $customerIdentifierType
      * @return OrderHeader
      */
-    public function setCustomerIdentifierType($customerIdentifierType)
+    public function setCustomerIdentifierType(string $customerIdentifierType): OrderHeader
     {
         $this->customerIdentifierType = $customerIdentifierType;
         return $this;
@@ -153,7 +153,7 @@ class OrderHeader extends MagentoOrder
     /**
      * @return string
      */
-    public function getPurchaserIdentifier()
+    public function getPurchaserIdentifier(): string
     {
         return $this->purchaserIdentifier;
     }
@@ -162,7 +162,7 @@ class OrderHeader extends MagentoOrder
      * @param string $purchaserIdentifier
      * @return OrderHeader
      */
-    public function setPurchaserIdentifier($purchaserIdentifier)
+    public function setPurchaserIdentifier(string $purchaserIdentifier): OrderHeader
     {
         $this->purchaserIdentifier = $purchaserIdentifier;
         return $this;
@@ -171,7 +171,7 @@ class OrderHeader extends MagentoOrder
     /**
      * @return string
      */
-    public function getPurchaserIdentifierType()
+    public function getPurchaserIdentifierType(): string
     {
         return $this->purchaserIdentifierType;
     }
@@ -180,7 +180,7 @@ class OrderHeader extends MagentoOrder
      * @param string $purchaserIdentifierType
      * @return OrderHeader
      */
-    public function setPurchaserIdentifierType($purchaserIdentifierType)
+    public function setPurchaserIdentifierType(string $purchaserIdentifierType): OrderHeader
     {
         $this->purchaserIdentifierType = $purchaserIdentifierType;
         return $this;
@@ -189,7 +189,7 @@ class OrderHeader extends MagentoOrder
     /**
      * @return string
      */
-    public function getCustomerReferenceField()
+    public function getCustomerReferenceField(): string
     {
         return $this->customerReferenceField;
     }
@@ -198,7 +198,7 @@ class OrderHeader extends MagentoOrder
      * @param string $customerReferenceField
      * @return OrderHeader
      */
-    public function setCustomerReferenceField($customerReferenceField)
+    public function setCustomerReferenceField(string $customerReferenceField): OrderHeader
     {
         $this->customerReferenceField = $customerReferenceField;
         return $this;
@@ -207,7 +207,7 @@ class OrderHeader extends MagentoOrder
     /**
      * @return string
      */
-    public function getOrderSource()
+    public function getOrderSource(): string
     {
         return $this->orderSource;
     }
@@ -216,7 +216,7 @@ class OrderHeader extends MagentoOrder
      * @param string $orderSource
      * @return OrderHeader
      */
-    public function setOrderSource($orderSource)
+    public function setOrderSource(string $orderSource): OrderHeader
     {
         $this->orderSource = $orderSource;
         return $this;
@@ -225,7 +225,7 @@ class OrderHeader extends MagentoOrder
     /**
      * @return string
      */
-    public function getInterfaceTypeFlag()
+    public function getInterfaceTypeFlag(): string
     {
         return $this->interfaceTypeFlag;
     }
@@ -234,7 +234,7 @@ class OrderHeader extends MagentoOrder
      * @param string $interfaceTypeFlag
      * @return OrderHeader
      */
-    public function setInterfaceTypeFlag($interfaceTypeFlag)
+    public function setInterfaceTypeFlag(string $interfaceTypeFlag): OrderHeader
     {
         $this->interfaceTypeFlag = $interfaceTypeFlag;
         return $this;
@@ -243,7 +243,7 @@ class OrderHeader extends MagentoOrder
     /**
      * @return string
      */
-    public function getDefaultSet()
+    public function getDefaultSet(): string
     {
         return $this->defaultSet;
     }
@@ -252,7 +252,7 @@ class OrderHeader extends MagentoOrder
      * @param string $defaultSet
      * @return OrderHeader
      */
-    public function setDefaultSet($defaultSet)
+    public function setDefaultSet(string $defaultSet): OrderHeader
     {
         $this->defaultSet = $defaultSet;
         return $this;
@@ -261,7 +261,7 @@ class OrderHeader extends MagentoOrder
     /**
      * @return string
      */
-    public function getTestMode()
+    public function getTestMode(): string
     {
         return $this->testMode;
     }
@@ -270,7 +270,7 @@ class OrderHeader extends MagentoOrder
      * @param string $testMode
      * @return OrderHeader
      */
-    public function setTestMode($testMode)
+    public function setTestMode(string $testMode): OrderHeader
     {
         $this->testMode = $testMode;
         return $this;
diff --git a/src/main/edu/wisc/services/cbs/order/header/OrderHeaderInputParametersMapper.php b/src/main/edu/wisc/services/cbs/order/header/OrderHeaderInputParametersMapper.php
index 84d18ad..4ad8a15 100644
--- a/src/main/edu/wisc/services/cbs/order/header/OrderHeaderInputParametersMapper.php
+++ b/src/main/edu/wisc/services/cbs/order/header/OrderHeaderInputParametersMapper.php
@@ -18,7 +18,7 @@ class OrderHeaderInputParametersMapper
     public static function toInputParameters(OrderHeader $header)
     {
         return (new InputParameters(
-            '',
+            0.0,
             '',
             '',
             '',
diff --git a/src/main/edu/wisc/services/cbs/order/header/OrderHeaderService.php b/src/main/edu/wisc/services/cbs/order/header/OrderHeaderService.php
index 728c0e0..49a3e43 100644
--- a/src/main/edu/wisc/services/cbs/order/header/OrderHeaderService.php
+++ b/src/main/edu/wisc/services/cbs/order/header/OrderHeaderService.php
@@ -15,6 +15,6 @@ interface OrderHeaderService extends Service
      * @param OrderHeader $header
      * @return OrderServiceResponse
      */
-    public function createOrderHeader(OrderHeader $header);
+    public function createOrderHeader(OrderHeader $header): OrderServiceResponse;
 
 }
\ No newline at end of file
diff --git a/src/main/edu/wisc/services/cbs/order/header/SoapOrderHeaderService.php b/src/main/edu/wisc/services/cbs/order/header/SoapOrderHeaderService.php
index 589bc0f..4adab40 100644
--- a/src/main/edu/wisc/services/cbs/order/header/SoapOrderHeaderService.php
+++ b/src/main/edu/wisc/services/cbs/order/header/SoapOrderHeaderService.php
@@ -52,7 +52,7 @@ class SoapOrderHeaderService implements OrderHeaderService, SoapService
     /**
      * {@inheritdoc}
      */
-    public function createOrderHeader(OrderHeader $header)
+    public function createOrderHeader(OrderHeader $header): OrderServiceResponse
     {
         /** @var OutputParameters */
         $outputParameters = $this->soapClient->HEADER_CREATE(
diff --git a/src/main/edu/wisc/services/cbs/order/interfacing/MockOrderInterfacingService.php b/src/main/edu/wisc/services/cbs/order/interfacing/MockOrderInterfacingService.php
index 2408537..017ae86 100644
--- a/src/main/edu/wisc/services/cbs/order/interfacing/MockOrderInterfacingService.php
+++ b/src/main/edu/wisc/services/cbs/order/interfacing/MockOrderInterfacingService.php
@@ -3,19 +3,19 @@
 namespace edu\wisc\services\cbs\order\interfacing;
 
 use edu\wisc\services\cbs\api\MockService;
-use edu\wisc\services\cbs\common\AbstractServiceResponse;
+use edu\wisc\services\cbs\common\ServiceResponseInterface;
 use edu\wisc\services\cbs\order\OrderServiceResponse;
 
 class MockOrderInterfacingService implements OrderInterfacingService, MockService
 {
 
-    /** @var AbstractServiceResponse */
+    /** @var OrderServiceResponse */
     private $response;
 
     /**
      * {@inheritdoc}
      */
-    public function __construct(AbstractServiceResponse $response = null)
+    public function __construct(ServiceResponseInterface $response = null)
     {
         if ($response === null) {
             $this->response = new OrderServiceResponse(
diff --git a/src/main/edu/wisc/services/cbs/order/line/MockOrderLineService.php b/src/main/edu/wisc/services/cbs/order/line/MockOrderLineService.php
index 69f3d29..44ed049 100644
--- a/src/main/edu/wisc/services/cbs/order/line/MockOrderLineService.php
+++ b/src/main/edu/wisc/services/cbs/order/line/MockOrderLineService.php
@@ -2,7 +2,7 @@
 namespace edu\wisc\services\cbs\order\line;
 
 use edu\wisc\services\cbs\api\MockService;
-use edu\wisc\services\cbs\common\AbstractServiceResponse;
+use edu\wisc\services\cbs\common\ServiceResponseInterface;
 use edu\wisc\services\cbs\order\OrderServiceResponse;
 
 class MockOrderLineService implements OrderLineService, MockService
@@ -12,7 +12,7 @@ class MockOrderLineService implements OrderLineService, MockService
     private $response;
 
     /** @inheritdoc */
-    public function __construct(AbstractServiceResponse $response = null)
+    public function __construct(ServiceResponseInterface $response = null)
     {
         $this->response = $response;
         if ($response === null) {
diff --git a/src/main/edu/wisc/services/cbs/price/MockPriceService.php b/src/main/edu/wisc/services/cbs/price/MockPriceService.php
index 56a57c0..2047815 100644
--- a/src/main/edu/wisc/services/cbs/price/MockPriceService.php
+++ b/src/main/edu/wisc/services/cbs/price/MockPriceService.php
@@ -4,6 +4,8 @@ namespace edu\wisc\services\cbs\price;
 
 use edu\wisc\services\cbs\api\MockService;
 use edu\wisc\services\cbs\common\AbstractServiceResponse;
+use edu\wisc\services\cbs\common\ServiceResponseInterface;
+use edu\wisc\services\cbs\order\OrderServiceResponse;
 use Money\Money;
 
 class MockPriceService implements PriceService, MockService
@@ -15,7 +17,7 @@ class MockPriceService implements PriceService, MockService
     /**
      * @inheritdoc
      */
-    public function __construct(AbstractServiceResponse $response = null)
+    public function __construct(ServiceResponseInterface $response = null)
     {
         if ($response === null) {
             $this->response = new PriceServiceResponse(true, 'Mock CBS Product Price Response');
diff --git a/src/main/edu/wisc/services/cbs/product/MockProductService.php b/src/main/edu/wisc/services/cbs/product/MockProductService.php
index b1f2ca8..07b43ac 100755
--- a/src/main/edu/wisc/services/cbs/product/MockProductService.php
+++ b/src/main/edu/wisc/services/cbs/product/MockProductService.php
@@ -3,7 +3,7 @@
 namespace edu\wisc\services\cbs\product;
 
 use edu\wisc\services\cbs\api\MockService;
-use edu\wisc\services\cbs\common\AbstractServiceResponse;
+use edu\wisc\services\cbs\common\ServiceResponseInterface;
 
 class MockProductService implements ProductService, MockService
 {
@@ -14,7 +14,7 @@ class MockProductService implements ProductService, MockService
     /**
      * @inheritdoc
      */
-    public function __construct(AbstractServiceResponse $response = null)
+    public function __construct(ServiceResponseInterface $response = null)
     {
         if (null === $response) {
             $this->response = new ProductServiceResponse(true, 'Mock CBS Response');
-- 
GitLab