Skip to content

Commit

Permalink
refactor: Consolidate boilerplate code for getting the ObjectCache.
Browse files Browse the repository at this point in the history
  • Loading branch information
priyadi committed Jan 13, 2024
1 parent 3c101f6 commit 1ac9fe9
Show file tree
Hide file tree
Showing 7 changed files with 35 additions and 40 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
## 0.5.5

* docs: Add link to documentation website.
* refactor: Consolidate boilerplate code for getting the `ObjectCache`.

## 0.5.4

Expand Down
37 changes: 30 additions & 7 deletions src/MainTransformer.php
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,32 @@ private function getTransformer(string $id): TransformerInterface
return $transformer;
}

/**
* @param array<string,mixed> $context
*/
public static function getObjectCache(
array &$context,
ObjectCacheFactoryInterface $objectCacheFactory
): ObjectCache {
if (!isset($context[self::OBJECT_CACHE])) {
$objectCache = $objectCacheFactory->createObjectCache();
$context[self::OBJECT_CACHE] = $objectCache;
} else {
/** @var mixed */
$objectCache = $context[self::OBJECT_CACHE];

if (!$objectCache instanceof ObjectCache) {
throw new LogicException(sprintf(
'Object cache must be an instance of %s, %s given.',
ObjectCache::class,
get_debug_type($objectCache)
));
}
}

return $objectCache;
}

public function transform(
mixed $source,
mixed $target,
Expand All @@ -76,13 +102,10 @@ public function transform(

// get object cache

if (!isset($context[self::OBJECT_CACHE])) {
$objectCache = $this->objectCacheFactory->createObjectCache();
$context[self::OBJECT_CACHE] = $objectCache;
} else {
/** @var ObjectCache */
$objectCache = $context[self::OBJECT_CACHE];
}
$objectCache = self::getObjectCache(
$context,
$this->objectCacheFactory
);

// gets simple target types from the provided target type

Expand Down
1 change: 0 additions & 1 deletion src/MapperFactory/MapperFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
use Rekalogika\Mapper\Mapping\MappingFactoryInterface;
use Rekalogika\Mapper\MethodMapper\ClassMethodTransformer;
use Rekalogika\Mapper\MethodMapper\SubMapper;
use Rekalogika\Mapper\MethodMapper\SubMapperInterface;
use Rekalogika\Mapper\ObjectCache\ObjectCacheFactory;
use Rekalogika\Mapper\ObjectCache\ObjectCacheFactoryInterface;
use Rekalogika\Mapper\Transformer\ArrayToObjectTransformer;
Expand Down
9 changes: 1 addition & 8 deletions src/MethodMapper/ClassMethodTransformer.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
use Rekalogika\Mapper\Contracts\TypeMapping;
use Rekalogika\Mapper\Exception\InvalidArgumentException;
use Rekalogika\Mapper\MainTransformer;
use Rekalogika\Mapper\ObjectCache\ObjectCache;
use Rekalogika\Mapper\ObjectCache\ObjectCacheFactoryInterface;
use Rekalogika\Mapper\Util\TypeFactory;
use Symfony\Component\PropertyInfo\Type;
Expand Down Expand Up @@ -89,13 +88,7 @@ public function transform(

// get object cache

if (!isset($context[MainTransformer::OBJECT_CACHE])) {
$objectCache = $this->objectCacheFactory->createObjectCache();
$context[MainTransformer::OBJECT_CACHE] = $objectCache;
} else {
/** @var ObjectCache */
$objectCache = $context[MainTransformer::OBJECT_CACHE];
}
$objectCache = MainTransformer::getObjectCache($context, $this->objectCacheFactory);

// save to object cache

Expand Down
9 changes: 1 addition & 8 deletions src/Transformer/ObjectToObjectTransformer.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
use Rekalogika\Mapper\Exception\InvalidArgumentException;
use Rekalogika\Mapper\Exception\InvalidClassException;
use Rekalogika\Mapper\MainTransformer;
use Rekalogika\Mapper\ObjectCache\ObjectCache;
use Rekalogika\Mapper\ObjectCache\ObjectCacheFactoryInterface;
use Rekalogika\Mapper\TypeResolver\TypeResolverInterface;
use Rekalogika\Mapper\Util\TypeCheck;
Expand Down Expand Up @@ -65,13 +64,7 @@ public function transform(

// get object cache

if (!isset($context[MainTransformer::OBJECT_CACHE])) {
$objectCache = $this->objectCacheFactory->createObjectCache();
$context[MainTransformer::OBJECT_CACHE] = $objectCache;
} else {
/** @var ObjectCache */
$objectCache = $context[MainTransformer::OBJECT_CACHE];
}
$objectCache = MainTransformer::getObjectCache($context, $this->objectCacheFactory);

// return from cache if already exists

Expand Down
9 changes: 1 addition & 8 deletions src/Transformer/TraversableToArrayAccessTransformer.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
use Rekalogika\Mapper\Exception\InvalidTypeInArgumentException;
use Rekalogika\Mapper\Exception\MissingMemberKeyTypeException;
use Rekalogika\Mapper\MainTransformer;
use Rekalogika\Mapper\ObjectCache\ObjectCache;
use Rekalogika\Mapper\ObjectCache\ObjectCacheFactoryInterface;
use Rekalogika\Mapper\Util\TypeCheck;
use Rekalogika\Mapper\Util\TypeFactory;
Expand Down Expand Up @@ -52,13 +51,7 @@ public function transform(

// get object cache

if (!isset($context[MainTransformer::OBJECT_CACHE])) {
$objectCache = $this->objectCacheFactory->createObjectCache();
$context[MainTransformer::OBJECT_CACHE] = $objectCache;
} else {
/** @var ObjectCache */
$objectCache = $context[MainTransformer::OBJECT_CACHE];
}
$objectCache = MainTransformer::getObjectCache($context, $this->objectCacheFactory);

// return from cache if already exists

Expand Down
9 changes: 1 addition & 8 deletions src/Transformer/TraversableToTraversableTransformer.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
use Rekalogika\Mapper\Exception\MissingMemberValueTypeException;
use Rekalogika\Mapper\MainTransformer;
use Rekalogika\Mapper\Model\TraversableCountableWrapper;
use Rekalogika\Mapper\ObjectCache\ObjectCache;
use Rekalogika\Mapper\ObjectCache\ObjectCacheFactoryInterface;
use Rekalogika\Mapper\Util\TypeCheck;
use Rekalogika\Mapper\Util\TypeFactory;
Expand All @@ -50,13 +49,7 @@ public function transform(
}
// get object cache

if (!isset($context[MainTransformer::OBJECT_CACHE])) {
$objectCache = $this->objectCacheFactory->createObjectCache();
$context[MainTransformer::OBJECT_CACHE] = $objectCache;
} else {
/** @var ObjectCache */
$objectCache = $context[MainTransformer::OBJECT_CACHE];
}
$objectCache = MainTransformer::getObjectCache($context, $this->objectCacheFactory);

// return from cache if already exists

Expand Down

0 comments on commit 1ac9fe9

Please sign in to comment.