Update after changes from review. Additional improvements.
This commit is contained in:
		| @@ -21,3 +21,7 @@ Use the Balking pattern when | |||||||
| *you want to invoke an action on an object only when it is in a particular state | *you want to invoke an action on an object only when it is in a particular state | ||||||
| *objects are generally only in a state that is prone to balking temporarily | *objects are generally only in a state that is prone to balking temporarily | ||||||
| but for an unknown amount of time | but for an unknown amount of time | ||||||
|  |  | ||||||
|  | ## Related patterns | ||||||
|  | * Guarded Suspendion Pattern | ||||||
|  | * Double Checked Locking Pattern | ||||||
| @@ -29,7 +29,7 @@ | |||||||
|   <parent> |   <parent> | ||||||
|     <artifactId>java-design-patterns</artifactId> |     <artifactId>java-design-patterns</artifactId> | ||||||
|     <groupId>com.iluwatar</groupId> |     <groupId>com.iluwatar</groupId> | ||||||
|     <version>1.14.0-SNAPSHOT</version> |     <version>1.15.0-SNAPSHOT</version> | ||||||
|   </parent> |   </parent> | ||||||
|   <modelVersion>4.0.0</modelVersion> |   <modelVersion>4.0.0</modelVersion> | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,17 +1,17 @@ | |||||||
| /** | /** | ||||||
|  * The MIT License |  * The MIT License | ||||||
|  * Copyright (c) 2014 Ilkka Seppälä |  * Copyright (c) 2014 Ilkka Seppälä | ||||||
|  * |  * <p> | ||||||
|  * Permission is hereby granted, free of charge, to any person obtaining a copy |  * Permission is hereby granted, free of charge, to any person obtaining a copy | ||||||
|  * of this software and associated documentation files (the "Software"), to deal |  * of this software and associated documentation files (the "Software"), to deal | ||||||
|  * in the Software without restriction, including without limitation the rights |  * in the Software without restriction, including without limitation the rights | ||||||
|  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||||
|  * copies of the Software, and to permit persons to whom the Software is |  * copies of the Software, and to permit persons to whom the Software is | ||||||
|  * furnished to do so, subject to the following conditions: |  * furnished to do so, subject to the following conditions: | ||||||
|  * |  * <p> | ||||||
|  * The above copyright notice and this permission notice shall be included in |  * The above copyright notice and this permission notice shall be included in | ||||||
|  * all copies or substantial portions of the Software. |  * all copies or substantial portions of the Software. | ||||||
|  * |  * <p> | ||||||
|  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||||
| @@ -29,6 +29,18 @@ import java.util.concurrent.ExecutorService; | |||||||
| import java.util.concurrent.Executors; | import java.util.concurrent.Executors; | ||||||
| import java.util.concurrent.TimeUnit; | import java.util.concurrent.TimeUnit; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * In Balking Design Pattern if an object’s method is invoked when it is in an inappropriate state, | ||||||
|  |  * then the method will return without doing anything. Objects that use this pattern are generally only in a | ||||||
|  |  * state that is prone to balking temporarily but for an unknown amount of time | ||||||
|  |  * | ||||||
|  |  * In this example implementation WashingMachine is an object that has two states | ||||||
|  |  * in which it can be: ENABLED and WASHING. If the machine is ENABLED | ||||||
|  |  * the state is changed into WASHING that any other thread can't invoke this action on this and then do the job. | ||||||
|  |  * On the other hand if it have been already washing and any other thread execute wash() | ||||||
|  |  * it can't do that once again and returns doing nothing. | ||||||
|  |  */ | ||||||
|  |  | ||||||
| public class App { | public class App { | ||||||
|  |  | ||||||
|   private static final Logger LOGGER = LoggerFactory.getLogger(App.class); |   private static final Logger LOGGER = LoggerFactory.getLogger(App.class); | ||||||
|   | |||||||
| @@ -1,17 +1,17 @@ | |||||||
| /** | /** | ||||||
|  * The MIT License |  * The MIT License | ||||||
|  * Copyright (c) 2014 Ilkka Seppälä |  * Copyright (c) 2014 Ilkka Seppälä | ||||||
|  * |  * <p> | ||||||
|  * Permission is hereby granted, free of charge, to any person obtaining a copy |  * Permission is hereby granted, free of charge, to any person obtaining a copy | ||||||
|  * of this software and associated documentation files (the "Software"), to deal |  * of this software and associated documentation files (the "Software"), to deal | ||||||
|  * in the Software without restriction, including without limitation the rights |  * in the Software without restriction, including without limitation the rights | ||||||
|  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||||
|  * copies of the Software, and to permit persons to whom the Software is |  * copies of the Software, and to permit persons to whom the Software is | ||||||
|  * furnished to do so, subject to the following conditions: |  * furnished to do so, subject to the following conditions: | ||||||
|  * |  * <p> | ||||||
|  * The above copyright notice and this permission notice shall be included in |  * The above copyright notice and this permission notice shall be included in | ||||||
|  * all copies or substantial portions of the Software. |  * all copies or substantial portions of the Software. | ||||||
|  * |  * <p> | ||||||
|  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||||
|   | |||||||
| @@ -1,17 +1,17 @@ | |||||||
| /** | /** | ||||||
|  * The MIT License |  * The MIT License | ||||||
|  * Copyright (c) 2014 Ilkka Seppälä |  * Copyright (c) 2014 Ilkka Seppälä | ||||||
|  * |  * <p> | ||||||
|  * Permission is hereby granted, free of charge, to any person obtaining a copy |  * Permission is hereby granted, free of charge, to any person obtaining a copy | ||||||
|  * of this software and associated documentation files (the "Software"), to deal |  * of this software and associated documentation files (the "Software"), to deal | ||||||
|  * in the Software without restriction, including without limitation the rights |  * in the Software without restriction, including without limitation the rights | ||||||
|  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||||
|  * copies of the Software, and to permit persons to whom the Software is |  * copies of the Software, and to permit persons to whom the Software is | ||||||
|  * furnished to do so, subject to the following conditions: |  * furnished to do so, subject to the following conditions: | ||||||
|  * |  * <p> | ||||||
|  * The above copyright notice and this permission notice shall be included in |  * The above copyright notice and this permission notice shall be included in | ||||||
|  * all copies or substantial portions of the Software. |  * all copies or substantial portions of the Software. | ||||||
|  * |  * <p> | ||||||
|  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||||
| @@ -22,4 +22,11 @@ | |||||||
|  */ |  */ | ||||||
| package com.iluwatar.balking; | package com.iluwatar.balking; | ||||||
|  |  | ||||||
| public enum WashingMachineState {ENABLED, WASHING} | /** | ||||||
|  |  * WashingMachineState enum describes in which state machine is, | ||||||
|  |  * it can be enabled and ready to work as well as during washing | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | public enum WashingMachineState { | ||||||
|  |   ENABLED, WASHING | ||||||
|  | } | ||||||
|   | |||||||
| @@ -1,17 +1,17 @@ | |||||||
| /** | /** | ||||||
|  * The MIT License |  * The MIT License | ||||||
|  * Copyright (c) 2014 Ilkka Seppälä |  * Copyright (c) 2014 Ilkka Seppälä | ||||||
|  * |  * <p> | ||||||
|  * Permission is hereby granted, free of charge, to any person obtaining a copy |  * Permission is hereby granted, free of charge, to any person obtaining a copy | ||||||
|  * of this software and associated documentation files (the "Software"), to deal |  * of this software and associated documentation files (the "Software"), to deal | ||||||
|  * in the Software without restriction, including without limitation the rights |  * in the Software without restriction, including without limitation the rights | ||||||
|  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||||
|  * copies of the Software, and to permit persons to whom the Software is |  * copies of the Software, and to permit persons to whom the Software is | ||||||
|  * furnished to do so, subject to the following conditions: |  * furnished to do so, subject to the following conditions: | ||||||
|  * |  * <p> | ||||||
|  * The above copyright notice and this permission notice shall be included in |  * The above copyright notice and this permission notice shall be included in | ||||||
|  * all copies or substantial portions of the Software. |  * all copies or substantial portions of the Software. | ||||||
|  * |  * <p> | ||||||
|  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||||
| @@ -20,10 +20,17 @@ | |||||||
|  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||||
|  * THE SOFTWARE. |  * THE SOFTWARE. | ||||||
|  */ |  */ | ||||||
|  |  | ||||||
| package com.iluwatar.balking; | package com.iluwatar.balking; | ||||||
|  |  | ||||||
|  | import org.junit.Test; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Application test | ||||||
|  |  */ | ||||||
| public class AppTest { | public class AppTest { | ||||||
|   @org.junit.Test |  | ||||||
|  |   @Test | ||||||
|   public void main() throws Exception { |   public void main() throws Exception { | ||||||
|     String[] args = {}; |     String[] args = {}; | ||||||
|     App.main(args); |     App.main(args); | ||||||
|   | |||||||
| @@ -1,17 +1,17 @@ | |||||||
| /** | /** | ||||||
|  * The MIT License |  * The MIT License | ||||||
|  * Copyright (c) 2014 Ilkka Seppälä |  * Copyright (c) 2014 Ilkka Seppälä | ||||||
|  * |  * <p> | ||||||
|  * Permission is hereby granted, free of charge, to any person obtaining a copy |  * Permission is hereby granted, free of charge, to any person obtaining a copy | ||||||
|  * of this software and associated documentation files (the "Software"), to deal |  * of this software and associated documentation files (the "Software"), to deal | ||||||
|  * in the Software without restriction, including without limitation the rights |  * in the Software without restriction, including without limitation the rights | ||||||
|  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||||
|  * copies of the Software, and to permit persons to whom the Software is |  * copies of the Software, and to permit persons to whom the Software is | ||||||
|  * furnished to do so, subject to the following conditions: |  * furnished to do so, subject to the following conditions: | ||||||
|  * |  * <p> | ||||||
|  * The above copyright notice and this permission notice shall be included in |  * The above copyright notice and this permission notice shall be included in | ||||||
|  * all copies or substantial portions of the Software. |  * all copies or substantial portions of the Software. | ||||||
|  * |  * <p> | ||||||
|  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user