diff --git a/src/predaddy/commandhandling/CommandFunctionDescriptor.php b/src/predaddy/commandhandling/CommandFunctionDescriptor.php index 33e3851..87c214e 100644 --- a/src/predaddy/commandhandling/CommandFunctionDescriptor.php +++ b/src/predaddy/commandhandling/CommandFunctionDescriptor.php @@ -23,7 +23,6 @@ namespace predaddy\commandhandling; -use precore\lang\ObjectClass; use predaddy\messagehandling\DefaultFunctionDescriptor; final class CommandFunctionDescriptor extends DefaultFunctionDescriptor @@ -33,8 +32,8 @@ protected function getBaseMessageClassName() return __NAMESPACE__ . '\Command'; } - protected function canHandleValidMessage(ObjectClass $messageClass) + protected function canHandleValidMessage($object) { - return $messageClass->getName() === $this->getHandledMessageClassName(); + return get_class($object) === $this->getHandledMessageClassName(); } } diff --git a/src/predaddy/messagehandling/DefaultFunctionDescriptor.php b/src/predaddy/messagehandling/DefaultFunctionDescriptor.php index 64c4797..d01c9f2 100644 --- a/src/predaddy/messagehandling/DefaultFunctionDescriptor.php +++ b/src/predaddy/messagehandling/DefaultFunctionDescriptor.php @@ -43,7 +43,7 @@ class DefaultFunctionDescriptor extends Object implements FunctionDescriptor { /** - * @var ObjectClass + * @var string */ private $handledMessageClass = null; private $compatibleMessageClassNames = []; @@ -67,17 +67,17 @@ public function __construct(CallableWrapper $callableWrapper, $priority) } /** - * @param ObjectClass $messageClass + * @param object $message * @return boolean */ - public function isHandlerFor(ObjectClass $messageClass) + public function isHandlerFor($message) { if (!$this->valid) { return false; } - $messageClassName = $messageClass->getName(); + $messageClassName = get_class($message); if (!array_key_exists($messageClassName, $this->compatibleMessageClassNames)) { - $this->compatibleMessageClassNames[$messageClassName] = $this->canHandleValidMessage($messageClass); + $this->compatibleMessageClassNames[$messageClassName] = $this->canHandleValidMessage($message); } return $this->compatibleMessageClassNames[$messageClassName]; } @@ -95,7 +95,7 @@ public function isValid() */ public function getHandledMessageClassName() { - return $this->handledMessageClass->getName(); + return $this->handledMessageClass; } /** @@ -140,9 +140,9 @@ public function getCallableWrapper() return $this->callableWrapper; } - protected function canHandleValidMessage(ObjectClass $messageClass) + protected function canHandleValidMessage($object) { - return $this->handledMessageClass->isAssignableFrom($messageClass); + return is_a($object, $this->handledMessageClass); } protected function getBaseMessageClassName() @@ -169,7 +169,7 @@ private function check() return false; } } - $this->handledMessageClass = ObjectClass::forName($paramType->getName()); + $this->handledMessageClass = $paramType->getName(); return true; } } diff --git a/src/predaddy/messagehandling/FunctionDescriptor.php b/src/predaddy/messagehandling/FunctionDescriptor.php index c8eb513..c700c59 100644 --- a/src/predaddy/messagehandling/FunctionDescriptor.php +++ b/src/predaddy/messagehandling/FunctionDescriptor.php @@ -35,10 +35,10 @@ interface FunctionDescriptor extends Comparable, ObjectInterface public function isValid(); /** - * @param ObjectClass $messageClass + * @param object $message * @return boolean */ - public function isHandlerFor(ObjectClass $messageClass); + public function isHandlerFor($message); /** * @return CallableWrapper diff --git a/src/predaddy/messagehandling/SimpleMessageBus.php b/src/predaddy/messagehandling/SimpleMessageBus.php index 8321688..557fc13 100644 --- a/src/predaddy/messagehandling/SimpleMessageBus.php +++ b/src/predaddy/messagehandling/SimpleMessageBus.php @@ -26,7 +26,6 @@ use ArrayObject; use Closure; use Exception; -use precore\lang\ObjectClass; use precore\util\Collections; use precore\util\Objects; use SplHeap; @@ -216,18 +215,17 @@ protected function dispatch($message, MessageCallback $callback) */ protected function callableWrappersFor($message) { - $objectClass = ObjectClass::forName(get_class($message)); $heap = Collections::createHeap(Collections::reverseOrder()); - self::insertAllHandlers($this->functionDescriptors, $heap, $objectClass); + self::insertAllHandlers($this->functionDescriptors, $heap, $message); foreach ($this->factories as $factory) { /* @var $factoryDescriptor FunctionDescriptor */ $factoryDescriptor = $this->factories[$factory]; - if ($factoryDescriptor->isHandlerFor($objectClass)) { + if ($factoryDescriptor->isHandlerFor($message)) { $handler = call_user_func($factory, $message); $descriptor = $this->handlerDescriptorFactory->create($handler); - self::insertAllHandlers($descriptor->getFunctionDescriptors(), $heap, $objectClass); + self::insertAllHandlers($descriptor->getFunctionDescriptors(), $heap, $message); } } @@ -239,11 +237,11 @@ protected function callableWrappersFor($message) return $res; } - private static function insertAllHandlers($functionDescriptors, SplHeap $heap, ObjectClass $objectClass) + private static function insertAllHandlers($functionDescriptors, SplHeap $heap, $message) { /* @var $functionDescriptor FunctionDescriptor */ foreach ($functionDescriptors as $functionDescriptor) { - if ($functionDescriptor->isHandlerFor($objectClass)) { + if ($functionDescriptor->isHandlerFor($message)) { $heap->insert($functionDescriptor); } } diff --git a/tests/src/predaddy/messagehandling/DefaultFunctionDescriptorTest.php b/tests/src/predaddy/messagehandling/DefaultFunctionDescriptorTest.php index 31fd11f..dec445c 100644 --- a/tests/src/predaddy/messagehandling/DefaultFunctionDescriptorTest.php +++ b/tests/src/predaddy/messagehandling/DefaultFunctionDescriptorTest.php @@ -43,15 +43,15 @@ public function testIsHandlerFor() { $function = function (Message $message) {}; $descriptor = new DefaultFunctionDescriptor(new ClosureWrapper($function), self::$anyPriority); - self::assertTrue($descriptor->isHandlerFor(SimpleMessage::objectClass())); - self::assertTrue($descriptor->isHandlerFor(DeadMessage::objectClass())); + self::assertTrue($descriptor->isHandlerFor(new SimpleMessage())); + self::assertTrue($descriptor->isHandlerFor(new DeadMessage(null))); } public function testInvalidHandlerFunction() { $function = function ($message) {}; $descriptor = new DefaultFunctionDescriptor(new ClosureWrapper($function), self::$anyPriority); - self::assertFalse($descriptor->isHandlerFor(SimpleMessage::objectClass())); + self::assertFalse($descriptor->isHandlerFor(new SimpleMessage())); } public function testComparison() diff --git a/tests/src/predaddy/messagehandling/annotation/AnnotatedMessageHandlerDescriptorTest.php b/tests/src/predaddy/messagehandling/annotation/AnnotatedMessageHandlerDescriptorTest.php index 8841760..499767b 100644 --- a/tests/src/predaddy/messagehandling/annotation/AnnotatedMessageHandlerDescriptorTest.php +++ b/tests/src/predaddy/messagehandling/annotation/AnnotatedMessageHandlerDescriptorTest.php @@ -56,7 +56,7 @@ public function testGetHandleMethodFor() self::assertNotNull($methods); $counter = 0; foreach ($methods as $method) { - if ($method->isHandlerFor($message->getObjectClass())) { + if ($method->isHandlerFor($message)) { $counter++; } }