Skip to content

Commit

Permalink
Intercepting gateway + acceptance tests
Browse files Browse the repository at this point in the history
  • Loading branch information
dgafka committed Jul 9, 2019
1 parent 68dd20c commit 64e7d0c
Show file tree
Hide file tree
Showing 29 changed files with 810 additions and 476 deletions.
6 changes: 2 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,6 @@

- fix issue with reading annotations from src
- change namespace to configuration instead of parameter
- register transaction interceptor as direct object
- inbound adapter as annotation
- @inheritdoc + extra annotations
- aggregate root as a service
- allow simple types for aggregate commands/queries
- write tests for bus routers
Expand All @@ -14,4 +11,5 @@
- presend interceptor. So it can be called before sending to channel
- amqp add possibility to define point to point or publish subscribe amqp backend channel
- possibility to order event handler
- gateway and endpoint same parameter converters? Check how it's handled in java
- gateway and endpoint same parameter converters? Check how it's handled in java
- should throw exception if class not found
2 changes: 1 addition & 1 deletion behat.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ default:
suites:
default:
paths: [ tests/Messaging/Behat/features, tests/DomainModel/Behat/features ]
contexts: [ Test\SimplyCodedSoftware\Messaging\Behat\Bootstrap\DomainContext, Test\SimplyCodedSoftware\DomainModel\Behat\Bootstrap\DomainContext ]
contexts: [ Test\SimplyCodedSoftware\Messaging\Behat\Bootstrap\DomainContext, Test\SimplyCodedSoftware\DomainModel\Behat\Bootstrap\DomainContext, Test\SimplyCodedSoftware\Messaging\Behat\Bootstrap\AnnotationBasedMessagingContext ]
Original file line number Diff line number Diff line change
Expand Up @@ -329,20 +329,10 @@ private function getPathsToSearchIn(string $rootProjectDir, array $namespaces, b
{
$paths = [];

$namespaceToRegex = "";
$isFirst = true;
foreach ($namespaces as $namespace) {
$namespaceSplit = explode("\\", $namespace);
$rootNamespace = $namespaceSplit[0];

$namespaceToRegex .= $isFirst ? ("^" . $rootNamespace) : ("|^" . $rootNamespace);
$isFirst = false;
}

$autoloadPsr4 = require($rootProjectDir . '/vendor/composer/autoload_psr4.php');
$autoloadPsr0 = require($rootProjectDir . '/vendor/composer/autoload_namespaces.php');
$paths = $this->mergeWith($namespaceToRegex, $autoloadPsr4, $paths, $rootProjectDir, $loadSrc);
$paths = $this->mergeWith($namespaceToRegex, $autoloadPsr0, $paths, $rootProjectDir, $loadSrc);
$paths = $this->mergeWith($namespaces, $autoloadPsr4, $paths, $rootProjectDir, $loadSrc);
$paths = $this->mergeWith($namespaces, $autoloadPsr0, $paths, $rootProjectDir, $loadSrc);

return array_unique($paths);
}
Expand All @@ -365,22 +355,30 @@ private function isInAvailableNamespaces(array $namespaces, $namespace): bool
}

/**
* @param string $namespaceToRegex
* @param array $namespacesToUse
* @param array $autoload
* @param array $paths
*
* @param string $rootProjectDir
* @param bool $loadSrc
* @return array
*/
private function mergeWith(string $namespaceToRegex, array $autoload, array $paths, string $rootProjectDir, bool $loadSrc)
private function mergeWith(array $namespacesToUse, array $autoload, array $paths, string $rootProjectDir, bool $loadSrc)
{
$regex = "#{$namespaceToRegex}#";
$resolvedPathToSrc = realpath($rootProjectDir) . '/src';
foreach ($autoload as $namespace => $namespacePath) {
if ($loadSrc && (in_array($resolvedPathToSrc, $namespacePath)) || preg_match($regex, $namespace)) {
foreach ($namespacePath as $pathForNamespace) {
$paths[] = $pathForNamespace;
foreach ($namespacesToUse as $namespaceToUse) {
$namespaceSplit = explode("\\", $namespaceToUse);
$rootNamespace = $namespaceSplit[0];

$namespaceToRegex = ("^" . $rootNamespace);
$regex = "#^{$namespaceToRegex}#";

$resolvedPathToSrc = realpath($rootProjectDir) . '/src';
foreach ($autoload as $namespace => $namespacePath) {
if ($loadSrc && (in_array($resolvedPathToSrc, $namespacePath)) || preg_match($regex, $namespace)) {
foreach ($namespacePath as $pathForNamespace) {
$suffixPath = str_replace("\\", "/", trim(str_replace(trim($namespace, "\\"), "", $namespaceToUse), "\\"));
$paths[] = $pathForNamespace . DIRECTORY_SEPARATOR . $suffixPath;
}
}
}
}
Expand Down
15 changes: 15 additions & 0 deletions src/Messaging/Config/InMemoryReferenceTypeFromNameResolver.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,21 @@ public static function createFromAssociativeArray(array $references) : self
return new self($references);
}

/**
* @param array $references
* @return InMemoryReferenceTypeFromNameResolver
*/
public static function createFromObjects(array $references) : self
{
$objectTypes = [];

foreach ($references as $referenceName => $object) {
$objectTypes[$referenceName] = get_class($object);
}

return self::createFromAssociativeArray($objectTypes);
}

/**
* @return InMemoryReferenceTypeFromNameResolver
*/
Expand Down
Loading

0 comments on commit 64e7d0c

Please sign in to comment.