implementsInterface() public static method

Assert that the class implements the interface
public static implementsInterface ( mixed $class, string $interfaceName, string | null $message = null, string | null $propertyPath = null ) : boolean
$class mixed
$interfaceName string
$message string | null
$propertyPath string | null
return boolean
示例#1
0
 /**
  * @param mixed $value
  */
 protected function setValue($value)
 {
     //We use the string assertion first
     parent::setValue($value);
     //and then check, if we really got an item class
     Assertion::implementsInterface($value, 'Prooph\\Processing\\Type\\Type');
 }
 public function create($data)
 {
     if (!array_key_exists("collect_data_trigger", $data)) {
         return new ApiProblemResponse(new ApiProblem(422, 'Root key collect_data_trigger missing in request data'));
     }
     $data = $data["collect_data_trigger"];
     if (!array_key_exists('processing_type', $data)) {
         return new ApiProblemResponse(new ApiProblem(422, 'Key processing_type is missing'));
     }
     $processingType = $data['processing_type'];
     if (!class_exists($processingType)) {
         return new ApiProblemResponse(new ApiProblem(422, 'Provided processing type is unknown'));
     }
     try {
         Assertion::implementsInterface($processingType, 'Prooph\\Processing\\Type\\Type');
     } catch (\InvalidArgumentException $ex) {
         return new ApiProblemResponse(new ApiProblem(422, 'Provided processing type is not valid'));
     }
     $wfMessage = WorkflowMessage::collectDataOf($processingType::prototype(), __CLASS__, $this->ProcessingConfig->getNodeName());
     $this->messageLogger->logIncomingMessage($wfMessage);
     $this->workflowEngine->dispatch($wfMessage);
     /** @var $response Response */
     $response = $this->getResponse();
     $response->getHeaders()->addHeaderLine('Location', $this->url()->fromRoute('prooph.link/processor_proxy/api/messages', ['id' => $wfMessage->uuid()->toString()]));
     $response->setStatusCode(201);
     return $response;
 }
示例#3
0
 /**
  * Create a new value object
  * @param array $value
  */
 public function __construct($value)
 {
     Assertion::isArray($value);
     foreach ($value as $object) {
         Assertion::implementsInterface($object, EventInterface::class);
     }
     $this->value = SplFixedArray::fromArray($value);
 }
示例#4
0
 private function createContainer()
 {
     $container = new ContainerBuilder();
     // retrieve security class
     $values = \Parameters::get('security');
     $class = $values['security']['classes'];
     $session_name = $values['session']['name'];
     // test if class exist and implement interface
     try {
         Assertion::ClassExists($class);
         Assertion::implementsInterface($class, '\\GL\\Core\\Security\\AuthenticationServiceInterface');
     } catch (AssertionFailedException $e) {
         echo $e->getMessage();
         die;
     }
     // Inject mailer
     $container->register('mailer', 'GL\\Core\\Tools\\Mailer');
     // Inject Request
     $container->register('request', 'Symfony\\Component\\HttpFoundation\\Request')->setFactory("Symfony\\Component\\HttpFoundation\\Request::createFromGlobals");
     // Inject Request helper
     $container->register('request_helper', 'GL\\Core\\Helpers\\RequestHelper')->addMethodCall('setRequest', array(new Reference('request')));
     // Inject Twig Service
     $container->register('template', 'GL\\Core\\Templating\\TemplateProvider');
     // Inject RouteCollection
     $container->register('routes', 'Symfony\\Component\\Routing\\RouteCollection')->setFactory("GL\\Core\\Routing\\RouteProvider::GetRouteCollection");
     if (class_exists("\\PHPExcel")) {
         // Inject PHPExcel Wrapper
         $container->register('excel', 'GL\\Core\\Tools\\Excel');
     }
     if (class_exists("\\TCPDF")) {
         // Inject FPDF Wrapper
         $container->register('pdf', 'GL\\Core\\Tools\\PDF');
     }
     // Inject Session
     $container->register('session', 'Symfony\\Component\\HttpFoundation\\Session\\Session')->addMethodCall('setName', array($session_name))->addMethodCall('start');
     // Inject Crsf verifier
     $container->register('crsf', 'GL\\Core\\Security\\FormCrsf')->addArgument(new Reference('session'))->addArgument(new Reference('request'));
     // Inject translator service
     $container->register('translator', 'GL\\Core\\Config\\Translator');
     // Inject Security Service
     $container->register('security', $class)->addArgument(new Reference('session'))->addArgument(new Reference('request'))->addMethodCall('autologin');
     // Inject DebugBar
     $container->register('debug', 'GL\\Core\\Debug\\KLDebugBar');
     // Inject Pdo Object
     $container->register('pdo', 'PDO')->setFactory("GL\\Core\\Helpers\\DbHelper::getPdo");
     // Inject Config
     $container->register('config', 'GL\\Core\\Config\\Config');
     // Inject DbHelper
     $container->register('db', 'GL\\Core\\Helpers\\DbHelper');
     // Inject Redis
     $container->register('redis', 'GL\\Core\\Tools\\Redis');
     // Inject services defined in config/services.yml
     $loader = new YamlFileLoader($container, new FileLocator(SERVICEPATH));
     $loader->load('services.yml');
     $container->compile();
     return $container;
 }
