]> source.dussan.org Git - nextcloud-server.git/commitdiff
Use the new Events in Flow 18535/head
authorRoeland Jago Douma <roeland@famdouma.nl>
Sun, 22 Dec 2019 14:04:39 +0000 (15:04 +0100)
committerRoeland Jago Douma <roeland@famdouma.nl>
Thu, 2 Jan 2020 15:40:49 +0000 (16:40 +0100)
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
apps/workflowengine/lib/Manager.php
apps/workflowengine/tests/ManagerTest.php
lib/composer/composer/autoload_classmap.php
lib/composer/composer/autoload_static.php
lib/public/WorkflowEngine/Events/RegisterChecksEvent.php [new file with mode: 0644]
lib/public/WorkflowEngine/Events/RegisterEntitiesEvent.php [new file with mode: 0644]
lib/public/WorkflowEngine/Events/RegisterOperationsEvent.php [new file with mode: 0644]
lib/public/WorkflowEngine/IManager.php

index 7e447a38a01706990c08e2ad76e3909bbf007b5c..5ba2533ffe61bd81184cb4c910a9b5aa147485f0 100644 (file)
@@ -37,12 +37,16 @@ use OCA\WorkflowEngine\Helper\ScopeContext;
 use OCA\WorkflowEngine\Service\RuleMatcher;
 use OCP\AppFramework\QueryException;
 use OCP\DB\QueryBuilder\IQueryBuilder;
+use OCP\EventDispatcher\IEventDispatcher;
 use OCP\Files\Storage\IStorage;
 use OCP\IDBConnection;
 use OCP\IL10N;
 use OCP\ILogger;
 use OCP\IServerContainer;
 use OCP\IUserSession;
+use OCP\WorkflowEngine\Events\RegisterChecksEvent;
+use OCP\WorkflowEngine\Events\RegisterEntitiesEvent;
+use OCP\WorkflowEngine\Events\RegisterOperationsEvent;
 use OCP\WorkflowEngine\ICheck;
 use OCP\WorkflowEngine\IComplexOperation;
 use OCP\WorkflowEngine\IEntity;
@@ -50,7 +54,7 @@ use OCP\WorkflowEngine\IEntityEvent;
 use OCP\WorkflowEngine\IManager;
 use OCP\WorkflowEngine\IOperation;
 use OCP\WorkflowEngine\IRuleMatcher;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
