From 24e8fa1bada5092885c37f6ac3d5230e02172966 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ilkka=20Sepp=C3=A4l=C3=A4?= Date: Sun, 13 Sep 2020 18:32:12 +0300 Subject: [PATCH] Update README.md --- tolerant-reader/README.md | 36 +++++++++----- tolerant-reader/etc/tolerant-reader.png | Bin 20514 -> 0 bytes tolerant-reader/etc/tolerant-reader.ucls | 52 -------------------- tolerant-reader/etc/tolerant_reader_urm.png | Bin 0 -> 46129 bytes 4 files changed, 23 insertions(+), 65 deletions(-) delete mode 100644 tolerant-reader/etc/tolerant-reader.png delete mode 100644 tolerant-reader/etc/tolerant-reader.ucls create mode 100644 tolerant-reader/etc/tolerant_reader_urm.png diff --git a/tolerant-reader/README.md b/tolerant-reader/README.md index 922de90de..30517b7b8 100644 --- a/tolerant-reader/README.md +++ b/tolerant-reader/README.md @@ -9,14 +9,18 @@ tags: --- ## Intent -Tolerant Reader is an integration pattern that helps creating robust communication systems. The idea is to be as -tolerant as possible when reading data from another service. This way, when the communication schema changes, the -readers must not break. + +Tolerant Reader is an integration pattern that helps creating robust communication systems. The idea +is to be as tolerant as possible when reading data from another service. This way, when the +communication schema changes, the readers must not break. ## Explanation + Real world example -> We are persisting rainbowfish objects to file and later on they need to be restored. What makes it problematic is that rainbowfish data structure is versioned and evolves over time. New version of rainbowfish needs to be able to restore old versions as well. +> We are persisting rainbowfish objects to file and later on they need to be restored. What makes it +> problematic is that rainbowfish data structure is versioned and evolves over time. New version of +> rainbowfish needs to be able to restore old versions as well. In plain words @@ -24,11 +28,11 @@ In plain words [Robustness Principle](https://java-design-patterns.com/principles/#robustness-principle) says -> Be conservative in what you do, be liberal in what you accept from others +> Be conservative in what you do, be liberal in what you accept from others. **Programmatic Example** -Here's the versioned rainbowfish. Notice how the second version introduces additional properties. +Here's the versioned `RainbowFish`. Notice how the second version introduces additional properties. ```java public class RainbowFish implements Serializable { @@ -104,7 +108,8 @@ public class RainbowFishV2 extends RainbowFish { } ``` -Next we introduce the rainbowfish serializer. This is the class that implements the Tolerant Reader pattern. +Next we introduce the `RainbowFishSerializer`. This is the class that implements the Tolerant Reader +pattern. ```java public final class RainbowFishSerializer { @@ -185,18 +190,23 @@ And finally here's the full example in action. LOGGER.info("deserializedFishV2 name={} age={} length={} weight={}", deserializedFishV2.getName(), deserializedFishV2.getAge(), deserializedFishV2.getLengthMeters(), deserializedFishV2.getWeightTons()); - - // fishV1 name=Zed age=10 length=11 weight=12 - // deserializedFishV1 name=Zed age=10 length=11 weight=12 - // fishV2 name=Scar age=5 length=12 weight=15 sleeping=true hungry=true angry=true - // deserializedFishV2 name=Scar age=5 length=12 weight=15 ``` +Program output: + +``` +fishV1 name=Zed age=10 length=11 weight=12 +deserializedFishV1 name=Zed age=10 length=11 weight=12 +fishV2 name=Scar age=5 length=12 weight=15 sleeping=true hungry=true angry=true +deserializedFishV2 name=Scar age=5 length=12 weight=15 +``` ## Class diagram -![alt text](./etc/tolerant-reader.png "Tolerant Reader") + +![alt text](./etc/tolerant_reader_urm.png "Tolerant Reader") ## Applicability + Use the Tolerant Reader pattern when * The communication schema can evolve and change and yet the receiving side should not break diff --git a/tolerant-reader/etc/tolerant-reader.png b/tolerant-reader/etc/tolerant-reader.png deleted file mode 100644 index 45f0302a2c7bd80c975f20ed67eb700d0224e368..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20514 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%0APyX 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 diff --git a/tolerant-reader/etc/tolerant-reader.ucls b/tolerant-reader/etc/tolerant-reader.ucls deleted file mode 100644 index 92e069f8e..000000000 --- a/tolerant-reader/etc/tolerant-reader.ucls +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/tolerant-reader/etc/tolerant_reader_urm.png b/tolerant-reader/etc/tolerant_reader_urm.png new file mode 100644 index 0000000000000000000000000000000000000000..9f5499172ee92da0597eb18b04d99fd0d5b71abe GIT binary patch literal 46129 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

2nv-}l&cI8qo~ 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 LZI!HJ7XSSp3GkwA literal 0 HcmV?d00001 -- GitLab