示例#5
0
 /**
  * @param string $relatedTypeClass
  * @param Description $descriptionOfType
  * @param PrototypeProperty[] $typeProperties
  */
 public function __construct($relatedTypeClass, Description $descriptionOfType, array $typeProperties)
 {
     Assertion::implementsInterface($relatedTypeClass, 'Prooph\\Processing\\Type\\Type');
     foreach ($typeProperties as $propertyOfType) {
         Assertion::isInstanceOf($propertyOfType, 'Prooph\\Processing\\Type\\PrototypeProperty');
     }
     $this->relatedTypeClass = $relatedTypeClass;
     $this->descriptionOfType = $descriptionOfType;
     $this->typeProperties = $typeProperties;
     PrototypeRegistry::registerPrototype($this);
 }
 /**
  * @param string $workflowId
  * @param array $startMessage
  * @param string $firstMessageHandlerId
  * @return ScheduleFirstTasksForWorkflow
  */
 public static function withData($workflowId, $startMessage, $firstMessageHandlerId)
 {
     Assertion::uuid($workflowId);
     Assertion::uuid($firstMessageHandlerId);
     Assertion::isArray($startMessage);
     Assertion::keyExists($startMessage, 'message_type');
     Assertion::keyExists($startMessage, 'processing_type');
     $processingType = $startMessage['processing_type'];
     Assertion::implementsInterface($processingType, Type::class);
     return new self(__CLASS__, ['workflow_id' => $workflowId, 'start_message' => $startMessage, 'first_message_handler' => $firstMessageHandlerId]);
 }
 /**
  * Supported processing types can be given as processing prototypes or a list of type classes
  *
  * @param Prototype[]|array $processingTypes
  * @return ProcessingTypes
  */
 public static function support(array $processingTypes)
 {
     $prototypes = [];
     foreach ($processingTypes as $typeClassOrPrototype) {
         if ($typeClassOrPrototype instanceof Prototype) {
             $prototypes[] = $typeClassOrPrototype;
         } else {
             Assertion::string($typeClassOrPrototype);
             Assertion::classExists($typeClassOrPrototype);
             Assertion::implementsInterface($typeClassOrPrototype, Type::class);
             $prototypes[] = $typeClassOrPrototype::prototype();
         }
     }
     return new self($prototypes, false);
 }
