Compare commits

...

4 Commits

Author SHA1 Message Date
3af7b3f316 docs: update .all-contributorsrc [skip ci] 2021-10-13 07:46:56 +00:00
36336cc04b docs: update README.md [skip ci] 2021-10-13 07:46:55 +00:00
5a644f1092 refactoring: Critical Sonar Issues (#1833)
* Resolve Sonar Code Smell: Define a constant instead of duplicating this literal 'Space rocket <' 4 times.

* Resolve Sonar Critical Code Smell: Define a constant instead of duplicating this literal 'Error connecting to MongoDB' 4 times.

* Fix checkstyle violation.

* Resolve Sonar Critical Code Smell: Define a constant instead of duplicating this literal 'LITERAL 0' 4 times.

Co-authored-by: Subhrodip Mohanta <hello@subho.xyz>
2021-10-13 13:15:22 +05:30
cab9048e06 docs: fixes for yaml frontmatter (#1851)
Co-authored-by: Subhrodip Mohanta <hello@subho.xyz>
2021-10-13 12:59:55 +05:30
12 changed files with 50 additions and 30 deletions

View File

@ -1631,6 +1631,15 @@
"contributions": [ "contributions": [
"translation" "translation"
] ]
},
{
"login": "sims-keshri",
"name": "Simran Keshri",
"avatar_url": "https://avatars.githubusercontent.com/u/62168475?v=4",
"profile": "https://github.com/sims-keshri",
"contributions": [
"code"
]
} }
], ],
"contributorsPerLine": 4, "contributorsPerLine": 4,

View File