+use Symfony\Component\EventDispatcher\EventDispatcherInterface as LegacyDispatcher;
 use Symfony\Component\EventDispatcher\GenericEvent;
 
 class Manager implements IManager {
@@ -79,8 +83,8 @@ class Manager implements IManager {
        /** @var IL10N */
        protected $l;
 
-       /** @var EventDispatcherInterface */
-       protected $eventDispatcher;
+       /** @var LegacyDispatcher */
+       protected $legacyEventDispatcher;
 
        /** @var IEntity[] */
        protected $registeredEntities = [];
@@ -100,26 +104,26 @@ class Manager implements IManager {
        /** @var IUserSession */
        protected $session;
 
-       /**
-        * @param IDBConnection $connection
-        * @param IServerContainer $container
-        * @param IL10N $l
-        */
+       /** @var IEventDispatcher */
+       private $dispatcher;
+
        public function __construct(
                IDBConnection $connection,
                IServerContainer $container,
                IL10N $l,
-               EventDispatcherInterface $eventDispatcher,
+               LegacyDispatcher $eventDispatcher,
                ILogger $logger,
-               IUserSession $session
+               IUserSession $session,
+               IEventDispatcher $dispatcher
        ) {
                $this->connection = $connection;
                $this->container = $container;
                $this->l = $l;
-               $this->eventDispatcher = $eventDispatcher;
+               $this->legacyEventDispatcher = $eventDispatcher;
                $this->logger = $logger;
                $this->operationsByScope = new CappedMemoryCache(64);
                $this->session = $session;
+               $this->dispatcher = $dispatcher;
        }
 
        public function getRuleMatcher(): IRuleMatcher {
@@ -606,7 +610,8 @@ class Manager implements IManager {
         * @return IEntity[]
         */
        public function getEntitiesList(): array {
-               $this->eventDispatcher->dispatch(IManager::EVENT_NAME_REG_ENTITY, new GenericEvent($this));
+               $this->dispatcher->dispatchTyped(new RegisterEntitiesEvent($this));
+               $this->legacyEventDispatcher->dispatch(IManager::EVENT_NAME_REG_ENTITY, new GenericEvent($this));
 
                return array_values(array_merge($this->getBuildInEntities(), $this->registeredEntities));
        }
@@ -615,7 +620,8 @@ class Manager implements IManager {
         * @return IOperation[]
         */
        public function getOperatorList(): array {
-               $this->eventDispatcher->dispatch(IManager::EVENT_NAME_REG_OPERATION, new GenericEvent($this));
+               $this->dispatcher->dispatchTyped(new RegisterOperationsEvent($this));
+               $this->legacyEventDispatcher->dispatch(IManager::EVENT_NAME_REG_OPERATION, new GenericEvent($this));
 
                return array_merge($this->getBuildInOperators(), $this->registeredOperators);
        }
@@ -624,7 +630,8 @@ class Manager implements IManager {
         * @return ICheck[]
         */
        public function getCheckList(): array {
-               $this->eventDispatcher->dispatch(IManager::EVENT_NAME_REG_CHECK, new GenericEvent($this));
+               $this->dispatcher->dispatchTyped(new RegisterChecksEvent($this));
+               $this->legacyEventDispatcher->dispatch(IManager::EVENT_NAME_REG_CHECK, new GenericEvent($this));
 
                return array_merge($this->getBuildInChecks(), $this->registeredChecks);
        }
index 82f1653ef2512f274c272bb2096b5a0f4b6c14b8..22d323a94362d9c5b43a8055e9d57f1bf17b80d4 100644 (file)
@@ -26,6 +26,7 @@ use OC\L10N\L10N;
 use OCA\WorkflowEngine\Entity\File;
 use OCA\WorkflowEngine\Helper\ScopeContext;
 use OCA\WorkflowEngine\Manager;
+use OCP\EventDispatcher\IEventDispatcher;
 use OCP\Files\IRootFolder;
 use OCP\IDBConnection;
 use OCP\IL10N;
@@ -57,13 +58,15 @@ class ManagerTest extends TestCase {
        /** @var \PHPUnit\Framework\MockObject\MockObject|ILogger */
        protected $logger;
        /** @var \PHPUnit\Framework\MockObject\MockObject|EventDispatcherInterface */
-       protected $eventDispatcher;
+       protected $legacyDispatcher;
        /** @var MockObject|IServerContainer */
        protected $container;
        /** @var MockObject|IUserSession */
        protected $session;
        /** @var MockObject|L10N */
        protected $l;
+       /** @var MockObject|IEventDispatcher */
+       protected $dispatcher;
 
        protected function setUp(): void {
                parent::setUp();
@@ -77,17 +80,19 @@ class ManagerTest extends TestCase {
                                return vsprintf($text, $parameters);
                        }));
 
-               $this->eventDispatcher = $this->createMock(EventDispatcherInterface::class);
+               $this->legacyDispatcher = $this->createMock(EventDispatcherInterface::class);
                $this->logger = $this->createMock(ILogger::class);
                $this->session = $this->createMock(IUserSession::class);
+               $this->dispatcher = $this->createMock(IEventDispatcher::class);
 
                $this->manager = new Manager(
                        \OC::$server->getDatabaseConnection(),
                        $this->container,
                        $this->l,
-                       $this->eventDispatcher,
+                       $this->legacyDispatcher,
                        $this->logger,
-                       $this->session
+                       $this->session,
+                       $this->dispatcher
                );
                $this->clearTables();
        }
@@ -402,7 +407,7 @@ class ManagerTest extends TestCase {
                /** @var MockObject|IEntity $extraEntity */
                $extraEntity = $this->createMock(IEntity::class);
 
-               $this->eventDispatcher->expects($this->once())
+               $this->legacyDispatcher->expects($this->once())
                        ->method('dispatch')
                        ->with('OCP\WorkflowEngine::registerEntities', $this->anything())
                        ->willReturnCallback(function() use ($extraEntity) {
index b644d420c843420f00927c0cfaf89ac8229086dc..95156cf633eac55aa5ff04f5fbb4ddcc4196ed86 100644 (file)
@@ -489,6 +489,9 @@ return array(
     'OCP\\WorkflowEngine\\EntityContext\\IDisplayText' => $baseDir . '/lib/public/WorkflowEngine/EntityContext/IDisplayText.php',
     'OCP\\WorkflowEngine\\EntityContext\\IIcon' => $baseDir . '/lib/public/WorkflowEngine/EntityContext/IIcon.php',
     'OCP\\WorkflowEngine\\EntityContext\\IUrl' => $baseDir . '/lib/public/WorkflowEngine/EntityContext/IUrl.php',
+    'OCP\\WorkflowEngine\\Events\\RegisterChecksEvent' => $baseDir . '/lib/public/WorkflowEngine/Events/RegisterChecksEvent.php',
+    'OCP\\WorkflowEngine\\Events\\RegisterEntitiesEvent' => $baseDir . '/lib/public/WorkflowEngine/Events/RegisterEntitiesEvent.php',
+    'OCP\\WorkflowEngine\\Events\\RegisterOperationsEvent' => $baseDir . '/lib/public/WorkflowEngine/Events/RegisterOperationsEvent.php',
     'OCP\\WorkflowEngine\\GenericEntityEvent' => $baseDir . '/lib/public/WorkflowEngine/GenericEntityEvent.php',
     'OCP\\WorkflowEngine\\ICheck' => $baseDir . '/lib/public/WorkflowEngine/ICheck.php',
     'OCP\\WorkflowEngine\\IComplexOperation' => $baseDir . '/lib/public/WorkflowEngine/IComplexOperation.php',
index a964fb904b25d8a6c8eb1297e349a4f880f197f5..f6af611ac1e24d21a443e5924538cfabc4d33151 100644 (file)
@@ -518,6 +518,9 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
         'OCP\\WorkflowEngine\\EntityContext\\IDisplayText' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/EntityContext/IDisplayText.php',
         'OCP\\WorkflowEngine\\EntityContext\\IIcon' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/EntityContext/IIcon.php',
         'OCP\\WorkflowEngine\\EntityContext\\IUrl' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/EntityContext/IUrl.php',
+        'OCP\\WorkflowEngine\\Events\\RegisterChecksEvent' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/Events/RegisterChecksEvent.php',
+        'OCP\\WorkflowEngine\\Events\\RegisterEntitiesEvent' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/Events/RegisterEntitiesEvent.php',
+        'OCP\\WorkflowEngine\\Events\\RegisterOperationsEvent' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/Events/RegisterOperationsEvent.php',
         'OCP\\WorkflowEngine\\GenericEntityEvent' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/GenericEntityEvent.php',
         'OCP\\WorkflowEngine\\ICheck' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/ICheck.php',
         'OCP\\WorkflowEngine\\IComplexOperation' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/IComplexOperation.php',
diff --git a/lib/public/WorkflowEngine/Events/RegisterChecksEvent.php b/lib/public/WorkflowEngine/Events/RegisterChecksEvent.php
new file mode 100644 (file)
index 0000000..cb6cca8
--- /dev/null
@@ -0,0 +1,54 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2019, Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\WorkflowEngine\Events;
+
+use OCP\EventDispatcher\Event;
+use OCP\WorkflowEngine\ICheck;
+use OCP\WorkflowEngine\IManager;
+
+/**
+ * @since 18.0.0
+ */
+class RegisterChecksEvent extends Event {
+
+       /** @var IManager */
+       private $manager;
+
+       /**
+        * @since 18.0.0
+        */
+       public function __construct(IManager $manager) {
+               parent::__construct();
+
+               $this->manager = $manager;
+       }
+
+       /**
+        * @since 18.0.0
+        */
+       public function registerCheck(ICheck $check): void {
+               $this->manager->registerCheck($check);
+       }
+}
diff --git a/lib/public/WorkflowEngine/Events/RegisterEntitiesEvent.php b/lib/public/WorkflowEngine/Events/RegisterEntitiesEvent.php
new file mode 100644 (file)
index 0000000..f457a2b
--- /dev/null
@@ -0,0 +1,54 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2019, Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\WorkflowEngine\Events;
+
+use OCP\EventDispatcher\Event;
+use OCP\WorkflowEngine\IEntity;
+use OCP\WorkflowEngine\IManager;
+
+/**
+ * @since 18.0.0
+ */
+class RegisterEntitiesEvent extends Event {
+
+       /** @var IManager */
+       private $manager;
+
+       /**
+        * @since 18.0.0
+        */
+       public function __construct(IManager $manager) {
+               parent::__construct();
+
+               $this->manager = $manager;
+       }
+
+       /**
+        * @since 18.0.0
+        */
+       public function registerEntity(IEntity $entity): void {
+               $this->manager->registerEntity($entity);
+       }
+}
diff --git a/lib/public/WorkflowEngine/Events/RegisterOperationsEvent.php b/lib/public/WorkflowEngine/Events/RegisterOperationsEvent.php
new file mode 100644 (file)
index 0000000..a6bbbcb
--- /dev/null
@@ -0,0 +1,54 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2019, Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\WorkflowEngine\Events;
+
+use OCP\EventDispatcher\Event;
+use OCP\WorkflowEngine\IManager;
+use OCP\WorkflowEngine\IOperation;
+
+/**
+ * @since 18.0.0
+ */
+class RegisterOperationsEvent extends Event {
+
+       /** @var IManager */
+       private $manager;
+
+       /**
+        * @since 18.0.0
+        */
+       public function __construct(IManager $manager) {
+               parent::__construct();
+
+               $this->manager = $manager;
+       }
+
+       /**
+        * @since 18.0.0
+        */
+       public function registerOperation(IOperation $operation): void {
+               $this->manager->registerOperation($operation);
+       }
+}
index bf2335c8a23b5cda13b7f5be0bbb92515bff5c53..c8a7afb315543e65226a2530c5334d7442eaffd2 100644 (file)
@@ -35,29 +35,32 @@ interface IManager {
        const SCOPE_ADMIN = 0;
        const SCOPE_USER = 1;
 
+       /**
+        * @depreacted Will be removed in NC19. Use the dedicated events in OCP\WorkflowEngine\Events
+        */
        const EVENT_NAME_REG_OPERATION = 'OCP\WorkflowEngine::registerOperations';
        const EVENT_NAME_REG_ENTITY = 'OCP\WorkflowEngine::registerEntities';
        const EVENT_NAME_REG_CHECK = 'OCP\WorkflowEngine::registerChecks';
 
        /**
-        * Listen to `\OCP\WorkflowEngine::EVENT_NAME_REG_ENTITY` at the
-        * EventDispatcher for registering your entities.
+        * Listen to `OCP\WorkflowEngine\Events\RegisterEntitiesEvent` at the
+        * IEventDispatcher for registering your entities.
         *
         * @since 18.0.0
         */
        public function registerEntity(IEntity $entity): void;
 
        /**
-        * Listen to `\OCP\WorkflowEngine::EVENT_NAME_REG_OPERATION` at the
-        * EventDispatcher for registering your operators.
+        * Listen to `OCP\WorkflowEngine\Events\RegisterOperationsEvent` at the
+        * IEventDispatcher for registering your operators.
         *
         * @since 18.0.0
         */
        public function registerOperation(IOperation $operator): void;
 
        /**
-        * Listen to `\OCP\WorkflowEngine::EVENT_NAME_REG_CHECK` at the
-        * EventDispatcher for registering your operators.
+        * Listen to `OCP\WorkflowEngine\Events\RegisterChecksEvent` at the
+        * IEventDispatcher for registering your operators.
         *
         * @since 18.0.0
         */