示例#8
0
 private function __construct($target, array $allowedTypes, $preferredType = null, array $metadata)
 {
     Assertion::notEmpty($target);
     Assertion::string($target);
     Assertion::notEmpty($allowedTypes);
     $this->assertMetadata($metadata);
     foreach ($allowedTypes as $allowedType) {
         Assertion::classExists($allowedType);
         Assertion::implementsInterface($allowedType, 'Prooph\\Processing\\Type\\Type');
     }
     if (!is_null($preferredType)) {
         Assertion::inArray($preferredType, $allowedTypes);
     }
     $this->target = $target;
     $this->allowedTypes = $allowedTypes;
     $this->preferredType = $preferredType;
     $this->metadata = $metadata;
 }
 /**
  * @param string $messageHandlerId
  * @param string $name
  * @param string $nodeName
  * @param string $handlerType
  * @param string $dataDirection
  * @param array|string $supportedProcessingTypes
  * @param array $processingMetadata
  * @param string $metadataRiotTag
  * @param string $icon
  * @param string $iconType
  * @param null|string $preferredProcessingType
  * @param null|string $handlerProcessingId
  * @param array $additionalData
  * @return InstallMessageHandler
  */
 public static function withData($messageHandlerId, $name, $nodeName, $handlerType, $dataDirection, $supportedProcessingTypes, array $processingMetadata, $metadataRiotTag, $icon, $iconType, $preferredProcessingType = null, $handlerProcessingId = null, array $additionalData = [])
 {
     Assertion::uuid($messageHandlerId);
     Assertion::string($name);
     Assertion::notEmpty($name);
     Assertion::string($nodeName);
     Assertion::notEmpty($nodeName);
     Assertion::string($handlerType);
     Assertion::string($dataDirection);
     Assertion::string($metadataRiotTag);
     Assertion::string($icon);
     Assertion::string($iconType);
     if (!is_null($preferredProcessingType)) {
         Assertion::string($preferredProcessingType);
         Assertion::implementsInterface($preferredProcessingType, Type::class);
     }
     if (!is_null($handlerProcessingId)) {
         Assertion::string($handlerProcessingId);
     }
     if (!is_string($supportedProcessingTypes)) {
         Assertion::isArray($supportedProcessingTypes);
     }
     return new self(__CLASS__, ['message_handler_id' => $messageHandlerId, 'name' => $name, 'node_name' => $nodeName, 'handler_type' => $handlerType, 'data_direction' => $dataDirection, 'supported_processing_types' => $supportedProcessingTypes, 'processing_metadata' => $processingMetadata, 'metadata_riot_tag' => $metadataRiotTag, 'icon' => $icon, 'icon_type' => $iconType, 'preferred_processing_type' => $preferredProcessingType, 'handler_processing_id' => $handlerProcessingId, 'additional_data' => $additionalData]);
 }
示例#10
0
 public function testImplementsInterfaceWithClassObject()
 {
     $class = new \ArrayObject();
     Assertion::implementsInterface($class, '\\Traversable');
     $this->setExpectedException('Assert\\AssertionFailedException', null, Assertion::INTERFACE_NOT_IMPLEMENTED);
     Assertion::implementsInterface($class, '\\SplObserver');
 }
示例#11
0
 private function collectDataFromMultipleFiles($fileNames, WorkflowMessage $workflowMessage, FileTypeAdapter $fileHandler)
 {
     $metadata = $workflowMessage->metadata();
     $fileDataType = isset($metadata[self::META_FILE_DATA_TYPE]) ? $metadata[self::META_FILE_DATA_TYPE] : $workflowMessage->payload()->getTypeClass();
     Assertion::implementsInterface($fileDataType, 'Prooph\\Processing\\Type\\Type');
     $fileDataPrototype = $fileDataType::prototype();
     $fileDataCollection = [];
     $collectedData = null;
     $typeClass = $workflowMessage->payload()->getTypeClass();
     foreach ($fileNames as $filename) {
         $fileDataCollection[] = $fileHandler->readDataForType($filename, $fileDataPrototype, $metadata);
     }
     if (isset($metadata[self::META_MERGE_FILES]) && $metadata[self::META_MERGE_FILES]) {
         $mergedFileData = [];
         foreach ($fileDataCollection as $fileData) {
             if (!is_array($fileData)) {
                 $fileData = [$fileData];
             }
             $mergedFileData = ArrayUtils::merge($mergedFileData, $fileData);
         }
         $collectedData = $typeClass::fromNativeValue($mergedFileData);
     } else {
         if ($typeClass::prototype()->typeDescription()->nativeType() !== NativeType::COLLECTION) {
             throw new \InvalidArgumentException(sprintf("Filename pattern %s matches multiple files but the requested processing type %s is not a collection.", $metadata['filename_pattern'], $typeClass));
         }
         $metadata[self::META_TOTAL_ITEMS] = count($fileDataCollection);
         $collectedData = $typeClass::fromNativeValue($fileDataCollection);
     }
     return $workflowMessage->answerWith($collectedData, $metadata);
 }
 /**
  * @param Column $column
  * @return string
  * @throws \RuntimeException
  */
 private function doctrineColumnToProcessingType(Column $column)
 {
     if (!isset($this->doctrineProcessingTypeMap[$column->getType()->getName()])) {
         throw new \RuntimeException(sprintf("No processing type mapping for doctrine type %s", $column->getType()->getName()));
     }
     $processingType = $this->doctrineProcessingTypeMap[$column->getType()->getName()];
     if (!$column->getNotnull() || $column->getAutoincrement()) {
         $processingType .= "OrNull";
         if (!class_exists($processingType)) {
             throw new \RuntimeException("Missing null type: for nullable column: " . $column->getName());
         }
     }
     Assertion::implementsInterface($processingType, 'Prooph\\Processing\\Type\\Type');
     return $processingType;
 }