@ -10,7 +10,7 @@
[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=iluwatar_java-design-patterns&metric=coverage)](https://sonarcloud.io/dashboard?id=iluwatar_java-design-patterns) [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=iluwatar_java-design-patterns&metric=coverage)](https://sonarcloud.io/dashboard?id=iluwatar_java-design-patterns)
[![Join the chat at https://gitter.im/iluwatar/java-design-patterns](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/iluwatar/java-design-patterns?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![Join the chat at https://gitter.im/iluwatar/java-design-patterns](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/iluwatar/java-design-patterns?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --> <!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
[![All Contributors](https://img.shields.io/badge/all_contributors-179-orange.svg?style=flat-square)](#contributors-) [![All Contributors](https://img.shields.io/badge/all_contributors-180-orange.svg?style=flat-square)](#contributors-)
<!-- ALL-CONTRIBUTORS-BADGE:END --> <!-- ALL-CONTRIBUTORS-BADGE:END -->
<br/> <br/>
@ -343,6 +343,7 @@ This project is licensed under the terms of the MIT license.
<td align="center"><a href="https://github.com/Conhan93"><img src="https://avatars.githubusercontent.com/u/71334757?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Conny Hansson</b></sub></a><br /><a href="https://github.com/iluwatar/java-design-patterns/commits?author=Conhan93" title="Documentation">📖</a></td> <td align="center"><a href="https://github.com/Conhan93"><img src="https://avatars.githubusercontent.com/u/71334757?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Conny Hansson</b></sub></a><br /><a href="https://github.com/iluwatar/java-design-patterns/commits?author=Conhan93" title="Documentation">📖</a></td>
<td align="center"><a href="http://muklasr.medium.com"><img src="https://avatars.githubusercontent.com/u/43443753?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Muklas Rahmanto</b></sub></a><br /><a href="#translation-muklasr" title="Translation">🌍</a></td> <td align="center"><a href="http://muklasr.medium.com"><img src="https://avatars.githubusercontent.com/u/43443753?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Muklas Rahmanto</b></sub></a><br /><a href="#translation-muklasr" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/VxDxK"><img src="https://avatars.githubusercontent.com/u/38704817?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Vadim</b></sub></a><br /><a href="#translation-VxDxK" title="Translation">🌍</a></td> <td align="center"><a href="https://github.com/VxDxK"><img src="https://avatars.githubusercontent.com/u/38704817?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Vadim</b></sub></a><br /><a href="#translation-VxDxK" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/sims-keshri"><img src="https://avatars.githubusercontent.com/u/62168475?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Simran Keshri</b></sub></a><br /><a href="https://github.com/iluwatar/java-design-patterns/commits?author=sims-keshri" title="Code">💻</a></td>
</tr> </tr>
</table> </table>

View File

@ -59,9 +59,12 @@ import lombok.extern.slf4j.Slf4j;
@Slf4j @Slf4j
public class App { public class App {
private static final String ROCKET_LAUNCH_LOG_PATTERN = "Space rocket <%s> launched successfully";
/** /**
* Program entry point. * Program entry point.
*/ */
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
// construct a new executor that will run async tasks // construct a new executor that will run async tasks
var executor = new ThreadAsyncExecutor(); var executor = new ThreadAsyncExecutor();
@ -87,9 +90,9 @@ public class App {
asyncResult5.await(); asyncResult5.await();
// log the results of the tasks, callbacks log immediately when complete // log the results of the tasks, callbacks log immediately when complete
log("Space rocket <" + result1 + "> launch complete"); log(String.format(ROCKET_LAUNCH_LOG_PATTERN, result1));
log("Space rocket <" + result2 + "> launch complete"); log(String.format(ROCKET_LAUNCH_LOG_PATTERN, result2));
log("Space rocket <" + result3 + "> launch complete"); log(String.format(ROCKET_LAUNCH_LOG_PATTERN, result3));
} }
/** /**
@ -102,7 +105,7 @@ public class App {
private static <T> Callable<T> lazyval(T value, long delayMillis) { private static <T> Callable<T> lazyval(T value, long delayMillis) {
return () -> { return () -> {
Thread.sleep(delayMillis); Thread.sleep(delayMillis);
log("Space rocket <" + value + "> launched successfully"); log(String.format(ROCKET_LAUNCH_LOG_PATTERN, value));
return value; return value;
}; };
} }

View File

@ -42,6 +42,14 @@ import lombok.extern.slf4j.Slf4j;
@Slf4j @Slf4j
public class App { public class App {
private static final String LITERAL_0 = "LITERAL 0";
private static final String HEALTH_PATTERN = "%s_HEALTH";
private static final String GET_AGILITY = "GET_AGILITY";
private static final String GET_WISDOM = "GET_WISDOM";
private static final String ADD = "ADD";
private static final String LITERAL_2 = "LITERAL 2";
private static final String DIVIDE = "DIVIDE";
/** /**
* Main app method. * Main app method.
* *
@ -53,17 +61,17 @@ public class App {
new Wizard(45, 7, 11, 0, 0), new Wizard(45, 7, 11, 0, 0),
new Wizard(36, 18, 8, 0, 0)); new Wizard(36, 18, 8, 0, 0));
vm.execute(InstructionConverterUtil.convertToByteCode("LITERAL 0")); vm.execute(InstructionConverterUtil.convertToByteCode(LITERAL_0));
vm.execute(InstructionConverterUtil.convertToByteCode("LITERAL 0")); vm.execute(InstructionConverterUtil.convertToByteCode(LITERAL_0));
vm.execute(InstructionConverterUtil.convertToByteCode("GET_HEALTH")); vm.execute(InstructionConverterUtil.convertToByteCode(String.format(HEALTH_PATTERN, "GET")));
vm.execute(InstructionConverterUtil.convertToByteCode("LITERAL 0")); vm.execute(InstructionConverterUtil.convertToByteCode(LITERAL_0));
vm.execute(InstructionConverterUtil.convertToByteCode("GET_AGILITY")); vm.execute(InstructionConverterUtil.convertToByteCode(GET_AGILITY));
vm.execute(InstructionConverterUtil.convertToByteCode("LITERAL 0")); vm.execute(InstructionConverterUtil.convertToByteCode(LITERAL_0));
vm.execute(InstructionConverterUtil.convertToByteCode("GET_WISDOM")); vm.execute(InstructionConverterUtil.convertToByteCode(GET_WISDOM));
vm.execute(InstructionConverterUtil.convertToByteCode("ADD")); vm.execute(InstructionConverterUtil.convertToByteCode(ADD));
vm.execute(InstructionConverterUtil.convertToByteCode("LITERAL 2")); vm.execute(InstructionConverterUtil.convertToByteCode(LITERAL_2));
vm.execute(InstructionConverterUtil.convertToByteCode("DIVIDE")); vm.execute(InstructionConverterUtil.convertToByteCode(DIVIDE));
vm.execute(InstructionConverterUtil.convertToByteCode("ADD")); vm.execute(InstructionConverterUtil.convertToByteCode(ADD));
vm.execute(InstructionConverterUtil.convertToByteCode("SET_HEALTH")); vm.execute(InstructionConverterUtil.convertToByteCode(String.format(HEALTH_PATTERN, "SET")));
} }
} }

View File

@ -50,6 +50,7 @@ public final class DbManager {
private static boolean useMongoDB; private static boolean useMongoDB;
private static Map<String, UserAccount> virtualDB; private static Map<String, UserAccount> virtualDB;
private static final String ERROR_MESSAGE_LOG = "Error connecting to MongoDB";
private DbManager() { private DbManager() {
} }
@ -85,7 +86,7 @@ public final class DbManager {
try { try {
connect(); connect();
} catch (ParseException e) { } catch (ParseException e) {
LOGGER.error("Error connecting to MongoDB", e); LOGGER.error(ERROR_MESSAGE_LOG, e);
} }
} }
var iterable = db var iterable = db
@ -112,7 +113,7 @@ public final class DbManager {
try { try {
connect(); connect();
} catch (ParseException e) { } catch (ParseException e) {
LOGGER.error("Error connecting to MongoDB", e); LOGGER.error(ERROR_MESSAGE_LOG, e);
} }
} }
db.getCollection(CachingConstants.USER_ACCOUNT).insertOne( db.getCollection(CachingConstants.USER_ACCOUNT).insertOne(
@ -134,7 +135,7 @@ public final class DbManager {
try { try {
connect(); connect();
} catch (ParseException e) { } catch (ParseException e) {
LOGGER.error("Error connecting to MongoDB", e); LOGGER.error(ERROR_MESSAGE_LOG, e);
} }
} }
db.getCollection(CachingConstants.USER_ACCOUNT).updateOne( db.getCollection(CachingConstants.USER_ACCOUNT).updateOne(
@ -155,7 +156,7 @@ public final class DbManager {
try { try {
connect(); connect();
} catch (ParseException e) { } catch (ParseException e) {
LOGGER.error("Error connecting to MongoDB", e); LOGGER.error(ERROR_MESSAGE_LOG, e);
} }
} }
db.getCollection(CachingConstants.USER_ACCOUNT).updateOne( db.getCollection(CachingConstants.USER_ACCOUNT).updateOne(

View File

@ -3,7 +3,6 @@ layout: pattern
title: Data Bus title: Data Bus
folder: data-bus folder: data-bus
permalink: /patterns/data-bus/ permalink: /patterns/data-bus/
categories: Architectural categories: Architectural
language: en language: en
tags: tags:

View File

@ -3,10 +3,8 @@ layout: pattern
title: Filterer title: Filterer
folder: filterer folder: filterer
permalink: /patterns/filterer/ permalink: /patterns/filterer/
description: Design pattern that helps container-like objects to return filtered version of themselves.# short meta description that shows in Google search results
language: en language: en
categories: categories: Functional
- Functional
tags: tags:
- Extensibility - Extensibility
--- ---

View File

@ -3,6 +3,7 @@ layout: pattern
title: Lockable Object title: Lockable Object
folder: lockable-object folder: lockable-object
permalink: /patterns/lockable-object/ permalink: /patterns/lockable-object/
language: en
categories: Concurrency categories: Concurrency
tags: tags:
- Performance - Performance

View File

@ -8,6 +8,7 @@ language: en
tags: tags:
- Decoupling - Decoupling
--- ---
## Also known as ## Also known as
Application Model Application Model

View File

@ -4,9 +4,11 @@ title: Table Module
folder: table-module folder: table-module
permalink: /patterns/table-module/ permalink: /patterns/table-module/
categories: Structural categories: Structural
language: en
tags: tags:
- Data access - Data access
--- ---
## Intent ## Intent
Table Module organizes domain logic with one class per table in the database, and a single instance of a class contains the various procedures that will act on the data. Table Module organizes domain logic with one class per table in the database, and a single instance of a class contains the various procedures that will act on the data.

View File

@ -3,7 +3,6 @@ layout: pattern
title: Unit Of Work title: Unit Of Work
folder: unit-of-work folder: unit-of-work
permalink: /patterns/unit-of-work/ permalink: /patterns/unit-of-work/
categories: Architectural categories: Architectural
language: en language: en
tags: tags:

View File

@ -1,10 +1,8 @@
--- ---
layout: pattern layout: pattern
title: Version Number title: Version Number
folder: versionnumber folder: version-number
permalink: /patterns/versionnumber/ permalink: /patterns/version-number/
description: Entity versioning with version number
categories: Concurrency categories: Concurrency
language: en language: en
tags: tags: