diff --git a/retry/etc/retry.urm.puml b/retry/etc/retry.urm.puml deleted file mode 100644 index 67f645514..000000000 --- a/retry/etc/retry.urm.puml +++ /dev/null @@ -1,38 +0,0 @@ -@startuml -package com.iluwatar.retry { - class App { - - LOG : Logger {static} - - op : BusinessOperation {static} - + App() - - errorNoRetry() {static} - - errorWithRetry() {static} - + main(args : String[]) {static} - - noErrors() {static} - } - interface BusinessOperation { - + perform() : T {abstract} - } - class FindCustomer { - - customerId : String - - errors : Deque - + FindCustomer(customerId : String, errors : BusinessException[]) - + perform() : String - } - class Retry { - - attempts : AtomicInteger - - delay : long - - errors : List - - maxAttempts : int - - op : BusinessOperation - - test : Predicate - + Retry(op : BusinessOperation, maxAttempts : int, delay : long, ignoreTests : Predicate[]) - + attempts() : int - + errors() : List - + perform() : T - } -} -Retry --> "-op" BusinessOperation -App --> "-op" BusinessOperation -FindCustomer ..|> BusinessOperation -Retry ..|> BusinessOperation -@enduml \ No newline at end of file diff --git a/retry/licenseheader.txt b/retry/licenseheader.txt new file mode 100644 index 000000000..95519bb48 --- /dev/null +++ b/retry/licenseheader.txt @@ -0,0 +1,50 @@ +==== + 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. +==== + +<#if licenseFirst??> +${licenseFirst} + +${licensePrefix}The MIT License (MIT) +${licensePrefix} +${licensePrefix}Copyright (c) 2014-2016 Ilkka Seppälä +${licensePrefix} +${licensePrefix}Permission is hereby granted, free of charge, to any person obtaining a copy +${licensePrefix}of this software and associated documentation files (the "Software"), to deal +${licensePrefix}in the Software without restriction, including without limitation the rights +${licensePrefix}to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +${licensePrefix}copies of the Software, and to permit persons to whom the Software is +${licensePrefix}furnished to do so, subject to the following conditions: +${licensePrefix} +${licensePrefix}The above copyright notice and this permission notice shall be included in all +${licensePrefix}copies or substantial portions of the Software. +${licensePrefix} +${licensePrefix}THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +${licensePrefix}IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +${licensePrefix}FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +${licensePrefix}AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +${licensePrefix}LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +${licensePrefix}OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +${licensePrefix}SOFTWARE. +<#if licenseLast??> +${licenseLast} + diff --git a/retry/nb-configuration.xml b/retry/nb-configuration.xml new file mode 100644 index 000000000..98de820dd --- /dev/null +++ b/retry/nb-configuration.xml @@ -0,0 +1,18 @@ + + + + + + ${project.basedir}/licenseheader.txt + + diff --git a/retry/nbproject/project.properties b/retry/nbproject/project.properties new file mode 100644 index 000000000..50e26d574 --- /dev/null +++ b/retry/nbproject/project.properties @@ -0,0 +1,23 @@ +# +# 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. +# + diff --git a/retry/src/main/java/com/iluwatar/retry/App.java b/retry/src/main/java/com/iluwatar/retry/App.java index 7e65e68a4..376a64fbf 100644 --- a/retry/src/main/java/com/iluwatar/retry/App.java +++ b/retry/src/main/java/com/iluwatar/retry/App.java @@ -56,7 +56,6 @@ import org.slf4j.LoggerFactory; * * @author George Aristy (george.aristy@gmail.com) * @see Retry pattern (Microsoft Azure Docs) - * @since 1.18.0 */ public final class App { private static final Logger LOG = LoggerFactory.getLogger(App.class); @@ -67,7 +66,6 @@ public final class App { * * @param args not used * @throws Exception not expected - * @since 1.18.0 */ public static void main(String[] args) throws Exception { noErrors(); diff --git a/retry/src/main/java/com/iluwatar/retry/BusinessException.java b/retry/src/main/java/com/iluwatar/retry/BusinessException.java index c5974e7f8..eefbf2813 100644 --- a/retry/src/main/java/com/iluwatar/retry/BusinessException.java +++ b/retry/src/main/java/com/iluwatar/retry/BusinessException.java @@ -31,7 +31,6 @@ package com.iluwatar.retry; * be able to handle this error and should be reported to the maintainers immediately. * * @author George Aristy (george.aristy@gmail.com) - * @since 1.18.0 */ public class BusinessException extends Exception { private static final long serialVersionUID = 6235833142062144336L; @@ -40,7 +39,6 @@ public class BusinessException extends Exception { * Ctor * * @param message the error message - * @since 1.18.0 */ public BusinessException(String message) { super(message); diff --git a/retry/src/main/java/com/iluwatar/retry/BusinessOperation.java b/retry/src/main/java/com/iluwatar/retry/BusinessOperation.java index f8047a4c2..aefb589c7 100644 --- a/retry/src/main/java/com/iluwatar/retry/BusinessOperation.java +++ b/retry/src/main/java/com/iluwatar/retry/BusinessOperation.java @@ -29,7 +29,6 @@ package com.iluwatar.retry; * * @author George Aristy (george.aristy@gmail.com) * @param the return type - * @since 1.18.0 */ @FunctionalInterface public interface BusinessOperation { @@ -40,7 +39,6 @@ public interface BusinessOperation { * @return the return value * @throws BusinessException if the operation fails. Implementations are allowed to throw more * specific subtypes depending on the error conditions - * @since 1.18.0 */ T perform() throws BusinessException; } diff --git a/retry/src/main/java/com/iluwatar/retry/CustomerNotFoundException.java b/retry/src/main/java/com/iluwatar/retry/CustomerNotFoundException.java index 8bb43d91e..596d8584d 100644 --- a/retry/src/main/java/com/iluwatar/retry/CustomerNotFoundException.java +++ b/retry/src/main/java/com/iluwatar/retry/CustomerNotFoundException.java @@ -31,7 +31,6 @@ package com.iluwatar.retry; * by an input from some end user, or were the search parameters pulled from your database? * * @author George Aristy (george.aristy@gmail.com) - * @since 1.18.0 */ public final class CustomerNotFoundException extends BusinessException { private static final long serialVersionUID = -6972888602621778664L; @@ -40,7 +39,6 @@ public final class CustomerNotFoundException extends BusinessException { * Ctor. * * @param message the error message - * @since 1.18.0 */ public CustomerNotFoundException(String message) { super(message); diff --git a/retry/src/main/java/com/iluwatar/retry/DatabaseNotAvailableException.java b/retry/src/main/java/com/iluwatar/retry/DatabaseNotAvailableException.java index 03728b572..2a93e992d 100644 --- a/retry/src/main/java/com/iluwatar/retry/DatabaseNotAvailableException.java +++ b/retry/src/main/java/com/iluwatar/retry/DatabaseNotAvailableException.java @@ -28,7 +28,6 @@ package com.iluwatar.retry; * Catastrophic error indicating that we have lost connection to our database. * * @author George Aristy (george.aristy@gmail.com) - * @since 1.18.0 */ public final class DatabaseNotAvailableException extends BusinessException { private static final long serialVersionUID = -3750769625095997799L; @@ -37,7 +36,6 @@ public final class DatabaseNotAvailableException extends BusinessException { * Ctor. * * @param message the error message - * @since 1.18.0 */ public DatabaseNotAvailableException(String message) { super(message); diff --git a/retry/src/main/java/com/iluwatar/retry/FindCustomer.java b/retry/src/main/java/com/iluwatar/retry/FindCustomer.java index 7e5a09b51..421f450e5 100644 --- a/retry/src/main/java/com/iluwatar/retry/FindCustomer.java +++ b/retry/src/main/java/com/iluwatar/retry/FindCustomer.java @@ -36,7 +36,6 @@ import java.util.Deque; * purposes of this example it fails in a programmed way depending on the constructor parameters. * * @author George Aristy (george.aristy@gmail.com) - * @since 1.18.0 */ public final class FindCustomer implements BusinessOperation { private final String customerId; @@ -47,7 +46,6 @@ public final class FindCustomer implements BusinessOperation { * * @param customerId the final result of the remote operation * @param errors the errors to throw before returning {@code customerId} - * @since 1.18.0 */ public FindCustomer(String customerId, BusinessException... errors) { this.customerId = customerId; diff --git a/retry/src/main/java/com/iluwatar/retry/Retry.java b/retry/src/main/java/com/iluwatar/retry/Retry.java index 048956ff3..5ed60f98b 100644 --- a/retry/src/main/java/com/iluwatar/retry/Retry.java +++ b/retry/src/main/java/com/iluwatar/retry/Retry.java @@ -36,7 +36,6 @@ import java.util.function.Predicate; * * @author George Aristy (george.aristy@gmail.com) * @param the remote op's return type - * @since 1.18.0 */ public final class Retry implements BusinessOperation { private final BusinessOperation op; @@ -54,7 +53,6 @@ public final class Retry implements BusinessOperation { * @param delay delay (in milliseconds) between attempts * @param ignoreTests tests to check whether the remote exception can be ignored. No exceptions * will be ignored if no tests are given - * @since 1.18.0 */ @SafeVarargs public Retry( @@ -75,7 +73,6 @@ public final class Retry implements BusinessOperation { * The errors encountered while retrying, in the encounter order. * * @return the errors encountered while retrying - * @since 1.18.0 */ public List errors() { return Collections.unmodifiableList(this.errors); @@ -85,7 +82,6 @@ public final class Retry implements BusinessOperation { * The number of retries performed. * * @return the number of retries performed - * @since 1.18.0 */ public int attempts() { return this.attempts.intValue(); diff --git a/retry/src/test/java/com/iluwatar/retry/FindCustomerTest.java b/retry/src/test/java/com/iluwatar/retry/FindCustomerTest.java index dd4dd27df..634443fef 100644 --- a/retry/src/test/java/com/iluwatar/retry/FindCustomerTest.java +++ b/retry/src/test/java/com/iluwatar/retry/FindCustomerTest.java @@ -32,13 +32,10 @@ import org.junit.Test; * Unit tests for {@link FindCustomer}. * * @author George Aristy (george.aristy@gmail.com) - * @since 1.18.0 */ public class FindCustomerTest { /** * Returns the given result with no exceptions. - * - * @since 1.18.0 */ @Test public void noExceptions() throws Exception { @@ -52,7 +49,6 @@ public class FindCustomerTest { * Throws the given exception. * * @throws Exception the expected exception - * @since 1.18.0 */ @Test(expected = BusinessException.class) public void oneException() throws Exception { @@ -63,7 +59,6 @@ public class FindCustomerTest { * Should first throw the given exceptions, then return the given result. * * @throws Exception not an expected exception - * @since 1.18.0 */ @Test public void resultAfterExceptions() throws Exception { diff --git a/retry/src/test/java/com/iluwatar/retry/RetryTest.java b/retry/src/test/java/com/iluwatar/retry/RetryTest.java index aba1a88e2..c66c41354 100644 --- a/retry/src/test/java/com/iluwatar/retry/RetryTest.java +++ b/retry/src/test/java/com/iluwatar/retry/RetryTest.java @@ -33,13 +33,10 @@ import static org.junit.Assert.*; * Unit tests for {@link Retry}. * * @author George Aristy (george.aristy@gmail.com) - * @since 1.18.0 */ public class RetryTest { /** * Should contain all errors thrown. - * - * @since 1.18.0 */ @Test public void errors() throws Exception { @@ -64,8 +61,6 @@ public class RetryTest { /** * No exceptions will be ignored, hence final number of attempts should be 1 even if we're asking * it to attempt twice. - * - * @since 1.18.0 */ @Test public void attempts() { @@ -90,8 +85,6 @@ public class RetryTest { /** * Final number of attempts should be equal to the number of attempts asked because we are * asking it to ignore the exception that will be thrown. - * - * @since 1.18.0 */ @Test public void ignore() throws Exception {