From 5f9100cd033514f78ce61efdfc06c24c1daa6be6 Mon Sep 17 00:00:00 2001 From: Deepanshu Rastogi Date: Thu, 7 Sep 2017 15:27:18 +0200 Subject: [PATCH] Adding class diag and updating readme --- throttling/README.md | 4 ++ throttling/etc/throttling-class-diag.ucls | 49 ------------------ throttling/etc/throttling-patern.png | Bin 0 -> 67436 bytes throttling/etc/throttling.urm.puml | 27 ++++++++++ throttling/pom.xml | 24 +++++++++ .../java/com/iluwatar/tls/B2BService.java | 22 ++++++++ .../main/java/com/iluwatar/tls/Tenant.java | 22 ++++++++ .../java/com/iluwatar/tls/B2BServiceTest.java | 22 ++++++++ .../java/com/iluwatar/tls/TenantTest.java | 22 ++++++++ 9 files changed, 143 insertions(+), 49 deletions(-) delete mode 100644 throttling/etc/throttling-class-diag.ucls create mode 100644 throttling/etc/throttling-patern.png diff --git a/throttling/README.md b/throttling/README.md index adb067200..f31779573 100644 --- a/throttling/README.md +++ b/throttling/README.md @@ -9,6 +9,10 @@ tags: - Throttling --- +## Intent +Ensure that a given tenant is not able to access resources more than the assigned limit. +![alt text](./etc/throttling-patern.png "Throttling pattern") + ## Applicability The Throttling pattern should be used: diff --git a/throttling/etc/throttling-class-diag.ucls b/throttling/etc/throttling-class-diag.ucls deleted file mode 100644 index deb3723fd..000000000 --- a/throttling/etc/throttling-class-diag.ucls +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/throttling/etc/throttling-patern.png b/throttling/etc/throttling-patern.png new file mode 100644 index 0000000000000000000000000000000000000000..baa03816d849fff6d1e2769bc3f3f0624bc1b4b6 GIT binary patch literal 67436 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 VXUB^NKM4W+hzrXI6$|M4{x8c4K?DE* literal 0 HcmV?d00001 diff --git a/throttling/etc/throttling.urm.puml b/throttling/etc/throttling.urm.puml index 02af47ddf..8c97da50a 100644 --- a/throttling/etc/throttling.urm.puml +++ b/throttling/etc/throttling.urm.puml @@ -1,2 +1,29 @@ @startuml +package com.iluwatar.tls { + class App { + - LOGGER : Logger {static} + + App() + + main(args : String[]) {static} + - makeServiceCalls(service : B2BService) {static} + } + ~class B2BService { + - LOGGER : Logger {static} + - callsCounter : int + - tenant : Tenant + + B2BService(tenant : Tenant) + + dummyCustomerApi() : int + + getCurrentCallsCount() : int + - getRandomCustomerId() : int + } + class Tenant { + - allowedCallsPerSecond : int + - name : String + + Tenant(name : String, allowedCallsPerSecond : int) + + getAllowedCallsPerSecond() : int + + getName() : String + + setAllowedCallsPerSecond(allowedCallsPerSecond : int) + + setName(name : String) + } +} +B2BService --> "-tenant" Tenant @enduml \ No newline at end of file diff --git a/throttling/pom.xml b/throttling/pom.xml index 60517c8de..2cbd7bf9e 100644 --- a/throttling/pom.xml +++ b/throttling/pom.xml @@ -1,4 +1,28 @@ + diff --git a/throttling/src/main/java/com/iluwatar/tls/B2BService.java b/throttling/src/main/java/com/iluwatar/tls/B2BService.java index 832e24f1f..e05a50583 100644 --- a/throttling/src/main/java/com/iluwatar/tls/B2BService.java +++ b/throttling/src/main/java/com/iluwatar/tls/B2BService.java @@ -1,3 +1,25 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ package com.iluwatar.tls; import org.slf4j.Logger; diff --git a/throttling/src/main/java/com/iluwatar/tls/Tenant.java b/throttling/src/main/java/com/iluwatar/tls/Tenant.java index 6ef9bd28b..33d97a51e 100644 --- a/throttling/src/main/java/com/iluwatar/tls/Tenant.java +++ b/throttling/src/main/java/com/iluwatar/tls/Tenant.java @@ -1,3 +1,25 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ package com.iluwatar.tls; import java.security.InvalidParameterException; diff --git a/throttling/src/test/java/com/iluwatar/tls/B2BServiceTest.java b/throttling/src/test/java/com/iluwatar/tls/B2BServiceTest.java index 13921f1c9..a9e043a95 100644 --- a/throttling/src/test/java/com/iluwatar/tls/B2BServiceTest.java +++ b/throttling/src/test/java/com/iluwatar/tls/B2BServiceTest.java @@ -1,3 +1,25 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ package com.iluwatar.tls; import org.junit.Assert; diff --git a/throttling/src/test/java/com/iluwatar/tls/TenantTest.java b/throttling/src/test/java/com/iluwatar/tls/TenantTest.java index 17853c7d6..d29152e83 100644 --- a/throttling/src/test/java/com/iluwatar/tls/TenantTest.java +++ b/throttling/src/test/java/com/iluwatar/tls/TenantTest.java @@ -1,3 +1,25 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ package com.iluwatar.tls; import org.junit.Test;