示例#13
0
 private function run($instance, $type = "up")
 {
     // test if class exist and implement interface
     try {
         $class = get_class($instance);
         Assertion::ClassExists($class);
         Assertion::implementsInterface($class, '\\GL\\Core\\Migration\\MigrationInterface');
         $max = 0;
         // get all migrations in db
         $migrations = MigrationModel::all();
         // find max batch id version
         if (count($migrations) > 0) {
             $max = $migrations->max('db_version');
         }
         $batchid = $max + 1;
         // retrieve className
         $id = $instance->getUniqueTag();
         // find if this instance was not executed
         $exec = MigrationModel::where('migration', '=', $id)->first();
         $bExec = true;
         if ($exec != null) {
             if ($exec->status == $type) {
                 // always executed
                 $bExec = false;
             }
         }
         if ($bExec) {
             $instance->{$type}();
             // insert in db
             if ($exec == null) {
                 $exec = new MigrationModel();
             }
             $exec->class = $class;
             $exec->migration = $id;
             $exec->status = $type;
             $exec->db_version = $batchid;
             $exec->save();
         }
     } catch (\Exception $ex) {
         echo $ex;
     } catch (AssertionFailedException $e) {
         echo $e;
     }
 }
示例#14
0
 /**
  * Function execute before action execute
  * @param string $route actual route
  * @return boolean
  */
 public function executeBefores($route)
 {
     $ret = false;
     $fnArray = \Functions::getAll();
     if (isset($fnArray)) {
         foreach ($fnArray as $key => $value) {
             if ($value["type"] == "before") {
                 // for each global function defined
                 $arrRoutes = isset($value["routes"]) ? $value["routes"] : null;
                 $scope = isset($value["scope"]) ? $value["scope"] : "all";
                 $class = $value["class"];
                 // test if class exist and implements interface
                 Assertion::ClassExists($class);
                 Assertion::implementsInterface($class, '\\GL\\Core\\Controller\\BeforeFunctionInterface');
                 $bExecute = $this->IsAllowed($arrRoutes, $route, $scope);
                 if ($bExecute) {
                     $exc = new $class($this->_container);
                     $ret = $exc->execute();
                 }
             }
         }
     }
     return $ret;
 }
示例#15
0
 /**
  * @param string $newTypeClass
  */
 public function changeTypeClass($newTypeClass)
 {
     Assertion::string($newTypeClass);
     Assertion::implementsInterface($newTypeClass, 'Prooph\\Processing\\Type\\Type');
     $this->typeClass = $newTypeClass;
     if (is_null($this->data) && !is_null($this->type)) {
         $this->data = $this->extractTypeData();
     }
     $this->type = null;
 }
示例#16
0
 /**
  * @param array $taskDefinition
  * @return CollectData
  */
 private function createCollectDataTaskFromDefinition(array $taskDefinition)
 {
     Assertion::keyExists($taskDefinition, "source");
     Assertion::notEmpty($taskDefinition["source"]);
     Assertion::string($taskDefinition["source"]);
     Assertion::keyExists($taskDefinition, "processing_type");
     Assertion::implementsInterface($taskDefinition["processing_type"], 'Prooph\\Processing\\Type\\Type');
     $processingType = $taskDefinition["processing_type"];
     $prototype = $processingType::prototype();
     $metadata = isset($taskDefinition['metadata']) ? $taskDefinition['metadata'] : array();
     return CollectData::from($taskDefinition["source"], $prototype, $metadata);
 }