From 85b3775a9a82a36d94a0b254776fc031c2ef9b46 Mon Sep 17 00:00:00 2001 From: Yavuz Tas Date: Thu, 1 Aug 2019 14:25:02 +0200 Subject: [PATCH 001/265] implement hexagonal architecture pattern --- .../hexagonal/AccountApplication.java | 21 ++++++++ .../com/baeldung/hexagonal/IOCContainer.java | 54 +++++++++++++++++++ .../hexagonal/central/domain/Account.java | 42 +++++++++++++++ .../hexagonal/central/domain/AccountType.java | 7 +++ .../repository/IAccountRepository.java | 9 ++++ .../central/service/AccountService.java | 32 +++++++++++ .../central/service/IAccountService.java | 7 +++ .../hexagonal/central/ui/IAccountUI.java | 9 ++++ .../baeldung/hexagonal/input/ConsoleUI.java | 54 +++++++++++++++++++ .../output/InMemoryAccountRepository.java | 23 ++++++++ 10 files changed, 258 insertions(+) create mode 100644 patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/AccountApplication.java create mode 100644 patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/IOCContainer.java create mode 100644 patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/domain/Account.java create mode 100644 patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/domain/AccountType.java create mode 100644 patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/repository/IAccountRepository.java create mode 100644 patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/service/AccountService.java create mode 100644 patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/service/IAccountService.java create mode 100644 patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/ui/IAccountUI.java create mode 100644 patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/input/ConsoleUI.java create mode 100644 patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/output/InMemoryAccountRepository.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/AccountApplication.java b/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/AccountApplication.java new file mode 100644 index 0000000000..d4dd34312d --- /dev/null +++ b/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/AccountApplication.java @@ -0,0 +1,21 @@ +package com.baeldung.hexagonal; + +import java.util.Map; + +import com.baeldung.hexagonal.input.ConsoleUI; + +public class AccountApplication extends IOCContainer { + + public static void main(String[] args) { + + AccountApplication app = new AccountApplication(); + + ConsoleUI console = app.get(ConsoleUI.class); + console.printWelcomeMessage(); + + Map parameters = console.readParameters(); + console.create(parameters); + + } + +} diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/IOCContainer.java b/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/IOCContainer.java new file mode 100644 index 0000000000..49ff1955ee --- /dev/null +++ b/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/IOCContainer.java @@ -0,0 +1,54 @@ +package com.baeldung.hexagonal; + +import com.baeldung.hexagonal.central.service.AccountService; +import com.baeldung.hexagonal.central.service.IAccountService; +import com.baeldung.hexagonal.input.ConsoleUI; +import com.baeldung.hexagonal.output.InMemoryAccountRepository; + +public class IOCContainer { + + private ConsoleUI consoleAdapter; + private AccountService accountService; + private InMemoryAccountRepository inMemoryAccountRepository; + + public T get(Class clazz) { + + if (ConsoleUI.class.isAssignableFrom(clazz)) { + return (T) getConsoleAdapter(); + } + + if (IAccountService.class.isAssignableFrom(clazz)) { + return (T) getAccountService(); + } + + if (InMemoryAccountRepository.class.isAssignableFrom(clazz)) { + return (T) getInMemoryAccountRepository(); + } + + return null; + } + + private ConsoleUI getConsoleAdapter() { + if (consoleAdapter == null) { + consoleAdapter = new ConsoleUI(); + consoleAdapter.setAccountService(getAccountService()); + } + return consoleAdapter; + } + + private IAccountService getAccountService() { + if (accountService == null) { + accountService = new AccountService(); + accountService.setAccountRepository(getInMemoryAccountRepository()); + } + return accountService; + } + + private InMemoryAccountRepository getInMemoryAccountRepository() { + if (inMemoryAccountRepository == null) { + inMemoryAccountRepository = new InMemoryAccountRepository(); + } + return inMemoryAccountRepository; + } + +} diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/domain/Account.java b/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/domain/Account.java new file mode 100644 index 0000000000..2ecb602690 --- /dev/null +++ b/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/domain/Account.java @@ -0,0 +1,42 @@ +package com.baeldung.hexagonal.central.domain; + +import java.util.UUID; + +public class Account { + + private UUID id; + + private String name; + + private AccountType type; + + public UUID getId() { + return id; + } + + public void setId(UUID id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public AccountType getType() { + return type; + } + + public void setType(AccountType type) { + this.type = type; + } + + @Override + public String toString() { + return "Account [name=" + name + ", type=" + type + "]"; + } + +} diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/domain/AccountType.java b/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/domain/AccountType.java new file mode 100644 index 0000000000..a0ec54ce7f --- /dev/null +++ b/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/domain/AccountType.java @@ -0,0 +1,7 @@ +package com.baeldung.hexagonal.central.domain; + +public enum AccountType { + + USER, MODERATOR, ADMIN + +} diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/repository/IAccountRepository.java b/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/repository/IAccountRepository.java new file mode 100644 index 0000000000..6863d04740 --- /dev/null +++ b/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/repository/IAccountRepository.java @@ -0,0 +1,9 @@ +package com.baeldung.hexagonal.central.repository; + +import com.baeldung.hexagonal.central.domain.Account; + +public interface IAccountRepository { + + public void save(Account account); + +} diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/service/AccountService.java b/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/service/AccountService.java new file mode 100644 index 0000000000..97fa1fd7f9 --- /dev/null +++ b/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/service/AccountService.java @@ -0,0 +1,32 @@ +package com.baeldung.hexagonal.central.service; + +import com.baeldung.hexagonal.central.domain.Account; +import com.baeldung.hexagonal.central.domain.AccountType; +import com.baeldung.hexagonal.central.repository.IAccountRepository; + +public class AccountService implements IAccountService { + + private IAccountRepository accountRepository; + + public void setAccountRepository(IAccountRepository accountRepository) { + this.accountRepository = accountRepository; + } + + @Override + public void createAccount(String name, String type) { + + Account account = new Account(); + account.setName(name); + + if ("user".equals(type)) { + account.setType(AccountType.USER); + } + if ("mod".equals(type)) { + account.setType(AccountType.MODERATOR); + } + + accountRepository.save(account); + + } + +} diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/service/IAccountService.java b/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/service/IAccountService.java new file mode 100644 index 0000000000..1df98ef49e --- /dev/null +++ b/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/service/IAccountService.java @@ -0,0 +1,7 @@ +package com.baeldung.hexagonal.central.service; + +public interface IAccountService { + + public void createAccount(String name, String type); + +} diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/ui/IAccountUI.java b/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/ui/IAccountUI.java new file mode 100644 index 0000000000..fbb7cef914 --- /dev/null +++ b/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/ui/IAccountUI.java @@ -0,0 +1,9 @@ +package com.baeldung.hexagonal.central.ui; + +import java.util.Map; + +public interface IAccountUI { + + public void create(Map parameters); + +} diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/input/ConsoleUI.java b/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/input/ConsoleUI.java new file mode 100644 index 0000000000..7c1bacfac3 --- /dev/null +++ b/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/input/ConsoleUI.java @@ -0,0 +1,54 @@ +package com.baeldung.hexagonal.input; + +import java.util.HashMap; +import java.util.Map; +import java.util.Scanner; + +import com.baeldung.hexagonal.central.service.IAccountService; +import com.baeldung.hexagonal.central.ui.IAccountUI; + +public class ConsoleUI implements IAccountUI { + + private IAccountService accountService; + + public void setAccountService(IAccountService accountService) { + this.accountService = accountService; + } + + public void printWelcomeMessage() { + + StringBuilder sb = new StringBuilder(); + sb.append("Welcome to Account Application!"); + sb.append("\n"); + sb.append("Usage:"); + sb.append("* new account:"); + sb.append("\tcreate "); + + System.out.println(sb.toString()); + } + + public Map readParameters() { + + Scanner scanner = new Scanner(System.in); + + Map params = new HashMap<>(); + + String name = scanner.next(); + String type = scanner.next(); + + params.put("name", name); + params.put("type", type); + + return params; + } + + @Override + public void create(Map parameters) { + + String name = parameters.get("name"); + String type = parameters.get("type"); + + accountService.createAccount(name, type); + } + +} diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/output/InMemoryAccountRepository.java b/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/output/InMemoryAccountRepository.java new file mode 100644 index 0000000000..22924e6b23 --- /dev/null +++ b/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/output/InMemoryAccountRepository.java @@ -0,0 +1,23 @@ +package com.baeldung.hexagonal.output; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +import com.baeldung.hexagonal.central.domain.Account; +import com.baeldung.hexagonal.central.repository.IAccountRepository; + +public class InMemoryAccountRepository implements IAccountRepository { + + private List accountList = new ArrayList<>(); + + @Override + public void save(Account account) { + + account.setId(UUID.randomUUID()); + + accountList.add(account); + + } + +} From f17b11fd6821abaf632da8a7114bd8fa058676f0 Mon Sep 17 00:00:00 2001 From: Yavuz Tas Date: Fri, 9 Aug 2019 21:13:10 +0200 Subject: [PATCH 002/265] Add source code for article BAEL-2463 --- .../com/baeldung/jackson/entities/File.java | 25 +++ .../com/baeldung/jackson/entities/Folder.java | 82 +++++++++ .../FolderBeanSerializerModifier.java | 21 +++ .../custom/serializer/FolderSerializer.java | 36 ++++ ...derSerializerWithCallingOwnSerializer.java | 30 ++++ ...SerializerWithDefaultSerializerStored.java | 35 ++++ ...derSerializerWithInternalObjectMapper.java | 34 ++++ ...olderSerializerWithSerializerProvider.java | 29 +++ .../CallingDefaultSerializerUnitTest.java | 166 ++++++++++++++++++ 9 files changed, 458 insertions(+) create mode 100644 jackson-2/src/main/java/com/baeldung/jackson/entities/File.java create mode 100644 jackson-2/src/main/java/com/baeldung/jackson/entities/Folder.java create mode 100644 jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderBeanSerializerModifier.java create mode 100644 jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderSerializer.java create mode 100644 jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderSerializerWithCallingOwnSerializer.java create mode 100644 jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderSerializerWithDefaultSerializerStored.java create mode 100644 jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderSerializerWithInternalObjectMapper.java create mode 100644 jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderSerializerWithSerializerProvider.java create mode 100644 jackson-2/src/test/java/com/baeldung/jackson/serialization/custom/serializer/CallingDefaultSerializerUnitTest.java diff --git a/jackson-2/src/main/java/com/baeldung/jackson/entities/File.java b/jackson-2/src/main/java/com/baeldung/jackson/entities/File.java new file mode 100644 index 0000000000..0e8829e927 --- /dev/null +++ b/jackson-2/src/main/java/com/baeldung/jackson/entities/File.java @@ -0,0 +1,25 @@ +package com.baeldung.jackson.entities; + +public class File { + + private Long id; + + private String name; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + +} \ No newline at end of file diff --git a/jackson-2/src/main/java/com/baeldung/jackson/entities/Folder.java b/jackson-2/src/main/java/com/baeldung/jackson/entities/Folder.java new file mode 100644 index 0000000000..c49e46b204 --- /dev/null +++ b/jackson-2/src/main/java/com/baeldung/jackson/entities/Folder.java @@ -0,0 +1,82 @@ +package com.baeldung.jackson.entities; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonIgnore; + +public class Folder { + + private Long id; + + private String name; + + private String owner; + + private Date created; + + private Date modified; + + private Date lastAccess; + + @JsonIgnore + private List files = new ArrayList<>(); + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getOwner() { + return owner; + } + + public void setOwner(String owner) { + this.owner = owner; + } + + public Date getCreated() { + return created; + } + + public void setCreated(Date created) { + this.created = created; + } + + public Date getModified() { + return modified; + } + + public void setModified(Date modified) { + this.modified = modified; + } + + public Date getLastAccess() { + return lastAccess; + } + + public void setLastAccess(Date lastAccess) { + this.lastAccess = lastAccess; + } + + public List getFiles() { + return files; + } + + public void setFiles(List files) { + this.files = files; + } + +} \ No newline at end of file diff --git a/jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderBeanSerializerModifier.java b/jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderBeanSerializerModifier.java new file mode 100644 index 0000000000..a3add58dc4 --- /dev/null +++ b/jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderBeanSerializerModifier.java @@ -0,0 +1,21 @@ +package com.baeldung.jackson.serialization.custom.serializer; + +import com.baeldung.jackson.entities.Folder; +import com.fasterxml.jackson.databind.BeanDescription; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializationConfig; +import com.fasterxml.jackson.databind.ser.BeanSerializerModifier; + +public class FolderBeanSerializerModifier extends BeanSerializerModifier { + + @Override + public JsonSerializer modifySerializer(SerializationConfig config, BeanDescription beanDesc, JsonSerializer serializer) { + + if (beanDesc.getBeanClass().equals(Folder.class)) { + return new FolderSerializerWithDefaultSerializerStored((JsonSerializer) serializer); + } + + return serializer; + } + +} diff --git a/jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderSerializer.java b/jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderSerializer.java new file mode 100644 index 0000000000..f385e63e09 --- /dev/null +++ b/jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderSerializer.java @@ -0,0 +1,36 @@ +package com.baeldung.jackson.serialization.custom.serializer; + +import java.io.IOException; + +import com.baeldung.jackson.entities.File; +import com.baeldung.jackson.entities.Folder; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; + +public class FolderSerializer extends StdSerializer { + + public FolderSerializer() { + super(Folder.class); + } + + @Override + public void serialize(Folder value, JsonGenerator gen, SerializerProvider provider) throws IOException { + + gen.writeStartObject(); + gen.writeStringField("name", value.getName()); + + gen.writeArrayFieldStart("files"); + for (File file : value.getFiles()) { + gen.writeStartObject(); + gen.writeNumberField("id", file.getId()); + gen.writeStringField("name", file.getName()); + gen.writeEndObject(); + } + gen.writeEndArray(); + + gen.writeEndObject(); + + } + +} diff --git a/jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderSerializerWithCallingOwnSerializer.java b/jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderSerializerWithCallingOwnSerializer.java new file mode 100644 index 0000000000..ed5d9fffb8 --- /dev/null +++ b/jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderSerializerWithCallingOwnSerializer.java @@ -0,0 +1,30 @@ +package com.baeldung.jackson.serialization.custom.serializer; + +import java.io.IOException; + +import com.baeldung.jackson.entities.Folder; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; + +public class FolderSerializerWithCallingOwnSerializer extends StdSerializer { + + public FolderSerializerWithCallingOwnSerializer() { + super(Folder.class); + } + + @Override + public void serialize(Folder value, JsonGenerator gen, SerializerProvider provider) throws IOException { + + gen.writeStartObject(); + gen.writeStringField("name", value.getName()); + + provider.defaultSerializeField("files", value.getFiles(), gen); + + provider.defaultSerializeField("details", value, gen); + + gen.writeEndObject(); + + } + +} diff --git a/jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderSerializerWithDefaultSerializerStored.java b/jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderSerializerWithDefaultSerializerStored.java new file mode 100644 index 0000000000..d4a95cd939 --- /dev/null +++ b/jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderSerializerWithDefaultSerializerStored.java @@ -0,0 +1,35 @@ +package com.baeldung.jackson.serialization.custom.serializer; + +import java.io.IOException; + +import com.baeldung.jackson.entities.Folder; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; + +public class FolderSerializerWithDefaultSerializerStored extends StdSerializer { + + private final JsonSerializer defaultSerializer; + + public FolderSerializerWithDefaultSerializerStored(JsonSerializer defaultSerializer) { + super(Folder.class); + this.defaultSerializer = defaultSerializer; + } + + @Override + public void serialize(Folder value, JsonGenerator gen, SerializerProvider provider) throws IOException { + + gen.writeStartObject(); + gen.writeStringField("name", value.getName()); + + provider.defaultSerializeField("files", value.getFiles(), gen); + + gen.writeFieldName("details"); + defaultSerializer.serialize(value, gen, provider); + + gen.writeEndObject(); + + } + +} diff --git a/jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderSerializerWithInternalObjectMapper.java b/jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderSerializerWithInternalObjectMapper.java new file mode 100644 index 0000000000..b23dc32205 --- /dev/null +++ b/jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderSerializerWithInternalObjectMapper.java @@ -0,0 +1,34 @@ +package com.baeldung.jackson.serialization.custom.serializer; + +import java.io.IOException; + +import com.baeldung.jackson.entities.Folder; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; + +public class FolderSerializerWithInternalObjectMapper extends StdSerializer { + + public FolderSerializerWithInternalObjectMapper() { + super(Folder.class); + } + + @Override + public void serialize(Folder value, JsonGenerator gen, SerializerProvider provider) throws IOException { + + gen.writeStartObject(); + gen.writeStringField("name", value.getName()); + + // we access internal mapper to delegate the serialization of File list + ObjectMapper mapper = (ObjectMapper) gen.getCodec(); + + gen.writeFieldName("files"); + String stringValue = mapper.writeValueAsString(value.getFiles()); + gen.writeRawValue(stringValue); + + gen.writeEndObject(); + + } + +} diff --git a/jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderSerializerWithSerializerProvider.java b/jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderSerializerWithSerializerProvider.java new file mode 100644 index 0000000000..81990a084d --- /dev/null +++ b/jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderSerializerWithSerializerProvider.java @@ -0,0 +1,29 @@ +package com.baeldung.jackson.serialization.custom.serializer; + +import java.io.IOException; + +import com.baeldung.jackson.entities.Folder; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; + +public class FolderSerializerWithSerializerProvider extends StdSerializer { + + public FolderSerializerWithSerializerProvider() { + super(Folder.class); + } + + @Override + public void serialize(Folder value, JsonGenerator gen, SerializerProvider provider) throws IOException { + + gen.writeStartObject(); + gen.writeStringField("name", value.getName()); + + // we delegate the File list serialization to its default serializer + provider.defaultSerializeField("files", value.getFiles(), gen); + + gen.writeEndObject(); + + } + +} \ No newline at end of file diff --git a/jackson-2/src/test/java/com/baeldung/jackson/serialization/custom/serializer/CallingDefaultSerializerUnitTest.java b/jackson-2/src/test/java/com/baeldung/jackson/serialization/custom/serializer/CallingDefaultSerializerUnitTest.java new file mode 100644 index 0000000000..b067e7b501 --- /dev/null +++ b/jackson-2/src/test/java/com/baeldung/jackson/serialization/custom/serializer/CallingDefaultSerializerUnitTest.java @@ -0,0 +1,166 @@ +package com.baeldung.jackson.serialization.custom.serializer; + +import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.io.IOException; +import java.time.Instant; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.junit.Before; +import org.junit.Test; + +import com.baeldung.jackson.entities.File; +import com.baeldung.jackson.entities.Folder; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.module.SimpleModule; + +public class CallingDefaultSerializerUnitTest { + + private ObjectMapper mapper; + private Folder mockFolder; + private TypeReference> mapType; + + @Before + public void setup() { + + mapType = new TypeReference>() { + }; + + mapper = new ObjectMapper(); + + mockFolder = new Folder(); + mockFolder.setId(1L); + mockFolder.setName("Root Folder"); + mockFolder.setOwner("root"); + mockFolder.setCreated(Date.from(Instant.now().minusSeconds(60))); + mockFolder.setModified(Date.from(Instant.now().minusSeconds(30))); + mockFolder.setLastAccess(Date.from(Instant.now())); + + File file1 = new File(); + file1.setId(1L); + file1.setName("File 1"); + + File file2 = new File(); + file2.setId(2L); + file2.setName("File 2"); + + List files = new ArrayList<>(); + files.add(file1); + files.add(file2); + mockFolder.setFiles(files); + + } + + @Test + public void givenFolder_whenSerialized_onlyNameAndFilesFieldsSerialized() throws IOException { + + SimpleModule module = new SimpleModule(); + module.addSerializer(new FolderSerializer()); + mapper.registerModule(module); + + String json = mapper.writeValueAsString(mockFolder); + + HashMap actual = mapper.readValue(json, mapType); + + assertTrue(actual.containsKey("name")); + assertTrue(actual.containsKey("files")); + assertEquals(mockFolder.getName(), actual.get("name")); + + List actualFiles = (List) actual.get("files"); + assertEquals(mockFolder.getFiles().size(), actualFiles.size()); + + } + + @Test + public void givenFolder_whenSerializedWithSerializerProvider_onlyNameAndFilesFieldsSerialized() throws IOException { + + SimpleModule module = new SimpleModule(); + module.addSerializer(new FolderSerializerWithSerializerProvider()); + mapper.registerModule(module); + + String json = mapper.writeValueAsString(mockFolder); + + HashMap actual = mapper.readValue(json, mapType); + + assertTrue(actual.containsKey("name")); + assertTrue(actual.containsKey("files")); + assertEquals(mockFolder.getName(), actual.get("name")); + + List actualFiles = (List) actual.get("files"); + assertEquals(mockFolder.getFiles().size(), actualFiles.size()); + + } + + @Test + public void givenFolder_whenSerializedWithInternalObjectMapper_onlyNameAndFilesFieldsSerialized() throws IOException { + + SimpleModule module = new SimpleModule(); + module.addSerializer(new FolderSerializerWithInternalObjectMapper()); + mapper.registerModule(module); + + String json = mapper.writeValueAsString(mockFolder); + + HashMap actual = mapper.readValue(json, mapType); + + assertTrue(actual.containsKey("name")); + assertTrue(actual.containsKey("files")); + assertEquals(mockFolder.getName(), actual.get("name")); + + List actualFiles = (List) actual.get("files"); + assertEquals(mockFolder.getFiles().size(), actualFiles.size()); + + } + + @Test(expected = StackOverflowError.class) + public void givenFolder_whenSerializedWithCallingOwnSerializer_exceptionOccured() throws IOException { + + SimpleModule module = new SimpleModule(); + module.addSerializer(new FolderSerializerWithCallingOwnSerializer()); + mapper.registerModule(module); + + mapper.writeValueAsString(mockFolder); + + } + + @Test + public void givenFolder_whenSerializedWithDefaultSerializerStored_NameAndFilesAndDetailsFieldsSerialized() throws IOException { + + SimpleModule module = new SimpleModule(); + module.setSerializerModifier(new FolderBeanSerializerModifier()); + mapper.registerModule(module); + + String json = mapper.writeValueAsString(mockFolder); + + HashMap actual = mapper.readValue(json, mapType); + + assertTrue(actual.containsKey("name")); + assertTrue(actual.containsKey("files")); + assertEquals(mockFolder.getName(), actual.get("name")); + + List actualFiles = (List) actual.get("files"); + assertEquals(mockFolder.getFiles().size(), actualFiles.size()); + + Map actualDetails = (Map) actual.get("details"); + assertTrue(actualDetails.containsKey("id")); + assertTrue(actualDetails.containsKey("name")); + assertTrue(actualDetails.containsKey("owner")); + assertTrue(actualDetails.containsKey("created")); + assertTrue(actualDetails.containsKey("modified")); + assertTrue(actualDetails.containsKey("lastAccess")); + + assertEquals(mockFolder.getId().longValue(), ((Number)actualDetails.get("id")).longValue()); + assertEquals(mockFolder.getName(), actualDetails.get("name")); + assertEquals(mockFolder.getOwner(), actualDetails.get("owner")); + assertEquals(mockFolder.getCreated(), new Date((long) actualDetails.get("created"))); + assertEquals(mockFolder.getModified(), new Date((long) actualDetails.get("modified"))); + assertEquals(mockFolder.getLastAccess(), new Date((long) actualDetails.get("lastAccess"))); + + } + +} From 369f73e7b38a214ed4337604b732d0879dfa7c4e Mon Sep 17 00:00:00 2001 From: "m.raheem" Date: Sun, 15 Sep 2019 00:32:01 +0200 Subject: [PATCH 003/265] enum deserialization --- .../com/baeldung/jackson/entities/City.java | 22 ++++++++++ .../com/baeldung/jackson/enums/Distance.java | 38 +++++++++++++--- .../JacksonEnumSerializationUnitTest.java | 43 ++++++++++++++++++- 3 files changed, 95 insertions(+), 8 deletions(-) create mode 100644 jackson/src/main/java/com/baeldung/jackson/entities/City.java diff --git a/jackson/src/main/java/com/baeldung/jackson/entities/City.java b/jackson/src/main/java/com/baeldung/jackson/entities/City.java new file mode 100644 index 0000000000..d4c5d715de --- /dev/null +++ b/jackson/src/main/java/com/baeldung/jackson/entities/City.java @@ -0,0 +1,22 @@ +package com.baeldung.jackson.entities; + +import com.baeldung.jackson.enums.Distance; + +public class City { + + private Distance distance; + + public Distance getDistance() { + return distance; + } + + public void setDistance(Distance distance) { + this.distance = distance; + } + + @Override + public String toString() { + return "City [distance=" + distance + "]"; + } + +} diff --git a/jackson/src/main/java/com/baeldung/jackson/enums/Distance.java b/jackson/src/main/java/com/baeldung/jackson/enums/Distance.java index 8026eedc44..fdda32d16c 100644 --- a/jackson/src/main/java/com/baeldung/jackson/enums/Distance.java +++ b/jackson/src/main/java/com/baeldung/jackson/enums/Distance.java @@ -1,20 +1,29 @@ package com.baeldung.jackson.enums; import com.baeldung.jackson.serialization.DistanceSerializer; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize; /** * Use @JsonFormat to handle representation of Enum as JSON (available since Jackson 2.1.2) * Use @JsonSerialize to configure a custom Jackson serializer */ -// @JsonFormat(shape = JsonFormat.Shape.OBJECT) -@JsonSerialize(using = DistanceSerializer.class) +@JsonFormat(shape = JsonFormat.Shape.OBJECT) +//@JsonSerialize(using = DistanceSerializer.class) public enum Distance { - KILOMETER("km", 1000), MILE("miles", 1609.34), METER("meters", 1), INCH("inches", 0.0254), CENTIMETER("cm", 0.01), MILLIMETER("mm", 0.001); + @JsonProperty("distance-in-km") + KILOMETER("km", 1000), + @JsonProperty("distance-in-miles") + MILE("miles", 1609.34), METER("meters", 1), INCH("inches", 0.0254), CENTIMETER("cm", 0.01), + MILLIMETER("mm", 0.001); private String unit; private final double meters; - + private Distance(String unit, double meters) { this.unit = unit; this.meters = meters; @@ -23,11 +32,11 @@ public enum Distance { /** * Use @JsonValue to control marshalling output for an enum */ - // @JsonValue +// @JsonValue public double getMeters() { return meters; } - + public String getUnit() { return unit; } @@ -35,7 +44,7 @@ public enum Distance { public void setUnit(String unit) { this.unit = unit; } - + /** * Usage example: Distance.MILE.convertFromMeters(1205.5); */ @@ -51,4 +60,19 @@ public enum Distance { return distanceInMeters * meters; } +// @JsonCreator + public static Distance forValues(@JsonProperty("unit") String unit, @JsonProperty("meters") double meters) { + + for (Distance distance : Distance.values()) { + if (distance.unit.equals(unit) + && Double.compare(distance.meters, meters) == 0) { + + return distance; + } + } + + return null; + + } + } \ No newline at end of file diff --git a/jackson/src/test/java/com/baeldung/jackson/enums/JacksonEnumSerializationUnitTest.java b/jackson/src/test/java/com/baeldung/jackson/enums/JacksonEnumSerializationUnitTest.java index 45c0ba1382..3108773a00 100644 --- a/jackson/src/test/java/com/baeldung/jackson/enums/JacksonEnumSerializationUnitTest.java +++ b/jackson/src/test/java/com/baeldung/jackson/enums/JacksonEnumSerializationUnitTest.java @@ -1,13 +1,17 @@ package com.baeldung.jackson.enums; import static org.hamcrest.Matchers.containsString; +import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; import java.io.IOException; - +import org.junit.Ignore; import org.junit.Test; +import com.baeldung.jackson.entities.City; import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; public class JacksonEnumSerializationUnitTest { @@ -19,4 +23,41 @@ public class JacksonEnumSerializationUnitTest { assertThat(dtoAsString, containsString("1609.34")); } + @Test + @Ignore + public final void givenEnum_whenDeserializingJson_thenCorrectRepresentation() throws JsonParseException, IOException { + String json = "{\"distance\":\"KILOMETER\"}"; + City city = new ObjectMapper().readValue(json, City.class); + + assertEquals(Distance.KILOMETER, city.getDistance()); + } + + @Test + @Ignore + public final void givenEnumWithJsonValue_whenDeserializingJson_thenCorrectRepresentation() throws JsonParseException, IOException { + String json = "{\"JacksonDeserializationUnitTestdistance\": \"0.0254\"}"; + + City city = new ObjectMapper().readValue(json, City.class); + assertEquals(Distance.INCH, city.getDistance()); + } + + @Test + public final void givenEnumWithGsonProperty_whenDeserializingJson_thenCorrectRepresentation() throws JsonParseException, IOException { + String json = "{\"distance\": \"distance-in-km\"}"; + + City city = new ObjectMapper().readValue(json, City.class); + assertEquals(Distance.KILOMETER, city.getDistance()); + + } + + @Test + @Ignore + public final void givenEnumWithGsonCreator_whenDeserializingJson_thenCorrectRepresentation() throws JsonParseException, IOException { + String json = "{\"distance\": {\"unit\":\"miles\",\"meters\":1609.34}}"; + + City city = new ObjectMapper().readValue(json, City.class); + assertEquals(Distance.MILE, city.getDistance()); + System.out.println(city); + } + } From ed9463faa125fbb0b56412ca0a4a999162d0ced1 Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Tue, 17 Sep 2019 19:13:21 +0200 Subject: [PATCH 004/265] Split the first 2 modules: java-dates-conversion and java-dates-string. --- java-dates-2/README.md | 4 - .../.gitignore | 5 +- java-dates-conversion/README.md | 9 ++ .../pom.xml | 28 +++---- .../DateToLocalDateConverter.java | 0 .../DateToLocalDateTimeConverter.java | 0 .../LocalDateTimeToDateConverter.java | 0 .../LocalDateToDateConverter.java | 0 .../convert/ConvertDateTimeUnitTest.java | 0 .../ConvertInstantToTimestampUnitTest.java | 5 +- .../DateToLocalDateConverterUnitTest.java | 0 .../DateToLocalDateTimeConverterUnitTest.java | 0 .../LocalDateTimeToDateConverterUnitTest.java | 0 .../LocalDateToDateConverterUnitTest.java | 0 ...XmlGregorianCalendarConverterUnitTest.java | 0 java-dates-string/.gitignore | 26 ++++++ java-dates-string/README.md | 12 +++ java-dates-string/pom.xml | 83 +++++++++++++++++++ .../date/validation/DateValidator.java | 0 .../DateValidatorUsingApacheValidator.java | 0 .../DateValidatorUsingDateFormat.java | 0 .../DateValidatorUsingDateTimeFormatter.java | 0 .../DateValidatorUsingLocalDate.java | 0 .../regexp/datepattern/DateMatcher.java | 0 .../datepattern/FormattedDateMatcher.java | 0 .../regexp/datepattern/RangedDateMatcher.java | 0 .../gregorian/February29thMatcher.java | 0 .../gregorian/FebruaryGeneralMatcher.java | 0 .../gregorian/GregorianDateMatcher.java | 0 .../gregorian/MonthsOf30DaysMatcher.java | 0 .../gregorian/MonthsOf31DaysMatcher.java | 0 .../optmization/OptimizedMatcher.java | 0 .../timezonedisplay/TimezoneDisplay.java | 0 .../timezonedisplay/TimezoneDisplayApp.java | 0 .../timezonedisplay/TimezoneDisplayJava7.java | 0 .../TimezoneDisplayJava7App.java | 0 .../zonedatetime}/OffsetDateTimeExample.java | 2 +- .../zonedatetime}/OffsetTimeExample.java | 2 +- .../zonedatetime}/ZoneDateTimeExample.java | 2 +- ...ValidatorUsingApacheValidatorUnitTest.java | 0 .../DateValidatorUsingDateFormatUnitTest.java | 0 ...lidatorUsingDateTimeFormatterUnitTest.java | 0 .../DateValidatorUsingLocalDateUnitTest.java | 0 .../datetime/DateTimeFormatterUnitTest.java | 0 .../FormattedDateMatcherUnitTest.java | 0 .../RangedDateMatcherUnitTest.java | 0 .../February29thMatcherUnitTest.java | 0 .../FebruaryGeneralMatcherUnitTest.java | 0 .../GregorianDateMatcherUnitTest.java | 0 .../MonthsOf30DaysMatcherUnitTest.java | 0 .../MonthsOf31DaysMatcherUnitTest.java | 0 .../testhelper/GregorianDateTestHelper.java | 0 .../SimpleDateFormatUnitTest.java | 0 .../StringToTimestampConverterUnitTest.java | 0 .../TimestampToStringConverterTest.java | 0 .../OffsetDateTimeExampleUnitTest.java | 2 +- .../OffsetTimeExampleUnitTest.java | 2 +- .../ZoneDateTimeExampleUnitTest.java | 2 +- .../zonedatetime}/ZonedDateTimeUnitTest.java | 2 +- java-dates/README.md | 8 -- java-dates/pom.xml | 6 -- pom.xml | 6 +- 62 files changed, 158 insertions(+), 48 deletions(-) delete mode 100644 java-dates-2/README.md rename {java-dates-2 => java-dates-conversion}/.gitignore (90%) create mode 100644 java-dates-conversion/README.md rename {java-dates-2 => java-dates-conversion}/pom.xml (76%) rename {java-dates => java-dates-conversion}/src/main/java/com/baeldung/datetolocaldate/DateToLocalDateConverter.java (100%) rename {java-dates => java-dates-conversion}/src/main/java/com/baeldung/datetolocaldate/DateToLocalDateTimeConverter.java (100%) rename {java-dates => java-dates-conversion}/src/main/java/com/baeldung/datetolocaldate/LocalDateTimeToDateConverter.java (100%) rename {java-dates => java-dates-conversion}/src/main/java/com/baeldung/datetolocaldate/LocalDateToDateConverter.java (100%) rename {java-dates-2 => java-dates-conversion}/src/test/java/com/baeldung/convert/ConvertDateTimeUnitTest.java (100%) rename {java-dates => java-dates-conversion}/src/test/java/com/baeldung/datetime/ConvertInstantToTimestampUnitTest.java (97%) rename {java-dates => java-dates-conversion}/src/test/java/com/baeldung/datetolocaldate/DateToLocalDateConverterUnitTest.java (100%) rename {java-dates => java-dates-conversion}/src/test/java/com/baeldung/datetolocaldate/DateToLocalDateTimeConverterUnitTest.java (100%) rename {java-dates => java-dates-conversion}/src/test/java/com/baeldung/datetolocaldate/LocalDateTimeToDateConverterUnitTest.java (100%) rename {java-dates => java-dates-conversion}/src/test/java/com/baeldung/datetolocaldate/LocalDateToDateConverterUnitTest.java (100%) rename {java-dates-2 => java-dates-conversion}/src/test/java/com/baeldung/xmlgregoriancalendar/XmlGregorianCalendarConverterUnitTest.java (100%) create mode 100644 java-dates-string/.gitignore create mode 100644 java-dates-string/README.md create mode 100644 java-dates-string/pom.xml rename {java-dates-2 => java-dates-string}/src/main/java/com/baeldung/date/validation/DateValidator.java (100%) rename {java-dates-2 => java-dates-string}/src/main/java/com/baeldung/date/validation/DateValidatorUsingApacheValidator.java (100%) rename {java-dates-2 => java-dates-string}/src/main/java/com/baeldung/date/validation/DateValidatorUsingDateFormat.java (100%) rename {java-dates-2 => java-dates-string}/src/main/java/com/baeldung/date/validation/DateValidatorUsingDateTimeFormatter.java (100%) rename {java-dates-2 => java-dates-string}/src/main/java/com/baeldung/date/validation/DateValidatorUsingLocalDate.java (100%) rename {java-dates => java-dates-string}/src/main/java/com/baeldung/regexp/datepattern/DateMatcher.java (100%) rename {java-dates => java-dates-string}/src/main/java/com/baeldung/regexp/datepattern/FormattedDateMatcher.java (100%) rename {java-dates => java-dates-string}/src/main/java/com/baeldung/regexp/datepattern/RangedDateMatcher.java (100%) rename {java-dates => java-dates-string}/src/main/java/com/baeldung/regexp/datepattern/gregorian/February29thMatcher.java (100%) rename {java-dates => java-dates-string}/src/main/java/com/baeldung/regexp/datepattern/gregorian/FebruaryGeneralMatcher.java (100%) rename {java-dates => java-dates-string}/src/main/java/com/baeldung/regexp/datepattern/gregorian/GregorianDateMatcher.java (100%) rename {java-dates => java-dates-string}/src/main/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf30DaysMatcher.java (100%) rename {java-dates => java-dates-string}/src/main/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf31DaysMatcher.java (100%) rename {java-dates => java-dates-string}/src/main/java/com/baeldung/regexp/datepattern/optmization/OptimizedMatcher.java (100%) rename {java-dates => java-dates-string}/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplay.java (100%) rename {java-dates => java-dates-string}/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayApp.java (100%) rename {java-dates => java-dates-string}/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayJava7.java (100%) rename {java-dates => java-dates-string}/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayJava7App.java (100%) rename {java-dates/src/main/java/com/baeldung/zoneddatetime => java-dates-string/src/main/java/com/baeldung/zonedatetime}/OffsetDateTimeExample.java (89%) rename {java-dates/src/main/java/com/baeldung/zoneddatetime => java-dates-string/src/main/java/com/baeldung/zonedatetime}/OffsetTimeExample.java (89%) rename {java-dates/src/main/java/com/baeldung/zoneddatetime => java-dates-string/src/main/java/com/baeldung/zonedatetime}/ZoneDateTimeExample.java (93%) rename {java-dates-2 => java-dates-string}/src/test/java/com/baeldung/date/validation/DateValidatorUsingApacheValidatorUnitTest.java (100%) rename {java-dates-2 => java-dates-string}/src/test/java/com/baeldung/date/validation/DateValidatorUsingDateFormatUnitTest.java (100%) rename {java-dates-2 => java-dates-string}/src/test/java/com/baeldung/date/validation/DateValidatorUsingDateTimeFormatterUnitTest.java (100%) rename {java-dates-2 => java-dates-string}/src/test/java/com/baeldung/date/validation/DateValidatorUsingLocalDateUnitTest.java (100%) rename {java-dates => java-dates-string}/src/test/java/com/baeldung/datetime/DateTimeFormatterUnitTest.java (100%) rename {java-dates => java-dates-string}/src/test/java/com/baeldung/regexp/datepattern/FormattedDateMatcherUnitTest.java (100%) rename {java-dates => java-dates-string}/src/test/java/com/baeldung/regexp/datepattern/RangedDateMatcherUnitTest.java (100%) rename {java-dates => java-dates-string}/src/test/java/com/baeldung/regexp/datepattern/gregorian/February29thMatcherUnitTest.java (100%) rename {java-dates => java-dates-string}/src/test/java/com/baeldung/regexp/datepattern/gregorian/FebruaryGeneralMatcherUnitTest.java (100%) rename {java-dates => java-dates-string}/src/test/java/com/baeldung/regexp/datepattern/gregorian/GregorianDateMatcherUnitTest.java (100%) rename {java-dates => java-dates-string}/src/test/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf30DaysMatcherUnitTest.java (100%) rename {java-dates => java-dates-string}/src/test/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf31DaysMatcherUnitTest.java (100%) rename {java-dates => java-dates-string}/src/test/java/com/baeldung/regexp/datepattern/gregorian/testhelper/GregorianDateTestHelper.java (100%) rename {java-dates => java-dates-string}/src/test/java/com/baeldung/simpledateformat/SimpleDateFormatUnitTest.java (100%) rename {java-dates => java-dates-string}/src/test/java/com/baeldung/timestamp/StringToTimestampConverterUnitTest.java (100%) rename {java-dates => java-dates-string}/src/test/java/com/baeldung/timestamp/TimestampToStringConverterTest.java (100%) rename {java-dates/src/test/java/com/baeldung/zoneddatetime => java-dates-string/src/test/java/com/baeldung/zonedatetime}/OffsetDateTimeExampleUnitTest.java (93%) rename {java-dates/src/test/java/com/baeldung/zoneddatetime => java-dates-string/src/test/java/com/baeldung/zonedatetime}/OffsetTimeExampleUnitTest.java (93%) rename {java-dates/src/test/java/com/baeldung/zoneddatetime => java-dates-string/src/test/java/com/baeldung/zonedatetime}/ZoneDateTimeExampleUnitTest.java (96%) rename {java-dates/src/test/java/com/baeldung/zoneddatetime => java-dates-string/src/test/java/com/baeldung/zonedatetime}/ZonedDateTimeUnitTest.java (98%) diff --git a/java-dates-2/README.md b/java-dates-2/README.md deleted file mode 100644 index b2f8319e58..0000000000 --- a/java-dates-2/README.md +++ /dev/null @@ -1,4 +0,0 @@ -## Relevant Articles: -- [Converting Between LocalDate and XMLGregorianCalendar](https://www.baeldung.com/java-localdate-to-xmlgregoriancalendar) -- [Convert Time to Milliseconds in Java](https://www.baeldung.com/java-time-milliseconds) -- [Check If a String Is a Valid Date in Java](https://www.baeldung.com/java-string-valid-date) diff --git a/java-dates-2/.gitignore b/java-dates-conversion/.gitignore similarity index 90% rename from java-dates-2/.gitignore rename to java-dates-conversion/.gitignore index 6471aabbcf..3de4cc647e 100644 --- a/java-dates-2/.gitignore +++ b/java-dates-conversion/.gitignore @@ -23,7 +23,4 @@ backup-pom.xml #IntelliJ specific .idea/ -*.iml - -#jenv -.java-version \ No newline at end of file +*.iml \ No newline at end of file diff --git a/java-dates-conversion/README.md b/java-dates-conversion/README.md new file mode 100644 index 0000000000..f781a9515c --- /dev/null +++ b/java-dates-conversion/README.md @@ -0,0 +1,9 @@ +========= + +## Java Date/time conversion Cookbooks and Examples + +### Relevant Articles: +- [Converting Between LocalDate and XMLGregorianCalendar](https://www.baeldung.com/java-localdate-to-xmlgregoriancalendar) +- [Convert Time to Milliseconds in Java](https://www.baeldung.com/java-time-milliseconds) +- [Convert Date to LocalDate or LocalDateTime and Back](http://www.baeldung.com/java-date-to-localdate-and-localdatetime) +- [Convert Between java.time.Instant and java.sql.Timestamp](https://www.baeldung.com/java-time-instant-to-java-sql-timestamp) diff --git a/java-dates-2/pom.xml b/java-dates-conversion/pom.xml similarity index 76% rename from java-dates-2/pom.xml rename to java-dates-conversion/pom.xml index c1419514ef..c9326eb44c 100644 --- a/java-dates-2/pom.xml +++ b/java-dates-conversion/pom.xml @@ -1,11 +1,10 @@ 4.0.0 - com.baeldung - java-dates-2 - 0.1.0-SNAPSHOT + java-dates-conversion + ${project.parent.version} + java-dates jar - java-dates-2 com.baeldung @@ -20,14 +19,16 @@ joda-time ${joda-time.version} - - - commons-validator - commons-validator - ${commons-validator.version} + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + log4j + log4j + ${log4j.version} - org.assertj @@ -38,7 +39,7 @@ - java-dates-2 + java-dates src/main/resources @@ -60,11 +61,10 @@ + 2.10 3.6.1 - 2.10 - 1.6 - 1.9 + 1.9 1.9 diff --git a/java-dates/src/main/java/com/baeldung/datetolocaldate/DateToLocalDateConverter.java b/java-dates-conversion/src/main/java/com/baeldung/datetolocaldate/DateToLocalDateConverter.java similarity index 100% rename from java-dates/src/main/java/com/baeldung/datetolocaldate/DateToLocalDateConverter.java rename to java-dates-conversion/src/main/java/com/baeldung/datetolocaldate/DateToLocalDateConverter.java diff --git a/java-dates/src/main/java/com/baeldung/datetolocaldate/DateToLocalDateTimeConverter.java b/java-dates-conversion/src/main/java/com/baeldung/datetolocaldate/DateToLocalDateTimeConverter.java similarity index 100% rename from java-dates/src/main/java/com/baeldung/datetolocaldate/DateToLocalDateTimeConverter.java rename to java-dates-conversion/src/main/java/com/baeldung/datetolocaldate/DateToLocalDateTimeConverter.java diff --git a/java-dates/src/main/java/com/baeldung/datetolocaldate/LocalDateTimeToDateConverter.java b/java-dates-conversion/src/main/java/com/baeldung/datetolocaldate/LocalDateTimeToDateConverter.java similarity index 100% rename from java-dates/src/main/java/com/baeldung/datetolocaldate/LocalDateTimeToDateConverter.java rename to java-dates-conversion/src/main/java/com/baeldung/datetolocaldate/LocalDateTimeToDateConverter.java diff --git a/java-dates/src/main/java/com/baeldung/datetolocaldate/LocalDateToDateConverter.java b/java-dates-conversion/src/main/java/com/baeldung/datetolocaldate/LocalDateToDateConverter.java similarity index 100% rename from java-dates/src/main/java/com/baeldung/datetolocaldate/LocalDateToDateConverter.java rename to java-dates-conversion/src/main/java/com/baeldung/datetolocaldate/LocalDateToDateConverter.java diff --git a/java-dates-2/src/test/java/com/baeldung/convert/ConvertDateTimeUnitTest.java b/java-dates-conversion/src/test/java/com/baeldung/convert/ConvertDateTimeUnitTest.java similarity index 100% rename from java-dates-2/src/test/java/com/baeldung/convert/ConvertDateTimeUnitTest.java rename to java-dates-conversion/src/test/java/com/baeldung/convert/ConvertDateTimeUnitTest.java diff --git a/java-dates/src/test/java/com/baeldung/datetime/ConvertInstantToTimestampUnitTest.java b/java-dates-conversion/src/test/java/com/baeldung/datetime/ConvertInstantToTimestampUnitTest.java similarity index 97% rename from java-dates/src/test/java/com/baeldung/datetime/ConvertInstantToTimestampUnitTest.java rename to java-dates-conversion/src/test/java/com/baeldung/datetime/ConvertInstantToTimestampUnitTest.java index 3ba01a591a..e5fd80285c 100644 --- a/java-dates/src/test/java/com/baeldung/datetime/ConvertInstantToTimestampUnitTest.java +++ b/java-dates-conversion/src/test/java/com/baeldung/datetime/ConvertInstantToTimestampUnitTest.java @@ -1,15 +1,14 @@ package com.baeldung.datetime; -import static org.assertj.core.api.Assertions.assertThat; +import org.junit.Test; import java.sql.Timestamp; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.time.Instant; -import java.time.ZoneId; import java.util.TimeZone; -import org.junit.Test; +import static org.assertj.core.api.Assertions.assertThat; public class ConvertInstantToTimestampUnitTest { diff --git a/java-dates/src/test/java/com/baeldung/datetolocaldate/DateToLocalDateConverterUnitTest.java b/java-dates-conversion/src/test/java/com/baeldung/datetolocaldate/DateToLocalDateConverterUnitTest.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/datetolocaldate/DateToLocalDateConverterUnitTest.java rename to java-dates-conversion/src/test/java/com/baeldung/datetolocaldate/DateToLocalDateConverterUnitTest.java diff --git a/java-dates/src/test/java/com/baeldung/datetolocaldate/DateToLocalDateTimeConverterUnitTest.java b/java-dates-conversion/src/test/java/com/baeldung/datetolocaldate/DateToLocalDateTimeConverterUnitTest.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/datetolocaldate/DateToLocalDateTimeConverterUnitTest.java rename to java-dates-conversion/src/test/java/com/baeldung/datetolocaldate/DateToLocalDateTimeConverterUnitTest.java diff --git a/java-dates/src/test/java/com/baeldung/datetolocaldate/LocalDateTimeToDateConverterUnitTest.java b/java-dates-conversion/src/test/java/com/baeldung/datetolocaldate/LocalDateTimeToDateConverterUnitTest.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/datetolocaldate/LocalDateTimeToDateConverterUnitTest.java rename to java-dates-conversion/src/test/java/com/baeldung/datetolocaldate/LocalDateTimeToDateConverterUnitTest.java diff --git a/java-dates/src/test/java/com/baeldung/datetolocaldate/LocalDateToDateConverterUnitTest.java b/java-dates-conversion/src/test/java/com/baeldung/datetolocaldate/LocalDateToDateConverterUnitTest.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/datetolocaldate/LocalDateToDateConverterUnitTest.java rename to java-dates-conversion/src/test/java/com/baeldung/datetolocaldate/LocalDateToDateConverterUnitTest.java diff --git a/java-dates-2/src/test/java/com/baeldung/xmlgregoriancalendar/XmlGregorianCalendarConverterUnitTest.java b/java-dates-conversion/src/test/java/com/baeldung/xmlgregoriancalendar/XmlGregorianCalendarConverterUnitTest.java similarity index 100% rename from java-dates-2/src/test/java/com/baeldung/xmlgregoriancalendar/XmlGregorianCalendarConverterUnitTest.java rename to java-dates-conversion/src/test/java/com/baeldung/xmlgregoriancalendar/XmlGregorianCalendarConverterUnitTest.java diff --git a/java-dates-string/.gitignore b/java-dates-string/.gitignore new file mode 100644 index 0000000000..3de4cc647e --- /dev/null +++ b/java-dates-string/.gitignore @@ -0,0 +1,26 @@ +*.class + +0.* + +#folders# +/target +/neoDb* +/data +/src/main/webapp/WEB-INF/classes +*/META-INF/* +.resourceCache + +# Packaged files # +*.jar +*.war +*.ear + +# Files generated by integration tests +*.txt +backup-pom.xml +/bin/ +/temp + +#IntelliJ specific +.idea/ +*.iml \ No newline at end of file diff --git a/java-dates-string/README.md b/java-dates-string/README.md new file mode 100644 index 0000000000..9becf8a460 --- /dev/null +++ b/java-dates-string/README.md @@ -0,0 +1,12 @@ +========= + +## Java Dates Parsing and Formatting Cookbooks and Examples + +### Relevant Articles: +- [Check If a String Is a Valid Date in Java](https://www.baeldung.com/java-string-valid-date) +- [RegEx for matching Date Pattern in Java](http://www.baeldung.com/java-date-regular-expressions) +- [Guide to DateTimeFormatter](https://www.baeldung.com/java-datetimeformatter) +- [Format ZonedDateTime to String](https://www.baeldung.com/java-format-zoned-datetime-string) +- [A Guide to SimpleDateFormat](https://www.baeldung.com/java-simple-date-format) +- [Display All Time Zones With GMT And UTC in Java](http://www.baeldung.com/java-time-zones) +- [Convert between String and Timestamp](https://www.baeldung.com/java-string-to-timestamp) diff --git a/java-dates-string/pom.xml b/java-dates-string/pom.xml new file mode 100644 index 0000000000..d65ac140fb --- /dev/null +++ b/java-dates-string/pom.xml @@ -0,0 +1,83 @@ + + 4.0.0 + java-dates-string + ${project.parent.version} + java-dates + jar + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../parent-java + + + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + + commons-validator + commons-validator + ${commons-validator.version} + + + log4j + log4j + ${log4j.version} + + + + org.assertj + assertj-core + ${assertj.version} + test + + + joda-time + joda-time + ${joda-time.version} + + + com.darwinsys + hirondelle-date4j + RELEASE + test + + + + + java-dates + + + src/main/resources + true + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + ${maven.compiler.source} + ${maven.compiler.target} + + + + + + + 1.6 + 2.10 + + 3.6.1 + 1.9 + 1.9 + + diff --git a/java-dates-2/src/main/java/com/baeldung/date/validation/DateValidator.java b/java-dates-string/src/main/java/com/baeldung/date/validation/DateValidator.java similarity index 100% rename from java-dates-2/src/main/java/com/baeldung/date/validation/DateValidator.java rename to java-dates-string/src/main/java/com/baeldung/date/validation/DateValidator.java diff --git a/java-dates-2/src/main/java/com/baeldung/date/validation/DateValidatorUsingApacheValidator.java b/java-dates-string/src/main/java/com/baeldung/date/validation/DateValidatorUsingApacheValidator.java similarity index 100% rename from java-dates-2/src/main/java/com/baeldung/date/validation/DateValidatorUsingApacheValidator.java rename to java-dates-string/src/main/java/com/baeldung/date/validation/DateValidatorUsingApacheValidator.java diff --git a/java-dates-2/src/main/java/com/baeldung/date/validation/DateValidatorUsingDateFormat.java b/java-dates-string/src/main/java/com/baeldung/date/validation/DateValidatorUsingDateFormat.java similarity index 100% rename from java-dates-2/src/main/java/com/baeldung/date/validation/DateValidatorUsingDateFormat.java rename to java-dates-string/src/main/java/com/baeldung/date/validation/DateValidatorUsingDateFormat.java diff --git a/java-dates-2/src/main/java/com/baeldung/date/validation/DateValidatorUsingDateTimeFormatter.java b/java-dates-string/src/main/java/com/baeldung/date/validation/DateValidatorUsingDateTimeFormatter.java similarity index 100% rename from java-dates-2/src/main/java/com/baeldung/date/validation/DateValidatorUsingDateTimeFormatter.java rename to java-dates-string/src/main/java/com/baeldung/date/validation/DateValidatorUsingDateTimeFormatter.java diff --git a/java-dates-2/src/main/java/com/baeldung/date/validation/DateValidatorUsingLocalDate.java b/java-dates-string/src/main/java/com/baeldung/date/validation/DateValidatorUsingLocalDate.java similarity index 100% rename from java-dates-2/src/main/java/com/baeldung/date/validation/DateValidatorUsingLocalDate.java rename to java-dates-string/src/main/java/com/baeldung/date/validation/DateValidatorUsingLocalDate.java diff --git a/java-dates/src/main/java/com/baeldung/regexp/datepattern/DateMatcher.java b/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/DateMatcher.java similarity index 100% rename from java-dates/src/main/java/com/baeldung/regexp/datepattern/DateMatcher.java rename to java-dates-string/src/main/java/com/baeldung/regexp/datepattern/DateMatcher.java diff --git a/java-dates/src/main/java/com/baeldung/regexp/datepattern/FormattedDateMatcher.java b/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/FormattedDateMatcher.java similarity index 100% rename from java-dates/src/main/java/com/baeldung/regexp/datepattern/FormattedDateMatcher.java rename to java-dates-string/src/main/java/com/baeldung/regexp/datepattern/FormattedDateMatcher.java diff --git a/java-dates/src/main/java/com/baeldung/regexp/datepattern/RangedDateMatcher.java b/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/RangedDateMatcher.java similarity index 100% rename from java-dates/src/main/java/com/baeldung/regexp/datepattern/RangedDateMatcher.java rename to java-dates-string/src/main/java/com/baeldung/regexp/datepattern/RangedDateMatcher.java diff --git a/java-dates/src/main/java/com/baeldung/regexp/datepattern/gregorian/February29thMatcher.java b/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/February29thMatcher.java similarity index 100% rename from java-dates/src/main/java/com/baeldung/regexp/datepattern/gregorian/February29thMatcher.java rename to java-dates-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/February29thMatcher.java diff --git a/java-dates/src/main/java/com/baeldung/regexp/datepattern/gregorian/FebruaryGeneralMatcher.java b/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/FebruaryGeneralMatcher.java similarity index 100% rename from java-dates/src/main/java/com/baeldung/regexp/datepattern/gregorian/FebruaryGeneralMatcher.java rename to java-dates-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/FebruaryGeneralMatcher.java diff --git a/java-dates/src/main/java/com/baeldung/regexp/datepattern/gregorian/GregorianDateMatcher.java b/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/GregorianDateMatcher.java similarity index 100% rename from java-dates/src/main/java/com/baeldung/regexp/datepattern/gregorian/GregorianDateMatcher.java rename to java-dates-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/GregorianDateMatcher.java diff --git a/java-dates/src/main/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf30DaysMatcher.java b/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf30DaysMatcher.java similarity index 100% rename from java-dates/src/main/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf30DaysMatcher.java rename to java-dates-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf30DaysMatcher.java diff --git a/java-dates/src/main/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf31DaysMatcher.java b/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf31DaysMatcher.java similarity index 100% rename from java-dates/src/main/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf31DaysMatcher.java rename to java-dates-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf31DaysMatcher.java diff --git a/java-dates/src/main/java/com/baeldung/regexp/datepattern/optmization/OptimizedMatcher.java b/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/optmization/OptimizedMatcher.java similarity index 100% rename from java-dates/src/main/java/com/baeldung/regexp/datepattern/optmization/OptimizedMatcher.java rename to java-dates-string/src/main/java/com/baeldung/regexp/datepattern/optmization/OptimizedMatcher.java diff --git a/java-dates/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplay.java b/java-dates-string/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplay.java similarity index 100% rename from java-dates/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplay.java rename to java-dates-string/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplay.java diff --git a/java-dates/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayApp.java b/java-dates-string/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayApp.java similarity index 100% rename from java-dates/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayApp.java rename to java-dates-string/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayApp.java diff --git a/java-dates/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayJava7.java b/java-dates-string/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayJava7.java similarity index 100% rename from java-dates/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayJava7.java rename to java-dates-string/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayJava7.java diff --git a/java-dates/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayJava7App.java b/java-dates-string/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayJava7App.java similarity index 100% rename from java-dates/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayJava7App.java rename to java-dates-string/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayJava7App.java diff --git a/java-dates/src/main/java/com/baeldung/zoneddatetime/OffsetDateTimeExample.java b/java-dates-string/src/main/java/com/baeldung/zonedatetime/OffsetDateTimeExample.java similarity index 89% rename from java-dates/src/main/java/com/baeldung/zoneddatetime/OffsetDateTimeExample.java rename to java-dates-string/src/main/java/com/baeldung/zonedatetime/OffsetDateTimeExample.java index fb92eb8d0d..90077795f0 100644 --- a/java-dates/src/main/java/com/baeldung/zoneddatetime/OffsetDateTimeExample.java +++ b/java-dates-string/src/main/java/com/baeldung/zonedatetime/OffsetDateTimeExample.java @@ -1,4 +1,4 @@ -package com.baeldung.zoneddatetime; +package com.baeldung.zonedatetime; import java.time.OffsetDateTime; import java.time.ZoneOffset; diff --git a/java-dates/src/main/java/com/baeldung/zoneddatetime/OffsetTimeExample.java b/java-dates-string/src/main/java/com/baeldung/zonedatetime/OffsetTimeExample.java similarity index 89% rename from java-dates/src/main/java/com/baeldung/zoneddatetime/OffsetTimeExample.java rename to java-dates-string/src/main/java/com/baeldung/zonedatetime/OffsetTimeExample.java index 58e2d4d5ad..e280d365c2 100644 --- a/java-dates/src/main/java/com/baeldung/zoneddatetime/OffsetTimeExample.java +++ b/java-dates-string/src/main/java/com/baeldung/zonedatetime/OffsetTimeExample.java @@ -1,4 +1,4 @@ -package com.baeldung.zoneddatetime; +package com.baeldung.zonedatetime; import java.time.OffsetTime; import java.time.ZoneOffset; diff --git a/java-dates/src/main/java/com/baeldung/zoneddatetime/ZoneDateTimeExample.java b/java-dates-string/src/main/java/com/baeldung/zonedatetime/ZoneDateTimeExample.java similarity index 93% rename from java-dates/src/main/java/com/baeldung/zoneddatetime/ZoneDateTimeExample.java rename to java-dates-string/src/main/java/com/baeldung/zonedatetime/ZoneDateTimeExample.java index b54b8c5225..a0dd304876 100644 --- a/java-dates/src/main/java/com/baeldung/zoneddatetime/ZoneDateTimeExample.java +++ b/java-dates-string/src/main/java/com/baeldung/zonedatetime/ZoneDateTimeExample.java @@ -1,4 +1,4 @@ -package com.baeldung.zoneddatetime; +package com.baeldung.zonedatetime; import java.time.ZoneId; import java.time.ZonedDateTime; diff --git a/java-dates-2/src/test/java/com/baeldung/date/validation/DateValidatorUsingApacheValidatorUnitTest.java b/java-dates-string/src/test/java/com/baeldung/date/validation/DateValidatorUsingApacheValidatorUnitTest.java similarity index 100% rename from java-dates-2/src/test/java/com/baeldung/date/validation/DateValidatorUsingApacheValidatorUnitTest.java rename to java-dates-string/src/test/java/com/baeldung/date/validation/DateValidatorUsingApacheValidatorUnitTest.java diff --git a/java-dates-2/src/test/java/com/baeldung/date/validation/DateValidatorUsingDateFormatUnitTest.java b/java-dates-string/src/test/java/com/baeldung/date/validation/DateValidatorUsingDateFormatUnitTest.java similarity index 100% rename from java-dates-2/src/test/java/com/baeldung/date/validation/DateValidatorUsingDateFormatUnitTest.java rename to java-dates-string/src/test/java/com/baeldung/date/validation/DateValidatorUsingDateFormatUnitTest.java diff --git a/java-dates-2/src/test/java/com/baeldung/date/validation/DateValidatorUsingDateTimeFormatterUnitTest.java b/java-dates-string/src/test/java/com/baeldung/date/validation/DateValidatorUsingDateTimeFormatterUnitTest.java similarity index 100% rename from java-dates-2/src/test/java/com/baeldung/date/validation/DateValidatorUsingDateTimeFormatterUnitTest.java rename to java-dates-string/src/test/java/com/baeldung/date/validation/DateValidatorUsingDateTimeFormatterUnitTest.java diff --git a/java-dates-2/src/test/java/com/baeldung/date/validation/DateValidatorUsingLocalDateUnitTest.java b/java-dates-string/src/test/java/com/baeldung/date/validation/DateValidatorUsingLocalDateUnitTest.java similarity index 100% rename from java-dates-2/src/test/java/com/baeldung/date/validation/DateValidatorUsingLocalDateUnitTest.java rename to java-dates-string/src/test/java/com/baeldung/date/validation/DateValidatorUsingLocalDateUnitTest.java diff --git a/java-dates/src/test/java/com/baeldung/datetime/DateTimeFormatterUnitTest.java b/java-dates-string/src/test/java/com/baeldung/datetime/DateTimeFormatterUnitTest.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/datetime/DateTimeFormatterUnitTest.java rename to java-dates-string/src/test/java/com/baeldung/datetime/DateTimeFormatterUnitTest.java diff --git a/java-dates/src/test/java/com/baeldung/regexp/datepattern/FormattedDateMatcherUnitTest.java b/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/FormattedDateMatcherUnitTest.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/regexp/datepattern/FormattedDateMatcherUnitTest.java rename to java-dates-string/src/test/java/com/baeldung/regexp/datepattern/FormattedDateMatcherUnitTest.java diff --git a/java-dates/src/test/java/com/baeldung/regexp/datepattern/RangedDateMatcherUnitTest.java b/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/RangedDateMatcherUnitTest.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/regexp/datepattern/RangedDateMatcherUnitTest.java rename to java-dates-string/src/test/java/com/baeldung/regexp/datepattern/RangedDateMatcherUnitTest.java diff --git a/java-dates/src/test/java/com/baeldung/regexp/datepattern/gregorian/February29thMatcherUnitTest.java b/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/February29thMatcherUnitTest.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/regexp/datepattern/gregorian/February29thMatcherUnitTest.java rename to java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/February29thMatcherUnitTest.java diff --git a/java-dates/src/test/java/com/baeldung/regexp/datepattern/gregorian/FebruaryGeneralMatcherUnitTest.java b/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/FebruaryGeneralMatcherUnitTest.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/regexp/datepattern/gregorian/FebruaryGeneralMatcherUnitTest.java rename to java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/FebruaryGeneralMatcherUnitTest.java diff --git a/java-dates/src/test/java/com/baeldung/regexp/datepattern/gregorian/GregorianDateMatcherUnitTest.java b/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/GregorianDateMatcherUnitTest.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/regexp/datepattern/gregorian/GregorianDateMatcherUnitTest.java rename to java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/GregorianDateMatcherUnitTest.java diff --git a/java-dates/src/test/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf30DaysMatcherUnitTest.java b/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf30DaysMatcherUnitTest.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf30DaysMatcherUnitTest.java rename to java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf30DaysMatcherUnitTest.java diff --git a/java-dates/src/test/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf31DaysMatcherUnitTest.java b/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf31DaysMatcherUnitTest.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf31DaysMatcherUnitTest.java rename to java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf31DaysMatcherUnitTest.java diff --git a/java-dates/src/test/java/com/baeldung/regexp/datepattern/gregorian/testhelper/GregorianDateTestHelper.java b/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/testhelper/GregorianDateTestHelper.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/regexp/datepattern/gregorian/testhelper/GregorianDateTestHelper.java rename to java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/testhelper/GregorianDateTestHelper.java diff --git a/java-dates/src/test/java/com/baeldung/simpledateformat/SimpleDateFormatUnitTest.java b/java-dates-string/src/test/java/com/baeldung/simpledateformat/SimpleDateFormatUnitTest.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/simpledateformat/SimpleDateFormatUnitTest.java rename to java-dates-string/src/test/java/com/baeldung/simpledateformat/SimpleDateFormatUnitTest.java diff --git a/java-dates/src/test/java/com/baeldung/timestamp/StringToTimestampConverterUnitTest.java b/java-dates-string/src/test/java/com/baeldung/timestamp/StringToTimestampConverterUnitTest.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/timestamp/StringToTimestampConverterUnitTest.java rename to java-dates-string/src/test/java/com/baeldung/timestamp/StringToTimestampConverterUnitTest.java diff --git a/java-dates/src/test/java/com/baeldung/timestamp/TimestampToStringConverterTest.java b/java-dates-string/src/test/java/com/baeldung/timestamp/TimestampToStringConverterTest.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/timestamp/TimestampToStringConverterTest.java rename to java-dates-string/src/test/java/com/baeldung/timestamp/TimestampToStringConverterTest.java diff --git a/java-dates/src/test/java/com/baeldung/zoneddatetime/OffsetDateTimeExampleUnitTest.java b/java-dates-string/src/test/java/com/baeldung/zonedatetime/OffsetDateTimeExampleUnitTest.java similarity index 93% rename from java-dates/src/test/java/com/baeldung/zoneddatetime/OffsetDateTimeExampleUnitTest.java rename to java-dates-string/src/test/java/com/baeldung/zonedatetime/OffsetDateTimeExampleUnitTest.java index a08d3737cd..7634ff1572 100644 --- a/java-dates/src/test/java/com/baeldung/zoneddatetime/OffsetDateTimeExampleUnitTest.java +++ b/java-dates-string/src/test/java/com/baeldung/zonedatetime/OffsetDateTimeExampleUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.zoneddatetime; +package com.baeldung.zonedatetime; import static org.junit.Assert.assertTrue; diff --git a/java-dates/src/test/java/com/baeldung/zoneddatetime/OffsetTimeExampleUnitTest.java b/java-dates-string/src/test/java/com/baeldung/zonedatetime/OffsetTimeExampleUnitTest.java similarity index 93% rename from java-dates/src/test/java/com/baeldung/zoneddatetime/OffsetTimeExampleUnitTest.java rename to java-dates-string/src/test/java/com/baeldung/zonedatetime/OffsetTimeExampleUnitTest.java index 488f934179..6134e48f70 100644 --- a/java-dates/src/test/java/com/baeldung/zoneddatetime/OffsetTimeExampleUnitTest.java +++ b/java-dates-string/src/test/java/com/baeldung/zonedatetime/OffsetTimeExampleUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.zoneddatetime; +package com.baeldung.zonedatetime; import static org.junit.Assert.assertTrue; diff --git a/java-dates/src/test/java/com/baeldung/zoneddatetime/ZoneDateTimeExampleUnitTest.java b/java-dates-string/src/test/java/com/baeldung/zonedatetime/ZoneDateTimeExampleUnitTest.java similarity index 96% rename from java-dates/src/test/java/com/baeldung/zoneddatetime/ZoneDateTimeExampleUnitTest.java rename to java-dates-string/src/test/java/com/baeldung/zonedatetime/ZoneDateTimeExampleUnitTest.java index e78ff3e3fd..cc19055beb 100644 --- a/java-dates/src/test/java/com/baeldung/zoneddatetime/ZoneDateTimeExampleUnitTest.java +++ b/java-dates-string/src/test/java/com/baeldung/zonedatetime/ZoneDateTimeExampleUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.zoneddatetime; +package com.baeldung.zonedatetime; import static org.junit.Assert.assertTrue; diff --git a/java-dates/src/test/java/com/baeldung/zoneddatetime/ZonedDateTimeUnitTest.java b/java-dates-string/src/test/java/com/baeldung/zonedatetime/ZonedDateTimeUnitTest.java similarity index 98% rename from java-dates/src/test/java/com/baeldung/zoneddatetime/ZonedDateTimeUnitTest.java rename to java-dates-string/src/test/java/com/baeldung/zonedatetime/ZonedDateTimeUnitTest.java index 65f63bc787..150983c61b 100644 --- a/java-dates/src/test/java/com/baeldung/zoneddatetime/ZonedDateTimeUnitTest.java +++ b/java-dates-string/src/test/java/com/baeldung/zonedatetime/ZonedDateTimeUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.zoneddatetime; +package com.baeldung.zonedatetime; import static org.junit.jupiter.api.Assertions.assertThrows; diff --git a/java-dates/README.md b/java-dates/README.md index 7da309924d..ef4cffe6d8 100644 --- a/java-dates/README.md +++ b/java-dates/README.md @@ -7,14 +7,11 @@ - [Handling Daylight Savings Time in Java](http://www.baeldung.com/java-daylight-savings) - [Period and Duration in Java](http://www.baeldung.com/java-period-duration) - [Difference Between Two Dates in Java](http://www.baeldung.com/java-date-difference) -- [RegEx for matching Date Pattern in Java](http://www.baeldung.com/java-date-regular-expressions) - [Migrating to the New Java 8 Date Time API](http://www.baeldung.com/migrating-to-java-8-date-time-api) - [Introduction to the Java 8 Date/Time API](http://www.baeldung.com/java-8-date-time-intro) - [Get the Current Date, Time and Timestamp in Java 8](http://www.baeldung.com/current-date-time-and-timestamp-in-java-8) - [Get Date Without Time in Java](http://www.baeldung.com/java-date-without-time) - [How to Get All Dates Between Two Dates?](http://www.baeldung.com/java-between-dates) -- [Convert Date to LocalDate or LocalDateTime and Back](http://www.baeldung.com/java-date-to-localdate-and-localdatetime) -- [Display All Time Zones With GMT And UTC in Java](http://www.baeldung.com/java-time-zones) - [Extracting Year, Month and Day from Date in Java](http://www.baeldung.com/java-year-month-day) - [Guide to java.util.GregorianCalendar](http://www.baeldung.com/java-gregorian-calendar) - [Measure Elapsed Time in Java](http://www.baeldung.com/java-measure-elapsed-time) @@ -22,11 +19,6 @@ - [Calculate Age in Java](http://www.baeldung.com/java-get-age) - [Increment Date in Java](http://www.baeldung.com/java-increment-date) - [Add Hours To a Date In Java](http://www.baeldung.com/java-add-hours-date) -- [Guide to DateTimeFormatter](https://www.baeldung.com/java-datetimeformatter) -- [Format ZonedDateTime to String](https://www.baeldung.com/java-format-zoned-datetime-string) -- [Convert Between java.time.Instant and java.sql.Timestamp](https://www.baeldung.com/java-time-instant-to-java-sql-timestamp) -- [Convert between String and Timestamp](https://www.baeldung.com/java-string-to-timestamp) -- [A Guide to SimpleDateFormat](https://www.baeldung.com/java-simple-date-format) - [ZoneOffset in Java](https://www.baeldung.com/java-zone-offset) - [Differences Between ZonedDateTime and OffsetDateTime](https://www.baeldung.com/java-zoneddatetime-offsetdatetime) - [Introduction to Joda-Time](http://www.baeldung.com/joda-time) diff --git a/java-dates/pom.xml b/java-dates/pom.xml index 3fddf3f0f8..761ebd71a6 100644 --- a/java-dates/pom.xml +++ b/java-dates/pom.xml @@ -25,12 +25,6 @@ log4j ${log4j.version} - - org.projectlombok - lombok - ${lombok.version} - provided - org.assertj diff --git a/pom.xml b/pom.xml index c3f3a62da1..52a5922273 100644 --- a/pom.xml +++ b/pom.xml @@ -467,8 +467,10 @@ java-collections-maps java-collections-maps-2 java-jdi - - + java-lite java-math From 16b7d2178086dfccd033a970ed967fdf4d60ac00 Mon Sep 17 00:00:00 2001 From: enpy303 Date: Wed, 18 Sep 2019 08:27:59 +0200 Subject: [PATCH 005/265] BAEL 1383 --- spring-integration/pom.xml | 13 +++- .../com/baeldung/tx/ServiceActivator.java | 27 ++++++++ .../spring-integration-tx-context.xml | 67 +++++++++++++++++++ .../src/main/resources/table.sql | 4 ++ .../com/baeldung/tx/TxIntegrationTest.java | 56 ++++++++++++++++ 5 files changed, 166 insertions(+), 1 deletion(-) create mode 100755 spring-integration/src/main/java/com/baeldung/tx/ServiceActivator.java create mode 100755 spring-integration/src/main/resources/META-INF/spring/integration/spring-integration-tx-context.xml create mode 100644 spring-integration/src/main/resources/table.sql create mode 100644 spring-integration/src/test/java/com/baeldung/tx/TxIntegrationTest.java diff --git a/spring-integration/pom.xml b/spring-integration/pom.xml index 367d25de98..f06cb91ef6 100644 --- a/spring-integration/pom.xml +++ b/spring-integration/pom.xml @@ -68,6 +68,11 @@ spring-integration-security ${spring.version} + + org.springframework.integration + spring-integration-jdbc + ${spring.version} + org.springframework.security @@ -75,6 +80,12 @@ ${spring.version} test + + + com.h2database + h2 + 1.4.197 + @@ -106,7 +117,7 @@ UTF-8 - 5.0.3.RELEASE + 5.0.13.RELEASE 1.1.4.RELEASE 1.4.7 1.1.1 diff --git a/spring-integration/src/main/java/com/baeldung/tx/ServiceActivator.java b/spring-integration/src/main/java/com/baeldung/tx/ServiceActivator.java new file mode 100755 index 0000000000..874d5d6957 --- /dev/null +++ b/spring-integration/src/main/java/com/baeldung/tx/ServiceActivator.java @@ -0,0 +1,27 @@ +package com.baeldung.tx; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.jdbc.core.JdbcTemplate; + +public class ServiceActivator { + + @Autowired + private JdbcTemplate jdbcTemplate; + + private final Logger log = LoggerFactory.getLogger(this.getClass()); + + public void checkTestResults(String payload) { + + this.jdbcTemplate.update("insert into STUDENT values(?)", payload); + + if (payload.toLowerCase().startsWith("fail")) { + log.error("Service failure. Test result: {} ", payload); + throw new RuntimeException("Service failure."); + } + + log.info("Service success. Test result: {}", payload); + } + +} diff --git a/spring-integration/src/main/resources/META-INF/spring/integration/spring-integration-tx-context.xml b/spring-integration/src/main/resources/META-INF/spring/integration/spring-integration-tx-context.xml new file mode 100755 index 0000000000..2861826521 --- /dev/null +++ b/spring-integration/src/main/resources/META-INF/spring/integration/spring-integration-tx-context.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/spring-integration/src/main/resources/table.sql b/spring-integration/src/main/resources/table.sql new file mode 100644 index 0000000000..9ca58f6f27 --- /dev/null +++ b/spring-integration/src/main/resources/table.sql @@ -0,0 +1,4 @@ + +CREATE TABLE IF NOT EXISTS STUDENT ( + TEST VARCHAR(256) +); \ No newline at end of file diff --git a/spring-integration/src/test/java/com/baeldung/tx/TxIntegrationTest.java b/spring-integration/src/test/java/com/baeldung/tx/TxIntegrationTest.java new file mode 100644 index 0000000000..dd9f4ab286 --- /dev/null +++ b/spring-integration/src/test/java/com/baeldung/tx/TxIntegrationTest.java @@ -0,0 +1,56 @@ +package com.baeldung.tx; + +import org.junit.Assert; +import org.junit.Test; +import org.springframework.context.support.AbstractApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; + +public final class TxIntegrationTest { + + private static final String CONTEXT_CONFIG = "classpath:META-INF/spring/integration/spring-integration-tx-context.xml"; + + @Test + public void whenFileDoesntStartWithFail_thanTxSuccessful() throws InterruptedException, IOException { + final AbstractApplicationContext context = + new ClassPathXmlApplicationContext(CONTEXT_CONFIG); + + String fileName = System.getProperty("java.io.tmpdir") + "/tx/test1.txt"; + FileWriter fw = new FileWriter(fileName); + fw.write("PASSED!"); + fw.close(); + + context.registerShutdownHook(); + Thread.sleep(5000); + + File file = new File(fileName + ".PASSED"); + Assert.assertTrue(file.exists()); + } + + @Test + public void whenFileStartsWithFail_thanTxFailed() { + + String fileName = System.getProperty("java.io.tmpdir") + "/tx/test2.txt"; + + try { + final AbstractApplicationContext context = + new ClassPathXmlApplicationContext(CONTEXT_CONFIG); + + FileWriter fw = new FileWriter(fileName); + fw.write("FAILED!"); + fw.close(); + + context.registerShutdownHook(); + Thread.sleep(5000); + } catch (Exception e) { + // Exception is expected, do nothing + } + + File file = new File(fileName + ".FAILED"); + Assert.assertTrue(file.exists()); + } + +} From ed51850e005d67816f52171498ad41cf63d78434 Mon Sep 17 00:00:00 2001 From: pazis Date: Fri, 20 Sep 2019 10:41:22 +0000 Subject: [PATCH 006/265] date to offsetdatetime --- .../conversion/ConvertToOffsetDateTime.java | 17 +++++++++++ .../ConvertToOffsetDateTimeUnitTest.java | 29 +++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 java-dates-2/src/main/java/com/baeldung/date/conversion/ConvertToOffsetDateTime.java create mode 100644 java-dates-2/src/test/java/com/baeldung/date/conversion/ConvertToOffsetDateTimeUnitTest.java diff --git a/java-dates-2/src/main/java/com/baeldung/date/conversion/ConvertToOffsetDateTime.java b/java-dates-2/src/main/java/com/baeldung/date/conversion/ConvertToOffsetDateTime.java new file mode 100644 index 0000000000..143531bd33 --- /dev/null +++ b/java-dates-2/src/main/java/com/baeldung/date/conversion/ConvertToOffsetDateTime.java @@ -0,0 +1,17 @@ +package com.baeldung.date.conversion; + +import java.time.OffsetDateTime; +import java.time.ZoneOffset; +import java.util.Date; + +public class ConvertToOffsetDateTime { + + public static OffsetDateTime convert (Date date) { + return date.toInstant().atOffset(ZoneOffset.UTC); + } + + public static OffsetDateTime convert (Date date, int hour, int minute) { + return date.toInstant().atOffset(ZoneOffset.ofHoursMinutes(hour, minute)); + } + +} diff --git a/java-dates-2/src/test/java/com/baeldung/date/conversion/ConvertToOffsetDateTimeUnitTest.java b/java-dates-2/src/test/java/com/baeldung/date/conversion/ConvertToOffsetDateTimeUnitTest.java new file mode 100644 index 0000000000..cb9d3daf3d --- /dev/null +++ b/java-dates-2/src/test/java/com/baeldung/date/conversion/ConvertToOffsetDateTimeUnitTest.java @@ -0,0 +1,29 @@ +package com.baeldung.date.conversion; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.time.OffsetDateTime; +import java.util.Date; + +import org.junit.Test; + +public class ConvertToOffsetDateTimeUnitTest { + + @Test + public void whenDateIsNotNull_thenConvertToOffsetDateTime() { + Date date = new Date(); + assertTrue(ConvertToOffsetDateTime.convert(date) instanceof OffsetDateTime); + } + + @Test + public void givenDate_whenHasOffset_thenConvertWithOffset() { + Date date = new Date(); + date.setHours(6); + date.setMinutes(30); + OffsetDateTime odt = ConvertToOffsetDateTime.convert(date, 3, 30); + assertEquals(10, odt.getHour()); + assertEquals(0, odt.getMinute()); + } + +} From 4612edeb68f1c854788f1db2d51d0fa77442ef32 Mon Sep 17 00:00:00 2001 From: pazis Date: Fri, 20 Sep 2019 10:44:22 +0000 Subject: [PATCH 007/265] formatting fix --- .../date/conversion/ConvertToOffsetDateTime.java | 14 ++++++++------ .../ConvertToOffsetDateTimeUnitTest.java | 4 ++-- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/java-dates-2/src/main/java/com/baeldung/date/conversion/ConvertToOffsetDateTime.java b/java-dates-2/src/main/java/com/baeldung/date/conversion/ConvertToOffsetDateTime.java index 143531bd33..34914962f9 100644 --- a/java-dates-2/src/main/java/com/baeldung/date/conversion/ConvertToOffsetDateTime.java +++ b/java-dates-2/src/main/java/com/baeldung/date/conversion/ConvertToOffsetDateTime.java @@ -5,13 +5,15 @@ import java.time.ZoneOffset; import java.util.Date; public class ConvertToOffsetDateTime { - - public static OffsetDateTime convert (Date date) { - return date.toInstant().atOffset(ZoneOffset.UTC); + + public static OffsetDateTime convert(Date date) { + return date.toInstant() + .atOffset(ZoneOffset.UTC); } - - public static OffsetDateTime convert (Date date, int hour, int minute) { - return date.toInstant().atOffset(ZoneOffset.ofHoursMinutes(hour, minute)); + + public static OffsetDateTime convert(Date date, int hour, int minute) { + return date.toInstant() + .atOffset(ZoneOffset.ofHoursMinutes(hour, minute)); } } diff --git a/java-dates-2/src/test/java/com/baeldung/date/conversion/ConvertToOffsetDateTimeUnitTest.java b/java-dates-2/src/test/java/com/baeldung/date/conversion/ConvertToOffsetDateTimeUnitTest.java index cb9d3daf3d..c927da00c8 100644 --- a/java-dates-2/src/test/java/com/baeldung/date/conversion/ConvertToOffsetDateTimeUnitTest.java +++ b/java-dates-2/src/test/java/com/baeldung/date/conversion/ConvertToOffsetDateTimeUnitTest.java @@ -15,7 +15,7 @@ public class ConvertToOffsetDateTimeUnitTest { Date date = new Date(); assertTrue(ConvertToOffsetDateTime.convert(date) instanceof OffsetDateTime); } - + @Test public void givenDate_whenHasOffset_thenConvertWithOffset() { Date date = new Date(); @@ -25,5 +25,5 @@ public class ConvertToOffsetDateTimeUnitTest { assertEquals(10, odt.getHour()); assertEquals(0, odt.getMinute()); } - + } From 9a456ba4f1d1c62819d8712fd35fd751e606f4ec Mon Sep 17 00:00:00 2001 From: Kamlesh Kumar Date: Sat, 28 Sep 2019 10:39:34 +0530 Subject: [PATCH 008/265] BAEL-1363 Fallback for Zuul Routes --- spring-cloud/pom.xml | 7 +- .../spring-cloud-zuul-fallback/README.md | 2 + .../api-gateway/pom.xml | 43 ++++++++++++ .../apigateway/ApiGatewayApplication.java | 15 ++++ .../fallback/GatewayClientResponse.java | 69 +++++++++++++++++++ .../fallback/GatewayServiceFallback.java | 29 ++++++++ .../fallback/WeatherServiceFallback.java | 29 ++++++++ .../src/main/resources/application.yml | 22 ++++++ .../ApiGatewayApplicationIntegrationTest.java | 16 +++++ .../GatewayServiceFallbackUnitTest.java | 46 +++++++++++++ .../WeatherServiceFallbackUnitTest.java | 46 +++++++++++++ .../spring-cloud-zuul-fallback/pom.xml | 28 ++++++++ .../weather-service/pom.xml | 39 +++++++++++ .../weatherservice/WeatherController.java | 16 +++++ .../WeatherServiceApplication.java | 13 ++++ .../src/main/resources/application.yml | 5 ++ .../WeatherControllerIntegrationTest.java | 31 +++++++++ ...therServiceApplicationIntegrationTest.java | 16 +++++ 18 files changed, 469 insertions(+), 3 deletions(-) create mode 100644 spring-cloud/spring-cloud-zuul-fallback/README.md create mode 100644 spring-cloud/spring-cloud-zuul-fallback/api-gateway/pom.xml create mode 100644 spring-cloud/spring-cloud-zuul-fallback/api-gateway/src/main/java/com/baeldung/spring/cloud/apigateway/ApiGatewayApplication.java create mode 100644 spring-cloud/spring-cloud-zuul-fallback/api-gateway/src/main/java/com/baeldung/spring/cloud/apigateway/fallback/GatewayClientResponse.java create mode 100644 spring-cloud/spring-cloud-zuul-fallback/api-gateway/src/main/java/com/baeldung/spring/cloud/apigateway/fallback/GatewayServiceFallback.java create mode 100644 spring-cloud/spring-cloud-zuul-fallback/api-gateway/src/main/java/com/baeldung/spring/cloud/apigateway/fallback/WeatherServiceFallback.java create mode 100644 spring-cloud/spring-cloud-zuul-fallback/api-gateway/src/main/resources/application.yml create mode 100644 spring-cloud/spring-cloud-zuul-fallback/api-gateway/src/test/java/com/baeldung/spring/cloud/apigateway/ApiGatewayApplicationIntegrationTest.java create mode 100644 spring-cloud/spring-cloud-zuul-fallback/api-gateway/src/test/java/com/baeldung/spring/cloud/apigateway/fallback/GatewayServiceFallbackUnitTest.java create mode 100644 spring-cloud/spring-cloud-zuul-fallback/api-gateway/src/test/java/com/baeldung/spring/cloud/apigateway/fallback/WeatherServiceFallbackUnitTest.java create mode 100644 spring-cloud/spring-cloud-zuul-fallback/pom.xml create mode 100644 spring-cloud/spring-cloud-zuul-fallback/weather-service/pom.xml create mode 100644 spring-cloud/spring-cloud-zuul-fallback/weather-service/src/main/java/com/baeldung/spring/cloud/weatherservice/WeatherController.java create mode 100644 spring-cloud/spring-cloud-zuul-fallback/weather-service/src/main/java/com/baeldung/spring/cloud/weatherservice/WeatherServiceApplication.java create mode 100644 spring-cloud/spring-cloud-zuul-fallback/weather-service/src/main/resources/application.yml create mode 100644 spring-cloud/spring-cloud-zuul-fallback/weather-service/src/test/java/com/baeldung/spring/cloud/weatherservice/WeatherControllerIntegrationTest.java create mode 100644 spring-cloud/spring-cloud-zuul-fallback/weather-service/src/test/java/com/baeldung/spring/cloud/weatherservice/WeatherServiceApplicationIntegrationTest.java diff --git a/spring-cloud/pom.xml b/spring-cloud/pom.xml index baf86a4386..7138efc128 100644 --- a/spring-cloud/pom.xml +++ b/spring-cloud/pom.xml @@ -25,7 +25,7 @@ spring-cloud-zookeeper spring-cloud-gateway spring-cloud-stream - spring-cloud-stream-starters/twitterhdfs + spring-cloud-stream-starters/twitterhdfs spring-cloud-connectors-heroku spring-cloud-aws spring-cloud-consul @@ -35,9 +35,10 @@ spring-cloud-archaius spring-cloud-functions spring-cloud-vault - - spring-cloud-task + + spring-cloud-task spring-cloud-zuul + spring-cloud-zuul-fallback diff --git a/spring-cloud/spring-cloud-zuul-fallback/README.md b/spring-cloud/spring-cloud-zuul-fallback/README.md new file mode 100644 index 0000000000..2f13c1923b --- /dev/null +++ b/spring-cloud/spring-cloud-zuul-fallback/README.md @@ -0,0 +1,2 @@ +### Relevant Articles: +- [Fallback for Zuul Route](TODO) diff --git a/spring-cloud/spring-cloud-zuul-fallback/api-gateway/pom.xml b/spring-cloud/spring-cloud-zuul-fallback/api-gateway/pom.xml new file mode 100644 index 0000000000..ee0f607d8a --- /dev/null +++ b/spring-cloud/spring-cloud-zuul-fallback/api-gateway/pom.xml @@ -0,0 +1,43 @@ + + 4.0.0 + api-gateway + api-gateway + API Gateway using Zuul + jar + + + com.baeldung.spring.cloud + spring-cloud-zuul-fallback + 1.0.0-SNAPSHOT + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.cloud + spring-cloud-starter-netflix-zuul + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.cloud + spring-cloud-starter-parent + ${spring-cloud-dependencies.version} + pom + import + + + + diff --git a/spring-cloud/spring-cloud-zuul-fallback/api-gateway/src/main/java/com/baeldung/spring/cloud/apigateway/ApiGatewayApplication.java b/spring-cloud/spring-cloud-zuul-fallback/api-gateway/src/main/java/com/baeldung/spring/cloud/apigateway/ApiGatewayApplication.java new file mode 100644 index 0000000000..78f489f2bb --- /dev/null +++ b/spring-cloud/spring-cloud-zuul-fallback/api-gateway/src/main/java/com/baeldung/spring/cloud/apigateway/ApiGatewayApplication.java @@ -0,0 +1,15 @@ +package com.baeldung.spring.cloud.apigateway; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.netflix.zuul.EnableZuulProxy; + +@SpringBootApplication +@EnableZuulProxy +public class ApiGatewayApplication { + + public static void main(String[] args) { + SpringApplication.run(ApiGatewayApplication.class, args); + } + +} diff --git a/spring-cloud/spring-cloud-zuul-fallback/api-gateway/src/main/java/com/baeldung/spring/cloud/apigateway/fallback/GatewayClientResponse.java b/spring-cloud/spring-cloud-zuul-fallback/api-gateway/src/main/java/com/baeldung/spring/cloud/apigateway/fallback/GatewayClientResponse.java new file mode 100644 index 0000000000..ce0c7819f1 --- /dev/null +++ b/spring-cloud/spring-cloud-zuul-fallback/api-gateway/src/main/java/com/baeldung/spring/cloud/apigateway/fallback/GatewayClientResponse.java @@ -0,0 +1,69 @@ +package com.baeldung.spring.cloud.apigateway.fallback; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; + +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.client.ClientHttpResponse; + +public class GatewayClientResponse implements ClientHttpResponse { + + private HttpStatus status; + private String message; + + public GatewayClientResponse(HttpStatus status, String message) { + this.status = status; + this.message = message; + } + + @Override + public HttpStatus getStatusCode() throws IOException { + return status; + } + + @Override + public int getRawStatusCode() throws IOException { + return status.value(); + } + + @Override + public String getStatusText() throws IOException { + return status.getReasonPhrase(); + } + + @Override + public void close() { + } + + @Override + public InputStream getBody() throws IOException { + return new ByteArrayInputStream(message.getBytes()); + } + + @Override + public HttpHeaders getHeaders() { + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + return headers; + } + + public HttpStatus getStatus() { + return status; + } + + public void setStatus(HttpStatus status) { + this.status = status; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + +} diff --git a/spring-cloud/spring-cloud-zuul-fallback/api-gateway/src/main/java/com/baeldung/spring/cloud/apigateway/fallback/GatewayServiceFallback.java b/spring-cloud/spring-cloud-zuul-fallback/api-gateway/src/main/java/com/baeldung/spring/cloud/apigateway/fallback/GatewayServiceFallback.java new file mode 100644 index 0000000000..73f72492c9 --- /dev/null +++ b/spring-cloud/spring-cloud-zuul-fallback/api-gateway/src/main/java/com/baeldung/spring/cloud/apigateway/fallback/GatewayServiceFallback.java @@ -0,0 +1,29 @@ +package com.baeldung.spring.cloud.apigateway.fallback; + +import org.springframework.cloud.netflix.zuul.filters.route.FallbackProvider; +import org.springframework.http.HttpStatus; +import org.springframework.http.client.ClientHttpResponse; +import org.springframework.stereotype.Component; + +import com.netflix.hystrix.exception.HystrixTimeoutException; + +@Component +class GatewayServiceFallback implements FallbackProvider { + + private static final String DEFAULT_MESSAGE = "Service not available."; + + @Override + public String getRoute() { + return "*"; // or return null; + } + + @Override + public ClientHttpResponse fallbackResponse(String route, Throwable cause) { + if (cause instanceof HystrixTimeoutException) { + return new GatewayClientResponse(HttpStatus.GATEWAY_TIMEOUT, DEFAULT_MESSAGE); + } else { + return new GatewayClientResponse(HttpStatus.INTERNAL_SERVER_ERROR, DEFAULT_MESSAGE); + } + } + +} diff --git a/spring-cloud/spring-cloud-zuul-fallback/api-gateway/src/main/java/com/baeldung/spring/cloud/apigateway/fallback/WeatherServiceFallback.java b/spring-cloud/spring-cloud-zuul-fallback/api-gateway/src/main/java/com/baeldung/spring/cloud/apigateway/fallback/WeatherServiceFallback.java new file mode 100644 index 0000000000..28fb6fb6e5 --- /dev/null +++ b/spring-cloud/spring-cloud-zuul-fallback/api-gateway/src/main/java/com/baeldung/spring/cloud/apigateway/fallback/WeatherServiceFallback.java @@ -0,0 +1,29 @@ +package com.baeldung.spring.cloud.apigateway.fallback; + +import org.springframework.cloud.netflix.zuul.filters.route.FallbackProvider; +import org.springframework.http.HttpStatus; +import org.springframework.http.client.ClientHttpResponse; +import org.springframework.stereotype.Component; + +import com.netflix.hystrix.exception.HystrixTimeoutException; + +@Component +class WeatherServiceFallback implements FallbackProvider { + + private static final String DEFAULT_MESSAGE = "Weather information is not available."; + + @Override + public String getRoute() { + return "weather-service"; + } + + @Override + public ClientHttpResponse fallbackResponse(String route, Throwable cause) { + if (cause instanceof HystrixTimeoutException) { + return new GatewayClientResponse(HttpStatus.GATEWAY_TIMEOUT, DEFAULT_MESSAGE); + } else { + return new GatewayClientResponse(HttpStatus.INTERNAL_SERVER_ERROR, DEFAULT_MESSAGE); + } + } + +} diff --git a/spring-cloud/spring-cloud-zuul-fallback/api-gateway/src/main/resources/application.yml b/spring-cloud/spring-cloud-zuul-fallback/api-gateway/src/main/resources/application.yml new file mode 100644 index 0000000000..9a7d3314a3 --- /dev/null +++ b/spring-cloud/spring-cloud-zuul-fallback/api-gateway/src/main/resources/application.yml @@ -0,0 +1,22 @@ +spring: + application: + name: api-gateway +server: + port: 8008 + +zuul: + igoredServices: '*' + routes: + weather-service: + path: /weather/** + serviceId: weather-service + strip-prefix: false + +ribbon: + eureka: + enabled: false + +weather-service: + ribbon: + listOfServers: localhost:7070 + diff --git a/spring-cloud/spring-cloud-zuul-fallback/api-gateway/src/test/java/com/baeldung/spring/cloud/apigateway/ApiGatewayApplicationIntegrationTest.java b/spring-cloud/spring-cloud-zuul-fallback/api-gateway/src/test/java/com/baeldung/spring/cloud/apigateway/ApiGatewayApplicationIntegrationTest.java new file mode 100644 index 0000000000..4052edc1f3 --- /dev/null +++ b/spring-cloud/spring-cloud-zuul-fallback/api-gateway/src/test/java/com/baeldung/spring/cloud/apigateway/ApiGatewayApplicationIntegrationTest.java @@ -0,0 +1,16 @@ +package com.baeldung.spring.cloud.apigateway; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class ApiGatewayApplicationIntegrationTest { + + @Test + public void whenSpringContextIsBootstrapped_thenNoExceptions() { + } + +} diff --git a/spring-cloud/spring-cloud-zuul-fallback/api-gateway/src/test/java/com/baeldung/spring/cloud/apigateway/fallback/GatewayServiceFallbackUnitTest.java b/spring-cloud/spring-cloud-zuul-fallback/api-gateway/src/test/java/com/baeldung/spring/cloud/apigateway/fallback/GatewayServiceFallbackUnitTest.java new file mode 100644 index 0000000000..db2f703084 --- /dev/null +++ b/spring-cloud/spring-cloud-zuul-fallback/api-gateway/src/test/java/com/baeldung/spring/cloud/apigateway/fallback/GatewayServiceFallbackUnitTest.java @@ -0,0 +1,46 @@ +package com.baeldung.spring.cloud.apigateway.fallback; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.HttpStatus; +import org.springframework.http.client.ClientHttpResponse; +import org.springframework.test.context.junit4.SpringRunner; + +import com.netflix.hystrix.exception.HystrixTimeoutException; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class GatewayServiceFallbackUnitTest { + + private static final String ROUTE = "*"; + + @Autowired + private GatewayServiceFallback fallback; + + @Test + public void testWhenGetRouteThenReturnWeatherServiceRoute() { + assertEquals(ROUTE, fallback.getRoute()); + + } + + @Test + public void testFallbackResponse_whenHystrixException_thenGatewayTimeout() throws Exception { + HystrixTimeoutException exception = new HystrixTimeoutException(); + ClientHttpResponse response = fallback.fallbackResponse(ROUTE, exception); + + assertEquals(HttpStatus.GATEWAY_TIMEOUT, response.getStatusCode()); + } + + @Test + public void testFallbackResponse_whenNonHystrixException_thenInternalServerError() throws Exception { + RuntimeException exception = new RuntimeException("Test exception"); + ClientHttpResponse response = fallback.fallbackResponse(ROUTE, exception); + + assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, response.getStatusCode()); + } + +} diff --git a/spring-cloud/spring-cloud-zuul-fallback/api-gateway/src/test/java/com/baeldung/spring/cloud/apigateway/fallback/WeatherServiceFallbackUnitTest.java b/spring-cloud/spring-cloud-zuul-fallback/api-gateway/src/test/java/com/baeldung/spring/cloud/apigateway/fallback/WeatherServiceFallbackUnitTest.java new file mode 100644 index 0000000000..ccd59531b5 --- /dev/null +++ b/spring-cloud/spring-cloud-zuul-fallback/api-gateway/src/test/java/com/baeldung/spring/cloud/apigateway/fallback/WeatherServiceFallbackUnitTest.java @@ -0,0 +1,46 @@ +package com.baeldung.spring.cloud.apigateway.fallback; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.HttpStatus; +import org.springframework.http.client.ClientHttpResponse; +import org.springframework.test.context.junit4.SpringRunner; + +import com.netflix.hystrix.exception.HystrixTimeoutException; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class WeatherServiceFallbackUnitTest { + + private static final String ROUTE = "weather-service"; + + @Autowired + private WeatherServiceFallback fallback; + + @Test + public void testWhenGetRouteThenReturnWeatherServiceRoute() { + assertEquals(ROUTE, fallback.getRoute()); + + } + + @Test + public void testFallbackResponse_whenHystrixException_thenGatewayTimeout() throws Exception { + HystrixTimeoutException exception = new HystrixTimeoutException(); + ClientHttpResponse response = fallback.fallbackResponse(ROUTE, exception); + + assertEquals(HttpStatus.GATEWAY_TIMEOUT, response.getStatusCode()); + } + + @Test + public void testFallbackResponse_whenNonHystrixException_thenInternalServerError() throws Exception { + RuntimeException exception = new RuntimeException("Test exception"); + ClientHttpResponse response = fallback.fallbackResponse(ROUTE, exception); + + assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, response.getStatusCode()); + } + +} diff --git a/spring-cloud/spring-cloud-zuul-fallback/pom.xml b/spring-cloud/spring-cloud-zuul-fallback/pom.xml new file mode 100644 index 0000000000..5bdd1d49ca --- /dev/null +++ b/spring-cloud/spring-cloud-zuul-fallback/pom.xml @@ -0,0 +1,28 @@ + + + 4.0.0 + spring-cloud-zuul-fallback + pom + spring-cloud-zuul-fallback + Spring Cloud Zuul Fallback + + + com.baeldung.spring.cloud + spring-cloud + 1.0.0-SNAPSHOT + .. + + + + api-gateway + weather-service + + + + 1.8 + Finchley.SR2 + 3.1.1 + + diff --git a/spring-cloud/spring-cloud-zuul-fallback/weather-service/pom.xml b/spring-cloud/spring-cloud-zuul-fallback/weather-service/pom.xml new file mode 100644 index 0000000000..611f1dcd4f --- /dev/null +++ b/spring-cloud/spring-cloud-zuul-fallback/weather-service/pom.xml @@ -0,0 +1,39 @@ + + 4.0.0 + weather-service + Weather Service + Weather Service for Zuul Fallback Test + + + com.baeldung.spring.cloud + spring-cloud-zuul-fallback + 1.0.0-SNAPSHOT + + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.cloud + spring-cloud-starter-parent + ${spring-cloud-dependencies.version} + pom + import + + + + diff --git a/spring-cloud/spring-cloud-zuul-fallback/weather-service/src/main/java/com/baeldung/spring/cloud/weatherservice/WeatherController.java b/spring-cloud/spring-cloud-zuul-fallback/weather-service/src/main/java/com/baeldung/spring/cloud/weatherservice/WeatherController.java new file mode 100644 index 0000000000..3cf451dcf7 --- /dev/null +++ b/spring-cloud/spring-cloud-zuul-fallback/weather-service/src/main/java/com/baeldung/spring/cloud/weatherservice/WeatherController.java @@ -0,0 +1,16 @@ +package com.baeldung.spring.cloud.weatherservice; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/weather") +public class WeatherController { + + @GetMapping("/today") + public String getMessage() { + return "It's a bright sunny day today!"; + } + +} diff --git a/spring-cloud/spring-cloud-zuul-fallback/weather-service/src/main/java/com/baeldung/spring/cloud/weatherservice/WeatherServiceApplication.java b/spring-cloud/spring-cloud-zuul-fallback/weather-service/src/main/java/com/baeldung/spring/cloud/weatherservice/WeatherServiceApplication.java new file mode 100644 index 0000000000..3a6d85e8d1 --- /dev/null +++ b/spring-cloud/spring-cloud-zuul-fallback/weather-service/src/main/java/com/baeldung/spring/cloud/weatherservice/WeatherServiceApplication.java @@ -0,0 +1,13 @@ +package com.baeldung.spring.cloud.weatherservice; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class WeatherServiceApplication { + + public static void main(String[] args) { + SpringApplication.run(WeatherServiceApplication.class, args); + } + +} diff --git a/spring-cloud/spring-cloud-zuul-fallback/weather-service/src/main/resources/application.yml b/spring-cloud/spring-cloud-zuul-fallback/weather-service/src/main/resources/application.yml new file mode 100644 index 0000000000..30ceeee438 --- /dev/null +++ b/spring-cloud/spring-cloud-zuul-fallback/weather-service/src/main/resources/application.yml @@ -0,0 +1,5 @@ +spring: + application: + name: weather-service +server: + port: 7070 diff --git a/spring-cloud/spring-cloud-zuul-fallback/weather-service/src/test/java/com/baeldung/spring/cloud/weatherservice/WeatherControllerIntegrationTest.java b/spring-cloud/spring-cloud-zuul-fallback/weather-service/src/test/java/com/baeldung/spring/cloud/weatherservice/WeatherControllerIntegrationTest.java new file mode 100644 index 0000000000..3ffd2b0e7a --- /dev/null +++ b/spring-cloud/spring-cloud-zuul-fallback/weather-service/src/test/java/com/baeldung/spring/cloud/weatherservice/WeatherControllerIntegrationTest.java @@ -0,0 +1,31 @@ +package com.baeldung.spring.cloud.weatherservice; + +import static org.hamcrest.Matchers.containsString; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.web.servlet.MockMvc; + +@RunWith(SpringRunner.class) +@WebMvcTest(WeatherController.class) +public class WeatherControllerIntegrationTest { + + @Autowired + private MockMvc mockMvc; + + @Test + public void whenWeatherControllerInvoked_thenReturnWeatherInformation() throws Exception { + this.mockMvc.perform(get("/weather/today")) + .andDo(print()) + .andExpect(status().isOk()) + .andExpect(content().string(containsString("bright sunny day"))); + } + +} diff --git a/spring-cloud/spring-cloud-zuul-fallback/weather-service/src/test/java/com/baeldung/spring/cloud/weatherservice/WeatherServiceApplicationIntegrationTest.java b/spring-cloud/spring-cloud-zuul-fallback/weather-service/src/test/java/com/baeldung/spring/cloud/weatherservice/WeatherServiceApplicationIntegrationTest.java new file mode 100644 index 0000000000..fec7ec1560 --- /dev/null +++ b/spring-cloud/spring-cloud-zuul-fallback/weather-service/src/test/java/com/baeldung/spring/cloud/weatherservice/WeatherServiceApplicationIntegrationTest.java @@ -0,0 +1,16 @@ +package com.baeldung.spring.cloud.weatherservice; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class WeatherServiceApplicationIntegrationTest { + + @Test + public void whenSpringContextIsBootstrapped_thenNoExceptions() { + } + +} From f59fa07851d426421cdd36240f0a15e5a0354f0c Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Sun, 29 Sep 2019 09:11:53 +0200 Subject: [PATCH 009/265] #BAEL-16646 moved modules java-dates-conversion and java-dates-string under core-java/core-java-datetime --- .../core-java-datetime/README.md | 3 +++ .../java-dates-conversion}/.gitignore | 0 .../java-dates-conversion}/README.md | 4 ++-- .../java-dates-conversion}/pom.xml | 0 .../DateToLocalDateConverter.java | 0 .../DateToLocalDateTimeConverter.java | 0 .../LocalDateTimeToDateConverter.java | 0 .../LocalDateToDateConverter.java | 0 .../convert/ConvertDateTimeUnitTest.java | 0 .../ConvertInstantToTimestampUnitTest.java | 0 .../DateToLocalDateConverterUnitTest.java | 0 .../DateToLocalDateTimeConverterUnitTest.java | 0 .../LocalDateTimeToDateConverterUnitTest.java | 0 .../LocalDateToDateConverterUnitTest.java | 0 ...XmlGregorianCalendarConverterUnitTest.java | 0 .../java-dates-string}/.gitignore | 0 .../java-dates-string}/README.md | 4 ++-- .../java-dates-string}/pom.xml | 0 .../date/validation/DateValidator.java | 0 .../DateValidatorUsingApacheValidator.java | 0 .../DateValidatorUsingDateFormat.java | 0 .../DateValidatorUsingDateTimeFormatter.java | 0 .../DateValidatorUsingLocalDate.java | 0 .../regexp/datepattern/DateMatcher.java | 0 .../datepattern/FormattedDateMatcher.java | 0 .../regexp/datepattern/RangedDateMatcher.java | 0 .../gregorian/February29thMatcher.java | 0 .../gregorian/FebruaryGeneralMatcher.java | 0 .../gregorian/GregorianDateMatcher.java | 0 .../gregorian/MonthsOf30DaysMatcher.java | 0 .../gregorian/MonthsOf31DaysMatcher.java | 0 .../optmization/OptimizedMatcher.java | 0 .../timezonedisplay/TimezoneDisplay.java | 0 .../timezonedisplay/TimezoneDisplayApp.java | 0 .../timezonedisplay/TimezoneDisplayJava7.java | 0 .../TimezoneDisplayJava7App.java | 0 .../zonedatetime/OffsetDateTimeExample.java | 0 .../zonedatetime/OffsetTimeExample.java | 0 .../zonedatetime/ZoneDateTimeExample.java | 0 ...ValidatorUsingApacheValidatorUnitTest.java | 0 .../DateValidatorUsingDateFormatUnitTest.java | 0 ...lidatorUsingDateTimeFormatterUnitTest.java | 0 .../DateValidatorUsingLocalDateUnitTest.java | 0 .../datetime/DateTimeFormatterUnitTest.java | 0 .../FormattedDateMatcherUnitTest.java | 0 .../RangedDateMatcherUnitTest.java | 0 .../February29thMatcherUnitTest.java | 0 .../FebruaryGeneralMatcherUnitTest.java | 0 .../GregorianDateMatcherUnitTest.java | 0 .../MonthsOf30DaysMatcherUnitTest.java | 0 .../MonthsOf31DaysMatcherUnitTest.java | 0 .../testhelper/GregorianDateTestHelper.java | 0 .../SimpleDateFormatUnitTest.java | 0 .../StringToTimestampConverterUnitTest.java | 0 .../TimestampToStringConverterTest.java | 0 .../OffsetDateTimeExampleUnitTest.java | 0 .../OffsetTimeExampleUnitTest.java | 0 .../ZoneDateTimeExampleUnitTest.java | 0 .../zonedatetime/ZonedDateTimeUnitTest.java | 0 core-java-modules/core-java-datetime/pom.xml | 23 +++++++++++++++++++ .../hibernate-mapping/README.md | 2 +- pom.xml | 6 ++--- 62 files changed, 33 insertions(+), 9 deletions(-) create mode 100644 core-java-modules/core-java-datetime/README.md rename {java-dates-conversion => core-java-modules/core-java-datetime/java-dates-conversion}/.gitignore (100%) rename {java-dates-conversion => core-java-modules/core-java-datetime/java-dates-conversion}/README.md (86%) rename {java-dates-conversion => core-java-modules/core-java-datetime/java-dates-conversion}/pom.xml (100%) rename {java-dates-conversion => core-java-modules/core-java-datetime/java-dates-conversion}/src/main/java/com/baeldung/datetolocaldate/DateToLocalDateConverter.java (100%) rename {java-dates-conversion => core-java-modules/core-java-datetime/java-dates-conversion}/src/main/java/com/baeldung/datetolocaldate/DateToLocalDateTimeConverter.java (100%) rename {java-dates-conversion => core-java-modules/core-java-datetime/java-dates-conversion}/src/main/java/com/baeldung/datetolocaldate/LocalDateTimeToDateConverter.java (100%) rename {java-dates-conversion => core-java-modules/core-java-datetime/java-dates-conversion}/src/main/java/com/baeldung/datetolocaldate/LocalDateToDateConverter.java (100%) rename {java-dates-conversion => core-java-modules/core-java-datetime/java-dates-conversion}/src/test/java/com/baeldung/convert/ConvertDateTimeUnitTest.java (100%) rename {java-dates-conversion => core-java-modules/core-java-datetime/java-dates-conversion}/src/test/java/com/baeldung/datetime/ConvertInstantToTimestampUnitTest.java (100%) rename {java-dates-conversion => core-java-modules/core-java-datetime/java-dates-conversion}/src/test/java/com/baeldung/datetolocaldate/DateToLocalDateConverterUnitTest.java (100%) rename {java-dates-conversion => core-java-modules/core-java-datetime/java-dates-conversion}/src/test/java/com/baeldung/datetolocaldate/DateToLocalDateTimeConverterUnitTest.java (100%) rename {java-dates-conversion => core-java-modules/core-java-datetime/java-dates-conversion}/src/test/java/com/baeldung/datetolocaldate/LocalDateTimeToDateConverterUnitTest.java (100%) rename {java-dates-conversion => core-java-modules/core-java-datetime/java-dates-conversion}/src/test/java/com/baeldung/datetolocaldate/LocalDateToDateConverterUnitTest.java (100%) rename {java-dates-conversion => core-java-modules/core-java-datetime/java-dates-conversion}/src/test/java/com/baeldung/xmlgregoriancalendar/XmlGregorianCalendarConverterUnitTest.java (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/.gitignore (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/README.md (89%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/pom.xml (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/src/main/java/com/baeldung/date/validation/DateValidator.java (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/src/main/java/com/baeldung/date/validation/DateValidatorUsingApacheValidator.java (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/src/main/java/com/baeldung/date/validation/DateValidatorUsingDateFormat.java (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/src/main/java/com/baeldung/date/validation/DateValidatorUsingDateTimeFormatter.java (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/src/main/java/com/baeldung/date/validation/DateValidatorUsingLocalDate.java (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/src/main/java/com/baeldung/regexp/datepattern/DateMatcher.java (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/src/main/java/com/baeldung/regexp/datepattern/FormattedDateMatcher.java (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/src/main/java/com/baeldung/regexp/datepattern/RangedDateMatcher.java (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/src/main/java/com/baeldung/regexp/datepattern/gregorian/February29thMatcher.java (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/src/main/java/com/baeldung/regexp/datepattern/gregorian/FebruaryGeneralMatcher.java (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/src/main/java/com/baeldung/regexp/datepattern/gregorian/GregorianDateMatcher.java (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/src/main/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf30DaysMatcher.java (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/src/main/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf31DaysMatcher.java (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/src/main/java/com/baeldung/regexp/datepattern/optmization/OptimizedMatcher.java (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplay.java (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayApp.java (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayJava7.java (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayJava7App.java (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/src/main/java/com/baeldung/zonedatetime/OffsetDateTimeExample.java (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/src/main/java/com/baeldung/zonedatetime/OffsetTimeExample.java (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/src/main/java/com/baeldung/zonedatetime/ZoneDateTimeExample.java (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/src/test/java/com/baeldung/date/validation/DateValidatorUsingApacheValidatorUnitTest.java (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/src/test/java/com/baeldung/date/validation/DateValidatorUsingDateFormatUnitTest.java (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/src/test/java/com/baeldung/date/validation/DateValidatorUsingDateTimeFormatterUnitTest.java (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/src/test/java/com/baeldung/date/validation/DateValidatorUsingLocalDateUnitTest.java (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/src/test/java/com/baeldung/datetime/DateTimeFormatterUnitTest.java (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/src/test/java/com/baeldung/regexp/datepattern/FormattedDateMatcherUnitTest.java (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/src/test/java/com/baeldung/regexp/datepattern/RangedDateMatcherUnitTest.java (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/src/test/java/com/baeldung/regexp/datepattern/gregorian/February29thMatcherUnitTest.java (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/src/test/java/com/baeldung/regexp/datepattern/gregorian/FebruaryGeneralMatcherUnitTest.java (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/src/test/java/com/baeldung/regexp/datepattern/gregorian/GregorianDateMatcherUnitTest.java (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/src/test/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf30DaysMatcherUnitTest.java (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/src/test/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf31DaysMatcherUnitTest.java (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/src/test/java/com/baeldung/regexp/datepattern/gregorian/testhelper/GregorianDateTestHelper.java (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/src/test/java/com/baeldung/simpledateformat/SimpleDateFormatUnitTest.java (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/src/test/java/com/baeldung/timestamp/StringToTimestampConverterUnitTest.java (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/src/test/java/com/baeldung/timestamp/TimestampToStringConverterTest.java (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/src/test/java/com/baeldung/zonedatetime/OffsetDateTimeExampleUnitTest.java (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/src/test/java/com/baeldung/zonedatetime/OffsetTimeExampleUnitTest.java (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/src/test/java/com/baeldung/zonedatetime/ZoneDateTimeExampleUnitTest.java (100%) rename {java-dates-string => core-java-modules/core-java-datetime/java-dates-string}/src/test/java/com/baeldung/zonedatetime/ZonedDateTimeUnitTest.java (100%) create mode 100644 core-java-modules/core-java-datetime/pom.xml diff --git a/core-java-modules/core-java-datetime/README.md b/core-java-modules/core-java-datetime/README.md new file mode 100644 index 0000000000..51f52e239d --- /dev/null +++ b/core-java-modules/core-java-datetime/README.md @@ -0,0 +1,3 @@ +## Java Date and Time + +This module contains articles about date and time in Java. diff --git a/java-dates-conversion/.gitignore b/core-java-modules/core-java-datetime/java-dates-conversion/.gitignore similarity index 100% rename from java-dates-conversion/.gitignore rename to core-java-modules/core-java-datetime/java-dates-conversion/.gitignore diff --git a/java-dates-conversion/README.md b/core-java-modules/core-java-datetime/java-dates-conversion/README.md similarity index 86% rename from java-dates-conversion/README.md rename to core-java-modules/core-java-datetime/java-dates-conversion/README.md index f781a9515c..2503459f50 100644 --- a/java-dates-conversion/README.md +++ b/core-java-modules/core-java-datetime/java-dates-conversion/README.md @@ -1,7 +1,7 @@ -========= - ## Java Date/time conversion Cookbooks and Examples +This module contains articles about converting between Java date and time objects. + ### Relevant Articles: - [Converting Between LocalDate and XMLGregorianCalendar](https://www.baeldung.com/java-localdate-to-xmlgregoriancalendar) - [Convert Time to Milliseconds in Java](https://www.baeldung.com/java-time-milliseconds) diff --git a/java-dates-conversion/pom.xml b/core-java-modules/core-java-datetime/java-dates-conversion/pom.xml similarity index 100% rename from java-dates-conversion/pom.xml rename to core-java-modules/core-java-datetime/java-dates-conversion/pom.xml diff --git a/java-dates-conversion/src/main/java/com/baeldung/datetolocaldate/DateToLocalDateConverter.java b/core-java-modules/core-java-datetime/java-dates-conversion/src/main/java/com/baeldung/datetolocaldate/DateToLocalDateConverter.java similarity index 100% rename from java-dates-conversion/src/main/java/com/baeldung/datetolocaldate/DateToLocalDateConverter.java rename to core-java-modules/core-java-datetime/java-dates-conversion/src/main/java/com/baeldung/datetolocaldate/DateToLocalDateConverter.java diff --git a/java-dates-conversion/src/main/java/com/baeldung/datetolocaldate/DateToLocalDateTimeConverter.java b/core-java-modules/core-java-datetime/java-dates-conversion/src/main/java/com/baeldung/datetolocaldate/DateToLocalDateTimeConverter.java similarity index 100% rename from java-dates-conversion/src/main/java/com/baeldung/datetolocaldate/DateToLocalDateTimeConverter.java rename to core-java-modules/core-java-datetime/java-dates-conversion/src/main/java/com/baeldung/datetolocaldate/DateToLocalDateTimeConverter.java diff --git a/java-dates-conversion/src/main/java/com/baeldung/datetolocaldate/LocalDateTimeToDateConverter.java b/core-java-modules/core-java-datetime/java-dates-conversion/src/main/java/com/baeldung/datetolocaldate/LocalDateTimeToDateConverter.java similarity index 100% rename from java-dates-conversion/src/main/java/com/baeldung/datetolocaldate/LocalDateTimeToDateConverter.java rename to core-java-modules/core-java-datetime/java-dates-conversion/src/main/java/com/baeldung/datetolocaldate/LocalDateTimeToDateConverter.java diff --git a/java-dates-conversion/src/main/java/com/baeldung/datetolocaldate/LocalDateToDateConverter.java b/core-java-modules/core-java-datetime/java-dates-conversion/src/main/java/com/baeldung/datetolocaldate/LocalDateToDateConverter.java similarity index 100% rename from java-dates-conversion/src/main/java/com/baeldung/datetolocaldate/LocalDateToDateConverter.java rename to core-java-modules/core-java-datetime/java-dates-conversion/src/main/java/com/baeldung/datetolocaldate/LocalDateToDateConverter.java diff --git a/java-dates-conversion/src/test/java/com/baeldung/convert/ConvertDateTimeUnitTest.java b/core-java-modules/core-java-datetime/java-dates-conversion/src/test/java/com/baeldung/convert/ConvertDateTimeUnitTest.java similarity index 100% rename from java-dates-conversion/src/test/java/com/baeldung/convert/ConvertDateTimeUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-conversion/src/test/java/com/baeldung/convert/ConvertDateTimeUnitTest.java diff --git a/java-dates-conversion/src/test/java/com/baeldung/datetime/ConvertInstantToTimestampUnitTest.java b/core-java-modules/core-java-datetime/java-dates-conversion/src/test/java/com/baeldung/datetime/ConvertInstantToTimestampUnitTest.java similarity index 100% rename from java-dates-conversion/src/test/java/com/baeldung/datetime/ConvertInstantToTimestampUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-conversion/src/test/java/com/baeldung/datetime/ConvertInstantToTimestampUnitTest.java diff --git a/java-dates-conversion/src/test/java/com/baeldung/datetolocaldate/DateToLocalDateConverterUnitTest.java b/core-java-modules/core-java-datetime/java-dates-conversion/src/test/java/com/baeldung/datetolocaldate/DateToLocalDateConverterUnitTest.java similarity index 100% rename from java-dates-conversion/src/test/java/com/baeldung/datetolocaldate/DateToLocalDateConverterUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-conversion/src/test/java/com/baeldung/datetolocaldate/DateToLocalDateConverterUnitTest.java diff --git a/java-dates-conversion/src/test/java/com/baeldung/datetolocaldate/DateToLocalDateTimeConverterUnitTest.java b/core-java-modules/core-java-datetime/java-dates-conversion/src/test/java/com/baeldung/datetolocaldate/DateToLocalDateTimeConverterUnitTest.java similarity index 100% rename from java-dates-conversion/src/test/java/com/baeldung/datetolocaldate/DateToLocalDateTimeConverterUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-conversion/src/test/java/com/baeldung/datetolocaldate/DateToLocalDateTimeConverterUnitTest.java diff --git a/java-dates-conversion/src/test/java/com/baeldung/datetolocaldate/LocalDateTimeToDateConverterUnitTest.java b/core-java-modules/core-java-datetime/java-dates-conversion/src/test/java/com/baeldung/datetolocaldate/LocalDateTimeToDateConverterUnitTest.java similarity index 100% rename from java-dates-conversion/src/test/java/com/baeldung/datetolocaldate/LocalDateTimeToDateConverterUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-conversion/src/test/java/com/baeldung/datetolocaldate/LocalDateTimeToDateConverterUnitTest.java diff --git a/java-dates-conversion/src/test/java/com/baeldung/datetolocaldate/LocalDateToDateConverterUnitTest.java b/core-java-modules/core-java-datetime/java-dates-conversion/src/test/java/com/baeldung/datetolocaldate/LocalDateToDateConverterUnitTest.java similarity index 100% rename from java-dates-conversion/src/test/java/com/baeldung/datetolocaldate/LocalDateToDateConverterUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-conversion/src/test/java/com/baeldung/datetolocaldate/LocalDateToDateConverterUnitTest.java diff --git a/java-dates-conversion/src/test/java/com/baeldung/xmlgregoriancalendar/XmlGregorianCalendarConverterUnitTest.java b/core-java-modules/core-java-datetime/java-dates-conversion/src/test/java/com/baeldung/xmlgregoriancalendar/XmlGregorianCalendarConverterUnitTest.java similarity index 100% rename from java-dates-conversion/src/test/java/com/baeldung/xmlgregoriancalendar/XmlGregorianCalendarConverterUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-conversion/src/test/java/com/baeldung/xmlgregoriancalendar/XmlGregorianCalendarConverterUnitTest.java diff --git a/java-dates-string/.gitignore b/core-java-modules/core-java-datetime/java-dates-string/.gitignore similarity index 100% rename from java-dates-string/.gitignore rename to core-java-modules/core-java-datetime/java-dates-string/.gitignore diff --git a/java-dates-string/README.md b/core-java-modules/core-java-datetime/java-dates-string/README.md similarity index 89% rename from java-dates-string/README.md rename to core-java-modules/core-java-datetime/java-dates-string/README.md index 9becf8a460..76c3298bd5 100644 --- a/java-dates-string/README.md +++ b/core-java-modules/core-java-datetime/java-dates-string/README.md @@ -1,7 +1,7 @@ -========= - ## Java Dates Parsing and Formatting Cookbooks and Examples +This module contains articles about parsing and formatting Java date and time objects. + ### Relevant Articles: - [Check If a String Is a Valid Date in Java](https://www.baeldung.com/java-string-valid-date) - [RegEx for matching Date Pattern in Java](http://www.baeldung.com/java-date-regular-expressions) diff --git a/java-dates-string/pom.xml b/core-java-modules/core-java-datetime/java-dates-string/pom.xml similarity index 100% rename from java-dates-string/pom.xml rename to core-java-modules/core-java-datetime/java-dates-string/pom.xml diff --git a/java-dates-string/src/main/java/com/baeldung/date/validation/DateValidator.java b/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/date/validation/DateValidator.java similarity index 100% rename from java-dates-string/src/main/java/com/baeldung/date/validation/DateValidator.java rename to core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/date/validation/DateValidator.java diff --git a/java-dates-string/src/main/java/com/baeldung/date/validation/DateValidatorUsingApacheValidator.java b/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/date/validation/DateValidatorUsingApacheValidator.java similarity index 100% rename from java-dates-string/src/main/java/com/baeldung/date/validation/DateValidatorUsingApacheValidator.java rename to core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/date/validation/DateValidatorUsingApacheValidator.java diff --git a/java-dates-string/src/main/java/com/baeldung/date/validation/DateValidatorUsingDateFormat.java b/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/date/validation/DateValidatorUsingDateFormat.java similarity index 100% rename from java-dates-string/src/main/java/com/baeldung/date/validation/DateValidatorUsingDateFormat.java rename to core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/date/validation/DateValidatorUsingDateFormat.java diff --git a/java-dates-string/src/main/java/com/baeldung/date/validation/DateValidatorUsingDateTimeFormatter.java b/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/date/validation/DateValidatorUsingDateTimeFormatter.java similarity index 100% rename from java-dates-string/src/main/java/com/baeldung/date/validation/DateValidatorUsingDateTimeFormatter.java rename to core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/date/validation/DateValidatorUsingDateTimeFormatter.java diff --git a/java-dates-string/src/main/java/com/baeldung/date/validation/DateValidatorUsingLocalDate.java b/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/date/validation/DateValidatorUsingLocalDate.java similarity index 100% rename from java-dates-string/src/main/java/com/baeldung/date/validation/DateValidatorUsingLocalDate.java rename to core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/date/validation/DateValidatorUsingLocalDate.java diff --git a/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/DateMatcher.java b/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/DateMatcher.java similarity index 100% rename from java-dates-string/src/main/java/com/baeldung/regexp/datepattern/DateMatcher.java rename to core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/DateMatcher.java diff --git a/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/FormattedDateMatcher.java b/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/FormattedDateMatcher.java similarity index 100% rename from java-dates-string/src/main/java/com/baeldung/regexp/datepattern/FormattedDateMatcher.java rename to core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/FormattedDateMatcher.java diff --git a/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/RangedDateMatcher.java b/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/RangedDateMatcher.java similarity index 100% rename from java-dates-string/src/main/java/com/baeldung/regexp/datepattern/RangedDateMatcher.java rename to core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/RangedDateMatcher.java diff --git a/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/February29thMatcher.java b/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/February29thMatcher.java similarity index 100% rename from java-dates-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/February29thMatcher.java rename to core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/February29thMatcher.java diff --git a/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/FebruaryGeneralMatcher.java b/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/FebruaryGeneralMatcher.java similarity index 100% rename from java-dates-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/FebruaryGeneralMatcher.java rename to core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/FebruaryGeneralMatcher.java diff --git a/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/GregorianDateMatcher.java b/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/GregorianDateMatcher.java similarity index 100% rename from java-dates-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/GregorianDateMatcher.java rename to core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/GregorianDateMatcher.java diff --git a/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf30DaysMatcher.java b/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf30DaysMatcher.java similarity index 100% rename from java-dates-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf30DaysMatcher.java rename to core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf30DaysMatcher.java diff --git a/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf31DaysMatcher.java b/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf31DaysMatcher.java similarity index 100% rename from java-dates-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf31DaysMatcher.java rename to core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf31DaysMatcher.java diff --git a/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/optmization/OptimizedMatcher.java b/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/optmization/OptimizedMatcher.java similarity index 100% rename from java-dates-string/src/main/java/com/baeldung/regexp/datepattern/optmization/OptimizedMatcher.java rename to core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/optmization/OptimizedMatcher.java diff --git a/java-dates-string/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplay.java b/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplay.java similarity index 100% rename from java-dates-string/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplay.java rename to core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplay.java diff --git a/java-dates-string/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayApp.java b/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayApp.java similarity index 100% rename from java-dates-string/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayApp.java rename to core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayApp.java diff --git a/java-dates-string/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayJava7.java b/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayJava7.java similarity index 100% rename from java-dates-string/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayJava7.java rename to core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayJava7.java diff --git a/java-dates-string/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayJava7App.java b/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayJava7App.java similarity index 100% rename from java-dates-string/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayJava7App.java rename to core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayJava7App.java diff --git a/java-dates-string/src/main/java/com/baeldung/zonedatetime/OffsetDateTimeExample.java b/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/zonedatetime/OffsetDateTimeExample.java similarity index 100% rename from java-dates-string/src/main/java/com/baeldung/zonedatetime/OffsetDateTimeExample.java rename to core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/zonedatetime/OffsetDateTimeExample.java diff --git a/java-dates-string/src/main/java/com/baeldung/zonedatetime/OffsetTimeExample.java b/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/zonedatetime/OffsetTimeExample.java similarity index 100% rename from java-dates-string/src/main/java/com/baeldung/zonedatetime/OffsetTimeExample.java rename to core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/zonedatetime/OffsetTimeExample.java diff --git a/java-dates-string/src/main/java/com/baeldung/zonedatetime/ZoneDateTimeExample.java b/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/zonedatetime/ZoneDateTimeExample.java similarity index 100% rename from java-dates-string/src/main/java/com/baeldung/zonedatetime/ZoneDateTimeExample.java rename to core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/zonedatetime/ZoneDateTimeExample.java diff --git a/java-dates-string/src/test/java/com/baeldung/date/validation/DateValidatorUsingApacheValidatorUnitTest.java b/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/date/validation/DateValidatorUsingApacheValidatorUnitTest.java similarity index 100% rename from java-dates-string/src/test/java/com/baeldung/date/validation/DateValidatorUsingApacheValidatorUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/date/validation/DateValidatorUsingApacheValidatorUnitTest.java diff --git a/java-dates-string/src/test/java/com/baeldung/date/validation/DateValidatorUsingDateFormatUnitTest.java b/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/date/validation/DateValidatorUsingDateFormatUnitTest.java similarity index 100% rename from java-dates-string/src/test/java/com/baeldung/date/validation/DateValidatorUsingDateFormatUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/date/validation/DateValidatorUsingDateFormatUnitTest.java diff --git a/java-dates-string/src/test/java/com/baeldung/date/validation/DateValidatorUsingDateTimeFormatterUnitTest.java b/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/date/validation/DateValidatorUsingDateTimeFormatterUnitTest.java similarity index 100% rename from java-dates-string/src/test/java/com/baeldung/date/validation/DateValidatorUsingDateTimeFormatterUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/date/validation/DateValidatorUsingDateTimeFormatterUnitTest.java diff --git a/java-dates-string/src/test/java/com/baeldung/date/validation/DateValidatorUsingLocalDateUnitTest.java b/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/date/validation/DateValidatorUsingLocalDateUnitTest.java similarity index 100% rename from java-dates-string/src/test/java/com/baeldung/date/validation/DateValidatorUsingLocalDateUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/date/validation/DateValidatorUsingLocalDateUnitTest.java diff --git a/java-dates-string/src/test/java/com/baeldung/datetime/DateTimeFormatterUnitTest.java b/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/datetime/DateTimeFormatterUnitTest.java similarity index 100% rename from java-dates-string/src/test/java/com/baeldung/datetime/DateTimeFormatterUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/datetime/DateTimeFormatterUnitTest.java diff --git a/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/FormattedDateMatcherUnitTest.java b/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/FormattedDateMatcherUnitTest.java similarity index 100% rename from java-dates-string/src/test/java/com/baeldung/regexp/datepattern/FormattedDateMatcherUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/FormattedDateMatcherUnitTest.java diff --git a/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/RangedDateMatcherUnitTest.java b/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/RangedDateMatcherUnitTest.java similarity index 100% rename from java-dates-string/src/test/java/com/baeldung/regexp/datepattern/RangedDateMatcherUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/RangedDateMatcherUnitTest.java diff --git a/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/February29thMatcherUnitTest.java b/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/February29thMatcherUnitTest.java similarity index 100% rename from java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/February29thMatcherUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/February29thMatcherUnitTest.java diff --git a/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/FebruaryGeneralMatcherUnitTest.java b/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/FebruaryGeneralMatcherUnitTest.java similarity index 100% rename from java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/FebruaryGeneralMatcherUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/FebruaryGeneralMatcherUnitTest.java diff --git a/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/GregorianDateMatcherUnitTest.java b/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/GregorianDateMatcherUnitTest.java similarity index 100% rename from java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/GregorianDateMatcherUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/GregorianDateMatcherUnitTest.java diff --git a/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf30DaysMatcherUnitTest.java b/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf30DaysMatcherUnitTest.java similarity index 100% rename from java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf30DaysMatcherUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf30DaysMatcherUnitTest.java diff --git a/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf31DaysMatcherUnitTest.java b/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf31DaysMatcherUnitTest.java similarity index 100% rename from java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf31DaysMatcherUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf31DaysMatcherUnitTest.java diff --git a/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/testhelper/GregorianDateTestHelper.java b/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/testhelper/GregorianDateTestHelper.java similarity index 100% rename from java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/testhelper/GregorianDateTestHelper.java rename to core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/testhelper/GregorianDateTestHelper.java diff --git a/java-dates-string/src/test/java/com/baeldung/simpledateformat/SimpleDateFormatUnitTest.java b/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/simpledateformat/SimpleDateFormatUnitTest.java similarity index 100% rename from java-dates-string/src/test/java/com/baeldung/simpledateformat/SimpleDateFormatUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/simpledateformat/SimpleDateFormatUnitTest.java diff --git a/java-dates-string/src/test/java/com/baeldung/timestamp/StringToTimestampConverterUnitTest.java b/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/timestamp/StringToTimestampConverterUnitTest.java similarity index 100% rename from java-dates-string/src/test/java/com/baeldung/timestamp/StringToTimestampConverterUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/timestamp/StringToTimestampConverterUnitTest.java diff --git a/java-dates-string/src/test/java/com/baeldung/timestamp/TimestampToStringConverterTest.java b/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/timestamp/TimestampToStringConverterTest.java similarity index 100% rename from java-dates-string/src/test/java/com/baeldung/timestamp/TimestampToStringConverterTest.java rename to core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/timestamp/TimestampToStringConverterTest.java diff --git a/java-dates-string/src/test/java/com/baeldung/zonedatetime/OffsetDateTimeExampleUnitTest.java b/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/zonedatetime/OffsetDateTimeExampleUnitTest.java similarity index 100% rename from java-dates-string/src/test/java/com/baeldung/zonedatetime/OffsetDateTimeExampleUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/zonedatetime/OffsetDateTimeExampleUnitTest.java diff --git a/java-dates-string/src/test/java/com/baeldung/zonedatetime/OffsetTimeExampleUnitTest.java b/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/zonedatetime/OffsetTimeExampleUnitTest.java similarity index 100% rename from java-dates-string/src/test/java/com/baeldung/zonedatetime/OffsetTimeExampleUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/zonedatetime/OffsetTimeExampleUnitTest.java diff --git a/java-dates-string/src/test/java/com/baeldung/zonedatetime/ZoneDateTimeExampleUnitTest.java b/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/zonedatetime/ZoneDateTimeExampleUnitTest.java similarity index 100% rename from java-dates-string/src/test/java/com/baeldung/zonedatetime/ZoneDateTimeExampleUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/zonedatetime/ZoneDateTimeExampleUnitTest.java diff --git a/java-dates-string/src/test/java/com/baeldung/zonedatetime/ZonedDateTimeUnitTest.java b/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/zonedatetime/ZonedDateTimeUnitTest.java similarity index 100% rename from java-dates-string/src/test/java/com/baeldung/zonedatetime/ZonedDateTimeUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/zonedatetime/ZonedDateTimeUnitTest.java diff --git a/core-java-modules/core-java-datetime/pom.xml b/core-java-modules/core-java-datetime/pom.xml new file mode 100644 index 0000000000..cab5c9fe98 --- /dev/null +++ b/core-java-modules/core-java-datetime/pom.xml @@ -0,0 +1,23 @@ + + 4.0.0 + com.baeldung.exception.numberformat + core-java-datetime + 0.0.1-SNAPSHOT + pom + core-java-datetime + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../../parent-java + + + + java-dates-conversion + java-dates-string + + + diff --git a/persistence-modules/hibernate-mapping/README.md b/persistence-modules/hibernate-mapping/README.md index 99374f9135..c227620324 100644 --- a/persistence-modules/hibernate-mapping/README.md +++ b/persistence-modules/hibernate-mapping/README.md @@ -4,4 +4,4 @@ - [Persisting Maps with Hibernate](https://www.baeldung.com/hibernate-persisting-maps) - [Difference Between @Size, @Length, and @Column(length=value)](https://www.baeldung.com/jpa-size-length-column-differences) - [Hibernate Validator Specific Constraints](https://www.baeldung.com/hibernate-validator-constraints) -- [Hibernate One to Many Annotation Tutorial](http://www.baeldung.com/hibernate-one-to-many) \ No newline at end of file +- [Hibernate One to Many Annotation Tutorial](http://www.baeldung.com/hibernate-one-to-many) diff --git a/pom.xml b/pom.xml index 128320951c..927e1a25b4 100644 --- a/pom.xml +++ b/pom.xml @@ -469,10 +469,8 @@ java-collections-maps java-collections-maps-2 java-jdi - + + java-lite java-math From 95324865a81ced01b94226889bc796df242d63a1 Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Sun, 29 Sep 2019 10:59:04 +0200 Subject: [PATCH 010/265] #BAEL-16646 fix project names --- core-java-modules/core-java-datetime/README.md | 2 +- .../core-java-datetime/java-dates-conversion/pom.xml | 6 +++--- .../core-java-datetime/java-dates-string/pom.xml | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/core-java-modules/core-java-datetime/README.md b/core-java-modules/core-java-datetime/README.md index 51f52e239d..ddb2d336b5 100644 --- a/core-java-modules/core-java-datetime/README.md +++ b/core-java-modules/core-java-datetime/README.md @@ -1,3 +1,3 @@ ## Java Date and Time -This module contains articles about date and time in Java. +This module contains articles about date and time in Java. It's split in several submodules. diff --git a/core-java-modules/core-java-datetime/java-dates-conversion/pom.xml b/core-java-modules/core-java-datetime/java-dates-conversion/pom.xml index c9326eb44c..8f3d35f4f3 100644 --- a/core-java-modules/core-java-datetime/java-dates-conversion/pom.xml +++ b/core-java-modules/core-java-datetime/java-dates-conversion/pom.xml @@ -3,14 +3,14 @@ 4.0.0 java-dates-conversion ${project.parent.version} - java-dates + java-dates-conversion jar com.baeldung parent-java 0.0.1-SNAPSHOT - ../parent-java + ../../parent-java @@ -39,7 +39,7 @@ - java-dates + java-dates-conversion src/main/resources diff --git a/core-java-modules/core-java-datetime/java-dates-string/pom.xml b/core-java-modules/core-java-datetime/java-dates-string/pom.xml index d65ac140fb..d599818924 100644 --- a/core-java-modules/core-java-datetime/java-dates-string/pom.xml +++ b/core-java-modules/core-java-datetime/java-dates-string/pom.xml @@ -3,14 +3,14 @@ 4.0.0 java-dates-string ${project.parent.version} - java-dates + java-dates-string jar com.baeldung parent-java 0.0.1-SNAPSHOT - ../parent-java + ../../parent-java @@ -51,7 +51,7 @@ - java-dates + java-dates-string src/main/resources From 491a91209066dd39fefe273a5527bd606b953d38 Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Sun, 29 Sep 2019 11:13:08 +0200 Subject: [PATCH 011/265] #BAEL-16646 move https://www.baeldung.com/java-date-difference in new module java-dates-computations --- .../java-dates-computations/README.md | 6 ++ .../java-dates-computations/pom.xml | 60 +++++++++++++++++++ .../com/baeldung/date/DateDiffUnitTest.java | 0 core-java-modules/core-java-datetime/pom.xml | 1 + java-dates/README.md | 1 - java-dates/pom.xml | 6 -- pom.xml | 2 +- 7 files changed, 68 insertions(+), 8 deletions(-) create mode 100644 core-java-modules/core-java-datetime/java-dates-computations/README.md create mode 100644 core-java-modules/core-java-datetime/java-dates-computations/pom.xml rename {java-dates => core-java-modules/core-java-datetime/java-dates-computations}/src/test/java/com/baeldung/date/DateDiffUnitTest.java (100%) diff --git a/core-java-modules/core-java-datetime/java-dates-computations/README.md b/core-java-modules/core-java-datetime/java-dates-computations/README.md new file mode 100644 index 0000000000..73b927df98 --- /dev/null +++ b/core-java-modules/core-java-datetime/java-dates-computations/README.md @@ -0,0 +1,6 @@ +## Java Date/time computations Cookbooks and Examples + +This module contains articles about date and time computations in Java. + +### Relevant Articles: +- [Difference Between Two Dates in Java](http://www.baeldung.com/java-date-difference) diff --git a/core-java-modules/core-java-datetime/java-dates-computations/pom.xml b/core-java-modules/core-java-datetime/java-dates-computations/pom.xml new file mode 100644 index 0000000000..8ce396d229 --- /dev/null +++ b/core-java-modules/core-java-datetime/java-dates-computations/pom.xml @@ -0,0 +1,60 @@ + + 4.0.0 + java-dates-computations + ${project.parent.version} + java-dates-computations + jar + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../../../parent-java + + + + + joda-time + joda-time + ${joda-time.version} + + + + com.darwinsys + hirondelle-date4j + RELEASE + test + + + + + java-dates-computations + + + src/main/resources + true + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + ${maven.compiler.source} + ${maven.compiler.target} + + + + + + + 2.10 + + 3.6.1 + 1.9 + 1.9 + + diff --git a/java-dates/src/test/java/com/baeldung/date/DateDiffUnitTest.java b/core-java-modules/core-java-datetime/java-dates-computations/src/test/java/com/baeldung/date/DateDiffUnitTest.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/date/DateDiffUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-computations/src/test/java/com/baeldung/date/DateDiffUnitTest.java diff --git a/core-java-modules/core-java-datetime/pom.xml b/core-java-modules/core-java-datetime/pom.xml index cab5c9fe98..e61f804a32 100644 --- a/core-java-modules/core-java-datetime/pom.xml +++ b/core-java-modules/core-java-datetime/pom.xml @@ -16,6 +16,7 @@ + java-dates-computations java-dates-conversion java-dates-string diff --git a/java-dates/README.md b/java-dates/README.md index d56e16eafd..71290c7c0f 100644 --- a/java-dates/README.md +++ b/java-dates/README.md @@ -6,7 +6,6 @@ - [TemporalAdjuster in Java](http://www.baeldung.com/java-temporal-adjuster) - [Handling Daylight Savings Time in Java](http://www.baeldung.com/java-daylight-savings) - [Period and Duration in Java](http://www.baeldung.com/java-period-duration) -- [Difference Between Two Dates in Java](http://www.baeldung.com/java-date-difference) - [Migrating to the New Java 8 Date Time API](http://www.baeldung.com/migrating-to-java-8-date-time-api) - [Introduction to the Java 8 Date/Time API](http://www.baeldung.com/java-8-date-time-intro) - [Get the Current Date, Time and Timestamp in Java 8](http://www.baeldung.com/current-date-time-and-timestamp-in-java-8) diff --git a/java-dates/pom.xml b/java-dates/pom.xml index 761ebd71a6..8e6b708c2f 100644 --- a/java-dates/pom.xml +++ b/java-dates/pom.xml @@ -37,12 +37,6 @@ joda-time ${joda-time.version} - - com.darwinsys - hirondelle-date4j - RELEASE - test - diff --git a/pom.xml b/pom.xml index 927e1a25b4..137c174b47 100644 --- a/pom.xml +++ b/pom.xml @@ -469,7 +469,7 @@ java-collections-maps java-collections-maps-2 java-jdi - + java-lite From fa3cc1e953d87e6f000ebe9b8cdad52877875794 Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Sun, 29 Sep 2019 11:15:25 +0200 Subject: [PATCH 012/265] #BAEL-16646 fix pom parent --- .../core-java-datetime/java-dates-conversion/pom.xml | 2 +- core-java-modules/core-java-datetime/java-dates-string/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core-java-modules/core-java-datetime/java-dates-conversion/pom.xml b/core-java-modules/core-java-datetime/java-dates-conversion/pom.xml index 8f3d35f4f3..b56cadc340 100644 --- a/core-java-modules/core-java-datetime/java-dates-conversion/pom.xml +++ b/core-java-modules/core-java-datetime/java-dates-conversion/pom.xml @@ -10,7 +10,7 @@ com.baeldung parent-java 0.0.1-SNAPSHOT - ../../parent-java + ../../../parent-java diff --git a/core-java-modules/core-java-datetime/java-dates-string/pom.xml b/core-java-modules/core-java-datetime/java-dates-string/pom.xml index d599818924..714a65195a 100644 --- a/core-java-modules/core-java-datetime/java-dates-string/pom.xml +++ b/core-java-modules/core-java-datetime/java-dates-string/pom.xml @@ -10,7 +10,7 @@ com.baeldung parent-java 0.0.1-SNAPSHOT - ../../parent-java + ../../../parent-java From c70ac2cc73632117a9e657d32efc0500015cb4c3 Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Mon, 30 Sep 2019 15:52:48 +0200 Subject: [PATCH 013/265] #BAEL-16646 move java-dates "computations" articles under new Core Java module. --- .../java-dates-computations/README.md | 10 ++++ .../java-dates-computations/pom.xml | 11 ++++ .../java/com/baeldung/date/AgeCalculator.java | 0 .../com/baeldung/date/DateWithoutTime.java | 0 .../com/baeldung/datetime/AddHoursToDate.java | 0 .../DateExtractYearMonthDayIntegerValues.java | 56 +++++++++---------- .../datetime/modify/DateIncrementer.java | 0 .../calendar/GregorianCalendarExample.java | 0 .../java/com/baeldung/java9/time/TimeApi.java | 0 .../date/DateWithoutTimeUnitTest.java | 0 .../datetime/AddHoursToDateUnitTest.java | 0 .../modify/DateIncrementerUnitTest.java | 0 .../DaylightSavingTimeExamplesUnitTest.java | 0 ...ghtSavingTimeJavaTimeExamplesUnitTest.java | 0 .../calendar/GregorianCalendarTester.java | 0 .../baeldung/java9/time/TimeApiUnitTest.java | 0 .../baeldung/jodatime/JodaTimeUnitTest.java | 0 .../baeldung/time/ElapsedTimeUnitTest.java | 0 java-dates/README.md | 10 ---- java-dates/pom.xml | 11 ---- pom.xml | 2 +- 21 files changed, 50 insertions(+), 50 deletions(-) rename {java-dates => core-java-modules/core-java-datetime/java-dates-computations}/src/main/java/com/baeldung/date/AgeCalculator.java (100%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-computations}/src/main/java/com/baeldung/date/DateWithoutTime.java (100%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-computations}/src/main/java/com/baeldung/datetime/AddHoursToDate.java (100%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-computations}/src/main/java/com/baeldung/datetime/DateExtractYearMonthDayIntegerValues.java (95%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-computations}/src/main/java/com/baeldung/datetime/modify/DateIncrementer.java (100%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-computations}/src/main/java/com/baeldung/gregorian/calendar/GregorianCalendarExample.java (100%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-computations}/src/main/java/com/baeldung/java9/time/TimeApi.java (100%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-computations}/src/test/java/com/baeldung/date/DateWithoutTimeUnitTest.java (100%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-computations}/src/test/java/com/baeldung/datetime/AddHoursToDateUnitTest.java (100%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-computations}/src/test/java/com/baeldung/datetime/modify/DateIncrementerUnitTest.java (100%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-computations}/src/test/java/com/baeldung/dst/DaylightSavingTimeExamplesUnitTest.java (100%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-computations}/src/test/java/com/baeldung/dst/DaylightSavingTimeJavaTimeExamplesUnitTest.java (100%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-computations}/src/test/java/com/baeldung/gregorian/calendar/GregorianCalendarTester.java (100%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-computations}/src/test/java/com/baeldung/java9/time/TimeApiUnitTest.java (100%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-computations}/src/test/java/com/baeldung/jodatime/JodaTimeUnitTest.java (100%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-computations}/src/test/java/com/baeldung/time/ElapsedTimeUnitTest.java (100%) diff --git a/core-java-modules/core-java-datetime/java-dates-computations/README.md b/core-java-modules/core-java-datetime/java-dates-computations/README.md index 73b927df98..019c34c7d3 100644 --- a/core-java-modules/core-java-datetime/java-dates-computations/README.md +++ b/core-java-modules/core-java-datetime/java-dates-computations/README.md @@ -4,3 +4,13 @@ This module contains articles about date and time computations in Java. ### Relevant Articles: - [Difference Between Two Dates in Java](http://www.baeldung.com/java-date-difference) +- [Get Date Without Time in Java](http://www.baeldung.com/java-date-without-time) +- [How to Get All Dates Between Two Dates?](http://www.baeldung.com/java-between-dates) +- [Extracting Year, Month and Day from Date in Java](http://www.baeldung.com/java-year-month-day) +- [Guide to java.util.GregorianCalendar](http://www.baeldung.com/java-gregorian-calendar) +- [Handling Daylight Savings Time in Java](http://www.baeldung.com/java-daylight-savings) +- [Calculate Age in Java](http://www.baeldung.com/java-get-age) +- [Increment Date in Java](http://www.baeldung.com/java-increment-date) +- [Add Hours To a Date In Java](http://www.baeldung.com/java-add-hours-date) +- [Introduction to Joda-Time](http://www.baeldung.com/joda-time) +- [Measure Elapsed Time in Java](http://www.baeldung.com/java-measure-elapsed-time) diff --git a/core-java-modules/core-java-datetime/java-dates-computations/pom.xml b/core-java-modules/core-java-datetime/java-dates-computations/pom.xml index 8ce396d229..46790bdce4 100644 --- a/core-java-modules/core-java-datetime/java-dates-computations/pom.xml +++ b/core-java-modules/core-java-datetime/java-dates-computations/pom.xml @@ -19,7 +19,18 @@ joda-time ${joda-time.version} + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + org.assertj + assertj-core + ${assertj.version} + test + com.darwinsys hirondelle-date4j diff --git a/java-dates/src/main/java/com/baeldung/date/AgeCalculator.java b/core-java-modules/core-java-datetime/java-dates-computations/src/main/java/com/baeldung/date/AgeCalculator.java similarity index 100% rename from java-dates/src/main/java/com/baeldung/date/AgeCalculator.java rename to core-java-modules/core-java-datetime/java-dates-computations/src/main/java/com/baeldung/date/AgeCalculator.java diff --git a/java-dates/src/main/java/com/baeldung/date/DateWithoutTime.java b/core-java-modules/core-java-datetime/java-dates-computations/src/main/java/com/baeldung/date/DateWithoutTime.java similarity index 100% rename from java-dates/src/main/java/com/baeldung/date/DateWithoutTime.java rename to core-java-modules/core-java-datetime/java-dates-computations/src/main/java/com/baeldung/date/DateWithoutTime.java diff --git a/java-dates/src/main/java/com/baeldung/datetime/AddHoursToDate.java b/core-java-modules/core-java-datetime/java-dates-computations/src/main/java/com/baeldung/datetime/AddHoursToDate.java similarity index 100% rename from java-dates/src/main/java/com/baeldung/datetime/AddHoursToDate.java rename to core-java-modules/core-java-datetime/java-dates-computations/src/main/java/com/baeldung/datetime/AddHoursToDate.java diff --git a/java-dates/src/main/java/com/baeldung/datetime/DateExtractYearMonthDayIntegerValues.java b/core-java-modules/core-java-datetime/java-dates-computations/src/main/java/com/baeldung/datetime/DateExtractYearMonthDayIntegerValues.java similarity index 95% rename from java-dates/src/main/java/com/baeldung/datetime/DateExtractYearMonthDayIntegerValues.java rename to core-java-modules/core-java-datetime/java-dates-computations/src/main/java/com/baeldung/datetime/DateExtractYearMonthDayIntegerValues.java index a6cef94377..8b6d9885af 100644 --- a/java-dates/src/main/java/com/baeldung/datetime/DateExtractYearMonthDayIntegerValues.java +++ b/core-java-modules/core-java-datetime/java-dates-computations/src/main/java/com/baeldung/datetime/DateExtractYearMonthDayIntegerValues.java @@ -1,28 +1,28 @@ -package com.baeldung.datetime; - -import java.util.Calendar; -import java.util.Date; - -public class DateExtractYearMonthDayIntegerValues { - - int getYear(Date date) { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(date); - - return calendar.get(Calendar.YEAR); - } - - int getMonth(Date date) { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(date); - - return calendar.get(Calendar.MONTH); - } - - int getDay(Date date) { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(date); - - return calendar.get(Calendar.DAY_OF_MONTH); - } -} +package com.baeldung.datetime; + +import java.util.Calendar; +import java.util.Date; + +public class DateExtractYearMonthDayIntegerValues { + + int getYear(Date date) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + + return calendar.get(Calendar.YEAR); + } + + int getMonth(Date date) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + + return calendar.get(Calendar.MONTH); + } + + int getDay(Date date) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + + return calendar.get(Calendar.DAY_OF_MONTH); + } +} diff --git a/java-dates/src/main/java/com/baeldung/datetime/modify/DateIncrementer.java b/core-java-modules/core-java-datetime/java-dates-computations/src/main/java/com/baeldung/datetime/modify/DateIncrementer.java similarity index 100% rename from java-dates/src/main/java/com/baeldung/datetime/modify/DateIncrementer.java rename to core-java-modules/core-java-datetime/java-dates-computations/src/main/java/com/baeldung/datetime/modify/DateIncrementer.java diff --git a/java-dates/src/main/java/com/baeldung/gregorian/calendar/GregorianCalendarExample.java b/core-java-modules/core-java-datetime/java-dates-computations/src/main/java/com/baeldung/gregorian/calendar/GregorianCalendarExample.java similarity index 100% rename from java-dates/src/main/java/com/baeldung/gregorian/calendar/GregorianCalendarExample.java rename to core-java-modules/core-java-datetime/java-dates-computations/src/main/java/com/baeldung/gregorian/calendar/GregorianCalendarExample.java diff --git a/java-dates/src/main/java/com/baeldung/java9/time/TimeApi.java b/core-java-modules/core-java-datetime/java-dates-computations/src/main/java/com/baeldung/java9/time/TimeApi.java similarity index 100% rename from java-dates/src/main/java/com/baeldung/java9/time/TimeApi.java rename to core-java-modules/core-java-datetime/java-dates-computations/src/main/java/com/baeldung/java9/time/TimeApi.java diff --git a/java-dates/src/test/java/com/baeldung/date/DateWithoutTimeUnitTest.java b/core-java-modules/core-java-datetime/java-dates-computations/src/test/java/com/baeldung/date/DateWithoutTimeUnitTest.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/date/DateWithoutTimeUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-computations/src/test/java/com/baeldung/date/DateWithoutTimeUnitTest.java diff --git a/java-dates/src/test/java/com/baeldung/datetime/AddHoursToDateUnitTest.java b/core-java-modules/core-java-datetime/java-dates-computations/src/test/java/com/baeldung/datetime/AddHoursToDateUnitTest.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/datetime/AddHoursToDateUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-computations/src/test/java/com/baeldung/datetime/AddHoursToDateUnitTest.java diff --git a/java-dates/src/test/java/com/baeldung/datetime/modify/DateIncrementerUnitTest.java b/core-java-modules/core-java-datetime/java-dates-computations/src/test/java/com/baeldung/datetime/modify/DateIncrementerUnitTest.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/datetime/modify/DateIncrementerUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-computations/src/test/java/com/baeldung/datetime/modify/DateIncrementerUnitTest.java diff --git a/java-dates/src/test/java/com/baeldung/dst/DaylightSavingTimeExamplesUnitTest.java b/core-java-modules/core-java-datetime/java-dates-computations/src/test/java/com/baeldung/dst/DaylightSavingTimeExamplesUnitTest.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/dst/DaylightSavingTimeExamplesUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-computations/src/test/java/com/baeldung/dst/DaylightSavingTimeExamplesUnitTest.java diff --git a/java-dates/src/test/java/com/baeldung/dst/DaylightSavingTimeJavaTimeExamplesUnitTest.java b/core-java-modules/core-java-datetime/java-dates-computations/src/test/java/com/baeldung/dst/DaylightSavingTimeJavaTimeExamplesUnitTest.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/dst/DaylightSavingTimeJavaTimeExamplesUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-computations/src/test/java/com/baeldung/dst/DaylightSavingTimeJavaTimeExamplesUnitTest.java diff --git a/java-dates/src/test/java/com/baeldung/gregorian/calendar/GregorianCalendarTester.java b/core-java-modules/core-java-datetime/java-dates-computations/src/test/java/com/baeldung/gregorian/calendar/GregorianCalendarTester.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/gregorian/calendar/GregorianCalendarTester.java rename to core-java-modules/core-java-datetime/java-dates-computations/src/test/java/com/baeldung/gregorian/calendar/GregorianCalendarTester.java diff --git a/java-dates/src/test/java/com/baeldung/java9/time/TimeApiUnitTest.java b/core-java-modules/core-java-datetime/java-dates-computations/src/test/java/com/baeldung/java9/time/TimeApiUnitTest.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/java9/time/TimeApiUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-computations/src/test/java/com/baeldung/java9/time/TimeApiUnitTest.java diff --git a/java-dates/src/test/java/com/baeldung/jodatime/JodaTimeUnitTest.java b/core-java-modules/core-java-datetime/java-dates-computations/src/test/java/com/baeldung/jodatime/JodaTimeUnitTest.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/jodatime/JodaTimeUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-computations/src/test/java/com/baeldung/jodatime/JodaTimeUnitTest.java diff --git a/java-dates/src/test/java/com/baeldung/time/ElapsedTimeUnitTest.java b/core-java-modules/core-java-datetime/java-dates-computations/src/test/java/com/baeldung/time/ElapsedTimeUnitTest.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/time/ElapsedTimeUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-computations/src/test/java/com/baeldung/time/ElapsedTimeUnitTest.java diff --git a/java-dates/README.md b/java-dates/README.md index 71290c7c0f..c9ee971101 100644 --- a/java-dates/README.md +++ b/java-dates/README.md @@ -4,21 +4,11 @@ ### Relevant Articles: - [TemporalAdjuster in Java](http://www.baeldung.com/java-temporal-adjuster) -- [Handling Daylight Savings Time in Java](http://www.baeldung.com/java-daylight-savings) - [Period and Duration in Java](http://www.baeldung.com/java-period-duration) - [Migrating to the New Java 8 Date Time API](http://www.baeldung.com/migrating-to-java-8-date-time-api) - [Introduction to the Java 8 Date/Time API](http://www.baeldung.com/java-8-date-time-intro) - [Get the Current Date, Time and Timestamp in Java 8](http://www.baeldung.com/current-date-time-and-timestamp-in-java-8) -- [Get Date Without Time in Java](http://www.baeldung.com/java-date-without-time) -- [How to Get All Dates Between Two Dates?](http://www.baeldung.com/java-between-dates) -- [Extracting Year, Month and Day from Date in Java](http://www.baeldung.com/java-year-month-day) -- [Guide to java.util.GregorianCalendar](http://www.baeldung.com/java-gregorian-calendar) -- [Measure Elapsed Time in Java](http://www.baeldung.com/java-measure-elapsed-time) - [How to Get the Start and the End of a Day using Java](http://www.baeldung.com/java-day-start-end) -- [Calculate Age in Java](http://www.baeldung.com/java-get-age) -- [Increment Date in Java](http://www.baeldung.com/java-increment-date) -- [Add Hours To a Date In Java](http://www.baeldung.com/java-add-hours-date) - [ZoneOffset in Java](https://www.baeldung.com/java-zone-offset) - [Differences Between ZonedDateTime and OffsetDateTime](https://www.baeldung.com/java-zoneddatetime-offsetdatetime) -- [Introduction to Joda-Time](http://www.baeldung.com/joda-time) - [Comparing Dates in Java](https://www.baeldung.com/java-comparing-dates) diff --git a/java-dates/pom.xml b/java-dates/pom.xml index 8e6b708c2f..464a3bff12 100644 --- a/java-dates/pom.xml +++ b/java-dates/pom.xml @@ -15,23 +15,12 @@ - - org.apache.commons - commons-lang3 - ${commons-lang3.version} - log4j log4j ${log4j.version} - - org.assertj - assertj-core - ${assertj.version} - test - joda-time joda-time diff --git a/pom.xml b/pom.xml index 137c174b47..bac4baa403 100644 --- a/pom.xml +++ b/pom.xml @@ -469,7 +469,7 @@ java-collections-maps java-collections-maps-2 java-jdi - + core-java-modules/core-java-datetime java-lite From 6ce78b1dde25a3e9a4e4be97e4d64189cf807a2b Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Mon, 30 Sep 2019 20:53:40 +0200 Subject: [PATCH 014/265] #BAEL-16646 Start splitting Java dates articles regarding Java 8. --- .../core-java-datetime/README.md | 2 +- .../java-dates-java8/README.md | 6 +++ .../java-dates-java8/pom.xml | 53 +++++++++++++++++++ .../baeldung/dateapi/ConversionExample.java | 0 .../dateapi/JavaUtilTimeUnitTest.java | 0 core-java-modules/core-java-datetime/pom.xml | 1 + java-dates/README.md | 1 - 7 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 core-java-modules/core-java-datetime/java-dates-java8/README.md create mode 100644 core-java-modules/core-java-datetime/java-dates-java8/pom.xml rename {java-dates => core-java-modules/core-java-datetime/java-dates-java8}/src/test/java/com/baeldung/dateapi/ConversionExample.java (100%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-java8}/src/test/java/com/baeldung/dateapi/JavaUtilTimeUnitTest.java (100%) diff --git a/core-java-modules/core-java-datetime/README.md b/core-java-modules/core-java-datetime/README.md index 51f52e239d..9077b0a10f 100644 --- a/core-java-modules/core-java-datetime/README.md +++ b/core-java-modules/core-java-datetime/README.md @@ -1,3 +1,3 @@ ## Java Date and Time -This module contains articles about date and time in Java. +This module contains articles about date and time in Java. Please refer to its submodules. diff --git a/core-java-modules/core-java-datetime/java-dates-java8/README.md b/core-java-modules/core-java-datetime/java-dates-java8/README.md new file mode 100644 index 0000000000..1e36c546df --- /dev/null +++ b/core-java-modules/core-java-datetime/java-dates-java8/README.md @@ -0,0 +1,6 @@ +## Java 8+ Date and Time API + +This module contains articles about the Date and Time API introduced with Java 8. + +### Relevant Articles: +- [Migrating to the New Java 8 Date Time API](http://www.baeldung.com/migrating-to-java-8-date-time-api) diff --git a/core-java-modules/core-java-datetime/java-dates-java8/pom.xml b/core-java-modules/core-java-datetime/java-dates-java8/pom.xml new file mode 100644 index 0000000000..d5bbcb6e4d --- /dev/null +++ b/core-java-modules/core-java-datetime/java-dates-java8/pom.xml @@ -0,0 +1,53 @@ + + 4.0.0 + java-dates-java8 + ${project.parent.version} + java-dates-java8 + jar + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../../../parent-java + + + + + org.assertj + assertj-core + ${assertj.version} + test + + + + + java-dates-java8 + + + src/main/resources + true + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + ${maven.compiler.source} + ${maven.compiler.target} + + + + + + + 1.9 + 1.9 + + 3.6.1 + + diff --git a/java-dates/src/test/java/com/baeldung/dateapi/ConversionExample.java b/core-java-modules/core-java-datetime/java-dates-java8/src/test/java/com/baeldung/dateapi/ConversionExample.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/dateapi/ConversionExample.java rename to core-java-modules/core-java-datetime/java-dates-java8/src/test/java/com/baeldung/dateapi/ConversionExample.java diff --git a/java-dates/src/test/java/com/baeldung/dateapi/JavaUtilTimeUnitTest.java b/core-java-modules/core-java-datetime/java-dates-java8/src/test/java/com/baeldung/dateapi/JavaUtilTimeUnitTest.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/dateapi/JavaUtilTimeUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-java8/src/test/java/com/baeldung/dateapi/JavaUtilTimeUnitTest.java diff --git a/core-java-modules/core-java-datetime/pom.xml b/core-java-modules/core-java-datetime/pom.xml index e61f804a32..080289e751 100644 --- a/core-java-modules/core-java-datetime/pom.xml +++ b/core-java-modules/core-java-datetime/pom.xml @@ -18,6 +18,7 @@ java-dates-computations java-dates-conversion + java-dates-java8 java-dates-string diff --git a/java-dates/README.md b/java-dates/README.md index c9ee971101..f16ea6d411 100644 --- a/java-dates/README.md +++ b/java-dates/README.md @@ -5,7 +5,6 @@ ### Relevant Articles: - [TemporalAdjuster in Java](http://www.baeldung.com/java-temporal-adjuster) - [Period and Duration in Java](http://www.baeldung.com/java-period-duration) -- [Migrating to the New Java 8 Date Time API](http://www.baeldung.com/migrating-to-java-8-date-time-api) - [Introduction to the Java 8 Date/Time API](http://www.baeldung.com/java-8-date-time-intro) - [Get the Current Date, Time and Timestamp in Java 8](http://www.baeldung.com/current-date-time-and-timestamp-in-java-8) - [How to Get the Start and the End of a Day using Java](http://www.baeldung.com/java-day-start-end) From 80638ba2cac21c2165c29ef29c3d28442f4eb348 Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Wed, 2 Oct 2019 16:59:08 +0200 Subject: [PATCH 015/265] #BAEL-16646 Split Java dates articles regarding Java 8. Also moved [Set the Time Zone of a Date in Java](https://www.baeldung.com/java-set-date-time-zone) from core-java-8 to the new java-dates-java8 module (the code was already in java-dates) and moved some missing files for the article Extracting... to java-dates-computations. java-dates now contains only two classes, which are relevant to the previous PR which will be shortly updated. One seems related to java-dates-string but it's unclear which article it belongs to and needs to be investigated. --- core-java-modules/core-java-8/README.md | 1 - ...lDateExtractYearMonthDayIntegerValues.java | 36 ++--- ...eTimeExtractYearMonthDayIntegerValues.java | 36 ++--- ...eTimeExtractYearMonthDayIntegerValues.java | 36 ++--- ...eTimeExtractYearMonthDayIntegerValues.java | 36 ++--- ...ractYearMonthDayIntegerValuesUnitTest.java | 90 +++++------ ...ractYearMonthDayIntegerValuesUnitTest.java | 72 ++++----- ...ractYearMonthDayIntegerValuesUnitTest.java | 72 ++++----- ...ractYearMonthDayIntegerValuesUnitTest.java | 72 ++++----- ...ractYearMonthDayIntegerValuesUnitTest.java | 72 ++++----- .../java-dates-java8/README.md | 9 ++ .../java-dates-java8/pom.xml | 17 +++ .../comparison/DateTimeComparisonUtils.java | 0 .../comparison/LegacyDateComparisonUtils.java | 0 .../com/baeldung/datetime/UseDuration.java | 0 .../com/baeldung/datetime/UseLocalDate.java | 0 .../baeldung/datetime/UseLocalDateTime.java | 0 .../com/baeldung/datetime/UseLocalTime.java | 0 .../java/com/baeldung/datetime/UsePeriod.java | 0 .../com/baeldung/datetime/UseToInstant.java | 0 .../baeldung/datetime/UseZonedDateTime.java | 0 .../CustomTemporalAdjuster.java | 0 .../DateTimeComparisonUtilsUnitTest.java | 0 ...DateTimeApiGeneralComparisonsUnitTest.java | 0 .../LegacyDateComparisonUtilsUnitTest.java | 0 .../dateapi/JavaDurationUnitTest.java | 0 .../baeldung/dateapi/JavaPeriodUnitTest.java | 0 .../datetime/UseLocalDateTimeUnitTest.java | 0 .../datetime/UseLocalDateUnitTest.java | 0 .../datetime/UseLocalTimeUnitTest.java | 0 .../baeldung/datetime/UsePeriodUnitTest.java | 0 .../datetime/UseTimeZoneUnitTest.java | 144 +++++++++--------- .../datetime/UseZonedDateTimeUnitTest.java | 0 .../CustomTemporalAdjusterUnitTest.java | 0 .../TemporalAdjustersUnitTest.java | 0 java-dates/.gitignore | 26 ---- java-dates/README.md | 13 -- java-dates/pom.xml | 60 -------- .../main/java/com/baeldung/datetime/README.md | 1 - java-dates/src/main/resources/logback.xml | 13 -- java-dates/src/test/resources/.gitignore | 13 -- 41 files changed, 359 insertions(+), 460 deletions(-) rename {java-dates => core-java-modules/core-java-datetime/java-dates-computations}/src/main/java/com/baeldung/datetime/LocalDateExtractYearMonthDayIntegerValues.java (95%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-computations}/src/main/java/com/baeldung/datetime/LocalDateTimeExtractYearMonthDayIntegerValues.java (95%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-computations}/src/main/java/com/baeldung/datetime/OffsetDateTimeExtractYearMonthDayIntegerValues.java (96%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-computations}/src/main/java/com/baeldung/datetime/ZonedDateTimeExtractYearMonthDayIntegerValues.java (95%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-computations}/src/test/java/com/baeldung/datetime/DateExtractYearMonthDayIntegerValuesUnitTest.java (96%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-computations}/src/test/java/com/baeldung/datetime/LocalDateExtractYearMonthDayIntegerValuesUnitTest.java (96%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-computations}/src/test/java/com/baeldung/datetime/LocalDateTimeExtractYearMonthDayIntegerValuesUnitTest.java (96%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-computations}/src/test/java/com/baeldung/datetime/OffsetDateTimeExtractYearMonthDayIntegerValuesUnitTest.java (96%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-computations}/src/test/java/com/baeldung/datetime/ZonedDateTimeExtractYearMonthDayIntegerValuesUnitTest.java (96%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-java8}/src/main/java/com/baeldung/date/comparison/DateTimeComparisonUtils.java (100%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-java8}/src/main/java/com/baeldung/date/comparison/LegacyDateComparisonUtils.java (100%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-java8}/src/main/java/com/baeldung/datetime/UseDuration.java (100%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-java8}/src/main/java/com/baeldung/datetime/UseLocalDate.java (100%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-java8}/src/main/java/com/baeldung/datetime/UseLocalDateTime.java (100%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-java8}/src/main/java/com/baeldung/datetime/UseLocalTime.java (100%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-java8}/src/main/java/com/baeldung/datetime/UsePeriod.java (100%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-java8}/src/main/java/com/baeldung/datetime/UseToInstant.java (100%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-java8}/src/main/java/com/baeldung/datetime/UseZonedDateTime.java (100%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-java8}/src/main/java/com/baeldung/temporaladjuster/CustomTemporalAdjuster.java (100%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-java8}/src/test/java/com/baeldung/date/comparison/DateTimeComparisonUtilsUnitTest.java (100%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-java8}/src/test/java/com/baeldung/date/comparison/Java8DateTimeApiGeneralComparisonsUnitTest.java (100%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-java8}/src/test/java/com/baeldung/date/comparison/LegacyDateComparisonUtilsUnitTest.java (100%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-java8}/src/test/java/com/baeldung/dateapi/JavaDurationUnitTest.java (100%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-java8}/src/test/java/com/baeldung/dateapi/JavaPeriodUnitTest.java (100%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-java8}/src/test/java/com/baeldung/datetime/UseLocalDateTimeUnitTest.java (100%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-java8}/src/test/java/com/baeldung/datetime/UseLocalDateUnitTest.java (100%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-java8}/src/test/java/com/baeldung/datetime/UseLocalTimeUnitTest.java (100%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-java8}/src/test/java/com/baeldung/datetime/UsePeriodUnitTest.java (100%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-java8}/src/test/java/com/baeldung/datetime/UseTimeZoneUnitTest.java (97%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-java8}/src/test/java/com/baeldung/datetime/UseZonedDateTimeUnitTest.java (100%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-java8}/src/test/java/com/baeldung/temporaladjusters/CustomTemporalAdjusterUnitTest.java (100%) rename {java-dates => core-java-modules/core-java-datetime/java-dates-java8}/src/test/java/com/baeldung/temporaladjusters/TemporalAdjustersUnitTest.java (100%) delete mode 100644 java-dates/.gitignore delete mode 100644 java-dates/README.md delete mode 100644 java-dates/pom.xml delete mode 100644 java-dates/src/main/java/com/baeldung/datetime/README.md delete mode 100644 java-dates/src/main/resources/logback.xml delete mode 100644 java-dates/src/test/resources/.gitignore diff --git a/core-java-modules/core-java-8/README.md b/core-java-modules/core-java-8/README.md index aee7121fb3..f364b5ed94 100644 --- a/core-java-modules/core-java-8/README.md +++ b/core-java-modules/core-java-8/README.md @@ -23,7 +23,6 @@ - [Java 8 Unsigned Arithmetic Support](http://www.baeldung.com/java-unsigned-arithmetic) - [Generalized Target-Type Inference in Java](http://www.baeldung.com/java-generalized-target-type-inference) - [Overriding System Time for Testing in Java](http://www.baeldung.com/java-override-system-time) -- [Set the Time Zone of a Date in Java](https://www.baeldung.com/java-set-date-time-zone) - [An Overview of Regular Expressions Performance in Java](https://www.baeldung.com/java-regex-performance) - [Java Primitives versus Objects](https://www.baeldung.com/java-primitives-vs-objects) - [How to Use if/else Logic in Java 8 Streams](https://www.baeldung.com/java-8-streams-if-else-logic) diff --git a/java-dates/src/main/java/com/baeldung/datetime/LocalDateExtractYearMonthDayIntegerValues.java b/core-java-modules/core-java-datetime/java-dates-computations/src/main/java/com/baeldung/datetime/LocalDateExtractYearMonthDayIntegerValues.java similarity index 95% rename from java-dates/src/main/java/com/baeldung/datetime/LocalDateExtractYearMonthDayIntegerValues.java rename to core-java-modules/core-java-datetime/java-dates-computations/src/main/java/com/baeldung/datetime/LocalDateExtractYearMonthDayIntegerValues.java index b40e10f6ad..6daa86130d 100644 --- a/java-dates/src/main/java/com/baeldung/datetime/LocalDateExtractYearMonthDayIntegerValues.java +++ b/core-java-modules/core-java-datetime/java-dates-computations/src/main/java/com/baeldung/datetime/LocalDateExtractYearMonthDayIntegerValues.java @@ -1,18 +1,18 @@ -package com.baeldung.datetime; - -import java.time.LocalDate; - -public class LocalDateExtractYearMonthDayIntegerValues { - - int getYear(LocalDate localDate) { - return localDate.getYear(); - } - - int getMonth(LocalDate localDate) { - return localDate.getMonthValue(); - } - - int getDay(LocalDate localDate) { - return localDate.getDayOfMonth(); - } -} +package com.baeldung.datetime; + +import java.time.LocalDate; + +public class LocalDateExtractYearMonthDayIntegerValues { + + int getYear(LocalDate localDate) { + return localDate.getYear(); + } + + int getMonth(LocalDate localDate) { + return localDate.getMonthValue(); + } + + int getDay(LocalDate localDate) { + return localDate.getDayOfMonth(); + } +} diff --git a/java-dates/src/main/java/com/baeldung/datetime/LocalDateTimeExtractYearMonthDayIntegerValues.java b/core-java-modules/core-java-datetime/java-dates-computations/src/main/java/com/baeldung/datetime/LocalDateTimeExtractYearMonthDayIntegerValues.java similarity index 95% rename from java-dates/src/main/java/com/baeldung/datetime/LocalDateTimeExtractYearMonthDayIntegerValues.java rename to core-java-modules/core-java-datetime/java-dates-computations/src/main/java/com/baeldung/datetime/LocalDateTimeExtractYearMonthDayIntegerValues.java index 404a62d2f4..bb4415fbc7 100644 --- a/java-dates/src/main/java/com/baeldung/datetime/LocalDateTimeExtractYearMonthDayIntegerValues.java +++ b/core-java-modules/core-java-datetime/java-dates-computations/src/main/java/com/baeldung/datetime/LocalDateTimeExtractYearMonthDayIntegerValues.java @@ -1,18 +1,18 @@ -package com.baeldung.datetime; - -import java.time.LocalDateTime; - -public class LocalDateTimeExtractYearMonthDayIntegerValues { - - int getYear(LocalDateTime localDateTime) { - return localDateTime.getYear(); - } - - int getMonth(LocalDateTime localDateTime) { - return localDateTime.getMonthValue(); - } - - int getDay(LocalDateTime localDateTime) { - return localDateTime.getDayOfMonth(); - } -} +package com.baeldung.datetime; + +import java.time.LocalDateTime; + +public class LocalDateTimeExtractYearMonthDayIntegerValues { + + int getYear(LocalDateTime localDateTime) { + return localDateTime.getYear(); + } + + int getMonth(LocalDateTime localDateTime) { + return localDateTime.getMonthValue(); + } + + int getDay(LocalDateTime localDateTime) { + return localDateTime.getDayOfMonth(); + } +} diff --git a/java-dates/src/main/java/com/baeldung/datetime/OffsetDateTimeExtractYearMonthDayIntegerValues.java b/core-java-modules/core-java-datetime/java-dates-computations/src/main/java/com/baeldung/datetime/OffsetDateTimeExtractYearMonthDayIntegerValues.java similarity index 96% rename from java-dates/src/main/java/com/baeldung/datetime/OffsetDateTimeExtractYearMonthDayIntegerValues.java rename to core-java-modules/core-java-datetime/java-dates-computations/src/main/java/com/baeldung/datetime/OffsetDateTimeExtractYearMonthDayIntegerValues.java index e686b05493..398c03102c 100644 --- a/java-dates/src/main/java/com/baeldung/datetime/OffsetDateTimeExtractYearMonthDayIntegerValues.java +++ b/core-java-modules/core-java-datetime/java-dates-computations/src/main/java/com/baeldung/datetime/OffsetDateTimeExtractYearMonthDayIntegerValues.java @@ -1,18 +1,18 @@ -package com.baeldung.datetime; - -import java.time.OffsetDateTime; - -public class OffsetDateTimeExtractYearMonthDayIntegerValues { - - int getYear(OffsetDateTime offsetDateTime) { - return offsetDateTime.getYear(); - } - - int getMonth(OffsetDateTime offsetDateTime) { - return offsetDateTime.getMonthValue(); - } - - int getDay(OffsetDateTime offsetDateTime) { - return offsetDateTime.getDayOfMonth(); - } -} +package com.baeldung.datetime; + +import java.time.OffsetDateTime; + +public class OffsetDateTimeExtractYearMonthDayIntegerValues { + + int getYear(OffsetDateTime offsetDateTime) { + return offsetDateTime.getYear(); + } + + int getMonth(OffsetDateTime offsetDateTime) { + return offsetDateTime.getMonthValue(); + } + + int getDay(OffsetDateTime offsetDateTime) { + return offsetDateTime.getDayOfMonth(); + } +} diff --git a/java-dates/src/main/java/com/baeldung/datetime/ZonedDateTimeExtractYearMonthDayIntegerValues.java b/core-java-modules/core-java-datetime/java-dates-computations/src/main/java/com/baeldung/datetime/ZonedDateTimeExtractYearMonthDayIntegerValues.java similarity index 95% rename from java-dates/src/main/java/com/baeldung/datetime/ZonedDateTimeExtractYearMonthDayIntegerValues.java rename to core-java-modules/core-java-datetime/java-dates-computations/src/main/java/com/baeldung/datetime/ZonedDateTimeExtractYearMonthDayIntegerValues.java index 3e790b2b3f..86bce90f75 100644 --- a/java-dates/src/main/java/com/baeldung/datetime/ZonedDateTimeExtractYearMonthDayIntegerValues.java +++ b/core-java-modules/core-java-datetime/java-dates-computations/src/main/java/com/baeldung/datetime/ZonedDateTimeExtractYearMonthDayIntegerValues.java @@ -1,18 +1,18 @@ -package com.baeldung.datetime; - -import java.time.ZonedDateTime; - -public class ZonedDateTimeExtractYearMonthDayIntegerValues { - - int getYear(ZonedDateTime zonedDateTime) { - return zonedDateTime.getYear(); - } - - int getMonth(ZonedDateTime zonedDateTime) { - return zonedDateTime.getMonthValue(); - } - - int getDay(ZonedDateTime zonedDateTime) { - return zonedDateTime.getDayOfMonth(); - } -} +package com.baeldung.datetime; + +import java.time.ZonedDateTime; + +public class ZonedDateTimeExtractYearMonthDayIntegerValues { + + int getYear(ZonedDateTime zonedDateTime) { + return zonedDateTime.getYear(); + } + + int getMonth(ZonedDateTime zonedDateTime) { + return zonedDateTime.getMonthValue(); + } + + int getDay(ZonedDateTime zonedDateTime) { + return zonedDateTime.getDayOfMonth(); + } +} diff --git a/java-dates/src/test/java/com/baeldung/datetime/DateExtractYearMonthDayIntegerValuesUnitTest.java b/core-java-modules/core-java-datetime/java-dates-computations/src/test/java/com/baeldung/datetime/DateExtractYearMonthDayIntegerValuesUnitTest.java similarity index 96% rename from java-dates/src/test/java/com/baeldung/datetime/DateExtractYearMonthDayIntegerValuesUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-computations/src/test/java/com/baeldung/datetime/DateExtractYearMonthDayIntegerValuesUnitTest.java index 3b1fcfa6c5..5914b5a727 100644 --- a/java-dates/src/test/java/com/baeldung/datetime/DateExtractYearMonthDayIntegerValuesUnitTest.java +++ b/core-java-modules/core-java-datetime/java-dates-computations/src/test/java/com/baeldung/datetime/DateExtractYearMonthDayIntegerValuesUnitTest.java @@ -1,45 +1,45 @@ -package com.baeldung.datetime; - -import static org.hamcrest.CoreMatchers.is; -import static org.junit.Assert.assertThat; - -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Date; - -import org.junit.Before; -import org.junit.Test; - -public class DateExtractYearMonthDayIntegerValuesUnitTest { - - DateExtractYearMonthDayIntegerValues extractYearMonthDateIntegerValues = new DateExtractYearMonthDayIntegerValues(); - - Date date; - - @Before - public void setup() throws ParseException - { - date=new SimpleDateFormat("dd-MM-yyyy").parse("01-03-2018"); - } - - @Test - public void whenGetYear_thenCorrectYear() - { - int actualYear=extractYearMonthDateIntegerValues.getYear(date); - assertThat(actualYear,is(2018)); - } - - @Test - public void whenGetMonth_thenCorrectMonth() - { - int actualMonth=extractYearMonthDateIntegerValues.getMonth(date); - assertThat(actualMonth,is(02)); - } - - @Test - public void whenGetDay_thenCorrectDay() - { - int actualDayOfMonth=extractYearMonthDateIntegerValues.getDay(date); - assertThat(actualDayOfMonth,is(01)); - } -} +package com.baeldung.datetime; + +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; + +import org.junit.Before; +import org.junit.Test; + +public class DateExtractYearMonthDayIntegerValuesUnitTest { + + DateExtractYearMonthDayIntegerValues extractYearMonthDateIntegerValues = new DateExtractYearMonthDayIntegerValues(); + + Date date; + + @Before + public void setup() throws ParseException + { + date=new SimpleDateFormat("dd-MM-yyyy").parse("01-03-2018"); + } + + @Test + public void whenGetYear_thenCorrectYear() + { + int actualYear=extractYearMonthDateIntegerValues.getYear(date); + assertThat(actualYear,is(2018)); + } + + @Test + public void whenGetMonth_thenCorrectMonth() + { + int actualMonth=extractYearMonthDateIntegerValues.getMonth(date); + assertThat(actualMonth,is(02)); + } + + @Test + public void whenGetDay_thenCorrectDay() + { + int actualDayOfMonth=extractYearMonthDateIntegerValues.getDay(date); + assertThat(actualDayOfMonth,is(01)); + } +} diff --git a/java-dates/src/test/java/com/baeldung/datetime/LocalDateExtractYearMonthDayIntegerValuesUnitTest.java b/core-java-modules/core-java-datetime/java-dates-computations/src/test/java/com/baeldung/datetime/LocalDateExtractYearMonthDayIntegerValuesUnitTest.java similarity index 96% rename from java-dates/src/test/java/com/baeldung/datetime/LocalDateExtractYearMonthDayIntegerValuesUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-computations/src/test/java/com/baeldung/datetime/LocalDateExtractYearMonthDayIntegerValuesUnitTest.java index 05de6ed0b9..641d45a536 100644 --- a/java-dates/src/test/java/com/baeldung/datetime/LocalDateExtractYearMonthDayIntegerValuesUnitTest.java +++ b/core-java-modules/core-java-datetime/java-dates-computations/src/test/java/com/baeldung/datetime/LocalDateExtractYearMonthDayIntegerValuesUnitTest.java @@ -1,36 +1,36 @@ -package com.baeldung.datetime; - -import static org.hamcrest.CoreMatchers.is; -import static org.junit.Assert.assertThat; - -import java.time.LocalDate; - -import org.junit.Test; - -public class LocalDateExtractYearMonthDayIntegerValuesUnitTest { - - LocalDateExtractYearMonthDayIntegerValues localDateExtractYearMonthDayIntegerValues=new LocalDateExtractYearMonthDayIntegerValues(); - - LocalDate localDate=LocalDate.parse("2007-12-03"); - - @Test - public void whenGetYear_thenCorrectYear() - { - int actualYear=localDateExtractYearMonthDayIntegerValues.getYear(localDate); - assertThat(actualYear,is(2007)); - } - - @Test - public void whenGetMonth_thenCorrectMonth() - { - int actualMonth=localDateExtractYearMonthDayIntegerValues.getMonth(localDate); - assertThat(actualMonth,is(12)); - } - - @Test - public void whenGetDay_thenCorrectDay() - { - int actualDayOfMonth=localDateExtractYearMonthDayIntegerValues.getDay(localDate); - assertThat(actualDayOfMonth,is(03)); - } -} +package com.baeldung.datetime; + +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; + +import java.time.LocalDate; + +import org.junit.Test; + +public class LocalDateExtractYearMonthDayIntegerValuesUnitTest { + + LocalDateExtractYearMonthDayIntegerValues localDateExtractYearMonthDayIntegerValues=new LocalDateExtractYearMonthDayIntegerValues(); + + LocalDate localDate=LocalDate.parse("2007-12-03"); + + @Test + public void whenGetYear_thenCorrectYear() + { + int actualYear=localDateExtractYearMonthDayIntegerValues.getYear(localDate); + assertThat(actualYear,is(2007)); + } + + @Test + public void whenGetMonth_thenCorrectMonth() + { + int actualMonth=localDateExtractYearMonthDayIntegerValues.getMonth(localDate); + assertThat(actualMonth,is(12)); + } + + @Test + public void whenGetDay_thenCorrectDay() + { + int actualDayOfMonth=localDateExtractYearMonthDayIntegerValues.getDay(localDate); + assertThat(actualDayOfMonth,is(03)); + } +} diff --git a/java-dates/src/test/java/com/baeldung/datetime/LocalDateTimeExtractYearMonthDayIntegerValuesUnitTest.java b/core-java-modules/core-java-datetime/java-dates-computations/src/test/java/com/baeldung/datetime/LocalDateTimeExtractYearMonthDayIntegerValuesUnitTest.java similarity index 96% rename from java-dates/src/test/java/com/baeldung/datetime/LocalDateTimeExtractYearMonthDayIntegerValuesUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-computations/src/test/java/com/baeldung/datetime/LocalDateTimeExtractYearMonthDayIntegerValuesUnitTest.java index 70544ea970..295a4018c2 100644 --- a/java-dates/src/test/java/com/baeldung/datetime/LocalDateTimeExtractYearMonthDayIntegerValuesUnitTest.java +++ b/core-java-modules/core-java-datetime/java-dates-computations/src/test/java/com/baeldung/datetime/LocalDateTimeExtractYearMonthDayIntegerValuesUnitTest.java @@ -1,36 +1,36 @@ -package com.baeldung.datetime; - -import static org.hamcrest.CoreMatchers.is; -import static org.junit.Assert.assertThat; - -import java.time.LocalDateTime; - -import org.junit.Test; - -public class LocalDateTimeExtractYearMonthDayIntegerValuesUnitTest { - - LocalDateTimeExtractYearMonthDayIntegerValues localDateTimeExtractYearMonthDayIntegerValues = new LocalDateTimeExtractYearMonthDayIntegerValues(); - - LocalDateTime localDateTime=LocalDateTime.parse("2007-12-03T10:15:30"); - - @Test - public void whenGetYear_thenCorrectYear() - { - int actualYear=localDateTimeExtractYearMonthDayIntegerValues.getYear(localDateTime); - assertThat(actualYear,is(2007)); - } - - @Test - public void whenGetMonth_thenCorrectMonth() - { - int actualMonth=localDateTimeExtractYearMonthDayIntegerValues.getMonth(localDateTime); - assertThat(actualMonth,is(12)); - } - - @Test - public void whenGetDay_thenCorrectDay() - { - int actualDayOfMonth=localDateTimeExtractYearMonthDayIntegerValues.getDay(localDateTime); - assertThat(actualDayOfMonth,is(03)); - } -} +package com.baeldung.datetime; + +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; + +import java.time.LocalDateTime; + +import org.junit.Test; + +public class LocalDateTimeExtractYearMonthDayIntegerValuesUnitTest { + + LocalDateTimeExtractYearMonthDayIntegerValues localDateTimeExtractYearMonthDayIntegerValues = new LocalDateTimeExtractYearMonthDayIntegerValues(); + + LocalDateTime localDateTime=LocalDateTime.parse("2007-12-03T10:15:30"); + + @Test + public void whenGetYear_thenCorrectYear() + { + int actualYear=localDateTimeExtractYearMonthDayIntegerValues.getYear(localDateTime); + assertThat(actualYear,is(2007)); + } + + @Test + public void whenGetMonth_thenCorrectMonth() + { + int actualMonth=localDateTimeExtractYearMonthDayIntegerValues.getMonth(localDateTime); + assertThat(actualMonth,is(12)); + } + + @Test + public void whenGetDay_thenCorrectDay() + { + int actualDayOfMonth=localDateTimeExtractYearMonthDayIntegerValues.getDay(localDateTime); + assertThat(actualDayOfMonth,is(03)); + } +} diff --git a/java-dates/src/test/java/com/baeldung/datetime/OffsetDateTimeExtractYearMonthDayIntegerValuesUnitTest.java b/core-java-modules/core-java-datetime/java-dates-computations/src/test/java/com/baeldung/datetime/OffsetDateTimeExtractYearMonthDayIntegerValuesUnitTest.java similarity index 96% rename from java-dates/src/test/java/com/baeldung/datetime/OffsetDateTimeExtractYearMonthDayIntegerValuesUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-computations/src/test/java/com/baeldung/datetime/OffsetDateTimeExtractYearMonthDayIntegerValuesUnitTest.java index efb01c49a5..3e1044e4be 100644 --- a/java-dates/src/test/java/com/baeldung/datetime/OffsetDateTimeExtractYearMonthDayIntegerValuesUnitTest.java +++ b/core-java-modules/core-java-datetime/java-dates-computations/src/test/java/com/baeldung/datetime/OffsetDateTimeExtractYearMonthDayIntegerValuesUnitTest.java @@ -1,36 +1,36 @@ -package com.baeldung.datetime; - -import static org.hamcrest.CoreMatchers.is; -import static org.junit.Assert.assertThat; - -import java.time.OffsetDateTime; - -import org.junit.Test; - -public class OffsetDateTimeExtractYearMonthDayIntegerValuesUnitTest { - - OffsetDateTimeExtractYearMonthDayIntegerValues offsetDateTimeExtractYearMonthDayIntegerValues = new OffsetDateTimeExtractYearMonthDayIntegerValues(); - - OffsetDateTime offsetDateTime=OffsetDateTime.parse("2007-12-03T10:15:30+01:00"); - - @Test - public void whenGetYear_thenCorrectYear() - { - int actualYear=offsetDateTimeExtractYearMonthDayIntegerValues.getYear(offsetDateTime); - assertThat(actualYear,is(2007)); - } - - @Test - public void whenGetMonth_thenCorrectMonth() - { - int actualMonth=offsetDateTimeExtractYearMonthDayIntegerValues.getMonth(offsetDateTime); - assertThat(actualMonth,is(12)); - } - - @Test - public void whenGetDay_thenCorrectDay() - { - int actualDayOfMonth=offsetDateTimeExtractYearMonthDayIntegerValues.getDay(offsetDateTime); - assertThat(actualDayOfMonth,is(03)); - } -} +package com.baeldung.datetime; + +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; + +import java.time.OffsetDateTime; + +import org.junit.Test; + +public class OffsetDateTimeExtractYearMonthDayIntegerValuesUnitTest { + + OffsetDateTimeExtractYearMonthDayIntegerValues offsetDateTimeExtractYearMonthDayIntegerValues = new OffsetDateTimeExtractYearMonthDayIntegerValues(); + + OffsetDateTime offsetDateTime=OffsetDateTime.parse("2007-12-03T10:15:30+01:00"); + + @Test + public void whenGetYear_thenCorrectYear() + { + int actualYear=offsetDateTimeExtractYearMonthDayIntegerValues.getYear(offsetDateTime); + assertThat(actualYear,is(2007)); + } + + @Test + public void whenGetMonth_thenCorrectMonth() + { + int actualMonth=offsetDateTimeExtractYearMonthDayIntegerValues.getMonth(offsetDateTime); + assertThat(actualMonth,is(12)); + } + + @Test + public void whenGetDay_thenCorrectDay() + { + int actualDayOfMonth=offsetDateTimeExtractYearMonthDayIntegerValues.getDay(offsetDateTime); + assertThat(actualDayOfMonth,is(03)); + } +} diff --git a/java-dates/src/test/java/com/baeldung/datetime/ZonedDateTimeExtractYearMonthDayIntegerValuesUnitTest.java b/core-java-modules/core-java-datetime/java-dates-computations/src/test/java/com/baeldung/datetime/ZonedDateTimeExtractYearMonthDayIntegerValuesUnitTest.java similarity index 96% rename from java-dates/src/test/java/com/baeldung/datetime/ZonedDateTimeExtractYearMonthDayIntegerValuesUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-computations/src/test/java/com/baeldung/datetime/ZonedDateTimeExtractYearMonthDayIntegerValuesUnitTest.java index a9ed3d2b74..2f2c0a99be 100644 --- a/java-dates/src/test/java/com/baeldung/datetime/ZonedDateTimeExtractYearMonthDayIntegerValuesUnitTest.java +++ b/core-java-modules/core-java-datetime/java-dates-computations/src/test/java/com/baeldung/datetime/ZonedDateTimeExtractYearMonthDayIntegerValuesUnitTest.java @@ -1,36 +1,36 @@ -package com.baeldung.datetime; - -import static org.hamcrest.CoreMatchers.is; -import static org.junit.Assert.assertThat; - -import java.time.ZonedDateTime; - -import org.junit.Test; - -public class ZonedDateTimeExtractYearMonthDayIntegerValuesUnitTest { - - ZonedDateTimeExtractYearMonthDayIntegerValues zonedDateTimeExtractYearMonthDayIntegerValues = new ZonedDateTimeExtractYearMonthDayIntegerValues(); - - ZonedDateTime zonedDateTime=ZonedDateTime.parse("2007-12-03T10:15:30+01:00"); - - @Test - public void whenGetYear_thenCorrectYear() - { - int actualYear=zonedDateTimeExtractYearMonthDayIntegerValues.getYear(zonedDateTime); - assertThat(actualYear,is(2007)); - } - - @Test - public void whenGetMonth_thenCorrectMonth() - { - int actualMonth=zonedDateTimeExtractYearMonthDayIntegerValues.getMonth(zonedDateTime); - assertThat(actualMonth,is(12)); - } - - @Test - public void whenGetDay_thenCorrectDay() - { - int actualDayOfMonth=zonedDateTimeExtractYearMonthDayIntegerValues.getDay(zonedDateTime); - assertThat(actualDayOfMonth,is(03)); - } -} +package com.baeldung.datetime; + +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; + +import java.time.ZonedDateTime; + +import org.junit.Test; + +public class ZonedDateTimeExtractYearMonthDayIntegerValuesUnitTest { + + ZonedDateTimeExtractYearMonthDayIntegerValues zonedDateTimeExtractYearMonthDayIntegerValues = new ZonedDateTimeExtractYearMonthDayIntegerValues(); + + ZonedDateTime zonedDateTime=ZonedDateTime.parse("2007-12-03T10:15:30+01:00"); + + @Test + public void whenGetYear_thenCorrectYear() + { + int actualYear=zonedDateTimeExtractYearMonthDayIntegerValues.getYear(zonedDateTime); + assertThat(actualYear,is(2007)); + } + + @Test + public void whenGetMonth_thenCorrectMonth() + { + int actualMonth=zonedDateTimeExtractYearMonthDayIntegerValues.getMonth(zonedDateTime); + assertThat(actualMonth,is(12)); + } + + @Test + public void whenGetDay_thenCorrectDay() + { + int actualDayOfMonth=zonedDateTimeExtractYearMonthDayIntegerValues.getDay(zonedDateTime); + assertThat(actualDayOfMonth,is(03)); + } +} diff --git a/core-java-modules/core-java-datetime/java-dates-java8/README.md b/core-java-modules/core-java-datetime/java-dates-java8/README.md index 1e36c546df..044f6f3fe3 100644 --- a/core-java-modules/core-java-datetime/java-dates-java8/README.md +++ b/core-java-modules/core-java-datetime/java-dates-java8/README.md @@ -3,4 +3,13 @@ This module contains articles about the Date and Time API introduced with Java 8. ### Relevant Articles: +- [Introduction to the Java 8 Date/Time API](http://www.baeldung.com/java-8-date-time-intro) - [Migrating to the New Java 8 Date Time API](http://www.baeldung.com/migrating-to-java-8-date-time-api) +- [Get the Current Date, Time and Timestamp in Java 8](http://www.baeldung.com/current-date-time-and-timestamp-in-java-8) +- [TemporalAdjuster in Java](http://www.baeldung.com/java-temporal-adjuster) +- [ZoneOffset in Java](https://www.baeldung.com/java-zone-offset) +- [Differences Between ZonedDateTime and OffsetDateTime](https://www.baeldung.com/java-zoneddatetime-offsetdatetime) +- [Period and Duration in Java](http://www.baeldung.com/java-period-duration) +- [How to Get the Start and the End of a Day using Java](http://www.baeldung.com/java-day-start-end) +- [Set the Time Zone of a Date in Java](https://www.baeldung.com/java-set-date-time-zone) +- [Comparing Dates in Java](https://www.baeldung.com/java-comparing-dates) diff --git a/core-java-modules/core-java-datetime/java-dates-java8/pom.xml b/core-java-modules/core-java-datetime/java-dates-java8/pom.xml index d5bbcb6e4d..cf30ebf413 100644 --- a/core-java-modules/core-java-datetime/java-dates-java8/pom.xml +++ b/core-java-modules/core-java-datetime/java-dates-java8/pom.xml @@ -14,12 +14,28 @@ + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + joda-time + joda-time + ${joda-time.version} + org.assertj assertj-core ${assertj.version} test + + log4j + log4j + ${log4j.version} + test + @@ -47,6 +63,7 @@ 1.9 1.9 + 2.10 3.6.1 diff --git a/java-dates/src/main/java/com/baeldung/date/comparison/DateTimeComparisonUtils.java b/core-java-modules/core-java-datetime/java-dates-java8/src/main/java/com/baeldung/date/comparison/DateTimeComparisonUtils.java similarity index 100% rename from java-dates/src/main/java/com/baeldung/date/comparison/DateTimeComparisonUtils.java rename to core-java-modules/core-java-datetime/java-dates-java8/src/main/java/com/baeldung/date/comparison/DateTimeComparisonUtils.java diff --git a/java-dates/src/main/java/com/baeldung/date/comparison/LegacyDateComparisonUtils.java b/core-java-modules/core-java-datetime/java-dates-java8/src/main/java/com/baeldung/date/comparison/LegacyDateComparisonUtils.java similarity index 100% rename from java-dates/src/main/java/com/baeldung/date/comparison/LegacyDateComparisonUtils.java rename to core-java-modules/core-java-datetime/java-dates-java8/src/main/java/com/baeldung/date/comparison/LegacyDateComparisonUtils.java diff --git a/java-dates/src/main/java/com/baeldung/datetime/UseDuration.java b/core-java-modules/core-java-datetime/java-dates-java8/src/main/java/com/baeldung/datetime/UseDuration.java similarity index 100% rename from java-dates/src/main/java/com/baeldung/datetime/UseDuration.java rename to core-java-modules/core-java-datetime/java-dates-java8/src/main/java/com/baeldung/datetime/UseDuration.java diff --git a/java-dates/src/main/java/com/baeldung/datetime/UseLocalDate.java b/core-java-modules/core-java-datetime/java-dates-java8/src/main/java/com/baeldung/datetime/UseLocalDate.java similarity index 100% rename from java-dates/src/main/java/com/baeldung/datetime/UseLocalDate.java rename to core-java-modules/core-java-datetime/java-dates-java8/src/main/java/com/baeldung/datetime/UseLocalDate.java diff --git a/java-dates/src/main/java/com/baeldung/datetime/UseLocalDateTime.java b/core-java-modules/core-java-datetime/java-dates-java8/src/main/java/com/baeldung/datetime/UseLocalDateTime.java similarity index 100% rename from java-dates/src/main/java/com/baeldung/datetime/UseLocalDateTime.java rename to core-java-modules/core-java-datetime/java-dates-java8/src/main/java/com/baeldung/datetime/UseLocalDateTime.java diff --git a/java-dates/src/main/java/com/baeldung/datetime/UseLocalTime.java b/core-java-modules/core-java-datetime/java-dates-java8/src/main/java/com/baeldung/datetime/UseLocalTime.java similarity index 100% rename from java-dates/src/main/java/com/baeldung/datetime/UseLocalTime.java rename to core-java-modules/core-java-datetime/java-dates-java8/src/main/java/com/baeldung/datetime/UseLocalTime.java diff --git a/java-dates/src/main/java/com/baeldung/datetime/UsePeriod.java b/core-java-modules/core-java-datetime/java-dates-java8/src/main/java/com/baeldung/datetime/UsePeriod.java similarity index 100% rename from java-dates/src/main/java/com/baeldung/datetime/UsePeriod.java rename to core-java-modules/core-java-datetime/java-dates-java8/src/main/java/com/baeldung/datetime/UsePeriod.java diff --git a/java-dates/src/main/java/com/baeldung/datetime/UseToInstant.java b/core-java-modules/core-java-datetime/java-dates-java8/src/main/java/com/baeldung/datetime/UseToInstant.java similarity index 100% rename from java-dates/src/main/java/com/baeldung/datetime/UseToInstant.java rename to core-java-modules/core-java-datetime/java-dates-java8/src/main/java/com/baeldung/datetime/UseToInstant.java diff --git a/java-dates/src/main/java/com/baeldung/datetime/UseZonedDateTime.java b/core-java-modules/core-java-datetime/java-dates-java8/src/main/java/com/baeldung/datetime/UseZonedDateTime.java similarity index 100% rename from java-dates/src/main/java/com/baeldung/datetime/UseZonedDateTime.java rename to core-java-modules/core-java-datetime/java-dates-java8/src/main/java/com/baeldung/datetime/UseZonedDateTime.java diff --git a/java-dates/src/main/java/com/baeldung/temporaladjuster/CustomTemporalAdjuster.java b/core-java-modules/core-java-datetime/java-dates-java8/src/main/java/com/baeldung/temporaladjuster/CustomTemporalAdjuster.java similarity index 100% rename from java-dates/src/main/java/com/baeldung/temporaladjuster/CustomTemporalAdjuster.java rename to core-java-modules/core-java-datetime/java-dates-java8/src/main/java/com/baeldung/temporaladjuster/CustomTemporalAdjuster.java diff --git a/java-dates/src/test/java/com/baeldung/date/comparison/DateTimeComparisonUtilsUnitTest.java b/core-java-modules/core-java-datetime/java-dates-java8/src/test/java/com/baeldung/date/comparison/DateTimeComparisonUtilsUnitTest.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/date/comparison/DateTimeComparisonUtilsUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-java8/src/test/java/com/baeldung/date/comparison/DateTimeComparisonUtilsUnitTest.java diff --git a/java-dates/src/test/java/com/baeldung/date/comparison/Java8DateTimeApiGeneralComparisonsUnitTest.java b/core-java-modules/core-java-datetime/java-dates-java8/src/test/java/com/baeldung/date/comparison/Java8DateTimeApiGeneralComparisonsUnitTest.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/date/comparison/Java8DateTimeApiGeneralComparisonsUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-java8/src/test/java/com/baeldung/date/comparison/Java8DateTimeApiGeneralComparisonsUnitTest.java diff --git a/java-dates/src/test/java/com/baeldung/date/comparison/LegacyDateComparisonUtilsUnitTest.java b/core-java-modules/core-java-datetime/java-dates-java8/src/test/java/com/baeldung/date/comparison/LegacyDateComparisonUtilsUnitTest.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/date/comparison/LegacyDateComparisonUtilsUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-java8/src/test/java/com/baeldung/date/comparison/LegacyDateComparisonUtilsUnitTest.java diff --git a/java-dates/src/test/java/com/baeldung/dateapi/JavaDurationUnitTest.java b/core-java-modules/core-java-datetime/java-dates-java8/src/test/java/com/baeldung/dateapi/JavaDurationUnitTest.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/dateapi/JavaDurationUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-java8/src/test/java/com/baeldung/dateapi/JavaDurationUnitTest.java diff --git a/java-dates/src/test/java/com/baeldung/dateapi/JavaPeriodUnitTest.java b/core-java-modules/core-java-datetime/java-dates-java8/src/test/java/com/baeldung/dateapi/JavaPeriodUnitTest.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/dateapi/JavaPeriodUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-java8/src/test/java/com/baeldung/dateapi/JavaPeriodUnitTest.java diff --git a/java-dates/src/test/java/com/baeldung/datetime/UseLocalDateTimeUnitTest.java b/core-java-modules/core-java-datetime/java-dates-java8/src/test/java/com/baeldung/datetime/UseLocalDateTimeUnitTest.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/datetime/UseLocalDateTimeUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-java8/src/test/java/com/baeldung/datetime/UseLocalDateTimeUnitTest.java diff --git a/java-dates/src/test/java/com/baeldung/datetime/UseLocalDateUnitTest.java b/core-java-modules/core-java-datetime/java-dates-java8/src/test/java/com/baeldung/datetime/UseLocalDateUnitTest.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/datetime/UseLocalDateUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-java8/src/test/java/com/baeldung/datetime/UseLocalDateUnitTest.java diff --git a/java-dates/src/test/java/com/baeldung/datetime/UseLocalTimeUnitTest.java b/core-java-modules/core-java-datetime/java-dates-java8/src/test/java/com/baeldung/datetime/UseLocalTimeUnitTest.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/datetime/UseLocalTimeUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-java8/src/test/java/com/baeldung/datetime/UseLocalTimeUnitTest.java diff --git a/java-dates/src/test/java/com/baeldung/datetime/UsePeriodUnitTest.java b/core-java-modules/core-java-datetime/java-dates-java8/src/test/java/com/baeldung/datetime/UsePeriodUnitTest.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/datetime/UsePeriodUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-java8/src/test/java/com/baeldung/datetime/UsePeriodUnitTest.java diff --git a/java-dates/src/test/java/com/baeldung/datetime/UseTimeZoneUnitTest.java b/core-java-modules/core-java-datetime/java-dates-java8/src/test/java/com/baeldung/datetime/UseTimeZoneUnitTest.java similarity index 97% rename from java-dates/src/test/java/com/baeldung/datetime/UseTimeZoneUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-java8/src/test/java/com/baeldung/datetime/UseTimeZoneUnitTest.java index 4423ac6ce0..7e403ddcab 100644 --- a/java-dates/src/test/java/com/baeldung/datetime/UseTimeZoneUnitTest.java +++ b/core-java-modules/core-java-datetime/java-dates-java8/src/test/java/com/baeldung/datetime/UseTimeZoneUnitTest.java @@ -1,72 +1,72 @@ -package com.baeldung.datetime; - -import java.text.SimpleDateFormat; -import java.time.Instant; -import java.time.ZoneId; -import java.time.ZonedDateTime; -import java.time.format.DateTimeFormatter; -import java.util.Calendar; -import java.util.Date; -import java.util.TimeZone; - -import org.joda.time.DateTime; -import org.joda.time.DateTimeZone; -import org.junit.Assert; -import org.junit.Test; - -public class UseTimeZoneUnitTest { - - /* https://en.wikipedia.org/wiki/List_of_tz_database_time_zones */ - - String timeZone = "Asia/Singapore"; - - private static final String PATTERN = "E yyyy-MM-dd HH:mm:ss a"; - - @Test - public void givenDateWithoutTimeZone_WhenSetTimeZoneUsingJava7_ThenTimeZoneIsSetSuccessfully() { - Date nowUtc = new Date(); - TimeZone asiaSingapore = TimeZone.getTimeZone(timeZone); - - Calendar nowAsiaSingapore = Calendar.getInstance(asiaSingapore); - nowAsiaSingapore.setTime(nowUtc); - - SimpleDateFormat simpleDateFormat = new SimpleDateFormat(PATTERN); - simpleDateFormat.setTimeZone(TimeZone.getTimeZone(timeZone)); - - System.out.println(String.format("Java7: Time now in '%s' is '%s'", nowAsiaSingapore.getTimeZone() - .getID(), simpleDateFormat.format(nowAsiaSingapore.getTime()))); - - Assert.assertEquals(nowUtc.toInstant().getEpochSecond(), nowAsiaSingapore.toInstant().getEpochSecond()); - Assert.assertEquals(asiaSingapore, nowAsiaSingapore.getTimeZone()); - - } - - @Test - public void givenDateWithoutTimeZone_WhenSetTimeZoneUsingJava8_ThenTimeZoneIsSetSuccessfully() { - Instant nowUtc = Instant.now(); - ZoneId asiaSingapore = ZoneId.of(timeZone); - - ZonedDateTime nowAsiaSingapore = ZonedDateTime.ofInstant(nowUtc, asiaSingapore); - - System.out.println(String.format("Java8: Time now in '%s' is '%s'", nowAsiaSingapore.getZone(), - nowAsiaSingapore.format(DateTimeFormatter.ofPattern(PATTERN)))); - - Assert.assertEquals(nowUtc.getEpochSecond(), nowAsiaSingapore.toEpochSecond()); - Assert.assertEquals(asiaSingapore, nowAsiaSingapore.getZone()); - } - - @Test - public void givenDateWithoutTimeZone_WhenSetTimeZoneUsingJodaTime_ThenTimeZoneIsSetSuccessfully() { - org.joda.time.Instant nowUtc = org.joda.time.Instant.now(); - DateTimeZone asiaSingapore = DateTimeZone.forID(timeZone); - - DateTime nowAsiaSingapore = nowUtc.toDateTime(asiaSingapore); - - System.out.println(String.format("Joda-time: Time now in '%s' is '%s'", nowAsiaSingapore.getZone(), - nowAsiaSingapore.toString(PATTERN))); - - Assert.assertEquals(nowUtc.toInstant().getMillis(), nowAsiaSingapore.toInstant().getMillis()); - Assert.assertEquals(asiaSingapore, nowAsiaSingapore.getZone()); - } - -} +package com.baeldung.datetime; + +import java.text.SimpleDateFormat; +import java.time.Instant; +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Calendar; +import java.util.Date; +import java.util.TimeZone; + +import org.joda.time.DateTime; +import org.joda.time.DateTimeZone; +import org.junit.Assert; +import org.junit.Test; + +public class UseTimeZoneUnitTest { + + /* https://en.wikipedia.org/wiki/List_of_tz_database_time_zones */ + + String timeZone = "Asia/Singapore"; + + private static final String PATTERN = "E yyyy-MM-dd HH:mm:ss a"; + + @Test + public void givenDateWithoutTimeZone_WhenSetTimeZoneUsingJava7_ThenTimeZoneIsSetSuccessfully() { + Date nowUtc = new Date(); + TimeZone asiaSingapore = TimeZone.getTimeZone(timeZone); + + Calendar nowAsiaSingapore = Calendar.getInstance(asiaSingapore); + nowAsiaSingapore.setTime(nowUtc); + + SimpleDateFormat simpleDateFormat = new SimpleDateFormat(PATTERN); + simpleDateFormat.setTimeZone(TimeZone.getTimeZone(timeZone)); + + System.out.println(String.format("Java7: Time now in '%s' is '%s'", nowAsiaSingapore.getTimeZone() + .getID(), simpleDateFormat.format(nowAsiaSingapore.getTime()))); + + Assert.assertEquals(nowUtc.toInstant().getEpochSecond(), nowAsiaSingapore.toInstant().getEpochSecond()); + Assert.assertEquals(asiaSingapore, nowAsiaSingapore.getTimeZone()); + + } + + @Test + public void givenDateWithoutTimeZone_WhenSetTimeZoneUsingJava8_ThenTimeZoneIsSetSuccessfully() { + Instant nowUtc = Instant.now(); + ZoneId asiaSingapore = ZoneId.of(timeZone); + + ZonedDateTime nowAsiaSingapore = ZonedDateTime.ofInstant(nowUtc, asiaSingapore); + + System.out.println(String.format("Java8: Time now in '%s' is '%s'", nowAsiaSingapore.getZone(), + nowAsiaSingapore.format(DateTimeFormatter.ofPattern(PATTERN)))); + + Assert.assertEquals(nowUtc.getEpochSecond(), nowAsiaSingapore.toEpochSecond()); + Assert.assertEquals(asiaSingapore, nowAsiaSingapore.getZone()); + } + + @Test + public void givenDateWithoutTimeZone_WhenSetTimeZoneUsingJodaTime_ThenTimeZoneIsSetSuccessfully() { + org.joda.time.Instant nowUtc = org.joda.time.Instant.now(); + DateTimeZone asiaSingapore = DateTimeZone.forID(timeZone); + + DateTime nowAsiaSingapore = nowUtc.toDateTime(asiaSingapore); + + System.out.println(String.format("Joda-time: Time now in '%s' is '%s'", nowAsiaSingapore.getZone(), + nowAsiaSingapore.toString(PATTERN))); + + Assert.assertEquals(nowUtc.toInstant().getMillis(), nowAsiaSingapore.toInstant().getMillis()); + Assert.assertEquals(asiaSingapore, nowAsiaSingapore.getZone()); + } + +} diff --git a/java-dates/src/test/java/com/baeldung/datetime/UseZonedDateTimeUnitTest.java b/core-java-modules/core-java-datetime/java-dates-java8/src/test/java/com/baeldung/datetime/UseZonedDateTimeUnitTest.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/datetime/UseZonedDateTimeUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-java8/src/test/java/com/baeldung/datetime/UseZonedDateTimeUnitTest.java diff --git a/java-dates/src/test/java/com/baeldung/temporaladjusters/CustomTemporalAdjusterUnitTest.java b/core-java-modules/core-java-datetime/java-dates-java8/src/test/java/com/baeldung/temporaladjusters/CustomTemporalAdjusterUnitTest.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/temporaladjusters/CustomTemporalAdjusterUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-java8/src/test/java/com/baeldung/temporaladjusters/CustomTemporalAdjusterUnitTest.java diff --git a/java-dates/src/test/java/com/baeldung/temporaladjusters/TemporalAdjustersUnitTest.java b/core-java-modules/core-java-datetime/java-dates-java8/src/test/java/com/baeldung/temporaladjusters/TemporalAdjustersUnitTest.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/temporaladjusters/TemporalAdjustersUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-java8/src/test/java/com/baeldung/temporaladjusters/TemporalAdjustersUnitTest.java diff --git a/java-dates/.gitignore b/java-dates/.gitignore deleted file mode 100644 index 3de4cc647e..0000000000 --- a/java-dates/.gitignore +++ /dev/null @@ -1,26 +0,0 @@ -*.class - -0.* - -#folders# -/target -/neoDb* -/data -/src/main/webapp/WEB-INF/classes -*/META-INF/* -.resourceCache - -# Packaged files # -*.jar -*.war -*.ear - -# Files generated by integration tests -*.txt -backup-pom.xml -/bin/ -/temp - -#IntelliJ specific -.idea/ -*.iml \ No newline at end of file diff --git a/java-dates/README.md b/java-dates/README.md deleted file mode 100644 index f16ea6d411..0000000000 --- a/java-dates/README.md +++ /dev/null @@ -1,13 +0,0 @@ -========= - -## Java Dates Cookbooks and Examples - -### Relevant Articles: -- [TemporalAdjuster in Java](http://www.baeldung.com/java-temporal-adjuster) -- [Period and Duration in Java](http://www.baeldung.com/java-period-duration) -- [Introduction to the Java 8 Date/Time API](http://www.baeldung.com/java-8-date-time-intro) -- [Get the Current Date, Time and Timestamp in Java 8](http://www.baeldung.com/current-date-time-and-timestamp-in-java-8) -- [How to Get the Start and the End of a Day using Java](http://www.baeldung.com/java-day-start-end) -- [ZoneOffset in Java](https://www.baeldung.com/java-zone-offset) -- [Differences Between ZonedDateTime and OffsetDateTime](https://www.baeldung.com/java-zoneddatetime-offsetdatetime) -- [Comparing Dates in Java](https://www.baeldung.com/java-comparing-dates) diff --git a/java-dates/pom.xml b/java-dates/pom.xml deleted file mode 100644 index 464a3bff12..0000000000 --- a/java-dates/pom.xml +++ /dev/null @@ -1,60 +0,0 @@ - - 4.0.0 - com.baeldung - java-dates - 0.1.0-SNAPSHOT - java-dates - jar - - - com.baeldung - parent-java - 0.0.1-SNAPSHOT - ../parent-java - - - - - log4j - log4j - ${log4j.version} - - - - joda-time - joda-time - ${joda-time.version} - - - - - java-dates - - - src/main/resources - true - - - - - - org.apache.maven.plugins - maven-compiler-plugin - ${maven-compiler-plugin.version} - - ${maven.compiler.source} - ${maven.compiler.target} - - - - - - - 2.10 - - 3.6.1 - 1.9 - 1.9 - - diff --git a/java-dates/src/main/java/com/baeldung/datetime/README.md b/java-dates/src/main/java/com/baeldung/datetime/README.md deleted file mode 100644 index 7d843af9ea..0000000000 --- a/java-dates/src/main/java/com/baeldung/datetime/README.md +++ /dev/null @@ -1 +0,0 @@ -### Relevant Articles: diff --git a/java-dates/src/main/resources/logback.xml b/java-dates/src/main/resources/logback.xml deleted file mode 100644 index 7d900d8ea8..0000000000 --- a/java-dates/src/main/resources/logback.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n - - - - - - - - \ No newline at end of file diff --git a/java-dates/src/test/resources/.gitignore b/java-dates/src/test/resources/.gitignore deleted file mode 100644 index 83c05e60c8..0000000000 --- a/java-dates/src/test/resources/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -*.class - -#folders# -/target -/neoDb* -/data -/src/main/webapp/WEB-INF/classes -*/META-INF/* - -# Packaged files # -*.jar -*.war -*.ear \ No newline at end of file From d2b96ee409b0cc7ce2a72e362d64d015a05f3a24 Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Wed, 2 Oct 2019 17:04:11 +0200 Subject: [PATCH 016/265] #BAEL-16646 Move article [Convert String to Date in Java](http://www.baeldung.com/java-string-to-date) from libraries to java-dates-string. The code was already in java-dates (but the article still points to libraries). --- core-java-modules/core-java-datetime/java-dates-string/README.md | 1 + .../src/test/java/com/baeldung/date/StringToDateUnitTest.java | 0 libraries/README.md | 1 - 3 files changed, 1 insertion(+), 1 deletion(-) rename {java-dates => core-java-modules/core-java-datetime/java-dates-string}/src/test/java/com/baeldung/date/StringToDateUnitTest.java (100%) diff --git a/core-java-modules/core-java-datetime/java-dates-string/README.md b/core-java-modules/core-java-datetime/java-dates-string/README.md index 76c3298bd5..cf00bdeb1f 100644 --- a/core-java-modules/core-java-datetime/java-dates-string/README.md +++ b/core-java-modules/core-java-datetime/java-dates-string/README.md @@ -10,3 +10,4 @@ This module contains articles about parsing and formatting Java date and time ob - [A Guide to SimpleDateFormat](https://www.baeldung.com/java-simple-date-format) - [Display All Time Zones With GMT And UTC in Java](http://www.baeldung.com/java-time-zones) - [Convert between String and Timestamp](https://www.baeldung.com/java-string-to-timestamp) +- [Convert String to Date in Java](http://www.baeldung.com/java-string-to-date) diff --git a/java-dates/src/test/java/com/baeldung/date/StringToDateUnitTest.java b/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/date/StringToDateUnitTest.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/date/StringToDateUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/date/StringToDateUnitTest.java diff --git a/libraries/README.md b/libraries/README.md index ebf087ccd8..45713b6b45 100644 --- a/libraries/README.md +++ b/libraries/README.md @@ -31,7 +31,6 @@ - [Publish and Receive Messages with Nats Java Client](http://www.baeldung.com/nats-java-client) - [Java Concurrency Utility with JCTools](http://www.baeldung.com/java-concurrency-jc-tools) - [Introduction to JavaPoet](http://www.baeldung.com/java-poet) -- [Convert String to Date in Java](http://www.baeldung.com/java-string-to-date) - [Guide to Resilience4j](http://www.baeldung.com/resilience4j) - [Exactly Once Processing in Kafka](https://www.baeldung.com/kafka-exactly-once) - [Implementing a FTP-Client in Java](http://www.baeldung.com/java-ftp-client) From ab77ab88efff41423f9e4d539f9bc148baa74729 Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Wed, 2 Oct 2019 17:07:25 +0200 Subject: [PATCH 017/265] #BAEL-16646 Move code for article Calculate age in Java from java-dates to java-dates-computations. The java-dates module is now empty. --- .../src/test/java/com/baeldung/date/AgeCalculatorUnitTest.java | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {java-dates => core-java-modules/core-java-datetime/java-dates-computations}/src/test/java/com/baeldung/date/AgeCalculatorUnitTest.java (100%) diff --git a/java-dates/src/test/java/com/baeldung/date/AgeCalculatorUnitTest.java b/core-java-modules/core-java-datetime/java-dates-computations/src/test/java/com/baeldung/date/AgeCalculatorUnitTest.java similarity index 100% rename from java-dates/src/test/java/com/baeldung/date/AgeCalculatorUnitTest.java rename to core-java-modules/core-java-datetime/java-dates-computations/src/test/java/com/baeldung/date/AgeCalculatorUnitTest.java From 97b9b2b9a94f25fe62981c7131e640eea65f01b0 Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Wed, 2 Oct 2019 22:39:08 +0200 Subject: [PATCH 018/265] #BAEL-17507 add README descriptions --- akka-http/README.md | 6 +++++- akka-streams/README.md | 4 ++++ algorithms-genetic/README.md | 6 +++++- algorithms-miscellaneous-1/README.md | 10 ++++++++-- algorithms-miscellaneous-2/README.md | 8 +++++++- algorithms-miscellaneous-3/README.md | 8 +++++++- algorithms-miscellaneous-4/README.md | 10 ++++++++-- algorithms-miscellaneous-5/README.md | 10 ++++++++-- core-java-modules/core-java-datetime/README.md | 2 +- persistence-modules/java-mongodb/README.md | 6 +++++- persistence-modules/jnosql/README.md | 4 ++++ vaadin/README.md | 6 +++++- vavr/README.md | 4 ++++ 13 files changed, 71 insertions(+), 13 deletions(-) diff --git a/akka-http/README.md b/akka-http/README.md index 3831b5079f..e34a31f381 100644 --- a/akka-http/README.md +++ b/akka-http/README.md @@ -1,3 +1,7 @@ -## Relevant articles: +## Akka HTTP + +This module contains articles about HTTP with Akka. + +### Relevant articles: - [Introduction to Akka HTTP](https://www.baeldung.com/akka-http) diff --git a/akka-streams/README.md b/akka-streams/README.md index 5f71991def..c13a31fd06 100644 --- a/akka-streams/README.md +++ b/akka-streams/README.md @@ -1,3 +1,7 @@ +## Akka Streams + +This module contains articles about streams in Akka. + ### Relevant articles - [Guide to Akka Streams](https://www.baeldung.com/akka-streams) diff --git a/algorithms-genetic/README.md b/algorithms-genetic/README.md index 124e9c09e5..1c9e831ac2 100644 --- a/algorithms-genetic/README.md +++ b/algorithms-genetic/README.md @@ -1,4 +1,8 @@ -## Relevant articles: +## Genetic Algorithms + +This module contains articles about genetic algorithms. + +### Relevant articles: - [Introduction to Jenetics Library](https://www.baeldung.com/jenetics) - [Ant Colony Optimization](https://www.baeldung.com/java-ant-colony-optimization) diff --git a/algorithms-miscellaneous-1/README.md b/algorithms-miscellaneous-1/README.md index 57f5a5d478..6a25f8cac8 100644 --- a/algorithms-miscellaneous-1/README.md +++ b/algorithms-miscellaneous-1/README.md @@ -1,4 +1,9 @@ -## Relevant articles: +## Algorithms - Miscellaneous + +This module contains articles about algorithms. Some classes of algorithms, e.g., [sorting](/../algorithms-sorting) and +[genetic algorithms](/../algorithms-genetic), have their own dedicated modules. + +### Relevant articles: - [Validating Input With Finite Automata in Java](https://www.baeldung.com/java-finite-automata) - [Example of Hill Climbing Algorithm](https://www.baeldung.com/java-hill-climbing-algorithm) @@ -6,4 +11,5 @@ - [Binary Search Algorithm in Java](https://www.baeldung.com/java-binary-search) - [Introduction to Minimax Algorithm](https://www.baeldung.com/java-minimax-algorithm) - [How to Calculate Levenshtein Distance in Java?](https://www.baeldung.com/java-levenshtein-distance) -- [How to Find the Kth Largest Element in Java](https://www.baeldung.com/java-kth-largest-element) \ No newline at end of file +- [How to Find the Kth Largest Element in Java](https://www.baeldung.com/java-kth-largest-element) +- More articles: [[next -->]](/../algorithms-miscellaneous-2) diff --git a/algorithms-miscellaneous-2/README.md b/algorithms-miscellaneous-2/README.md index 76727a1d4f..7560fc4fe7 100644 --- a/algorithms-miscellaneous-2/README.md +++ b/algorithms-miscellaneous-2/README.md @@ -1,4 +1,9 @@ -## Relevant articles: +## Algorithms - Miscellaneous + +This module contains articles about algorithms. Some classes of algorithms, e.g., [sorting](/../algorithms-sorting) and +[genetic algorithms](/../algorithms-genetic), have their own dedicated modules. + +### Relevant articles: - [Dijkstra Shortest Path Algorithm in Java](https://www.baeldung.com/java-dijkstra) - [Introduction to Cobertura](https://www.baeldung.com/cobertura) @@ -8,3 +13,4 @@ - [Create a Sudoku Solver in Java](https://www.baeldung.com/java-sudoku) - [Displaying Money Amounts in Words](https://www.baeldung.com/java-money-into-words) - [A Collaborative Filtering Recommendation System in Java](https://www.baeldung.com/java-collaborative-filtering-recommendations) +- More articles: [[<-- prev]](/../algorithms-miscellaneous-1) [[next -->]](/../algorithms-miscellaneous-3) diff --git a/algorithms-miscellaneous-3/README.md b/algorithms-miscellaneous-3/README.md index d2d73ec8a1..efb277ac04 100644 --- a/algorithms-miscellaneous-3/README.md +++ b/algorithms-miscellaneous-3/README.md @@ -1,4 +1,9 @@ -## Relevant Articles: +## Algorithms - Miscellaneous + +This module contains articles about algorithms. Some classes of algorithms, e.g., [sorting](/../algorithms-sorting) and +[genetic algorithms](/../algorithms-genetic), have their own dedicated modules. + +### Relevant articles: - [Java Two Pointer Technique](https://www.baeldung.com/java-two-pointer-technique) - [Implementing Simple State Machines with Java Enums](https://www.baeldung.com/java-enum-simple-state-machine) @@ -9,3 +14,4 @@ - [A Guide to the Folding Technique in Java](https://www.baeldung.com/folding-hashing-technique) - [Creating a Triangle with for Loops in Java](https://www.baeldung.com/java-print-triangle) - [Efficient Word Frequency Calculator in Java](https://www.baeldung.com/java-word-frequency) +- More articles: [[<-- prev]](/../algorithms-miscellaneous-2) [[next -->]](/../algorithms-miscellaneous-4) diff --git a/algorithms-miscellaneous-4/README.md b/algorithms-miscellaneous-4/README.md index fabb4d29b8..6aad9a43e4 100644 --- a/algorithms-miscellaneous-4/README.md +++ b/algorithms-miscellaneous-4/README.md @@ -1,4 +1,9 @@ -## Relevant articles: +## Algorithms - Miscellaneous + +This module contains articles about algorithms. Some classes of algorithms, e.g., [sorting](/../algorithms-sorting) and +[genetic algorithms](/../algorithms-genetic), have their own dedicated modules. + +### Relevant articles: - [Multi-Swarm Optimization Algorithm in Java](https://www.baeldung.com/java-multi-swarm-algorithm) - [String Search Algorithms for Large Texts](https://www.baeldung.com/java-full-text-search-algorithms) @@ -6,4 +11,5 @@ - [Find the Middle Element of a Linked List](https://www.baeldung.com/java-linked-list-middle-element) - [Find Substrings That Are Palindromes in Java](https://www.baeldung.com/java-palindrome-substrings) - [Find the Longest Substring without Repeating Characters](https://www.baeldung.com/java-longest-substring-without-repeated-characters) -- [Permutations of an Array in Java](https://www.baeldung.com/java-array-permutations) \ No newline at end of file +- [Permutations of an Array in Java](https://www.baeldung.com/java-array-permutations) +- More articles: [[<-- prev]](/../algorithms-miscellaneous-3) [[next -->]](/../algorithms-miscellaneous-5) diff --git a/algorithms-miscellaneous-5/README.md b/algorithms-miscellaneous-5/README.md index 7ed71e61cc..7a8f2e0a36 100644 --- a/algorithms-miscellaneous-5/README.md +++ b/algorithms-miscellaneous-5/README.md @@ -1,5 +1,11 @@ -## Relevant articles: +## Algorithms - Miscellaneous + +This module contains articles about algorithms. Some classes of algorithms, e.g., [sorting](/../algorithms-sorting) and +[genetic algorithms](/../algorithms-genetic), have their own dedicated modules. + +### Relevant articles: - [Converting Between Byte Arrays and Hexadecimal Strings in Java](https://www.baeldung.com/java-byte-arrays-hex-strings) - [Reversing a Binary Tree in Java](https://www.baeldung.com/java-reversing-a-binary-tree) -- [Find If Two Numbers Are Relatively Prime in Java](https://www.baeldung.com/java-two-relatively-prime-numbers) \ No newline at end of file +- [Find If Two Numbers Are Relatively Prime in Java](https://www.baeldung.com/java-two-relatively-prime-numbers) +- More articles: [[<-- prev]](/../algorithms-miscellaneous-4) diff --git a/core-java-modules/core-java-datetime/README.md b/core-java-modules/core-java-datetime/README.md index 71aea2e9db..a576367623 100644 --- a/core-java-modules/core-java-datetime/README.md +++ b/core-java-modules/core-java-datetime/README.md @@ -4,4 +4,4 @@ ### Relevant Articles: - [Set the Time Zone of a Date in Java](https://www.baeldung.com/java-set-date-time-zone) -- [Overriding System Time for Testing in Java](https://www.baeldung.com/java-override-system-time) \ No newline at end of file +- [Overriding System Time for Testing in Java](https://www.baeldung.com/java-override-system-time) diff --git a/persistence-modules/java-mongodb/README.md b/persistence-modules/java-mongodb/README.md index f1542e3ee9..41d0ad63f8 100644 --- a/persistence-modules/java-mongodb/README.md +++ b/persistence-modules/java-mongodb/README.md @@ -1,4 +1,8 @@ -## Relevant articles: +## MongoDB + +This module contains articles about MongoDB in Java. + +### Relevant articles: - [A Guide to MongoDB with Java](http://www.baeldung.com/java-mongodb) - [A Simple Tagging Implementation with MongoDB](http://www.baeldung.com/mongodb-tagging) diff --git a/persistence-modules/jnosql/README.md b/persistence-modules/jnosql/README.md index d580cbc920..cb126914e9 100644 --- a/persistence-modules/jnosql/README.md +++ b/persistence-modules/jnosql/README.md @@ -1,2 +1,6 @@ +## JNoSQL + +This module contains articles about JNoSQL. + ### Relevant Articles: - [A Guide to Eclipse JNoSQL](http://www.baeldung.com/eclipse-jnosql) diff --git a/vaadin/README.md b/vaadin/README.md index 1d570d1f58..92ee8b938e 100644 --- a/vaadin/README.md +++ b/vaadin/README.md @@ -1,4 +1,8 @@ -## Relevant articles: +## Vaadin + +This module contains articles about Vaadin. + +### Relevant articles: - [Introduction to Vaadin](https://www.baeldung.com/vaadin) - [Sample Application with Spring Boot and Vaadin](https://www.baeldung.com/spring-boot-vaadin) diff --git a/vavr/README.md b/vavr/README.md index 6832f78a62..2b8bb25356 100644 --- a/vavr/README.md +++ b/vavr/README.md @@ -1,3 +1,7 @@ +## Vavr + +This module contains articles about Vavr. + ### Relevant Articles: - [Introduction to Vavr](https://www.baeldung.com/vavr) - [Guide to Try in Vavr](https://www.baeldung.com/vavr-try) From 779ae2f7a3134f2cc7d26761e790bad295956408 Mon Sep 17 00:00:00 2001 From: maryarm Date: Fri, 4 Oct 2019 15:44:46 +0330 Subject: [PATCH 019/265] #BAEL-3228: Unit tests for Transaction Propagation and Isolation in Spring @Transactional --- .../FooTransactionalUnitTest.java | 250 ++++++++++++++++++ .../PersistenceTransactionalTestConfig.java | 148 +++++++++++ 2 files changed, 398 insertions(+) create mode 100644 persistence-modules/spring-persistence-simple/src/test/java/com/baeldung/persistence/service/transactional/FooTransactionalUnitTest.java create mode 100644 persistence-modules/spring-persistence-simple/src/test/java/com/baeldung/persistence/service/transactional/PersistenceTransactionalTestConfig.java diff --git a/persistence-modules/spring-persistence-simple/src/test/java/com/baeldung/persistence/service/transactional/FooTransactionalUnitTest.java b/persistence-modules/spring-persistence-simple/src/test/java/com/baeldung/persistence/service/transactional/FooTransactionalUnitTest.java new file mode 100644 index 0000000000..6f2a499bc5 --- /dev/null +++ b/persistence-modules/spring-persistence-simple/src/test/java/com/baeldung/persistence/service/transactional/FooTransactionalUnitTest.java @@ -0,0 +1,250 @@ +package com.baeldung.persistence.service.transactional; + +import com.baeldung.persistence.model.Foo; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import org.junit.After; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Repository; +import org.springframework.stereotype.Service; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.AnnotationConfigContextLoader; +import org.springframework.transaction.IllegalTransactionStateException; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.support.TransactionTemplate; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = { PersistenceTransactionalTestConfig.class }, loader = AnnotationConfigContextLoader.class) +@DirtiesContext +public class FooTransactionalUnitTest { + + static abstract class BasicFooDao { + @PersistenceContext private EntityManager entityManager; + + public Foo findOne(final long id) { + return entityManager.find(Foo.class, id); + } + + public Foo create(final Foo entity) { + entityManager.persist(entity); + return entity; + } + } + + @Repository + static class RequiredTransactionalFooDao extends BasicFooDao { + @Override + @Transactional(propagation = Propagation.REQUIRED) + public Foo create(Foo entity) { + return super.create(entity); + } + } + + @Repository + static class RequiresNewTransactionalFooDao extends BasicFooDao { + @Override + @Transactional(propagation = Propagation.REQUIRES_NEW) + public Foo create(Foo entity) { + return super.create(entity); + } + } + + @Repository + static class SupportTransactionalFooDao extends BasicFooDao { + @Override + @Transactional(propagation = Propagation.SUPPORTS) + public Foo create(Foo entity) { + return super.create(entity); + } + } + + @Repository + static class MandatoryTransactionalFooDao extends BasicFooDao { + @Override + @Transactional(propagation = Propagation.MANDATORY) + public Foo create(Foo entity) { + return super.create(entity); + } + } + + @Repository + static class SupportTransactionalFooService { + @Transactional(propagation = Propagation.SUPPORTS) + public Foo identity(Foo entity) { + return entity; + } + } + + @Service + static class MandatoryTransactionalFooService { + @Transactional(propagation = Propagation.MANDATORY) + public Foo identity(Foo entity) { + return entity; + } + } + + @Service + static class NotSupportedTransactionalFooService { + @Transactional(propagation = Propagation.NOT_SUPPORTED) + public Foo identity(Foo entity) { + return entity; + } + } + + @Service + static class NeverTransactionalFooService { + @Transactional(propagation = Propagation.NEVER) + public Foo identity(Foo entity) { + return entity; + } + } + + @Autowired private TransactionTemplate transactionTemplate; + + @Autowired private RequiredTransactionalFooDao requiredTransactionalFooDao; + + @Autowired private RequiresNewTransactionalFooDao requiresNewTransactionalFooDao; + + @Autowired private SupportTransactionalFooDao supportTransactionalFooDao; + + @Autowired private MandatoryTransactionalFooDao mandatoryTransactionalFooDao; + + @Autowired private MandatoryTransactionalFooService mandatoryTransactionalFooService; + + @Autowired private NeverTransactionalFooService neverTransactionalFooService; + + @Autowired private NotSupportedTransactionalFooService notSupportedTransactionalFooService; + + @Autowired private SupportTransactionalFooService supportTransactionalFooService; + + @After + public void tearDown(){ + PersistenceTransactionalTestConfig.clearSpy(); + } + + @Test + public void givenRequiredWithNoActiveTransaction_whenCallCreate_thenExpect1NewAnd0Suspend() { + requiredTransactionalFooDao.create(new Foo("baeldung")); + PersistenceTransactionalTestConfig.TransactionSynchronizationAdapterSpy transactionSpy = PersistenceTransactionalTestConfig.getSpy(); + Assert.assertEquals(0, transactionSpy.getSuspend()); + Assert.assertEquals(1, transactionSpy.getCreate()); + } + + + + @Test + public void givenRequiresNewWithNoActiveTransaction_whenCallCreate_thenExpect1NewAnd0Suspend() { + requiresNewTransactionalFooDao.create(new Foo("baeldung")); + PersistenceTransactionalTestConfig.TransactionSynchronizationAdapterSpy transactionSpy = PersistenceTransactionalTestConfig.getSpy(); + Assert.assertEquals(0, transactionSpy.getSuspend()); + Assert.assertEquals(1, transactionSpy.getCreate()); + } + + @Test + public void givenSupportWithNoActiveTransaction_whenCallService_thenExpect0NewAnd0Suspend() { + supportTransactionalFooService.identity(new Foo("baeldung")); + PersistenceTransactionalTestConfig.TransactionSynchronizationAdapterSpy transactionSpy = PersistenceTransactionalTestConfig.getSpy(); + Assert.assertEquals(0, transactionSpy.getSuspend()); + Assert.assertEquals(0, transactionSpy.getCreate()); + } + + @Test(expected = IllegalTransactionStateException.class) + public void givenMandatoryWithNoActiveTransaction_whenCallService_thenExpectIllegalTransactionStateExceptionWith0NewAnd0Suspend() { + mandatoryTransactionalFooService.identity(new Foo("baeldung")); + PersistenceTransactionalTestConfig.TransactionSynchronizationAdapterSpy transactionSpy = PersistenceTransactionalTestConfig.getSpy(); + Assert.assertEquals(0, transactionSpy.getSuspend()); + Assert.assertEquals(0, transactionSpy.getCreate()); + } + + @Test + public void givenNotSupportWithNoActiveTransaction_whenCallService_thenExpect0NewAnd0Suspend() { + notSupportedTransactionalFooService.identity(new Foo("baeldung")); + PersistenceTransactionalTestConfig.TransactionSynchronizationAdapterSpy transactionSpy = PersistenceTransactionalTestConfig.getSpy(); + Assert.assertEquals(0, transactionSpy.getSuspend()); + Assert.assertEquals(0, transactionSpy.getCreate()); + } + + @Test + public void givenNeverWithNoActiveTransaction_whenCallService_thenExpect0NewAnd0Suspend() { + neverTransactionalFooService.identity(new Foo("baeldung")); + PersistenceTransactionalTestConfig.TransactionSynchronizationAdapterSpy transactionSpy = PersistenceTransactionalTestConfig.getSpy(); + Assert.assertEquals(0, transactionSpy.getSuspend()); + Assert.assertEquals(0, transactionSpy.getCreate()); + } + + @Test + public void givenRequiredWithActiveTransaction_whenCallCreate_thenExpect0NewAnd0Suspend() { + transactionTemplate.execute(status -> { + Foo foo = new Foo("baeldung"); + return requiredTransactionalFooDao.create(foo); + }); + PersistenceTransactionalTestConfig.TransactionSynchronizationAdapterSpy transactionSpy = PersistenceTransactionalTestConfig.getSpy(); + Assert.assertEquals(0, transactionSpy.getSuspend()); + Assert.assertEquals(1, transactionSpy.getCreate()); + } + + @Test + public void givenRequiresNewWithActiveTransaction_whenCallCreate_thenExpect1NewAnd1Suspend() { + transactionTemplate.execute(status -> { + Foo foo = new Foo("baeldung"); + return requiresNewTransactionalFooDao.create(foo); + }); + PersistenceTransactionalTestConfig.TransactionSynchronizationAdapterSpy transactionSpy = PersistenceTransactionalTestConfig.getSpy(); + Assert.assertEquals(1, transactionSpy.getSuspend()); + Assert.assertEquals(2, transactionSpy.getCreate()); + } + + @Test + public void givenSupportWithActiveTransaction_whenCallCreate_thenExpect0NewAnd0Suspend() { + transactionTemplate.execute(status -> { + Foo foo = new Foo("baeldung"); + return supportTransactionalFooDao.create(foo); + }); + PersistenceTransactionalTestConfig.TransactionSynchronizationAdapterSpy transactionSpy = PersistenceTransactionalTestConfig.getSpy(); + Assert.assertEquals(0, transactionSpy.getSuspend()); + Assert.assertEquals(1, transactionSpy.getCreate()); + } + + @Test + public void givenMandatoryWithActiveTransaction_whenCallCreate_thenExpect0NewAnd0Suspend() { + + transactionTemplate.execute(status -> { + Foo foo = new Foo("baeldung"); + return mandatoryTransactionalFooDao.create(foo); + }); + + PersistenceTransactionalTestConfig.TransactionSynchronizationAdapterSpy transactionSpy = PersistenceTransactionalTestConfig.getSpy(); + Assert.assertEquals(0, transactionSpy.getSuspend()); + Assert.assertEquals(1, transactionSpy.getCreate()); + } + + @Test + public void givenNotSupportWithActiveTransaction_whenCallCreate_thenExpect0NewAnd1Suspend() { + transactionTemplate.execute(status -> { + Foo foo = new Foo("baeldung"); + return notSupportedTransactionalFooService.identity(foo); + }); + + PersistenceTransactionalTestConfig.TransactionSynchronizationAdapterSpy transactionSpy = PersistenceTransactionalTestConfig.getSpy(); + Assert.assertEquals(1, transactionSpy.getSuspend()); + Assert.assertEquals(1, transactionSpy.getCreate()); + } + + @Test(expected = IllegalTransactionStateException.class) + public void givenNeverWithActiveTransaction_whenCallCreate_thenExpectIllegalTransactionStateExceptionWith0NewAnd0Suspend() { + transactionTemplate.execute(status -> { + Foo foo = new Foo("baeldung"); + return neverTransactionalFooService.identity(foo); + }); + PersistenceTransactionalTestConfig.TransactionSynchronizationAdapterSpy transactionSpy = PersistenceTransactionalTestConfig.getSpy(); + Assert.assertEquals(0, transactionSpy.getSuspend()); + Assert.assertEquals(1, transactionSpy.getCreate()); + } + +} diff --git a/persistence-modules/spring-persistence-simple/src/test/java/com/baeldung/persistence/service/transactional/PersistenceTransactionalTestConfig.java b/persistence-modules/spring-persistence-simple/src/test/java/com/baeldung/persistence/service/transactional/PersistenceTransactionalTestConfig.java new file mode 100644 index 0000000000..fde1857ca2 --- /dev/null +++ b/persistence-modules/spring-persistence-simple/src/test/java/com/baeldung/persistence/service/transactional/PersistenceTransactionalTestConfig.java @@ -0,0 +1,148 @@ +package com.baeldung.persistence.service.transactional; + +import com.google.common.base.Preconditions; +import java.util.Properties; +import javax.persistence.EntityManagerFactory; +import javax.sql.DataSource; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; +import org.springframework.core.env.Environment; +import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; +import org.springframework.jdbc.datasource.DriverManagerDataSource; +import org.springframework.orm.jpa.JpaTransactionManager; +import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; +import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; +import org.springframework.transaction.PlatformTransactionManager; +import org.springframework.transaction.TransactionDefinition; +import org.springframework.transaction.annotation.EnableTransactionManagement; +import org.springframework.transaction.support.DefaultTransactionStatus; +import org.springframework.transaction.support.TransactionSynchronizationAdapter; +import org.springframework.transaction.support.TransactionSynchronizationManager; +import org.springframework.transaction.support.TransactionTemplate; + +@Configuration +@EnableTransactionManagement +@PropertySource({ "classpath:persistence-h2.properties" }) +@ComponentScan({ "com.baeldung.persistence","com.baeldung.jpa.dao" }) +@EnableJpaRepositories(basePackages = "com.baeldung.jpa.dao") +public class PersistenceTransactionalTestConfig { + + public static class TransactionSynchronizationAdapterSpy extends TransactionSynchronizationAdapter { + private int create, suspend; + + public int getSuspend() { + return suspend; + } + + public int getCreate() { + return create; + } + + public void create() { + create++; + } + + @Override + public void suspend() { + suspend++; + super.suspend(); + } + } + + + public static class JpaTransactionManagerSpy extends JpaTransactionManager { + @Override + protected void prepareSynchronization(DefaultTransactionStatus status, TransactionDefinition definition) { + super.prepareSynchronization(status, definition); + if (status.isNewTransaction()) { + if ( adapterSpyThreadLocal.get() == null ){ + TransactionSynchronizationAdapterSpy spy = new TransactionSynchronizationAdapterSpy(); + TransactionSynchronizationManager.registerSynchronization(spy); + adapterSpyThreadLocal.set(spy); + } + adapterSpyThreadLocal.get().create(); + } + } + } + + private static ThreadLocal adapterSpyThreadLocal = new ThreadLocal<>(); + + @Autowired + private Environment env; + + public PersistenceTransactionalTestConfig() { + super(); + } + + public static TransactionSynchronizationAdapterSpy getSpy(){ + if ( adapterSpyThreadLocal.get() == null ) + return new TransactionSynchronizationAdapterSpy(); + return adapterSpyThreadLocal.get(); + } + + public static void clearSpy(){ + adapterSpyThreadLocal.set(null); + } + + // beans + + @Bean + public LocalContainerEntityManagerFactoryBean entityManagerFactoryBean() { + final LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean(); + em.setDataSource(dataSource()); + em.setPackagesToScan(new String[] { "com.baeldung.persistence.model" }); + + final HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); + em.setJpaVendorAdapter(vendorAdapter); + em.setJpaProperties(additionalProperties()); + + return em; + } + + @Bean + public DataSource dataSource() { + final DriverManagerDataSource dataSource = new DriverManagerDataSource(); + dataSource.setDriverClassName(Preconditions.checkNotNull(env.getProperty("jdbc.driverClassName"))); + dataSource.setUrl(Preconditions.checkNotNull(env.getProperty("jdbc.url"))); + dataSource.setUsername(Preconditions.checkNotNull(env.getProperty("jdbc.user"))); + dataSource.setPassword(Preconditions.checkNotNull(env.getProperty("jdbc.pass"))); + + return dataSource; + } + + + + @Bean + public PlatformTransactionManager transactionManager(final EntityManagerFactory emf) { + final JpaTransactionManagerSpy transactionManager = new JpaTransactionManagerSpy(); + transactionManager.setEntityManagerFactory(emf); + return transactionManager; + } + + @Bean + public PersistenceExceptionTranslationPostProcessor exceptionTranslation() { + return new PersistenceExceptionTranslationPostProcessor(); + } + + final Properties additionalProperties() { + final Properties hibernateProperties = new Properties(); + hibernateProperties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto")); + hibernateProperties.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect")); + hibernateProperties.setProperty("hibernate.cache.use_second_level_cache", "false"); + return hibernateProperties; + } + + + @Bean + public TransactionTemplate transactionTemplate(PlatformTransactionManager transactionManager){ + TransactionTemplate template = new TransactionTemplate(transactionManager); + template.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); + return template; + } + + +} \ No newline at end of file From 1b5d8a6b62e429e7c72db8b7fb4536fac5232b84 Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Fri, 4 Oct 2019 21:47:42 +0200 Subject: [PATCH 020/265] #BAEL-16646 flatten java-datetime modules --- .../.gitignore | 0 .../README.md | 0 .../pom.xml | 0 .../DateToLocalDateConverter.java | 0 .../DateToLocalDateTimeConverter.java | 0 .../LocalDateTimeToDateConverter.java | 0 .../LocalDateToDateConverter.java | 0 .../convert/ConvertDateTimeUnitTest.java | 0 .../ConvertInstantToTimestampUnitTest.java | 0 .../DateToLocalDateConverterUnitTest.java | 0 .../DateToLocalDateTimeConverterUnitTest.java | 0 .../LocalDateTimeToDateConverterUnitTest.java | 0 .../LocalDateToDateConverterUnitTest.java | 0 ...XmlGregorianCalendarConverterUnitTest.java | 0 .../.gitignore | 0 .../README.md | 0 .../pom.xml | 0 .../date/validation/DateValidator.java | 0 .../DateValidatorUsingApacheValidator.java | 0 .../DateValidatorUsingDateFormat.java | 0 .../DateValidatorUsingDateTimeFormatter.java | 0 .../DateValidatorUsingLocalDate.java | 0 .../regexp/datepattern/DateMatcher.java | 0 .../datepattern/FormattedDateMatcher.java | 0 .../regexp/datepattern/RangedDateMatcher.java | 0 .../gregorian/February29thMatcher.java | 0 .../gregorian/FebruaryGeneralMatcher.java | 0 .../gregorian/GregorianDateMatcher.java | 0 .../gregorian/MonthsOf30DaysMatcher.java | 0 .../gregorian/MonthsOf31DaysMatcher.java | 0 .../optmization/OptimizedMatcher.java | 0 .../timezonedisplay/TimezoneDisplay.java | 0 .../timezonedisplay/TimezoneDisplayApp.java | 0 .../timezonedisplay/TimezoneDisplayJava7.java | 0 .../TimezoneDisplayJava7App.java | 0 .../zonedatetime/OffsetDateTimeExample.java | 0 .../zonedatetime/OffsetTimeExample.java | 0 .../zonedatetime/ZoneDateTimeExample.java | 0 .../baeldung/date/StringToDateUnitTest.java | 0 ...ValidatorUsingApacheValidatorUnitTest.java | 0 .../DateValidatorUsingDateFormatUnitTest.java | 0 ...lidatorUsingDateTimeFormatterUnitTest.java | 0 .../DateValidatorUsingLocalDateUnitTest.java | 0 .../datetime/DateTimeFormatterUnitTest.java | 0 .../FormattedDateMatcherUnitTest.java | 0 .../RangedDateMatcherUnitTest.java | 0 .../February29thMatcherUnitTest.java | 0 .../FebruaryGeneralMatcherUnitTest.java | 0 .../GregorianDateMatcherUnitTest.java | 0 .../MonthsOf30DaysMatcherUnitTest.java | 0 .../MonthsOf31DaysMatcherUnitTest.java | 0 .../testhelper/GregorianDateTestHelper.java | 0 .../SimpleDateFormatUnitTest.java | 0 .../StringToTimestampConverterUnitTest.java | 0 .../TimestampToStringConverterTest.java | 0 .../OffsetDateTimeExampleUnitTest.java | 0 .../OffsetTimeExampleUnitTest.java | 0 .../ZoneDateTimeExampleUnitTest.java | 0 .../zonedatetime/ZonedDateTimeUnitTest.java | 0 .../core-java-datetime/README.md | 3 --- core-java-modules/core-java-datetime/pom.xml | 23 ------------------- core-java-modules/pom.xml | 2 ++ 62 files changed, 2 insertions(+), 26 deletions(-) rename core-java-modules/{core-java-datetime/java-dates-conversion => core-java-datetime-conversion}/.gitignore (100%) rename core-java-modules/{core-java-datetime/java-dates-conversion => core-java-datetime-conversion}/README.md (100%) rename core-java-modules/{core-java-datetime/java-dates-conversion => core-java-datetime-conversion}/pom.xml (100%) rename core-java-modules/{core-java-datetime/java-dates-conversion => core-java-datetime-conversion}/src/main/java/com/baeldung/datetolocaldate/DateToLocalDateConverter.java (100%) rename core-java-modules/{core-java-datetime/java-dates-conversion => core-java-datetime-conversion}/src/main/java/com/baeldung/datetolocaldate/DateToLocalDateTimeConverter.java (100%) rename core-java-modules/{core-java-datetime/java-dates-conversion => core-java-datetime-conversion}/src/main/java/com/baeldung/datetolocaldate/LocalDateTimeToDateConverter.java (100%) rename core-java-modules/{core-java-datetime/java-dates-conversion => core-java-datetime-conversion}/src/main/java/com/baeldung/datetolocaldate/LocalDateToDateConverter.java (100%) rename core-java-modules/{core-java-datetime/java-dates-conversion => core-java-datetime-conversion}/src/test/java/com/baeldung/convert/ConvertDateTimeUnitTest.java (100%) rename core-java-modules/{core-java-datetime/java-dates-conversion => core-java-datetime-conversion}/src/test/java/com/baeldung/datetime/ConvertInstantToTimestampUnitTest.java (100%) rename core-java-modules/{core-java-datetime/java-dates-conversion => core-java-datetime-conversion}/src/test/java/com/baeldung/datetolocaldate/DateToLocalDateConverterUnitTest.java (100%) rename core-java-modules/{core-java-datetime/java-dates-conversion => core-java-datetime-conversion}/src/test/java/com/baeldung/datetolocaldate/DateToLocalDateTimeConverterUnitTest.java (100%) rename core-java-modules/{core-java-datetime/java-dates-conversion => core-java-datetime-conversion}/src/test/java/com/baeldung/datetolocaldate/LocalDateTimeToDateConverterUnitTest.java (100%) rename core-java-modules/{core-java-datetime/java-dates-conversion => core-java-datetime-conversion}/src/test/java/com/baeldung/datetolocaldate/LocalDateToDateConverterUnitTest.java (100%) rename core-java-modules/{core-java-datetime/java-dates-conversion => core-java-datetime-conversion}/src/test/java/com/baeldung/xmlgregoriancalendar/XmlGregorianCalendarConverterUnitTest.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/.gitignore (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/README.md (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/pom.xml (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/main/java/com/baeldung/date/validation/DateValidator.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/main/java/com/baeldung/date/validation/DateValidatorUsingApacheValidator.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/main/java/com/baeldung/date/validation/DateValidatorUsingDateFormat.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/main/java/com/baeldung/date/validation/DateValidatorUsingDateTimeFormatter.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/main/java/com/baeldung/date/validation/DateValidatorUsingLocalDate.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/main/java/com/baeldung/regexp/datepattern/DateMatcher.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/main/java/com/baeldung/regexp/datepattern/FormattedDateMatcher.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/main/java/com/baeldung/regexp/datepattern/RangedDateMatcher.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/main/java/com/baeldung/regexp/datepattern/gregorian/February29thMatcher.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/main/java/com/baeldung/regexp/datepattern/gregorian/FebruaryGeneralMatcher.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/main/java/com/baeldung/regexp/datepattern/gregorian/GregorianDateMatcher.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/main/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf30DaysMatcher.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/main/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf31DaysMatcher.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/main/java/com/baeldung/regexp/datepattern/optmization/OptimizedMatcher.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplay.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayApp.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayJava7.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayJava7App.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/main/java/com/baeldung/zonedatetime/OffsetDateTimeExample.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/main/java/com/baeldung/zonedatetime/OffsetTimeExample.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/main/java/com/baeldung/zonedatetime/ZoneDateTimeExample.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/test/java/com/baeldung/date/StringToDateUnitTest.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/test/java/com/baeldung/date/validation/DateValidatorUsingApacheValidatorUnitTest.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/test/java/com/baeldung/date/validation/DateValidatorUsingDateFormatUnitTest.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/test/java/com/baeldung/date/validation/DateValidatorUsingDateTimeFormatterUnitTest.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/test/java/com/baeldung/date/validation/DateValidatorUsingLocalDateUnitTest.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/test/java/com/baeldung/datetime/DateTimeFormatterUnitTest.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/test/java/com/baeldung/regexp/datepattern/FormattedDateMatcherUnitTest.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/test/java/com/baeldung/regexp/datepattern/RangedDateMatcherUnitTest.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/test/java/com/baeldung/regexp/datepattern/gregorian/February29thMatcherUnitTest.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/test/java/com/baeldung/regexp/datepattern/gregorian/FebruaryGeneralMatcherUnitTest.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/test/java/com/baeldung/regexp/datepattern/gregorian/GregorianDateMatcherUnitTest.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/test/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf30DaysMatcherUnitTest.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/test/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf31DaysMatcherUnitTest.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/test/java/com/baeldung/regexp/datepattern/gregorian/testhelper/GregorianDateTestHelper.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/test/java/com/baeldung/simpledateformat/SimpleDateFormatUnitTest.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/test/java/com/baeldung/timestamp/StringToTimestampConverterUnitTest.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/test/java/com/baeldung/timestamp/TimestampToStringConverterTest.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/test/java/com/baeldung/zonedatetime/OffsetDateTimeExampleUnitTest.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/test/java/com/baeldung/zonedatetime/OffsetTimeExampleUnitTest.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/test/java/com/baeldung/zonedatetime/ZoneDateTimeExampleUnitTest.java (100%) rename core-java-modules/{core-java-datetime/java-dates-string => core-java-datetime-string}/src/test/java/com/baeldung/zonedatetime/ZonedDateTimeUnitTest.java (100%) delete mode 100644 core-java-modules/core-java-datetime/README.md delete mode 100644 core-java-modules/core-java-datetime/pom.xml diff --git a/core-java-modules/core-java-datetime/java-dates-conversion/.gitignore b/core-java-modules/core-java-datetime-conversion/.gitignore similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-conversion/.gitignore rename to core-java-modules/core-java-datetime-conversion/.gitignore diff --git a/core-java-modules/core-java-datetime/java-dates-conversion/README.md b/core-java-modules/core-java-datetime-conversion/README.md similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-conversion/README.md rename to core-java-modules/core-java-datetime-conversion/README.md diff --git a/core-java-modules/core-java-datetime/java-dates-conversion/pom.xml b/core-java-modules/core-java-datetime-conversion/pom.xml similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-conversion/pom.xml rename to core-java-modules/core-java-datetime-conversion/pom.xml diff --git a/core-java-modules/core-java-datetime/java-dates-conversion/src/main/java/com/baeldung/datetolocaldate/DateToLocalDateConverter.java b/core-java-modules/core-java-datetime-conversion/src/main/java/com/baeldung/datetolocaldate/DateToLocalDateConverter.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-conversion/src/main/java/com/baeldung/datetolocaldate/DateToLocalDateConverter.java rename to core-java-modules/core-java-datetime-conversion/src/main/java/com/baeldung/datetolocaldate/DateToLocalDateConverter.java diff --git a/core-java-modules/core-java-datetime/java-dates-conversion/src/main/java/com/baeldung/datetolocaldate/DateToLocalDateTimeConverter.java b/core-java-modules/core-java-datetime-conversion/src/main/java/com/baeldung/datetolocaldate/DateToLocalDateTimeConverter.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-conversion/src/main/java/com/baeldung/datetolocaldate/DateToLocalDateTimeConverter.java rename to core-java-modules/core-java-datetime-conversion/src/main/java/com/baeldung/datetolocaldate/DateToLocalDateTimeConverter.java diff --git a/core-java-modules/core-java-datetime/java-dates-conversion/src/main/java/com/baeldung/datetolocaldate/LocalDateTimeToDateConverter.java b/core-java-modules/core-java-datetime-conversion/src/main/java/com/baeldung/datetolocaldate/LocalDateTimeToDateConverter.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-conversion/src/main/java/com/baeldung/datetolocaldate/LocalDateTimeToDateConverter.java rename to core-java-modules/core-java-datetime-conversion/src/main/java/com/baeldung/datetolocaldate/LocalDateTimeToDateConverter.java diff --git a/core-java-modules/core-java-datetime/java-dates-conversion/src/main/java/com/baeldung/datetolocaldate/LocalDateToDateConverter.java b/core-java-modules/core-java-datetime-conversion/src/main/java/com/baeldung/datetolocaldate/LocalDateToDateConverter.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-conversion/src/main/java/com/baeldung/datetolocaldate/LocalDateToDateConverter.java rename to core-java-modules/core-java-datetime-conversion/src/main/java/com/baeldung/datetolocaldate/LocalDateToDateConverter.java diff --git a/core-java-modules/core-java-datetime/java-dates-conversion/src/test/java/com/baeldung/convert/ConvertDateTimeUnitTest.java b/core-java-modules/core-java-datetime-conversion/src/test/java/com/baeldung/convert/ConvertDateTimeUnitTest.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-conversion/src/test/java/com/baeldung/convert/ConvertDateTimeUnitTest.java rename to core-java-modules/core-java-datetime-conversion/src/test/java/com/baeldung/convert/ConvertDateTimeUnitTest.java diff --git a/core-java-modules/core-java-datetime/java-dates-conversion/src/test/java/com/baeldung/datetime/ConvertInstantToTimestampUnitTest.java b/core-java-modules/core-java-datetime-conversion/src/test/java/com/baeldung/datetime/ConvertInstantToTimestampUnitTest.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-conversion/src/test/java/com/baeldung/datetime/ConvertInstantToTimestampUnitTest.java rename to core-java-modules/core-java-datetime-conversion/src/test/java/com/baeldung/datetime/ConvertInstantToTimestampUnitTest.java diff --git a/core-java-modules/core-java-datetime/java-dates-conversion/src/test/java/com/baeldung/datetolocaldate/DateToLocalDateConverterUnitTest.java b/core-java-modules/core-java-datetime-conversion/src/test/java/com/baeldung/datetolocaldate/DateToLocalDateConverterUnitTest.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-conversion/src/test/java/com/baeldung/datetolocaldate/DateToLocalDateConverterUnitTest.java rename to core-java-modules/core-java-datetime-conversion/src/test/java/com/baeldung/datetolocaldate/DateToLocalDateConverterUnitTest.java diff --git a/core-java-modules/core-java-datetime/java-dates-conversion/src/test/java/com/baeldung/datetolocaldate/DateToLocalDateTimeConverterUnitTest.java b/core-java-modules/core-java-datetime-conversion/src/test/java/com/baeldung/datetolocaldate/DateToLocalDateTimeConverterUnitTest.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-conversion/src/test/java/com/baeldung/datetolocaldate/DateToLocalDateTimeConverterUnitTest.java rename to core-java-modules/core-java-datetime-conversion/src/test/java/com/baeldung/datetolocaldate/DateToLocalDateTimeConverterUnitTest.java diff --git a/core-java-modules/core-java-datetime/java-dates-conversion/src/test/java/com/baeldung/datetolocaldate/LocalDateTimeToDateConverterUnitTest.java b/core-java-modules/core-java-datetime-conversion/src/test/java/com/baeldung/datetolocaldate/LocalDateTimeToDateConverterUnitTest.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-conversion/src/test/java/com/baeldung/datetolocaldate/LocalDateTimeToDateConverterUnitTest.java rename to core-java-modules/core-java-datetime-conversion/src/test/java/com/baeldung/datetolocaldate/LocalDateTimeToDateConverterUnitTest.java diff --git a/core-java-modules/core-java-datetime/java-dates-conversion/src/test/java/com/baeldung/datetolocaldate/LocalDateToDateConverterUnitTest.java b/core-java-modules/core-java-datetime-conversion/src/test/java/com/baeldung/datetolocaldate/LocalDateToDateConverterUnitTest.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-conversion/src/test/java/com/baeldung/datetolocaldate/LocalDateToDateConverterUnitTest.java rename to core-java-modules/core-java-datetime-conversion/src/test/java/com/baeldung/datetolocaldate/LocalDateToDateConverterUnitTest.java diff --git a/core-java-modules/core-java-datetime/java-dates-conversion/src/test/java/com/baeldung/xmlgregoriancalendar/XmlGregorianCalendarConverterUnitTest.java b/core-java-modules/core-java-datetime-conversion/src/test/java/com/baeldung/xmlgregoriancalendar/XmlGregorianCalendarConverterUnitTest.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-conversion/src/test/java/com/baeldung/xmlgregoriancalendar/XmlGregorianCalendarConverterUnitTest.java rename to core-java-modules/core-java-datetime-conversion/src/test/java/com/baeldung/xmlgregoriancalendar/XmlGregorianCalendarConverterUnitTest.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/.gitignore b/core-java-modules/core-java-datetime-string/.gitignore similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/.gitignore rename to core-java-modules/core-java-datetime-string/.gitignore diff --git a/core-java-modules/core-java-datetime/java-dates-string/README.md b/core-java-modules/core-java-datetime-string/README.md similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/README.md rename to core-java-modules/core-java-datetime-string/README.md diff --git a/core-java-modules/core-java-datetime/java-dates-string/pom.xml b/core-java-modules/core-java-datetime-string/pom.xml similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/pom.xml rename to core-java-modules/core-java-datetime-string/pom.xml diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/date/validation/DateValidator.java b/core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/date/validation/DateValidator.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/date/validation/DateValidator.java rename to core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/date/validation/DateValidator.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/date/validation/DateValidatorUsingApacheValidator.java b/core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/date/validation/DateValidatorUsingApacheValidator.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/date/validation/DateValidatorUsingApacheValidator.java rename to core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/date/validation/DateValidatorUsingApacheValidator.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/date/validation/DateValidatorUsingDateFormat.java b/core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/date/validation/DateValidatorUsingDateFormat.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/date/validation/DateValidatorUsingDateFormat.java rename to core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/date/validation/DateValidatorUsingDateFormat.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/date/validation/DateValidatorUsingDateTimeFormatter.java b/core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/date/validation/DateValidatorUsingDateTimeFormatter.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/date/validation/DateValidatorUsingDateTimeFormatter.java rename to core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/date/validation/DateValidatorUsingDateTimeFormatter.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/date/validation/DateValidatorUsingLocalDate.java b/core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/date/validation/DateValidatorUsingLocalDate.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/date/validation/DateValidatorUsingLocalDate.java rename to core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/date/validation/DateValidatorUsingLocalDate.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/DateMatcher.java b/core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/regexp/datepattern/DateMatcher.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/DateMatcher.java rename to core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/regexp/datepattern/DateMatcher.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/FormattedDateMatcher.java b/core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/regexp/datepattern/FormattedDateMatcher.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/FormattedDateMatcher.java rename to core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/regexp/datepattern/FormattedDateMatcher.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/RangedDateMatcher.java b/core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/regexp/datepattern/RangedDateMatcher.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/RangedDateMatcher.java rename to core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/regexp/datepattern/RangedDateMatcher.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/February29thMatcher.java b/core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/February29thMatcher.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/February29thMatcher.java rename to core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/February29thMatcher.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/FebruaryGeneralMatcher.java b/core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/FebruaryGeneralMatcher.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/FebruaryGeneralMatcher.java rename to core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/FebruaryGeneralMatcher.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/GregorianDateMatcher.java b/core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/GregorianDateMatcher.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/GregorianDateMatcher.java rename to core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/GregorianDateMatcher.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf30DaysMatcher.java b/core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf30DaysMatcher.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf30DaysMatcher.java rename to core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf30DaysMatcher.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf31DaysMatcher.java b/core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf31DaysMatcher.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf31DaysMatcher.java rename to core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf31DaysMatcher.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/optmization/OptimizedMatcher.java b/core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/regexp/datepattern/optmization/OptimizedMatcher.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/regexp/datepattern/optmization/OptimizedMatcher.java rename to core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/regexp/datepattern/optmization/OptimizedMatcher.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplay.java b/core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplay.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplay.java rename to core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplay.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayApp.java b/core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayApp.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayApp.java rename to core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayApp.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayJava7.java b/core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayJava7.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayJava7.java rename to core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayJava7.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayJava7App.java b/core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayJava7App.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayJava7App.java rename to core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/timezonedisplay/TimezoneDisplayJava7App.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/zonedatetime/OffsetDateTimeExample.java b/core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/zonedatetime/OffsetDateTimeExample.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/zonedatetime/OffsetDateTimeExample.java rename to core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/zonedatetime/OffsetDateTimeExample.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/zonedatetime/OffsetTimeExample.java b/core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/zonedatetime/OffsetTimeExample.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/zonedatetime/OffsetTimeExample.java rename to core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/zonedatetime/OffsetTimeExample.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/zonedatetime/ZoneDateTimeExample.java b/core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/zonedatetime/ZoneDateTimeExample.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/main/java/com/baeldung/zonedatetime/ZoneDateTimeExample.java rename to core-java-modules/core-java-datetime-string/src/main/java/com/baeldung/zonedatetime/ZoneDateTimeExample.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/date/StringToDateUnitTest.java b/core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/date/StringToDateUnitTest.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/date/StringToDateUnitTest.java rename to core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/date/StringToDateUnitTest.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/date/validation/DateValidatorUsingApacheValidatorUnitTest.java b/core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/date/validation/DateValidatorUsingApacheValidatorUnitTest.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/date/validation/DateValidatorUsingApacheValidatorUnitTest.java rename to core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/date/validation/DateValidatorUsingApacheValidatorUnitTest.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/date/validation/DateValidatorUsingDateFormatUnitTest.java b/core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/date/validation/DateValidatorUsingDateFormatUnitTest.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/date/validation/DateValidatorUsingDateFormatUnitTest.java rename to core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/date/validation/DateValidatorUsingDateFormatUnitTest.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/date/validation/DateValidatorUsingDateTimeFormatterUnitTest.java b/core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/date/validation/DateValidatorUsingDateTimeFormatterUnitTest.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/date/validation/DateValidatorUsingDateTimeFormatterUnitTest.java rename to core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/date/validation/DateValidatorUsingDateTimeFormatterUnitTest.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/date/validation/DateValidatorUsingLocalDateUnitTest.java b/core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/date/validation/DateValidatorUsingLocalDateUnitTest.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/date/validation/DateValidatorUsingLocalDateUnitTest.java rename to core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/date/validation/DateValidatorUsingLocalDateUnitTest.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/datetime/DateTimeFormatterUnitTest.java b/core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/datetime/DateTimeFormatterUnitTest.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/datetime/DateTimeFormatterUnitTest.java rename to core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/datetime/DateTimeFormatterUnitTest.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/FormattedDateMatcherUnitTest.java b/core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/regexp/datepattern/FormattedDateMatcherUnitTest.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/FormattedDateMatcherUnitTest.java rename to core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/regexp/datepattern/FormattedDateMatcherUnitTest.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/RangedDateMatcherUnitTest.java b/core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/regexp/datepattern/RangedDateMatcherUnitTest.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/RangedDateMatcherUnitTest.java rename to core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/regexp/datepattern/RangedDateMatcherUnitTest.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/February29thMatcherUnitTest.java b/core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/February29thMatcherUnitTest.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/February29thMatcherUnitTest.java rename to core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/February29thMatcherUnitTest.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/FebruaryGeneralMatcherUnitTest.java b/core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/FebruaryGeneralMatcherUnitTest.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/FebruaryGeneralMatcherUnitTest.java rename to core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/FebruaryGeneralMatcherUnitTest.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/GregorianDateMatcherUnitTest.java b/core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/GregorianDateMatcherUnitTest.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/GregorianDateMatcherUnitTest.java rename to core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/GregorianDateMatcherUnitTest.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf30DaysMatcherUnitTest.java b/core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf30DaysMatcherUnitTest.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf30DaysMatcherUnitTest.java rename to core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf30DaysMatcherUnitTest.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf31DaysMatcherUnitTest.java b/core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf31DaysMatcherUnitTest.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf31DaysMatcherUnitTest.java rename to core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf31DaysMatcherUnitTest.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/testhelper/GregorianDateTestHelper.java b/core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/testhelper/GregorianDateTestHelper.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/testhelper/GregorianDateTestHelper.java rename to core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/regexp/datepattern/gregorian/testhelper/GregorianDateTestHelper.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/simpledateformat/SimpleDateFormatUnitTest.java b/core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/simpledateformat/SimpleDateFormatUnitTest.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/simpledateformat/SimpleDateFormatUnitTest.java rename to core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/simpledateformat/SimpleDateFormatUnitTest.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/timestamp/StringToTimestampConverterUnitTest.java b/core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/timestamp/StringToTimestampConverterUnitTest.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/timestamp/StringToTimestampConverterUnitTest.java rename to core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/timestamp/StringToTimestampConverterUnitTest.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/timestamp/TimestampToStringConverterTest.java b/core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/timestamp/TimestampToStringConverterTest.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/timestamp/TimestampToStringConverterTest.java rename to core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/timestamp/TimestampToStringConverterTest.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/zonedatetime/OffsetDateTimeExampleUnitTest.java b/core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/zonedatetime/OffsetDateTimeExampleUnitTest.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/zonedatetime/OffsetDateTimeExampleUnitTest.java rename to core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/zonedatetime/OffsetDateTimeExampleUnitTest.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/zonedatetime/OffsetTimeExampleUnitTest.java b/core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/zonedatetime/OffsetTimeExampleUnitTest.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/zonedatetime/OffsetTimeExampleUnitTest.java rename to core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/zonedatetime/OffsetTimeExampleUnitTest.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/zonedatetime/ZoneDateTimeExampleUnitTest.java b/core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/zonedatetime/ZoneDateTimeExampleUnitTest.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/zonedatetime/ZoneDateTimeExampleUnitTest.java rename to core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/zonedatetime/ZoneDateTimeExampleUnitTest.java diff --git a/core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/zonedatetime/ZonedDateTimeUnitTest.java b/core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/zonedatetime/ZonedDateTimeUnitTest.java similarity index 100% rename from core-java-modules/core-java-datetime/java-dates-string/src/test/java/com/baeldung/zonedatetime/ZonedDateTimeUnitTest.java rename to core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/zonedatetime/ZonedDateTimeUnitTest.java diff --git a/core-java-modules/core-java-datetime/README.md b/core-java-modules/core-java-datetime/README.md deleted file mode 100644 index ddb2d336b5..0000000000 --- a/core-java-modules/core-java-datetime/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Java Date and Time - -This module contains articles about date and time in Java. It's split in several submodules. diff --git a/core-java-modules/core-java-datetime/pom.xml b/core-java-modules/core-java-datetime/pom.xml deleted file mode 100644 index cab5c9fe98..0000000000 --- a/core-java-modules/core-java-datetime/pom.xml +++ /dev/null @@ -1,23 +0,0 @@ - - 4.0.0 - com.baeldung.exception.numberformat - core-java-datetime - 0.0.1-SNAPSHOT - pom - core-java-datetime - - - com.baeldung - parent-java - 0.0.1-SNAPSHOT - ../../parent-java - - - - java-dates-conversion - java-dates-string - - - diff --git a/core-java-modules/pom.xml b/core-java-modules/pom.xml index 082ffbef53..7e646d4bc0 100644 --- a/core-java-modules/pom.xml +++ b/core-java-modules/pom.xml @@ -20,6 +20,8 @@ core-java-lang-operators core-java-networking-2 core-java-security-manager + core-java-datetime-conversion + core-java-datetime-string From 850b6bf2f879f927a0f18c70b08c18c2bc1847c9 Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Fri, 4 Oct 2019 21:56:40 +0200 Subject: [PATCH 021/265] #BAEL-16646 flatten java-datetime modules --- core-java-modules/core-java-datetime-conversion/pom.xml | 8 ++++---- core-java-modules/core-java-datetime-string/pom.xml | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/core-java-modules/core-java-datetime-conversion/pom.xml b/core-java-modules/core-java-datetime-conversion/pom.xml index b56cadc340..a93eca00af 100644 --- a/core-java-modules/core-java-datetime-conversion/pom.xml +++ b/core-java-modules/core-java-datetime-conversion/pom.xml @@ -1,16 +1,16 @@ 4.0.0 - java-dates-conversion + core-java-datetime-conversion ${project.parent.version} - java-dates-conversion + core-java-datetime-conversion jar com.baeldung parent-java 0.0.1-SNAPSHOT - ../../../parent-java + ../../parent-java @@ -39,7 +39,7 @@ - java-dates-conversion + core-java-datetime-conversion src/main/resources diff --git a/core-java-modules/core-java-datetime-string/pom.xml b/core-java-modules/core-java-datetime-string/pom.xml index 714a65195a..b4e7aff524 100644 --- a/core-java-modules/core-java-datetime-string/pom.xml +++ b/core-java-modules/core-java-datetime-string/pom.xml @@ -1,16 +1,16 @@ 4.0.0 - java-dates-string + core-java-datetime-string ${project.parent.version} - java-dates-string + core-java-datetime-string jar com.baeldung parent-java 0.0.1-SNAPSHOT - ../../../parent-java + ../../parent-java @@ -51,7 +51,7 @@ - java-dates-string + core-java-datetime-string src/main/resources From c3f60b7f1490d6b55bda03d909944621e2b04fb3 Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Sun, 6 Oct 2019 08:34:37 +0200 Subject: [PATCH 022/265] #BAEL-16646 reindent parent pom.xml with spaces. Remove .gitignore files in datetime modules. --- .../core-java-datetime-conversion/.gitignore | 26 - .../core-java-datetime-string/.gitignore | 26 - pom.xml | 3001 +++++++++-------- 3 files changed, 1501 insertions(+), 1552 deletions(-) delete mode 100644 core-java-modules/core-java-datetime-conversion/.gitignore delete mode 100644 core-java-modules/core-java-datetime-string/.gitignore diff --git a/core-java-modules/core-java-datetime-conversion/.gitignore b/core-java-modules/core-java-datetime-conversion/.gitignore deleted file mode 100644 index 3de4cc647e..0000000000 --- a/core-java-modules/core-java-datetime-conversion/.gitignore +++ /dev/null @@ -1,26 +0,0 @@ -*.class - -0.* - -#folders# -/target -/neoDb* -/data -/src/main/webapp/WEB-INF/classes -*/META-INF/* -.resourceCache - -# Packaged files # -*.jar -*.war -*.ear - -# Files generated by integration tests -*.txt -backup-pom.xml -/bin/ -/temp - -#IntelliJ specific -.idea/ -*.iml \ No newline at end of file diff --git a/core-java-modules/core-java-datetime-string/.gitignore b/core-java-modules/core-java-datetime-string/.gitignore deleted file mode 100644 index 3de4cc647e..0000000000 --- a/core-java-modules/core-java-datetime-string/.gitignore +++ /dev/null @@ -1,26 +0,0 @@ -*.class - -0.* - -#folders# -/target -/neoDb* -/data -/src/main/webapp/WEB-INF/classes -*/META-INF/* -.resourceCache - -# Packaged files # -*.jar -*.war -*.ear - -# Files generated by integration tests -*.txt -backup-pom.xml -/bin/ -/temp - -#IntelliJ specific -.idea/ -*.iml \ No newline at end of file diff --git a/pom.xml b/pom.xml index cb3c7c06c4..adf55b762a 100644 --- a/pom.xml +++ b/pom.xml @@ -1,415 +1,416 @@ - 4.0.0 + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 - com.baeldung - parent-modules - 1.0.0-SNAPSHOT - parent-modules - pom + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + parent-modules + pom - - - - org.slf4j - slf4j-api - ${org.slf4j.version} - - - ch.qos.logback - logback-classic - ${logback.version} - - - ch.qos.logback - logback-core - ${logback.version} - - - org.slf4j - jcl-over-slf4j - ${org.slf4j.version} - + + + + org.slf4j + slf4j-api + ${org.slf4j.version} + + + ch.qos.logback + logback-classic + ${logback.version} + + + ch.qos.logback + logback-core + ${logback.version} + + + org.slf4j + jcl-over-slf4j + ${org.slf4j.version} + - - - junit - junit - ${junit.version} - test - - - org.junit.jupiter - junit-jupiter-engine - ${junit-jupiter.version} - test - - - org.junit.jupiter - junit-jupiter-params - ${junit-jupiter.version} - test - - - org.junit.jupiter - junit-jupiter-api - ${junit-jupiter.version} - test - - - org.hamcrest - hamcrest-core - ${org.hamcrest.version} - test - - - org.hamcrest - hamcrest-library - ${org.hamcrest.version} - test - - - org.hamcrest - hamcrest-all - ${org.hamcrest.version} - test - - - org.mockito - mockito-core - ${mockito.version} - test - - - org.apache.maven.surefire - surefire-logger-api - ${maven-surefire-plugin.version} - - test - true - - + + + junit + junit + ${junit.version} + test + + + org.junit.jupiter + junit-jupiter-engine + ${junit-jupiter.version} + test + + + org.junit.jupiter + junit-jupiter-params + ${junit-jupiter.version} + test + + + org.junit.jupiter + junit-jupiter-api + ${junit-jupiter.version} + test + + + org.hamcrest + hamcrest-core + ${org.hamcrest.version} + test + + + org.hamcrest + hamcrest-library + ${org.hamcrest.version} + test + + + org.hamcrest + hamcrest-all + ${org.hamcrest.version} + test + + + org.mockito + mockito-core + ${mockito.version} + test + + + org.apache.maven.surefire + surefire-logger-api + ${maven-surefire-plugin.version} + + test + true + + - - - - org.codehaus.mojo - exec-maven-plugin - ${exec-maven-plugin.version} - - maven - - - - org.apache.maven.plugins - maven-surefire-plugin - ${maven-surefire-plugin.version} - - 3 - true - - **/*IntegrationTest.java - **/*IntTest.java - **/*LongRunningUnitTest.java - **/*ManualTest.java - **/JdbcTest.java - **/*LiveTest.java - - - - - org.junit.platform - junit-platform-surefire-provider - ${junit-platform.version} - - - org.junit.jupiter - junit-jupiter-engine - ${junit-jupiter.version} - - - org.junit.vintage - junit-vintage-engine - ${junit-jupiter.version} - - - - - org.apache.maven.plugins - maven-compiler-plugin - ${maven-compiler-plugin.version} - - ${java.version} - ${java.version} - - - - org.apache.maven.plugins - maven-pmd-plugin - ${maven-pmd-plugin.version} - - - org.baeldung.pmd - custom-pmd - ${custom-pmd.version} - - - - 5 - false - true - true - true - true - UTF-8 - ${java.version} - - ${tutorialsproject.basedir}/baeldung-pmd-rules.xml - - - target/generated-sources - - - - - compile - - check - - - - - - org.commonjava.maven.plugins - directory-maven-plugin - ${directory-maven-plugin.version} - - - directories - - directory-of - - validate - - tutorialsproject.basedir - - com.baeldung - parent-modules - - - - - - - org.apache.maven.plugins - maven-install-plugin - ${maven-install-plugin.version} - - org.baeldung.pmd - custom-pmd - ${custom-pmd.version} - jar - ${tutorialsproject.basedir}/custom-pmd-${custom-pmd.version}.jar - true - - - - install-jar-lib - - install-file - - validate - - - - - maven-war-plugin - ${maven-war-plugin.version} - - + + + + org.codehaus.mojo + exec-maven-plugin + ${exec-maven-plugin.version} + + maven + + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + 3 + true + + **/*IntegrationTest.java + **/*IntTest.java + **/*LongRunningUnitTest.java + **/*ManualTest.java + **/JdbcTest.java + **/*LiveTest.java + + + + + org.junit.platform + junit-platform-surefire-provider + ${junit-platform.version} + + + org.junit.jupiter + junit-jupiter-engine + ${junit-jupiter.version} + + + org.junit.vintage + junit-vintage-engine + ${junit-jupiter.version} + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + ${java.version} + ${java.version} + + + + org.apache.maven.plugins + maven-pmd-plugin + ${maven-pmd-plugin.version} + + + org.baeldung.pmd + custom-pmd + ${custom-pmd.version} + + + + 5 + false + true + true + true + true + UTF-8 + ${java.version} + + ${tutorialsproject.basedir}/baeldung-pmd-rules.xml + + + target/generated-sources + + + + + compile + + check + + + + + + org.commonjava.maven.plugins + directory-maven-plugin + ${directory-maven-plugin.version} + + + directories + + directory-of + + validate + + tutorialsproject.basedir + + com.baeldung + parent-modules + + + + + + + org.apache.maven.plugins + maven-install-plugin + ${maven-install-plugin.version} + + org.baeldung.pmd + custom-pmd + ${custom-pmd.version} + jar + ${tutorialsproject.basedir}/custom-pmd-${custom-pmd.version}.jar + true + + + + install-jar-lib + + install-file + + validate + + + + + maven-war-plugin + ${maven-war-plugin.version} + + - - - com.vackosar.gitflowincrementalbuilder - gitflow-incremental-builder - ${gitflow-incremental-builder.version} - - - - - - - org.eclipse.m2e - lifecycle-mapping - 1.0.0 - - - - - - - org.commonjava.maven.plugins - - - directory-maven-plugin - - - [0.3.1,) - - - directory-of - - - - - - - - - - org.apache.maven.plugins - - - maven-install-plugin - - - [2.5.1,) - - - install-file - - - - - - - - - - - - - + + + com.vackosar.gitflowincrementalbuilder + gitflow-incremental-builder + ${gitflow-incremental-builder.version} + + + + + + + org.eclipse.m2e + lifecycle-mapping + 1.0.0 + + + + + + + org.commonjava.maven.plugins + + + directory-maven-plugin + + + [0.3.1,) + + + directory-of + + + + + + + + + + org.apache.maven.plugins + + + maven-install-plugin + + + [2.5.1,) + + + install-file + + + + + + + + + + + + + - + - - default-first - - + + default-first + + - - org.apache.maven.plugins - maven-surefire-plugin - ${maven-surefire-plugin.version} - - 3 - true - - SpringContextTest - **/*UnitTest - - - **/*IntegrationTest.java - **/*IntTest.java - **/*LongRunningUnitTest.java - **/*ManualTest.java - **/JdbcTest.java - **/*LiveTest.java - - - + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + 3 + true + + SpringContextTest + **/*UnitTest + + + **/*IntegrationTest.java + **/*IntTest.java + **/*LongRunningUnitTest.java + **/*ManualTest.java + **/JdbcTest.java + **/*LiveTest.java + + + - - + + - - parent-boot-1 - parent-boot-2 - parent-spring-4 - parent-spring-5 - parent-java - parent-kotlin - - akka-streams - algorithms-genetic - algorithms-miscellaneous-1 - algorithms-miscellaneous-2 - algorithms-miscellaneous-3 - algorithms-miscellaneous-4 - algorithms-miscellaneous-5 - algorithms-sorting - animal-sniffer-mvn-plugin - annotations - antlr - apache-avro - apache-bval - apache-curator - apache-cxf - apache-fop - apache-geode - apache-meecrowave - apache-olingo/olingo2 - apache-opennlp - apache-poi - apache-pulsar - apache-shiro - apache-solrj - apache-spark - apache-thrift - apache-tika - apache-velocity - apache-zookeeper - asciidoctor - asm - atomix - autovalue - aws - aws-lambda - axon - azure + + parent-boot-1 + parent-boot-2 + parent-spring-4 + parent-spring-5 + parent-java + parent-kotlin + + akka-streams + algorithms-genetic + algorithms-miscellaneous-1 + algorithms-miscellaneous-2 + algorithms-miscellaneous-3 + algorithms-miscellaneous-4 + algorithms-miscellaneous-5 + algorithms-sorting + animal-sniffer-mvn-plugin + annotations + antlr + apache-avro + apache-bval + apache-curator + apache-cxf + apache-fop + apache-geode + apache-meecrowave + apache-olingo/olingo2 + apache-opennlp + apache-poi + apache-pulsar + apache-shiro + apache-solrj + apache-spark + apache-thrift + apache-tika + apache-velocity + apache-zookeeper + asciidoctor + asm + atomix + autovalue + aws + aws-lambda + axon + azure - bazel - blade - bootique + bazel + blade + bootique - cas - cdi - checker-plugin - cloud-foundry-uaa/cf-uaa-oauth2-client - cloud-foundry-uaa/cf-uaa-oauth2-resource-server - core-groovy - core-groovy-2 - core-groovy-collections - - - - core-java-modules/core-java-8 - core-java-modules/core-java-8-2 - core-java-modules/core-java-annotations - core-java-modules/core-java-streams - core-java-modules/core-java-function - core-java-modules/core-java-lang-math - core-java-modules/core-java-datetime - core-java-modules/core-java-text - core-java-modules/core-java-lambdas + cas + cdi + checker-plugin + cloud-foundry-uaa/cf-uaa-oauth2-client + cloud-foundry-uaa/cf-uaa-oauth2-resource-server + core-groovy + core-groovy-2 + core-groovy-collections + + + + core-java-modules/core-java-8 + core-java-modules/core-java-8-2 + core-java-modules/core-java-annotations + core-java-modules/core-java-streams + core-java-modules/core-java-function + core-java-modules/core-java-lang-math + core-java-modules/core-java-datetime-conversion + core-java-modules/core-java-datetime-string + core-java-modules/core-java-text + core-java-modules/core-java-lambdas core-java-modules/core-java-arrays core-java-modules/core-java-arrays-2 core-java-modules/core-java-collections - core-java-modules/core-java-collections-2 - core-java-modules/core-java-collections-3 + core-java-modules/core-java-collections-2 + core-java-modules/core-java-collections-3 core-java-modules/core-java-collections-list core-java-modules/core-java-collections-list-2 core-java-modules/core-java-collections-list-3 core-java-modules/core-java-collections-array-list core-java-modules/core-java-collections-set core-java-modules/core-java-concurrency-basic - core-java-modules/core-java-concurrency-basic-2 + core-java-modules/core-java-concurrency-basic-2 core-java-modules/core-java-concurrency-collections core-java-modules/core-java-io core-java-modules/core-java-io-files @@ -418,10 +419,10 @@ core-java-modules/core-java-lang-syntax core-java-modules/core-java-lang-syntax-2 core-java-modules/core-java-lang - core-java-modules/core-java-lang-2 + core-java-modules/core-java-lang-2 core-java-modules/core-java-lang-oop core-java-modules/core-java-lang-oop-2 - core-java-modules/core-java-lang-oop-3 + core-java-modules/core-java-lang-oop-3 core-java-modules core-java-modules/core-java-networking core-java-modules/core-java-perf @@ -456,9 +457,9 @@ grpc gson guava - guava-io + guava-io guava-collections - guava-collections-set + guava-collections-set guava-modules guice @@ -479,11 +480,11 @@ java-collections-maps java-collections-maps-2 java-jdi - - + + java-lite - java-math + java-math java-numbers java-numbers-2 java-rmi @@ -502,1178 +503,1178 @@ jaxb - jee-7-security - jee-kotlin - jersey - jgit - jgroups - jhipster-5 - jib - jjwt - jmeter - jmh - jni - jooby - jsf - json - json-path - jsoup - jta + jee-7-security + jee-kotlin + jersey + jgit + jgroups + jhipster-5 + jib + jjwt + jmeter + jmh + jni + jooby + jsf + json + json-path + jsoup + jta - - kotlin-libraries - kotlin-libraries-2 + + kotlin-libraries + kotlin-libraries-2 - - libraries - libraries-2 - libraries-data - libraries-data-2 - libraries-apache-commons - libraries-apache-commons-collections - libraries-apache-commons-io - libraries-primitive - libraries-testing - libraries-security - libraries-server - libraries-http - libraries-io - linkrest - logging-modules - lombok - lucene + + libraries + libraries-2 + libraries-data + libraries-data-2 + libraries-apache-commons + libraries-apache-commons-collections + libraries-apache-commons-io + libraries-primitive + libraries-testing + libraries-security + libraries-server + libraries-http + libraries-io + linkrest + logging-modules + lombok + lucene - mapstruct - - maven-all/maven - maven-all/maven-war-plugin - maven-all/profiles - maven-all/versions-maven-plugin - maven-archetype - - maven-polyglot/maven-polyglot-json-extension - - mesos-marathon - metrics - - microprofile + mapstruct + + maven-all/maven + maven-all/maven-war-plugin + maven-all/profiles + maven-all/versions-maven-plugin + maven-archetype + + maven-polyglot/maven-polyglot-json-extension + + mesos-marathon + metrics + + microprofile ml - msf4j - - mustache - mybatis - - - optaplanner - orika - osgi - - patterns - pdf - performance-tests - - protobuffer - - persistence-modules - quarkus - - rabbitmq - - ratpack - reactor-core - resteasy - restx - - rule-engines - rsocket - rxjava - rxjava-2 - software-security/sql-injection-samples - - tensorflow-java - spf4j - spring-boot-flowable - spring-boot-mvc-2 - spring-boot-performance - spring-boot-properties - - spring-security-kerberos - oauth2-framework-impl - - spring-boot-nashorn - java-blockchain - - - - - - - default-second - - - - - org.apache.maven.plugins - maven-surefire-plugin - ${maven-surefire-plugin.version} - - 3 - true - - SpringContextTest - **/*UnitTest - - - **/*IntegrationTest.java - **/*IntTest.java - **/*LongRunningUnitTest.java - **/*ManualTest.java - **/*JdbcTest.java - **/*LiveTest.java - - - - - - - - - parent-boot-1 - parent-boot-2 - parent-spring-4 - parent-spring-5 - parent-java - parent-kotlin - - saas - spark-java - - spring-4 - - spring-5 - spring-5-webflux - spring-5-data-reactive - spring-5-mvc - spring-5-reactive - spring-5-reactive-2 - spring-5-reactive-client - spring-5-reactive-oauth - spring-5-reactive-security - spring-5-security - spring-5-security-oauth - spring-5-security-cognito - - spring-activiti - spring-akka - spring-all - spring-amqp - spring-aop - spring-apache-camel - spring-batch - spring-bom - - spring-boot - spring-boot-admin - spring-boot-angular - spring-boot-autoconfiguration - spring-boot-bootstrap - spring-boot-camel - - spring-boot-client - - spring-boot-crud - spring-boot-ctx-fluent - spring-boot-custom-starter - spring-boot-disable-console-logging - - spring-boot-jasypt - spring-boot-keycloak - spring-boot-kotlin - spring-boot-logging-log4j2 - spring-boot-management - spring-boot-mvc - spring-boot-mvc-birt - spring-boot-ops - spring-boot-ops-2 - spring-boot-rest - spring-boot-data - spring-boot-parent - spring-boot-property-exp - spring-boot-security - spring-boot-testing - spring-boot-vue - spring-boot-libraries - - - spring-cloud - spring-cloud-bus - - spring-cloud-data-flow - - spring-core - spring-core-2 - spring-cucumber - - spring-data-rest - spring-data-rest-querydsl - spring-dispatcher-servlet - spring-drools - spring-di - - spring-ehcache - spring-ejb - spring-exceptions - - spring-freemarker - - spring-groovy - - spring-integration - - spring-jenkins-pipeline - spring-jersey - spring-jinq - spring-jms - spring-jooq - - spring-kafka - spring-katharsis - - spring-ldap - - spring-mobile - spring-mockito - spring-mvc-forms-jsp - spring-mvc-forms-thymeleaf - spring-mvc-java - spring-mvc-kotlin - spring-mvc-simple - spring-mvc-simple-2 - spring-mvc-velocity - spring-mvc-webflow - spring-mvc-xml - - spring-protobuf - - - spring-quartz - - spring-reactive-kotlin - spring-reactor - spring-remoting - spring-rest - spring-rest-angular - spring-rest-compress - spring-rest-full - spring-rest-hal-browser - spring-rest-query-language - spring-rest-shell - spring-rest-simple - spring-resttemplate - spring-roo - spring-security-acl - spring-security-angular/server - spring-security-cache-control - - spring-security-core - spring-security-mvc-boot - spring-security-mvc-custom - spring-security-mvc-digest-auth - spring-security-mvc-jsonview - spring-security-mvc-ldap - spring-security-mvc-login - spring-security-mvc-persisted-remember-me - spring-security-mvc - spring-security-mvc-socket - spring-security-openid - - spring-security-rest - spring-security-rest-basic-auth - spring-security-rest-custom - spring-security-sso - spring-security-stormpath - spring-security-thymeleaf - spring-security-x509 - spring-session - spring-sleuth - spring-soap - spring-social-login - spring-spel - spring-state-machine - spring-static-resources - spring-swagger-codegen - - spring-thymeleaf - - spring-vault - spring-vertx - - spring-webflux-amqp - - spring-zuul - - static-analysis - stripe - structurizr - struts-2 - - testing-modules - - twilio - twitter4j - - undertow - - vertx - vertx-and-rxjava - video-tutorials - vraptor - - wicket - - xml - xstream - - tensorflow-java - spring-boot-flowable - spring-security-kerberos - - spring-boot-nashorn - java-blockchain - - - - - - - spring-context - - - - - org.apache.maven.plugins - maven-surefire-plugin - ${maven-surefire-plugin.version} - - 3 - true - - **/*SpringContextIntegrationTest.java - - - - - - - - - spring-5 - spring-5-data-reactive - spring-5-reactive - spring-5-reactive-2 - spring-5-reactive-client - spring-5-reactive-security - spring-5-security - spring-5-security-oauth - spring-5-security-cognito - spring-activiti - spring-akka - spring-all - spring-aop - spring-apache-camel - spring-batch - spring-bom - spring-boot-admin - spring-boot-bootstrap - spring-boot-bootstrap - spring-boot-camel - spring-boot-client - spring-boot-custom-starter - spring-boot-di - greeter-spring-boot-autoconfigure - greeter-spring-boot-sample-app - persistence-modules/spring-boot-h2/spring-boot-h2-database - spring-boot-jasypt - spring-boot-keycloak - spring-boot-mvc - spring-boot-property-exp - spring-boot-vue - spring-cloud - spring-cloud/spring-cloud-archaius/basic-config - spring-cloud/spring-cloud-archaius/extra-configs - spring-cloud/spring-cloud-bootstrap/config - spring-cloud/spring-cloud-contract - spring-cloud/spring-cloud-gateway - spring-cloud/spring-cloud-kubernetes/demo-backend - spring-cloud/spring-cloud-rest/spring-cloud-rest-config-server - spring-cloud/spring-cloud-ribbon-client - spring-cloud/spring-cloud-security - spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit - spring-cloud/spring-cloud-task/springcloudtasksink - spring-cloud/spring-cloud-zookeeper - spring-cloud/spring-cloud-bus/spring-cloud-config-server - spring-cloud/spring-cloud-data-flow/log-sink - spring-cloud/spring-cloud-data-flow/time-processor - spring-cloud/spring-cloud-data-flow/time-source - spring-cucumber - persistence-modules/spring-data-keyvalue - spring-data-rest - spring-dispatcher-servlet - spring-drools - spring-di - spring-ehcache - spring-freemarker - persistence-modules/spring-hibernate-3 - persistence-modules/spring-hibernate4 - persistence-modules/spring-mybatis - spring-integration - spring-jenkins-pipeline - spring-jersey - spring-jinq - spring-jms - spring-kafka - spring-katharsis - spring-ldap - spring-mobile - spring-mockito - spring-mvc-forms-thymeleaf - spring-mvc-java - spring-mvc-velocity - spring-mvc-webflow - spring-protobuf - spring-quartz - remoting-hessian-burlap/spring-remoting-hessian-burlap-client - remoting-hessian-burlap/remoting-hessian-burlap-server - spring-reactor - spring-remoting/ - spring-remoting/remoting-http/remoting-http-server - spring-remoting/remoting-jms/remoting-jms-client - spring-remoting/remoting-rmi/remoting-rmi-server - spring-rest - spring-rest-angular - spring-rest-compress - spring-rest-full - spring-rest-simple - spring-resttemplate - spring-security-acl - spring-security-angular - spring-security-cache-control - spring-security-core - spring-security-mvc-boot - spring-security-mvc-custom - spring-security-mvc-digest-auth - spring-security-mvc-ldap - spring-security-mvc-persisted-remember-me - spring-security-mvc - spring-security-mvc-socket - spring-security-rest - spring-security-sso - spring-security-thymeleaf/spring-security-thymeleaf-authentication - spring-security-thymeleaf/spring-security-thymeleaf-authorize - spring-security-thymeleaf/spring-security-thymeleaf-config - spring-security-x509 - spring-session/spring-session-jdbc - spring-sleuth - spring-social-login - spring-spel - spring-state-machine - spring-swagger-codegen/spring-swagger-codegen-app - spring-thymeleaf - spring-vault - spring-vertx - spring-zuul/spring-zuul-foos-resource - persistence-modules/hibernate-mapping - persistence-modules/spring-data-dynamodb - persistence-modules/spring-data-eclipselink - persistence-modules/spring-data-solr - persistence-modules/spring-hibernate-5 - - spring-boot-flowable - spring-security-kerberos - spring-boot-nashorn - - - - - - default-heavy - - - - - org.apache.maven.plugins - maven-surefire-plugin - ${maven-surefire-plugin.version} - - 3 - true - - SpringContextTest - **/*UnitTest - - - **/*IntegrationTest.java - **/*IntTest.java - **/*LongRunningUnitTest.java - **/*ManualTest.java - **/*JdbcTest.java - **/*LiveTest.java - - - - - - - - - parent-boot-1 - parent-boot-2 - parent-spring-4 - parent-spring-5 - parent-java - parent-kotlin - - core-java-modules/core-java-concurrency-advanced - core-kotlin - core-kotlin-2 - core-kotlin-io - - jenkins/hello-world - jhipster - jws - - libraries - persistence-modules/hibernate5 - persistence-modules/hibernate-mapping - persistence-modules/java-jpa - persistence-modules/java-jpa-2 - persistence-modules/java-mongodb - persistence-modules/jnosql - - vaadin - vavr - - - - - integration-lite-first - - - - - org.apache.maven.plugins - maven-surefire-plugin - - - **/*ManualTest.java - **/*LiveTest.java - - - **/*IntegrationTest.java - **/*IntTest.java - - - - - - - - parent-boot-1 - parent-boot-2 - parent-spring-4 - parent-spring-5 - parent-java - parent-kotlin - - akka-streams - algorithms-genetic - algorithms-miscellaneous-1 - algorithms-miscellaneous-2 - algorithms-miscellaneous-3 - algorithms-miscellaneous-4 - algorithms-miscellaneous-5 - algorithms-sorting - animal-sniffer-mvn-plugin - annotations - antlr - apache-avro - apache-bval - apache-curator - apache-cxf - apache-fop - apache-geode - apache-meecrowave - apache-olingo/olingo2 - apache-opennlp - apache-poi - apache-pulsar - apache-shiro - apache-solrj - apache-spark - apache-thrift - apache-tika - apache-velocity - apache-zookeeper - asciidoctor - asm - atomix - autovalue - aws - aws-lambda - axon - azure - bazel - bootique - - cas - cdi - checker-plugin - cloud-foundry-uaa/cf-uaa-oauth2-client - cloud-foundry-uaa/cf-uaa-oauth2-resource-server - core-groovy - core-groovy-2 - core-groovy-collections - - - core-java-modules/core-java-8 - core-java-modules/core-java-8-2 - core-java-modules/core-java-annotations - core-java-modules/core-java-streams - core-java-modules/core-java-function - core-java-modules/core-java-lang-math - core-java-modules/core-java-datetime - core-java-modules/core-java-text - - - core-java-modules/core-java-arrays - core-java-modules/core-java-arrays-2 - core-java-modules/core-java-collections - core-java-modules/core-java-collections-2 - core-java-modules/core-java-collections-3 - core-java-modules/core-java-collections-list - core-java-modules/core-java-collections-list-2 - core-java-modules/core-java-collections-list-3 - core-java-modules/core-java-collections-array-list - core-java-modules/core-java-collections-set - core-java-modules/core-java-concurrency-basic - core-java-modules/core-java-concurrency-basic-2 - core-java-modules/core-java-concurrency-collections - core-java-modules/core-java-io - core-java-modules/core-java-io-files - core-java-modules/core-java-nio - core-java-modules/core-java-security - core-java-modules/core-java-lang-syntax - core-java-modules/core-java-lang-syntax-2 - core-java-modules/core-java-lang - core-java-modules/core-java-lang-2 - core-java-modules/core-java-lang-oop - core-java-modules/core-java-lang-oop-2 - core-java-modules/core-java-lang-oop-3 - core-java-modules - core-java-modules/core-java-networking - core-java-modules/core-java-perf - core-java-modules/core-java-sun - core-scala - couchbase - custom-pmd - - dagger - data-structures - ddd - deeplearning4j - disruptor - dozer - drools - dubbo - - ethereum - - feign - flyway-cdi-extension - - geotools - google-cloud - google-web-toolkit - - - graphql/graphql-java - grpc - gson - guava - guava-io - guava-collections - guava-collections-set - guava-modules - - guice - - hazelcast - helidon - httpclient - httpclient-simple - hystrix - - image-processing - immutables - - jackson - jackson-2 - jackson-simple - java-collections-conversions - java-collections-maps - java-collections-maps-2 - java-jdi - - java-ee-8-security-api - java-lite - java-math - java-numbers - java-numbers-2 - java-rmi - java-spi - java-streams - - java-strings - java-strings-2 - java-strings-3 - java-strings-ops - java-vavr-stream - java-websocket - javafx - javax-servlets - javaxval - jaxb - + mustache + mybatis + + + optaplanner + orika + osgi + + patterns + pdf + performance-tests + + protobuffer + + persistence-modules + quarkus + + rabbitmq + + ratpack + reactor-core + resteasy + restx + + rule-engines + rsocket + rxjava + rxjava-2 + software-security/sql-injection-samples + + tensorflow-java + spf4j + spring-boot-flowable + spring-boot-mvc-2 + spring-boot-performance + spring-boot-properties + + spring-security-kerberos + oauth2-framework-impl + + spring-boot-nashorn + java-blockchain + + + + + + + default-second + + + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + 3 + true + + SpringContextTest + **/*UnitTest + + + **/*IntegrationTest.java + **/*IntTest.java + **/*LongRunningUnitTest.java + **/*ManualTest.java + **/*JdbcTest.java + **/*LiveTest.java + + + + + + + + + parent-boot-1 + parent-boot-2 + parent-spring-4 + parent-spring-5 + parent-java + parent-kotlin + + saas + spark-java + + spring-4 + + spring-5 + spring-5-webflux + spring-5-data-reactive + spring-5-mvc + spring-5-reactive + spring-5-reactive-2 + spring-5-reactive-client + spring-5-reactive-oauth + spring-5-reactive-security + spring-5-security + spring-5-security-oauth + spring-5-security-cognito + + spring-activiti + spring-akka + spring-all + spring-amqp + spring-aop + spring-apache-camel + spring-batch + spring-bom + + spring-boot + spring-boot-admin + spring-boot-angular + spring-boot-autoconfiguration + spring-boot-bootstrap + spring-boot-camel + + spring-boot-client + + spring-boot-crud + spring-boot-ctx-fluent + spring-boot-custom-starter + spring-boot-disable-console-logging + + spring-boot-jasypt + spring-boot-keycloak + spring-boot-kotlin + spring-boot-logging-log4j2 + spring-boot-management + spring-boot-mvc + spring-boot-mvc-birt + spring-boot-ops + spring-boot-ops-2 + spring-boot-rest + spring-boot-data + spring-boot-parent + spring-boot-property-exp + spring-boot-security + spring-boot-testing + spring-boot-vue + spring-boot-libraries + + + spring-cloud + spring-cloud-bus + + spring-cloud-data-flow + + spring-core + spring-core-2 + spring-cucumber + + spring-data-rest + spring-data-rest-querydsl + spring-dispatcher-servlet + spring-drools + spring-di + + spring-ehcache + spring-ejb + spring-exceptions + + spring-freemarker + + spring-groovy + + spring-integration + + spring-jenkins-pipeline + spring-jersey + spring-jinq + spring-jms + spring-jooq + + spring-kafka + spring-katharsis + + spring-ldap + + spring-mobile + spring-mockito + spring-mvc-forms-jsp + spring-mvc-forms-thymeleaf + spring-mvc-java + spring-mvc-kotlin + spring-mvc-simple + spring-mvc-simple-2 + spring-mvc-velocity + spring-mvc-webflow + spring-mvc-xml + + spring-protobuf + + + spring-quartz + + spring-reactive-kotlin + spring-reactor + spring-remoting + spring-rest + spring-rest-angular + spring-rest-compress + spring-rest-full + spring-rest-hal-browser + spring-rest-query-language + spring-rest-shell + spring-rest-simple + spring-resttemplate + spring-roo + spring-security-acl + spring-security-angular/server + spring-security-cache-control + + spring-security-core + spring-security-mvc-boot + spring-security-mvc-custom + spring-security-mvc-digest-auth + spring-security-mvc-jsonview + spring-security-mvc-ldap + spring-security-mvc-login + spring-security-mvc-persisted-remember-me + spring-security-mvc + spring-security-mvc-socket + spring-security-openid + + spring-security-rest + spring-security-rest-basic-auth + spring-security-rest-custom + spring-security-sso + spring-security-stormpath + spring-security-thymeleaf + spring-security-x509 + spring-session + spring-sleuth + spring-soap + spring-social-login + spring-spel + spring-state-machine + spring-static-resources + spring-swagger-codegen + + spring-thymeleaf + + spring-vault + spring-vertx + + spring-webflux-amqp + + spring-zuul + + static-analysis + stripe + structurizr + struts-2 + + testing-modules + + twilio + twitter4j + + undertow + + vertx + vertx-and-rxjava + video-tutorials + vraptor + + wicket + + xml + xstream + + tensorflow-java + spring-boot-flowable + spring-security-kerberos + + spring-boot-nashorn + java-blockchain + + + + + + + spring-context + + + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + 3 + true + + **/*SpringContextIntegrationTest.java + + + + + + + + + spring-5 + spring-5-data-reactive + spring-5-reactive + spring-5-reactive-2 + spring-5-reactive-client + spring-5-reactive-security + spring-5-security + spring-5-security-oauth + spring-5-security-cognito + spring-activiti + spring-akka + spring-all + spring-aop + spring-apache-camel + spring-batch + spring-bom + spring-boot-admin + spring-boot-bootstrap + spring-boot-bootstrap + spring-boot-camel + spring-boot-client + spring-boot-custom-starter + spring-boot-di + greeter-spring-boot-autoconfigure + greeter-spring-boot-sample-app + persistence-modules/spring-boot-h2/spring-boot-h2-database + spring-boot-jasypt + spring-boot-keycloak + spring-boot-mvc + spring-boot-property-exp + spring-boot-vue + spring-cloud + spring-cloud/spring-cloud-archaius/basic-config + spring-cloud/spring-cloud-archaius/extra-configs + spring-cloud/spring-cloud-bootstrap/config + spring-cloud/spring-cloud-contract + spring-cloud/spring-cloud-gateway + spring-cloud/spring-cloud-kubernetes/demo-backend + spring-cloud/spring-cloud-rest/spring-cloud-rest-config-server + spring-cloud/spring-cloud-ribbon-client + spring-cloud/spring-cloud-security + spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit + spring-cloud/spring-cloud-task/springcloudtasksink + spring-cloud/spring-cloud-zookeeper + spring-cloud/spring-cloud-bus/spring-cloud-config-server + spring-cloud/spring-cloud-data-flow/log-sink + spring-cloud/spring-cloud-data-flow/time-processor + spring-cloud/spring-cloud-data-flow/time-source + spring-cucumber + persistence-modules/spring-data-keyvalue + spring-data-rest + spring-dispatcher-servlet + spring-drools + spring-di + spring-ehcache + spring-freemarker + persistence-modules/spring-hibernate-3 + persistence-modules/spring-hibernate4 + persistence-modules/spring-mybatis + spring-integration + spring-jenkins-pipeline + spring-jersey + spring-jinq + spring-jms + spring-kafka + spring-katharsis + spring-ldap + spring-mobile + spring-mockito + spring-mvc-forms-thymeleaf + spring-mvc-java + spring-mvc-velocity + spring-mvc-webflow + spring-protobuf + spring-quartz + remoting-hessian-burlap/spring-remoting-hessian-burlap-client + remoting-hessian-burlap/remoting-hessian-burlap-server + spring-reactor + spring-remoting/ + spring-remoting/remoting-http/remoting-http-server + spring-remoting/remoting-jms/remoting-jms-client + spring-remoting/remoting-rmi/remoting-rmi-server + spring-rest + spring-rest-angular + spring-rest-compress + spring-rest-full + spring-rest-simple + spring-resttemplate + spring-security-acl + spring-security-angular + spring-security-cache-control + spring-security-core + spring-security-mvc-boot + spring-security-mvc-custom + spring-security-mvc-digest-auth + spring-security-mvc-ldap + spring-security-mvc-persisted-remember-me + spring-security-mvc + spring-security-mvc-socket + spring-security-rest + spring-security-sso + spring-security-thymeleaf/spring-security-thymeleaf-authentication + spring-security-thymeleaf/spring-security-thymeleaf-authorize + spring-security-thymeleaf/spring-security-thymeleaf-config + spring-security-x509 + spring-session/spring-session-jdbc + spring-sleuth + spring-social-login + spring-spel + spring-state-machine + spring-swagger-codegen/spring-swagger-codegen-app + spring-thymeleaf + spring-vault + spring-vertx + spring-zuul/spring-zuul-foos-resource + persistence-modules/hibernate-mapping + persistence-modules/spring-data-dynamodb + persistence-modules/spring-data-eclipselink + persistence-modules/spring-data-solr + persistence-modules/spring-hibernate-5 + + spring-boot-flowable + spring-security-kerberos + spring-boot-nashorn + + + + + + default-heavy + + + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + 3 + true + + SpringContextTest + **/*UnitTest + + + **/*IntegrationTest.java + **/*IntTest.java + **/*LongRunningUnitTest.java + **/*ManualTest.java + **/*JdbcTest.java + **/*LiveTest.java + + + + + + + + + parent-boot-1 + parent-boot-2 + parent-spring-4 + parent-spring-5 + parent-java + parent-kotlin + + core-java-modules/core-java-concurrency-advanced + core-kotlin + core-kotlin-2 + core-kotlin-io + + jenkins/hello-world + jhipster + jws + + libraries + persistence-modules/hibernate5 + persistence-modules/hibernate-mapping + persistence-modules/java-jpa + persistence-modules/java-jpa-2 + persistence-modules/java-mongodb + persistence-modules/jnosql + + vaadin + vavr + + + + + integration-lite-first + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + **/*ManualTest.java + **/*LiveTest.java + + + **/*IntegrationTest.java + **/*IntTest.java + + + + + + + + parent-boot-1 + parent-boot-2 + parent-spring-4 + parent-spring-5 + parent-java + parent-kotlin + + akka-streams + algorithms-genetic + algorithms-miscellaneous-1 + algorithms-miscellaneous-2 + algorithms-miscellaneous-3 + algorithms-miscellaneous-4 + algorithms-miscellaneous-5 + algorithms-sorting + animal-sniffer-mvn-plugin + annotations + antlr + apache-avro + apache-bval + apache-curator + apache-cxf + apache-fop + apache-geode + apache-meecrowave + apache-olingo/olingo2 + apache-opennlp + apache-poi + apache-pulsar + apache-shiro + apache-solrj + apache-spark + apache-thrift + apache-tika + apache-velocity + apache-zookeeper + asciidoctor + asm + atomix + autovalue + aws + aws-lambda + axon + azure + bazel + bootique + + cas + cdi + checker-plugin + cloud-foundry-uaa/cf-uaa-oauth2-client + cloud-foundry-uaa/cf-uaa-oauth2-resource-server + core-groovy + core-groovy-2 + core-groovy-collections + + + core-java-modules/core-java-8 + core-java-modules/core-java-8-2 + core-java-modules/core-java-annotations + core-java-modules/core-java-streams + core-java-modules/core-java-function + core-java-modules/core-java-lang-math + core-java-modules/core-java-datetime + core-java-modules/core-java-text + + + core-java-modules/core-java-arrays + core-java-modules/core-java-arrays-2 + core-java-modules/core-java-collections + core-java-modules/core-java-collections-2 + core-java-modules/core-java-collections-3 + core-java-modules/core-java-collections-list + core-java-modules/core-java-collections-list-2 + core-java-modules/core-java-collections-list-3 + core-java-modules/core-java-collections-array-list + core-java-modules/core-java-collections-set + core-java-modules/core-java-concurrency-basic + core-java-modules/core-java-concurrency-basic-2 + core-java-modules/core-java-concurrency-collections + core-java-modules/core-java-io + core-java-modules/core-java-io-files + core-java-modules/core-java-nio + core-java-modules/core-java-security + core-java-modules/core-java-lang-syntax + core-java-modules/core-java-lang-syntax-2 + core-java-modules/core-java-lang + core-java-modules/core-java-lang-2 + core-java-modules/core-java-lang-oop + core-java-modules/core-java-lang-oop-2 + core-java-modules/core-java-lang-oop-3 + core-java-modules + core-java-modules/core-java-networking + core-java-modules/core-java-perf + core-java-modules/core-java-sun + core-scala + couchbase + custom-pmd + + dagger + data-structures + ddd + deeplearning4j + disruptor + dozer + drools + dubbo + + ethereum + + feign + flyway-cdi-extension + + geotools + google-cloud + google-web-toolkit + + + graphql/graphql-java + grpc + gson + guava + guava-io + guava-collections + guava-collections-set + guava-modules + + guice + + hazelcast + helidon + httpclient + httpclient-simple + hystrix + + image-processing + immutables + + jackson + jackson-2 + jackson-simple + java-collections-conversions + java-collections-maps + java-collections-maps-2 + java-jdi + + java-ee-8-security-api + java-lite + java-math + java-numbers + java-numbers-2 + java-rmi + java-spi + java-streams + + java-strings + java-strings-2 + java-strings-3 + java-strings-ops + java-vavr-stream + java-websocket + javafx + javax-servlets + javaxval + jaxb + - jee-7-security - jee-kotlin - jersey - jgit - jgroups - jhipster-5 - jib - jjwt - jmeter - jmh - jni - jooby - jsf - json - json-path - jsoup - jta + jee-7-security + jee-kotlin + jersey + jgit + jgroups + jhipster-5 + jib + jjwt + jmeter + jmh + jni + jooby + jsf + json + json-path + jsoup + jta - - kotlin-libraries + + kotlin-libraries - - libraries - libraries-data - libraries-data-2 - libraries-apache-commons - libraries-apache-commons-collections - libraries-apache-commons-io - libraries-testing - libraries-security - libraries-server - libraries-http - linkrest - logging-modules - lombok - lucene + + libraries + libraries-data + libraries-data-2 + libraries-apache-commons + libraries-apache-commons-collections + libraries-apache-commons-io + libraries-testing + libraries-security + libraries-server + libraries-http + linkrest + logging-modules + lombok + lucene - mapstruct - - maven-all/maven - maven-all/maven-war-plugin - maven-all/profiles - maven-all/versions-maven-plugin - - maven-archetype - - maven-polyglot/maven-polyglot-json-extension - - mesos-marathon - metrics - - microprofile + mapstruct + + maven-all/maven + maven-all/maven-war-plugin + maven-all/profiles + maven-all/versions-maven-plugin + + maven-archetype + + maven-polyglot/maven-polyglot-json-extension + + mesos-marathon + metrics + + microprofile ml - msf4j - - mustache - mybatis + msf4j + + mustache + mybatis - optaplanner - orika - osgi + optaplanner + orika + osgi - patterns - pdf - performance-tests - - protobuffer + patterns + pdf + performance-tests + + protobuffer - persistence-modules + persistence-modules - rabbitmq - - ratpack - reactor-core - resteasy - restx - - rule-engines - rsocket - rxjava - rxjava-2 - oauth2-framework-impl - spf4j - spring-boot-performance - spring-boot-properties - - + rabbitmq + + ratpack + reactor-core + resteasy + restx + + rule-engines + rsocket + rxjava + rxjava-2 + oauth2-framework-impl + spf4j + spring-boot-performance + spring-boot-properties + + - + - + - - integration-lite-second + + integration-lite-second - - - - org.apache.maven.plugins - maven-surefire-plugin - - - **/*ManualTest.java - **/*LiveTest.java - - - **/*IntegrationTest.java - **/*IntTest.java - - - - - + + + + org.apache.maven.plugins + maven-surefire-plugin + + + **/*ManualTest.java + **/*LiveTest.java + + + **/*IntegrationTest.java + **/*IntTest.java + + + + + - - parent-boot-1 - parent-boot-2 - parent-spring-4 - parent-spring-5 - parent-java - parent-kotlin + + parent-boot-1 + parent-boot-2 + parent-spring-4 + parent-spring-5 + parent-java + parent-kotlin - saas - spark-java + saas + spark-java - spring-4 + spring-4 - spring-5 - spring-5-data-reactive - spring-5-mvc - spring-5-reactive - spring-5-reactive-2 - spring-5-reactive-client - spring-5-reactive-oauth - spring-5-reactive-security - spring-5-security - spring-5-security-oauth - spring-5-security-cognito - spring-activiti - spring-akka - spring-all - spring-amqp - spring-aop - spring-apache-camel - spring-batch - spring-bom + spring-5 + spring-5-data-reactive + spring-5-mvc + spring-5-reactive + spring-5-reactive-2 + spring-5-reactive-client + spring-5-reactive-oauth + spring-5-reactive-security + spring-5-security + spring-5-security-oauth + spring-5-security-cognito + spring-activiti + spring-akka + spring-all + spring-amqp + spring-aop + spring-apache-camel + spring-batch + spring-bom - spring-boot - spring-boot-admin - spring-boot-angular - spring-boot-autoconfiguration - spring-boot-bootstrap - spring-boot-camel - - spring-boot-client - spring-boot-crud - spring-boot-ctx-fluent - spring-boot-custom-starter - spring-boot-disable-console-logging - - spring-boot-jasypt - spring-boot-keycloak - spring-boot-logging-log4j2 - spring-boot-management - spring-boot-mvc - spring-boot-mvc-birt - spring-boot-ops - spring-boot-ops-2 - spring-boot-rest - spring-boot-data - spring-boot-parent - spring-boot-property-exp - spring-boot-security - spring-boot-vue + spring-boot + spring-boot-admin + spring-boot-angular + spring-boot-autoconfiguration + spring-boot-bootstrap + spring-boot-camel + + spring-boot-client + spring-boot-crud + spring-boot-ctx-fluent + spring-boot-custom-starter + spring-boot-disable-console-logging + + spring-boot-jasypt + spring-boot-keycloak + spring-boot-logging-log4j2 + spring-boot-management + spring-boot-mvc + spring-boot-mvc-birt + spring-boot-ops + spring-boot-ops-2 + spring-boot-rest + spring-boot-data + spring-boot-parent + spring-boot-property-exp + spring-boot-security + spring-boot-vue - spring-cloud - spring-cloud-bus - - spring-cloud-data-flow + spring-cloud + spring-cloud-bus + + spring-cloud-data-flow - spring-core - spring-core-2 - spring-cucumber + spring-core + spring-core-2 + spring-cucumber - spring-data-rest - spring-data-rest-querydsl - spring-dispatcher-servlet - spring-drools - spring-di + spring-data-rest + spring-data-rest-querydsl + spring-dispatcher-servlet + spring-drools + spring-di - spring-ehcache - spring-ejb - spring-exceptions + spring-ehcache + spring-ejb + spring-exceptions - spring-freemarker + spring-freemarker - spring-groovy + spring-groovy - spring-integration + spring-integration - spring-jenkins-pipeline - spring-jersey - spring-jinq - spring-jms - spring-jooq + spring-jenkins-pipeline + spring-jersey + spring-jinq + spring-jms + spring-jooq - spring-kafka - spring-katharsis + spring-kafka + spring-katharsis - spring-ldap + spring-ldap - spring-mobile - spring-mockito - spring-mvc-forms-jsp - spring-mvc-forms-thymeleaf - spring-mvc-java - spring-mvc-kotlin - spring-mvc-simple - spring-mvc-simple-2 - spring-mvc-velocity - spring-mvc-webflow - spring-mvc-xml + spring-mobile + spring-mockito + spring-mvc-forms-jsp + spring-mvc-forms-thymeleaf + spring-mvc-java + spring-mvc-kotlin + spring-mvc-simple + spring-mvc-simple-2 + spring-mvc-velocity + spring-mvc-webflow + spring-mvc-xml - spring-protobuf - + spring-protobuf + - spring-quartz + spring-quartz - spring-reactive-kotlin - spring-reactor - spring-remoting - spring-rest - spring-rest-angular - spring-rest-compress - spring-rest-full - spring-rest-hal-browser - spring-rest-query-language - spring-rest-shell - spring-rest-simple - spring-resttemplate - spring-roo + spring-reactive-kotlin + spring-reactor + spring-remoting + spring-rest + spring-rest-angular + spring-rest-compress + spring-rest-full + spring-rest-hal-browser + spring-rest-query-language + spring-rest-shell + spring-rest-simple + spring-resttemplate + spring-roo - spring-security-acl - spring-security-angular/server - spring-security-cache-control - spring-security-core - spring-security-mvc-boot - spring-security-mvc-custom - spring-security-mvc-digest-auth - spring-security-mvc-ldap - spring-security-mvc-login - spring-security-mvc-persisted-remember-me - spring-security-mvc - spring-security-mvc-socket - spring-security-openid - - spring-security-rest - spring-security-rest-basic-auth - spring-security-rest-custom - spring-security-sso - spring-security-stormpath - spring-security-thymeleaf - spring-security-x509 - spring-session - spring-sleuth - spring-soap - spring-social-login - spring-spel - spring-state-machine - spring-static-resources - spring-swagger-codegen + spring-security-acl + spring-security-angular/server + spring-security-cache-control + spring-security-core + spring-security-mvc-boot + spring-security-mvc-custom + spring-security-mvc-digest-auth + spring-security-mvc-ldap + spring-security-mvc-login + spring-security-mvc-persisted-remember-me + spring-security-mvc + spring-security-mvc-socket + spring-security-openid + + spring-security-rest + spring-security-rest-basic-auth + spring-security-rest-custom + spring-security-sso + spring-security-stormpath + spring-security-thymeleaf + spring-security-x509 + spring-session + spring-sleuth + spring-soap + spring-social-login + spring-spel + spring-state-machine + spring-static-resources + spring-swagger-codegen - spring-thymeleaf + spring-thymeleaf - spring-vault - spring-vertx + spring-vault + spring-vertx - spring-webflux-amqp + spring-webflux-amqp - spring-zuul + spring-zuul - static-analysis - stripe - structurizr - struts-2 + static-analysis + stripe + structurizr + struts-2 - testing-modules + testing-modules - twilio - twitter4j + twilio + twitter4j - undertow + undertow - vertx - vertx-and-rxjava - video-tutorials - vraptor + vertx + vertx-and-rxjava + video-tutorials + vraptor - wicket + wicket - xml - xstream - + xml + xstream + - + - - integration-heavy + + integration-heavy - - - - org.apache.maven.plugins - maven-surefire-plugin - - - **/*ManualTest.java - **/*LiveTest.java - - - **/*IntegrationTest.java - **/*IntTest.java - - - - - + + + + org.apache.maven.plugins + maven-surefire-plugin + + + **/*ManualTest.java + **/*LiveTest.java + + + **/*IntegrationTest.java + **/*IntTest.java + + + + + - - parent-boot-1 - parent-boot-2 - parent-spring-4 - parent-spring-5 - parent-java - parent-kotlin + + parent-boot-1 + parent-boot-2 + parent-spring-4 + parent-spring-5 + parent-java + parent-kotlin - core-java-modules/core-java - core-java-modules/core-java-concurrency-advanced - core-kotlin - core-kotlin-2 + core-java-modules/core-java + core-java-modules/core-java-concurrency-advanced + core-kotlin + core-kotlin-2 - jenkins/hello-world - jhipster - jws + jenkins/hello-world + jhipster + jws - libraries + libraries - persistence-modules/hibernate5 - persistence-modules/java-jpa - persistence-modules/java-jpa-2 - persistence-modules/java-mongodb - persistence-modules/jnosql + persistence-modules/hibernate5 + persistence-modules/java-jpa + persistence-modules/java-jpa-2 + persistence-modules/java-mongodb + persistence-modules/jnosql - vaadin - vavr - + vaadin + vavr + - + - + - - - - org.apache.maven.plugins - maven-jxr-plugin - ${maven-jxr-plugin.version} - - - + + + + org.apache.maven.plugins + maven-jxr-plugin + ${maven-jxr-plugin.version} + + + - - UTF-8 - UTF-8 - refs/remotes/origin/master - true - false - false - false - false + + UTF-8 + UTF-8 + refs/remotes/origin/master + true + false + false + false + false - 4.12 - 1.3 - 2.21.0 + 4.12 + 1.3 + 2.21.0 - - 1.7.21 - 1.1.7 + + 1.7.21 + 1.1.7 - - - 2.21.0 - 3.7.0 - 1.6.0 - 1.8 - 1.2.17 - 1.1 - 2.1.0.1 - 1.19 - 1.19 - 1.3 - 1.6.0 - 2.21.0 - 2.5 - 2.6 - 3.5 - 1.4 - 3.0.0 - 3.1.0 - 1.2 - 2.3.1 - 1.9.13 - 1.2 - 2.9.8 - 1.3 - 1.2.0 - 5.2.0 - 0.3.1 - 2.5.1 - 0.0.1 - 3.8 - 2.3 - - 3.8 - 1.16.12 - 1.4.197 - + + + 2.21.0 + 3.7.0 + 1.6.0 + 1.8 + 1.2.17 + 1.1 + 2.1.0.1 + 1.19 + 1.19 + 1.3 + 1.6.0 + 2.21.0 + 2.5 + 2.6 + 3.5 + 1.4 + 3.0.0 + 3.1.0 + 1.2 + 2.3.1 + 1.9.13 + 1.2 + 2.9.8 + 1.3 + 1.2.0 + 5.2.0 + 0.3.1 + 2.5.1 + 0.0.1 + 3.8 + 2.3 + + 3.8 + 1.16.12 + 1.4.197 + From b00015e7f3b4293ad9f1a75dd08f9adaa1f9c7e7 Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Sun, 6 Oct 2019 08:47:51 +0200 Subject: [PATCH 023/265] #BAEL-17507 update Akka libraries names --- akka-http/README.md | 2 +- akka-streams/README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/akka-http/README.md b/akka-http/README.md index e34a31f381..ebe6581ff6 100644 --- a/akka-http/README.md +++ b/akka-http/README.md @@ -1,6 +1,6 @@ ## Akka HTTP -This module contains articles about HTTP with Akka. +This module contains articles about Akka HTTP. ### Relevant articles: diff --git a/akka-streams/README.md b/akka-streams/README.md index c13a31fd06..a59b7fde5c 100644 --- a/akka-streams/README.md +++ b/akka-streams/README.md @@ -1,6 +1,6 @@ ## Akka Streams -This module contains articles about streams in Akka. +This module contains articles about Akka Streams. ### Relevant articles From da1dd4dd12fe4cbfafd39cfac5f53fbc0c45270e Mon Sep 17 00:00:00 2001 From: Lukasz Rys <> Date: Sun, 6 Oct 2019 21:27:50 +0200 Subject: [PATCH 024/265] BAEL-3322: Jimx --- testing-modules/mocks/pom.xml | 117 ++++++++++-------- .../com/baeldung/jimf/FileManipulation.java | 19 +++ .../com/baeldung/jimf/FileRepository.java | 43 +++++++ .../jimf/FileManipulationUnitTest.java | 46 +++++++ .../baeldung/jimf/FileRepositoryUnitTest.java | 74 +++++++++++ .../com/baeldung/jimf/FileTestProvider.java | 16 +++ .../src/test/resources/fileRepositoryRead.txt | 1 + 7 files changed, 261 insertions(+), 55 deletions(-) create mode 100644 testing-modules/mocks/src/main/java/com/baeldung/jimf/FileManipulation.java create mode 100644 testing-modules/mocks/src/main/java/com/baeldung/jimf/FileRepository.java create mode 100644 testing-modules/mocks/src/test/java/com/baeldung/jimf/FileManipulationUnitTest.java create mode 100644 testing-modules/mocks/src/test/java/com/baeldung/jimf/FileRepositoryUnitTest.java create mode 100644 testing-modules/mocks/src/test/java/com/baeldung/jimf/FileTestProvider.java create mode 100644 testing-modules/mocks/src/test/resources/fileRepositoryRead.txt diff --git a/testing-modules/mocks/pom.xml b/testing-modules/mocks/pom.xml index bf75cfc3a2..cbda386af8 100644 --- a/testing-modules/mocks/pom.xml +++ b/testing-modules/mocks/pom.xml @@ -1,55 +1,62 @@ - - 4.0.0 - mocks - mocks - - - com.baeldung - parent-modules - 1.0.0-SNAPSHOT - ../../ - - - - - com.github.javafaker - javafaker - ${javafaker.version} - - - org.jmockit - jmockit - ${jmockit.version} - test - - - org.jukito - jukito - ${jukito.version} - test - - - org.mockito - mockito-core - ${mockito.version} - test - - - - org.easymock - easymock - ${easymock.version} - test - - - - - 0.15 - 1.5 -2.21.0 - 3.5.1 - 1.41 - - - + + 4.0.0 + mocks + mocks + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + ../../ + + + + + com.github.javafaker + javafaker + ${javafaker.version} + + + org.jmockit + jmockit + ${jmockit.version} + test + + + org.jukito + jukito + ${jukito.version} + test + + + org.mockito + mockito-core + ${mockito.version} + test + + + + org.easymock + easymock + ${easymock.version} + test + + + + com.google.jimfs + jimfs + ${jimf.version} + + + + + 0.15 + 1.5 + 2.21.0 + 3.5.1 + 1.41 + 1.1 + + + diff --git a/testing-modules/mocks/src/main/java/com/baeldung/jimf/FileManipulation.java b/testing-modules/mocks/src/main/java/com/baeldung/jimf/FileManipulation.java new file mode 100644 index 0000000000..039e4593fd --- /dev/null +++ b/testing-modules/mocks/src/main/java/com/baeldung/jimf/FileManipulation.java @@ -0,0 +1,19 @@ +package com.baeldung.jimf; + +import java.io.IOException; +import java.io.UncheckedIOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardCopyOption; + +public class FileManipulation { + + void move(final Path origin, final Path destination) { + try { + Files.createDirectories(destination); + Files.move(origin, destination, StandardCopyOption.REPLACE_EXISTING); + } catch (final IOException ex) { + throw new UncheckedIOException(ex); + } + } +} diff --git a/testing-modules/mocks/src/main/java/com/baeldung/jimf/FileRepository.java b/testing-modules/mocks/src/main/java/com/baeldung/jimf/FileRepository.java new file mode 100644 index 0000000000..d17cff1bd2 --- /dev/null +++ b/testing-modules/mocks/src/main/java/com/baeldung/jimf/FileRepository.java @@ -0,0 +1,43 @@ +package com.baeldung.jimf; + +import java.io.IOException; +import java.io.UncheckedIOException; +import java.nio.file.Files; +import java.nio.file.Path; + +public class FileRepository { + + void create(final Path path, final String fileName) { + final Path filePath = path.resolve(fileName); + try { + Files.createFile(filePath); + } catch (final IOException ex) { + throw new UncheckedIOException(ex); + } + } + + String read(final Path path) { + try { + return new String(Files.readAllBytes(path)); + } catch (final IOException ex) { + throw new UncheckedIOException(ex); + } + } + + String update(final Path path, final String newContent) { + try { + Files.write(path, newContent.getBytes()); + return newContent; + } catch (final IOException ex) { + throw new UncheckedIOException(ex); + } + } + + void delete (final Path path){ + try { + Files.deleteIfExists(path); + } catch (final IOException ex) { + throw new UncheckedIOException(ex); + } + } +} diff --git a/testing-modules/mocks/src/test/java/com/baeldung/jimf/FileManipulationUnitTest.java b/testing-modules/mocks/src/test/java/com/baeldung/jimf/FileManipulationUnitTest.java new file mode 100644 index 0000000000..3978ec6ff7 --- /dev/null +++ b/testing-modules/mocks/src/test/java/com/baeldung/jimf/FileManipulationUnitTest.java @@ -0,0 +1,46 @@ +package com.baeldung.jimf; + +import com.google.common.jimfs.Configuration; +import com.google.common.jimfs.Jimfs; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import java.io.IOException; +import java.io.UncheckedIOException; +import java.nio.file.FileSystem; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.attribute.FileTime; +import java.util.stream.Stream; + +import static org.junit.jupiter.api.Assertions.*; + +class FileManipulationUnitTest implements FileTestProvider { + + private static Stream provideFileSystem() { + return Stream.of( + Arguments.of(Jimfs.newFileSystem(Configuration.unix())), + Arguments.of(Jimfs.newFileSystem(Configuration.windows())), + Arguments.of(Jimfs.newFileSystem(Configuration.osX()))); + } + + private final FileManipulation fileManipulation = new FileManipulation(); + + @ParameterizedTest + @DisplayName("Should create a file on a file system") + @MethodSource("provideFileSystem") + void shouldCreateFile(final FileSystem fileSystem) throws Exception { + final Path origin = fileSystem.getPath(RESOURCE_FILE_NAME); + Files.copy(getResourceFilePath(), origin); + final Path destination = fileSystem.getPath("newDirectory", RESOURCE_FILE_NAME); + + fileManipulation.move(origin, destination); + + assertFalse(Files.exists(origin)); + assertTrue(Files.exists(destination)); + } +} \ No newline at end of file diff --git a/testing-modules/mocks/src/test/java/com/baeldung/jimf/FileRepositoryUnitTest.java b/testing-modules/mocks/src/test/java/com/baeldung/jimf/FileRepositoryUnitTest.java new file mode 100644 index 0000000000..3cfb49e14f --- /dev/null +++ b/testing-modules/mocks/src/test/java/com/baeldung/jimf/FileRepositoryUnitTest.java @@ -0,0 +1,74 @@ +package com.baeldung.jimf; + +import com.google.common.jimfs.Configuration; +import com.google.common.jimfs.Jimfs; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import java.nio.file.FileSystem; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.stream.Stream; + +import static org.junit.jupiter.api.Assertions.*; + +class FileRepositoryUnitTest implements FileTestProvider { + + private final FileRepository fileRepository = new FileRepository(); + + private static Stream provideFileSystem() { + return Stream.of(Arguments.of(Jimfs.newFileSystem(Configuration.unix())), Arguments.of(Jimfs.newFileSystem(Configuration.windows())), Arguments.of(Jimfs.newFileSystem(Configuration.osX()))); + } + + @ParameterizedTest + @DisplayName("Should create a file on a file system") + @MethodSource("provideFileSystem") + void shouldCreateFile(final FileSystem fileSystem) throws Exception { + final String fileName = "test.txt"; + final Path pathToStore = fileSystem.getPath(""); + + fileRepository.create(pathToStore, fileName); + + assertTrue(Files.exists(pathToStore.resolve(fileName))); + } + + @ParameterizedTest + @DisplayName("Should read the content of the file") + @MethodSource("provideFileSystem") + void shouldReadFileContent_thenReturnIt(final FileSystem fileSystem) throws Exception { + final Path pathToStore = fileSystem.getPath(RESOURCE_FILE_NAME); + Files.copy(getResourceFilePath(), pathToStore); + + final String content = fileRepository.read(pathToStore); + + assertEquals(FILE_CONTENT, content); + } + + @ParameterizedTest + @DisplayName("Should update content of the file") + @MethodSource("provideFileSystem") + void shouldUpdateContentOfTheFile(final FileSystem fileSystem) throws Exception { + final Path pathToStore = fileSystem.getPath(RESOURCE_FILE_NAME); + Files.copy(getResourceFilePath(), pathToStore); + final String newContent = "NEW_CONTENT"; + + final String content = fileRepository.update(pathToStore, newContent); + + assertEquals(newContent, content); + assertEquals(newContent, fileRepository.read(pathToStore)); + } + + @ParameterizedTest + @DisplayName("Should update delete file") + @MethodSource("provideFileSystem") + void shouldDeleteFile(final FileSystem fileSystem) throws Exception { + final Path pathToStore = fileSystem.getPath(RESOURCE_FILE_NAME); + Files.copy(getResourceFilePath(), pathToStore); + + fileRepository.delete(pathToStore); + + assertFalse(Files.exists(pathToStore)); + } +} \ No newline at end of file diff --git a/testing-modules/mocks/src/test/java/com/baeldung/jimf/FileTestProvider.java b/testing-modules/mocks/src/test/java/com/baeldung/jimf/FileTestProvider.java new file mode 100644 index 0000000000..9144a0b65f --- /dev/null +++ b/testing-modules/mocks/src/test/java/com/baeldung/jimf/FileTestProvider.java @@ -0,0 +1,16 @@ +package com.baeldung.jimf; + +import java.nio.file.Path; +import java.nio.file.Paths; + +public interface FileTestProvider { + String FILE_CONTENT = "BAELDUNG"; + String RESOURCE_FILE_NAME = "fileRepositoryRead.txt"; + + default Path getResourceFilePath() { + final String resourceFilePath = getClass() + .getResource("/" + RESOURCE_FILE_NAME) + .getPath(); + return Paths.get(resourceFilePath); + } +} diff --git a/testing-modules/mocks/src/test/resources/fileRepositoryRead.txt b/testing-modules/mocks/src/test/resources/fileRepositoryRead.txt new file mode 100644 index 0000000000..7c2239aab9 --- /dev/null +++ b/testing-modules/mocks/src/test/resources/fileRepositoryRead.txt @@ -0,0 +1 @@ +BAELDUNG \ No newline at end of file From 33a3ee7592b723f8a160fccce8c8c4ecdb40613e Mon Sep 17 00:00:00 2001 From: Lukasz Rys <> Date: Sun, 6 Oct 2019 23:30:48 +0200 Subject: [PATCH 025/265] BAEL-3322: Prettify --- .../baeldung/jimf/FileRepositoryUnitTest.java | 26 +++++++++---------- .../com/baeldung/jimf/FileTestProvider.java | 2 +- .../src/test/resources/fileRepositoryRead.txt | 2 +- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/testing-modules/mocks/src/test/java/com/baeldung/jimf/FileRepositoryUnitTest.java b/testing-modules/mocks/src/test/java/com/baeldung/jimf/FileRepositoryUnitTest.java index 3cfb49e14f..0564b2a52b 100644 --- a/testing-modules/mocks/src/test/java/com/baeldung/jimf/FileRepositoryUnitTest.java +++ b/testing-modules/mocks/src/test/java/com/baeldung/jimf/FileRepositoryUnitTest.java @@ -26,7 +26,7 @@ class FileRepositoryUnitTest implements FileTestProvider { @DisplayName("Should create a file on a file system") @MethodSource("provideFileSystem") void shouldCreateFile(final FileSystem fileSystem) throws Exception { - final String fileName = "test.txt"; + final String fileName = "newFile.txt"; final Path pathToStore = fileSystem.getPath(""); fileRepository.create(pathToStore, fileName); @@ -38,10 +38,10 @@ class FileRepositoryUnitTest implements FileTestProvider { @DisplayName("Should read the content of the file") @MethodSource("provideFileSystem") void shouldReadFileContent_thenReturnIt(final FileSystem fileSystem) throws Exception { - final Path pathToStore = fileSystem.getPath(RESOURCE_FILE_NAME); - Files.copy(getResourceFilePath(), pathToStore); + final Path resourceFilePath = fileSystem.getPath(RESOURCE_FILE_NAME); + Files.copy(getResourceFilePath(), resourceFilePath); - final String content = fileRepository.read(pathToStore); + final String content = fileRepository.read(resourceFilePath); assertEquals(FILE_CONTENT, content); } @@ -50,25 +50,25 @@ class FileRepositoryUnitTest implements FileTestProvider { @DisplayName("Should update content of the file") @MethodSource("provideFileSystem") void shouldUpdateContentOfTheFile(final FileSystem fileSystem) throws Exception { - final Path pathToStore = fileSystem.getPath(RESOURCE_FILE_NAME); - Files.copy(getResourceFilePath(), pathToStore); - final String newContent = "NEW_CONTENT"; + final Path resourceFilePath = fileSystem.getPath(RESOURCE_FILE_NAME); + Files.copy(getResourceFilePath(), resourceFilePath); + final String newContent = "I'm updating you."; - final String content = fileRepository.update(pathToStore, newContent); + final String content = fileRepository.update(resourceFilePath, newContent); assertEquals(newContent, content); - assertEquals(newContent, fileRepository.read(pathToStore)); + assertEquals(newContent, fileRepository.read(resourceFilePath)); } @ParameterizedTest @DisplayName("Should update delete file") @MethodSource("provideFileSystem") void shouldDeleteFile(final FileSystem fileSystem) throws Exception { - final Path pathToStore = fileSystem.getPath(RESOURCE_FILE_NAME); - Files.copy(getResourceFilePath(), pathToStore); + final Path resourceFilePath = fileSystem.getPath(RESOURCE_FILE_NAME); + Files.copy(getResourceFilePath(), resourceFilePath); - fileRepository.delete(pathToStore); + fileRepository.delete(resourceFilePath); - assertFalse(Files.exists(pathToStore)); + assertFalse(Files.exists(resourceFilePath)); } } \ No newline at end of file diff --git a/testing-modules/mocks/src/test/java/com/baeldung/jimf/FileTestProvider.java b/testing-modules/mocks/src/test/java/com/baeldung/jimf/FileTestProvider.java index 9144a0b65f..5893e5b925 100644 --- a/testing-modules/mocks/src/test/java/com/baeldung/jimf/FileTestProvider.java +++ b/testing-modules/mocks/src/test/java/com/baeldung/jimf/FileTestProvider.java @@ -4,7 +4,7 @@ import java.nio.file.Path; import java.nio.file.Paths; public interface FileTestProvider { - String FILE_CONTENT = "BAELDUNG"; + String FILE_CONTENT = "I'm the file content."; String RESOURCE_FILE_NAME = "fileRepositoryRead.txt"; default Path getResourceFilePath() { diff --git a/testing-modules/mocks/src/test/resources/fileRepositoryRead.txt b/testing-modules/mocks/src/test/resources/fileRepositoryRead.txt index 7c2239aab9..b63f63cdd6 100644 --- a/testing-modules/mocks/src/test/resources/fileRepositoryRead.txt +++ b/testing-modules/mocks/src/test/resources/fileRepositoryRead.txt @@ -1 +1 @@ -BAELDUNG \ No newline at end of file +I'm the file content. \ No newline at end of file From f9fe917f66b0f481b34417f03feeb61e550e1698 Mon Sep 17 00:00:00 2001 From: Lukasz Rys <> Date: Sun, 6 Oct 2019 23:42:05 +0200 Subject: [PATCH 026/265] BAEL-3322: Fix package name --- .../com/baeldung/{jimf => jimfs}/FileManipulation.java | 2 +- .../java/com/baeldung/{jimf => jimfs}/FileRepository.java | 2 +- .../baeldung/{jimf => jimfs}/FileManipulationUnitTest.java | 7 +------ .../baeldung/{jimf => jimfs}/FileRepositoryUnitTest.java | 2 +- .../com/baeldung/{jimf => jimfs}/FileTestProvider.java | 2 +- 5 files changed, 5 insertions(+), 10 deletions(-) rename testing-modules/mocks/src/main/java/com/baeldung/{jimf => jimfs}/FileManipulation.java (94%) rename testing-modules/mocks/src/main/java/com/baeldung/{jimf => jimfs}/FileRepository.java (97%) rename testing-modules/mocks/src/test/java/com/baeldung/{jimf => jimfs}/FileManipulationUnitTest.java (87%) rename testing-modules/mocks/src/test/java/com/baeldung/{jimf => jimfs}/FileRepositoryUnitTest.java (99%) rename testing-modules/mocks/src/test/java/com/baeldung/{jimf => jimfs}/FileTestProvider.java (93%) diff --git a/testing-modules/mocks/src/main/java/com/baeldung/jimf/FileManipulation.java b/testing-modules/mocks/src/main/java/com/baeldung/jimfs/FileManipulation.java similarity index 94% rename from testing-modules/mocks/src/main/java/com/baeldung/jimf/FileManipulation.java rename to testing-modules/mocks/src/main/java/com/baeldung/jimfs/FileManipulation.java index 039e4593fd..ae163b094f 100644 --- a/testing-modules/mocks/src/main/java/com/baeldung/jimf/FileManipulation.java +++ b/testing-modules/mocks/src/main/java/com/baeldung/jimfs/FileManipulation.java @@ -1,4 +1,4 @@ -package com.baeldung.jimf; +package com.baeldung.jimfs; import java.io.IOException; import java.io.UncheckedIOException; diff --git a/testing-modules/mocks/src/main/java/com/baeldung/jimf/FileRepository.java b/testing-modules/mocks/src/main/java/com/baeldung/jimfs/FileRepository.java similarity index 97% rename from testing-modules/mocks/src/main/java/com/baeldung/jimf/FileRepository.java rename to testing-modules/mocks/src/main/java/com/baeldung/jimfs/FileRepository.java index d17cff1bd2..7db4941bd3 100644 --- a/testing-modules/mocks/src/main/java/com/baeldung/jimf/FileRepository.java +++ b/testing-modules/mocks/src/main/java/com/baeldung/jimfs/FileRepository.java @@ -1,4 +1,4 @@ -package com.baeldung.jimf; +package com.baeldung.jimfs; import java.io.IOException; import java.io.UncheckedIOException; diff --git a/testing-modules/mocks/src/test/java/com/baeldung/jimf/FileManipulationUnitTest.java b/testing-modules/mocks/src/test/java/com/baeldung/jimfs/FileManipulationUnitTest.java similarity index 87% rename from testing-modules/mocks/src/test/java/com/baeldung/jimf/FileManipulationUnitTest.java rename to testing-modules/mocks/src/test/java/com/baeldung/jimfs/FileManipulationUnitTest.java index 3978ec6ff7..63aaf5e571 100644 --- a/testing-modules/mocks/src/test/java/com/baeldung/jimf/FileManipulationUnitTest.java +++ b/testing-modules/mocks/src/test/java/com/baeldung/jimfs/FileManipulationUnitTest.java @@ -1,20 +1,15 @@ -package com.baeldung.jimf; +package com.baeldung.jimfs; import com.google.common.jimfs.Configuration; import com.google.common.jimfs.Jimfs; -import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; -import java.io.IOException; -import java.io.UncheckedIOException; import java.nio.file.FileSystem; import java.nio.file.Files; import java.nio.file.Path; -import java.nio.file.attribute.FileTime; import java.util.stream.Stream; import static org.junit.jupiter.api.Assertions.*; diff --git a/testing-modules/mocks/src/test/java/com/baeldung/jimf/FileRepositoryUnitTest.java b/testing-modules/mocks/src/test/java/com/baeldung/jimfs/FileRepositoryUnitTest.java similarity index 99% rename from testing-modules/mocks/src/test/java/com/baeldung/jimf/FileRepositoryUnitTest.java rename to testing-modules/mocks/src/test/java/com/baeldung/jimfs/FileRepositoryUnitTest.java index 0564b2a52b..4d592abf70 100644 --- a/testing-modules/mocks/src/test/java/com/baeldung/jimf/FileRepositoryUnitTest.java +++ b/testing-modules/mocks/src/test/java/com/baeldung/jimfs/FileRepositoryUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.jimf; +package com.baeldung.jimfs; import com.google.common.jimfs.Configuration; import com.google.common.jimfs.Jimfs; diff --git a/testing-modules/mocks/src/test/java/com/baeldung/jimf/FileTestProvider.java b/testing-modules/mocks/src/test/java/com/baeldung/jimfs/FileTestProvider.java similarity index 93% rename from testing-modules/mocks/src/test/java/com/baeldung/jimf/FileTestProvider.java rename to testing-modules/mocks/src/test/java/com/baeldung/jimfs/FileTestProvider.java index 5893e5b925..51b584ee8c 100644 --- a/testing-modules/mocks/src/test/java/com/baeldung/jimf/FileTestProvider.java +++ b/testing-modules/mocks/src/test/java/com/baeldung/jimfs/FileTestProvider.java @@ -1,4 +1,4 @@ -package com.baeldung.jimf; +package com.baeldung.jimfs; import java.nio.file.Path; import java.nio.file.Paths; From 44fb860b403a7d38cfe81d12679cce1c7fe0dde8 Mon Sep 17 00:00:00 2001 From: "m.raheem" Date: Mon, 7 Oct 2019 13:52:10 +0200 Subject: [PATCH 027/265] resetting Distance class --- .../com/baeldung/jackson/enums/Distance.java | 38 ++++--------------- 1 file changed, 7 insertions(+), 31 deletions(-) diff --git a/jackson/src/main/java/com/baeldung/jackson/enums/Distance.java b/jackson/src/main/java/com/baeldung/jackson/enums/Distance.java index fdda32d16c..8026eedc44 100644 --- a/jackson/src/main/java/com/baeldung/jackson/enums/Distance.java +++ b/jackson/src/main/java/com/baeldung/jackson/enums/Distance.java @@ -1,29 +1,20 @@ package com.baeldung.jackson.enums; import com.baeldung.jackson.serialization.DistanceSerializer; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize; /** * Use @JsonFormat to handle representation of Enum as JSON (available since Jackson 2.1.2) * Use @JsonSerialize to configure a custom Jackson serializer */ -@JsonFormat(shape = JsonFormat.Shape.OBJECT) -//@JsonSerialize(using = DistanceSerializer.class) +// @JsonFormat(shape = JsonFormat.Shape.OBJECT) +@JsonSerialize(using = DistanceSerializer.class) public enum Distance { - @JsonProperty("distance-in-km") - KILOMETER("km", 1000), - @JsonProperty("distance-in-miles") - MILE("miles", 1609.34), METER("meters", 1), INCH("inches", 0.0254), CENTIMETER("cm", 0.01), - MILLIMETER("mm", 0.001); + KILOMETER("km", 1000), MILE("miles", 1609.34), METER("meters", 1), INCH("inches", 0.0254), CENTIMETER("cm", 0.01), MILLIMETER("mm", 0.001); private String unit; private final double meters; - + private Distance(String unit, double meters) { this.unit = unit; this.meters = meters; @@ -32,11 +23,11 @@ public enum Distance { /** * Use @JsonValue to control marshalling output for an enum */ -// @JsonValue + // @JsonValue public double getMeters() { return meters; } - + public String getUnit() { return unit; } @@ -44,7 +35,7 @@ public enum Distance { public void setUnit(String unit) { this.unit = unit; } - + /** * Usage example: Distance.MILE.convertFromMeters(1205.5); */ @@ -60,19 +51,4 @@ public enum Distance { return distanceInMeters * meters; } -// @JsonCreator - public static Distance forValues(@JsonProperty("unit") String unit, @JsonProperty("meters") double meters) { - - for (Distance distance : Distance.values()) { - if (distance.unit.equals(unit) - && Double.compare(distance.meters, meters) == 0) { - - return distance; - } - } - - return null; - - } - } \ No newline at end of file From 100d302faa7afee5dc8f6a72136342d68d5c6cae Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Mon, 7 Oct 2019 14:26:16 +0200 Subject: [PATCH 028/265] #BAEL-16646 amend pom.xml to include core-java-datetime-* modules in integration-tests-lite profile (which already contained java-datetime) --- pom.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pom.xml b/pom.xml index f6f99e6269..27fec08ade 100644 --- a/pom.xml +++ b/pom.xml @@ -1148,7 +1148,10 @@ core-java-modules/core-java-lang-math core-java-modules/core-java-datetime-conversion core-java-modules/core-java-datetime-string + core-java-modules/core-java-datetime-java8 + core-java-modules/core-java-datetime-string core-java-modules/core-java-text + core-java-modules/core-java-time-measurements core-java-modules/core-java-arrays From 06cec4c83a0a076d82e7143b7409d1c55236aa2b Mon Sep 17 00:00:00 2001 From: "m.raheem" Date: Mon, 7 Oct 2019 16:07:17 +0200 Subject: [PATCH 029/265] multiple Distance enum versions --- .../com/baeldung/jackson/entities/City.java | 196 ++++++++++++++++-- .../JacksonEnumDeserializationUnitTest.java | 45 ++++ .../JacksonEnumSerializationUnitTest.java | 44 ---- 3 files changed, 229 insertions(+), 56 deletions(-) create mode 100644 jackson/src/test/java/com/baeldung/jackson/enums/JacksonEnumDeserializationUnitTest.java diff --git a/jackson/src/main/java/com/baeldung/jackson/entities/City.java b/jackson/src/main/java/com/baeldung/jackson/entities/City.java index d4c5d715de..9f338acc28 100644 --- a/jackson/src/main/java/com/baeldung/jackson/entities/City.java +++ b/jackson/src/main/java/com/baeldung/jackson/entities/City.java @@ -1,22 +1,194 @@ package com.baeldung.jackson.entities; -import com.baeldung.jackson.enums.Distance; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonValue; public class City { - - private Distance distance; - public Distance getDistance() { - return distance; + public static class CityWithDefaultEnum { + + private Distance distance; + + public Distance getDistance() { + return distance; + } + + public void setDistance(Distance distance) { + this.distance = distance; + } + + public enum Distance { + + KILOMETER("km", 1000), MILE("miles", 1609.34), METER("meters", 1), INCH("inches", 0.0254), CENTIMETER("cm", 0.01), MILLIMETER("mm", 0.001); + + private String unit; + private final double meters; + + private Distance(String unit, double meters) { + this.unit = unit; + this.meters = meters; + } + + public double getMeters() { + return meters; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + } + } + + public static class CityWithJsonCreatorEnum { + + private Distance distance; + + public Distance getDistance() { + return distance; + } + + public void setDistance(Distance distance) { + this.distance = distance; + } + + public enum Distance { + + KILOMETER("km", 1000), MILE("miles", 1609.34), METER("meters", 1), INCH("inches", 0.0254), CENTIMETER("cm", 0.01), MILLIMETER("mm", 0.001); + + private String unit; + private final double meters; + + private Distance(String unit, double meters) { + this.unit = unit; + this.meters = meters; + } + + public double getMeters() { + return meters; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + + @JsonCreator + public static Distance forValues(@JsonProperty("unit") String unit, @JsonProperty("meters") double meters) { + + for (Distance distance : Distance.values()) { + if (distance.unit.equals(unit) && Double.compare(distance.meters, meters) == 0) { + + return distance; + } + } + + return null; + + } + } } - public void setDistance(Distance distance) { - this.distance = distance; + public static class CityWithJsonPropertyEnum { + + private Distance distance; + + public Distance getDistance() { + return distance; + } + + public void setDistance(Distance distance) { + this.distance = distance; + } + + public enum Distance { + + @JsonProperty("distance-in-km") + KILOMETER("km", 1000), + + @JsonProperty("distance-in-miles") + MILE("miles", 1609.34), + + @JsonProperty("distance-in-meters") + METER("meters", 1), + + @JsonProperty("distance-in-inches") + INCH("inches", 0.0254), + + @JsonProperty("distance-in-cm") + CENTIMETER("cm", 0.01), + + @JsonProperty("distance-in-mm") + MILLIMETER("mm", 0.001); + + private String unit; + private final double meters; + + private Distance(String unit, double meters) { + this.unit = unit; + this.meters = meters; + } + + public double getMeters() { + return meters; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + + } + } + + public static class CityWithJsonValueEnum { + + private Distance distance; + + public Distance getDistance() { + return distance; + } + + public void setDistance(Distance distance) { + this.distance = distance; + } + + public enum Distance { + + KILOMETER("km", 1000), MILE("miles", 1609.34), METER("meters", 1), INCH("inches", 0.0254), CENTIMETER("cm", 0.01), MILLIMETER("mm", 0.001); + + private String unit; + private final double meters; + + private Distance(String unit, double meters) { + this.unit = unit; + this.meters = meters; + } + + @JsonValue + public double getMeters() { + return meters; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + + } } - @Override - public String toString() { - return "City [distance=" + distance + "]"; - } - } diff --git a/jackson/src/test/java/com/baeldung/jackson/enums/JacksonEnumDeserializationUnitTest.java b/jackson/src/test/java/com/baeldung/jackson/enums/JacksonEnumDeserializationUnitTest.java new file mode 100644 index 0000000000..d823bca445 --- /dev/null +++ b/jackson/src/test/java/com/baeldung/jackson/enums/JacksonEnumDeserializationUnitTest.java @@ -0,0 +1,45 @@ +package com.baeldung.jackson.enums; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import java.io.IOException; +import org.junit.Test; +import com.baeldung.jackson.entities.City; +import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class JacksonEnumDeserializationUnitTest { + + @Test + public final void givenEnum_whenDeserializingJson_thenCorrectRepresentation() throws JsonParseException, IOException { + String json = "{\"distance\":\"KILOMETER\"}"; + City.CityWithDefaultEnum city = new ObjectMapper().readValue(json, City.CityWithDefaultEnum.class); + + assertEquals(City.CityWithDefaultEnum.Distance.KILOMETER, city.getDistance()); + } + + @Test + public final void givenEnumWithJsonValue_whenDeserializingJson_thenCorrectRepresentation() throws JsonParseException, IOException { + String json = "{\"distance\": \"0.0254\"}"; + + City.CityWithJsonValueEnum city = new ObjectMapper().readValue(json, City.CityWithJsonValueEnum.class); + assertEquals(City.CityWithJsonValueEnum.Distance.INCH, city.getDistance()); + } + + @Test + public final void givenEnumWithJsonProperty_whenDeserializingJson_thenCorrectRepresentation() throws JsonParseException, IOException { + String json = "{\"distance\": \"distance-in-km\"}"; + + City.CityWithJsonPropertyEnum city = new ObjectMapper().readValue(json, City.CityWithJsonPropertyEnum.class); + assertEquals(City.CityWithJsonPropertyEnum.Distance.KILOMETER, city.getDistance()); + + } + + @Test + public final void givenEnumWithJsonCreator_whenDeserializingJson_thenCorrectRepresentation() throws JsonParseException, IOException { + String json = "{\"distance\": {\"unit\":\"miles\",\"meters\":1609.34}}"; + + City.CityWithJsonCreatorEnum city = new ObjectMapper().readValue(json, City.CityWithJsonCreatorEnum.class); + assertEquals(City.CityWithJsonCreatorEnum.Distance.MILE, city.getDistance()); + } + +} diff --git a/jackson/src/test/java/com/baeldung/jackson/enums/JacksonEnumSerializationUnitTest.java b/jackson/src/test/java/com/baeldung/jackson/enums/JacksonEnumSerializationUnitTest.java index 3108773a00..d4fb2401ed 100644 --- a/jackson/src/test/java/com/baeldung/jackson/enums/JacksonEnumSerializationUnitTest.java +++ b/jackson/src/test/java/com/baeldung/jackson/enums/JacksonEnumSerializationUnitTest.java @@ -1,17 +1,10 @@ package com.baeldung.jackson.enums; import static org.hamcrest.Matchers.containsString; -import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertThat; -import static org.junit.jupiter.api.Assertions.assertEquals; - import java.io.IOException; -import org.junit.Ignore; import org.junit.Test; - -import com.baeldung.jackson.entities.City; import com.fasterxml.jackson.core.JsonParseException; -import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; public class JacksonEnumSerializationUnitTest { @@ -22,42 +15,5 @@ public class JacksonEnumSerializationUnitTest { assertThat(dtoAsString, containsString("1609.34")); } - - @Test - @Ignore - public final void givenEnum_whenDeserializingJson_thenCorrectRepresentation() throws JsonParseException, IOException { - String json = "{\"distance\":\"KILOMETER\"}"; - City city = new ObjectMapper().readValue(json, City.class); - - assertEquals(Distance.KILOMETER, city.getDistance()); - } - - @Test - @Ignore - public final void givenEnumWithJsonValue_whenDeserializingJson_thenCorrectRepresentation() throws JsonParseException, IOException { - String json = "{\"JacksonDeserializationUnitTestdistance\": \"0.0254\"}"; - - City city = new ObjectMapper().readValue(json, City.class); - assertEquals(Distance.INCH, city.getDistance()); - } - - @Test - public final void givenEnumWithGsonProperty_whenDeserializingJson_thenCorrectRepresentation() throws JsonParseException, IOException { - String json = "{\"distance\": \"distance-in-km\"}"; - - City city = new ObjectMapper().readValue(json, City.class); - assertEquals(Distance.KILOMETER, city.getDistance()); - - } - - @Test - @Ignore - public final void givenEnumWithGsonCreator_whenDeserializingJson_thenCorrectRepresentation() throws JsonParseException, IOException { - String json = "{\"distance\": {\"unit\":\"miles\",\"meters\":1609.34}}"; - - City city = new ObjectMapper().readValue(json, City.class); - assertEquals(Distance.MILE, city.getDistance()); - System.out.println(city); - } } From d97f501cbded06fa17315b816d34e3c50125e2ac Mon Sep 17 00:00:00 2001 From: Sjmillington Date: Mon, 7 Oct 2019 17:07:57 +0100 Subject: [PATCH 030/265] BAEL-13505 Move articles out of core java - part 2 --- core-java-modules/core-java-jvm/README.md | 6 +++-- core-java-modules/core-java-jvm/pom.xml | 22 +++++++++++++++ .../classloader/CustomClassLoader.java | 0 .../classloader/PrintClassLoader.java | 0 .../instrumentation/agent/AtmTransformer.java | 0 .../agent/MyInstrumentationAgent.java | 0 .../application/AgentLoader.java | 0 .../instrumentation/application/Launcher.java | 0 .../instrumentation/application/MyAtm.java | 0 .../application/MyAtmApplication.java | 0 .../baeldung/logforging/LogForgingDemo.java | 0 .../src/main/resources/ESAPI.properties | 0 .../CustomClassLoaderUnitTest.java | 0 .../classloader/PrintClassLoaderUnitTest.java | 0 core-java-modules/core-java-os/README.md | 5 ++++ core-java-modules/core-java-os/pom.xml | 12 +++++++++ .../com/baeldung/printscreen/Screenshot.java | 0 .../java/com/baeldung/system/DetectOS.java | 0 .../grep/GrepWithUnix4JIntegrationTest.java | 0 .../printscreen/ScreenshotLiveTest.java | 0 .../shell/JavaProcessUnitIntegrationTest.java | 2 +- .../system/WhenDetectingOSUnitTest.java | 0 core-java-modules/core-java/README.md | 9 ------- core-java-modules/core-java/pom.xml | 27 ++++--------------- .../java/com/baeldung/printscreen/README.md | 2 -- 25 files changed, 49 insertions(+), 36 deletions(-) rename core-java-modules/{core-java => core-java-jvm}/src/main/java/com/baeldung/classloader/CustomClassLoader.java (100%) rename core-java-modules/{core-java => core-java-jvm}/src/main/java/com/baeldung/classloader/PrintClassLoader.java (100%) rename core-java-modules/{core-java => core-java-jvm}/src/main/java/com/baeldung/instrumentation/agent/AtmTransformer.java (100%) rename core-java-modules/{core-java => core-java-jvm}/src/main/java/com/baeldung/instrumentation/agent/MyInstrumentationAgent.java (100%) rename core-java-modules/{core-java => core-java-jvm}/src/main/java/com/baeldung/instrumentation/application/AgentLoader.java (100%) rename core-java-modules/{core-java => core-java-jvm}/src/main/java/com/baeldung/instrumentation/application/Launcher.java (100%) rename core-java-modules/{core-java => core-java-jvm}/src/main/java/com/baeldung/instrumentation/application/MyAtm.java (100%) rename core-java-modules/{core-java => core-java-jvm}/src/main/java/com/baeldung/instrumentation/application/MyAtmApplication.java (100%) rename core-java-modules/{core-java => core-java-jvm}/src/main/java/com/baeldung/logforging/LogForgingDemo.java (100%) rename core-java-modules/{core-java => core-java-jvm}/src/main/resources/ESAPI.properties (100%) rename core-java-modules/{core-java => core-java-jvm}/src/test/java/com/baeldung/classloader/CustomClassLoaderUnitTest.java (100%) rename core-java-modules/{core-java => core-java-jvm}/src/test/java/com/baeldung/classloader/PrintClassLoaderUnitTest.java (100%) rename core-java-modules/{core-java => core-java-os}/src/main/java/com/baeldung/printscreen/Screenshot.java (100%) rename core-java-modules/{core-java => core-java-os}/src/main/java/com/baeldung/system/DetectOS.java (100%) rename core-java-modules/{core-java => core-java-os}/src/test/java/com/baeldung/grep/GrepWithUnix4JIntegrationTest.java (100%) rename core-java-modules/{core-java => core-java-os}/src/test/java/com/baeldung/printscreen/ScreenshotLiveTest.java (100%) rename core-java-modules/{core-java/src/test/java/org/baeldung/java => core-java-os/src/test/java/com/baeldung}/shell/JavaProcessUnitIntegrationTest.java (98%) rename core-java-modules/{core-java => core-java-os}/src/test/java/com/baeldung/system/WhenDetectingOSUnitTest.java (100%) delete mode 100644 core-java-modules/core-java/src/main/java/com/baeldung/printscreen/README.md diff --git a/core-java-modules/core-java-jvm/README.md b/core-java-modules/core-java-jvm/README.md index 82067ad952..9f1d21fa6f 100644 --- a/core-java-modules/core-java-jvm/README.md +++ b/core-java-modules/core-java-jvm/README.md @@ -1,6 +1,8 @@ -========= - ## Core Java JVM Cookbooks and Examples ### Relevant Articles: + - [Method Inlining in the JVM](https://www.baeldung.com/jvm-method-inlining) +- [JVM Log Forging](http://www.baeldung.com/jvm-log-forging) +- [Guide to Java Instrumentation](http://www.baeldung.com/java-instrumentation) +- [Class Loaders in Java](http://www.baeldung.com/java-classloaders) diff --git a/core-java-modules/core-java-jvm/pom.xml b/core-java-modules/core-java-jvm/pom.xml index b1860322a6..b6fd81fe45 100644 --- a/core-java-modules/core-java-jvm/pom.xml +++ b/core-java-modules/core-java-jvm/pom.xml @@ -32,9 +32,31 @@ ${assertj.version} test + + org.javassist + javassist + ${javaassist.version} + + + org.owasp.esapi + esapi + ${esapi.version} + + + com.sun + tools + ${sun.tools.version} + system + ${java.home}/../lib/tools.jar + + 3.6.1 + + 3.21.0-GA + 2.1.0.1 + 1.8.0 diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/classloader/CustomClassLoader.java b/core-java-modules/core-java-jvm/src/main/java/com/baeldung/classloader/CustomClassLoader.java similarity index 100% rename from core-java-modules/core-java/src/main/java/com/baeldung/classloader/CustomClassLoader.java rename to core-java-modules/core-java-jvm/src/main/java/com/baeldung/classloader/CustomClassLoader.java diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/classloader/PrintClassLoader.java b/core-java-modules/core-java-jvm/src/main/java/com/baeldung/classloader/PrintClassLoader.java similarity index 100% rename from core-java-modules/core-java/src/main/java/com/baeldung/classloader/PrintClassLoader.java rename to core-java-modules/core-java-jvm/src/main/java/com/baeldung/classloader/PrintClassLoader.java diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/instrumentation/agent/AtmTransformer.java b/core-java-modules/core-java-jvm/src/main/java/com/baeldung/instrumentation/agent/AtmTransformer.java similarity index 100% rename from core-java-modules/core-java/src/main/java/com/baeldung/instrumentation/agent/AtmTransformer.java rename to core-java-modules/core-java-jvm/src/main/java/com/baeldung/instrumentation/agent/AtmTransformer.java diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/instrumentation/agent/MyInstrumentationAgent.java b/core-java-modules/core-java-jvm/src/main/java/com/baeldung/instrumentation/agent/MyInstrumentationAgent.java similarity index 100% rename from core-java-modules/core-java/src/main/java/com/baeldung/instrumentation/agent/MyInstrumentationAgent.java rename to core-java-modules/core-java-jvm/src/main/java/com/baeldung/instrumentation/agent/MyInstrumentationAgent.java diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/instrumentation/application/AgentLoader.java b/core-java-modules/core-java-jvm/src/main/java/com/baeldung/instrumentation/application/AgentLoader.java similarity index 100% rename from core-java-modules/core-java/src/main/java/com/baeldung/instrumentation/application/AgentLoader.java rename to core-java-modules/core-java-jvm/src/main/java/com/baeldung/instrumentation/application/AgentLoader.java diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/instrumentation/application/Launcher.java b/core-java-modules/core-java-jvm/src/main/java/com/baeldung/instrumentation/application/Launcher.java similarity index 100% rename from core-java-modules/core-java/src/main/java/com/baeldung/instrumentation/application/Launcher.java rename to core-java-modules/core-java-jvm/src/main/java/com/baeldung/instrumentation/application/Launcher.java diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/instrumentation/application/MyAtm.java b/core-java-modules/core-java-jvm/src/main/java/com/baeldung/instrumentation/application/MyAtm.java similarity index 100% rename from core-java-modules/core-java/src/main/java/com/baeldung/instrumentation/application/MyAtm.java rename to core-java-modules/core-java-jvm/src/main/java/com/baeldung/instrumentation/application/MyAtm.java diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/instrumentation/application/MyAtmApplication.java b/core-java-modules/core-java-jvm/src/main/java/com/baeldung/instrumentation/application/MyAtmApplication.java similarity index 100% rename from core-java-modules/core-java/src/main/java/com/baeldung/instrumentation/application/MyAtmApplication.java rename to core-java-modules/core-java-jvm/src/main/java/com/baeldung/instrumentation/application/MyAtmApplication.java diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/logforging/LogForgingDemo.java b/core-java-modules/core-java-jvm/src/main/java/com/baeldung/logforging/LogForgingDemo.java similarity index 100% rename from core-java-modules/core-java/src/main/java/com/baeldung/logforging/LogForgingDemo.java rename to core-java-modules/core-java-jvm/src/main/java/com/baeldung/logforging/LogForgingDemo.java diff --git a/core-java-modules/core-java/src/main/resources/ESAPI.properties b/core-java-modules/core-java-jvm/src/main/resources/ESAPI.properties similarity index 100% rename from core-java-modules/core-java/src/main/resources/ESAPI.properties rename to core-java-modules/core-java-jvm/src/main/resources/ESAPI.properties diff --git a/core-java-modules/core-java/src/test/java/com/baeldung/classloader/CustomClassLoaderUnitTest.java b/core-java-modules/core-java-jvm/src/test/java/com/baeldung/classloader/CustomClassLoaderUnitTest.java similarity index 100% rename from core-java-modules/core-java/src/test/java/com/baeldung/classloader/CustomClassLoaderUnitTest.java rename to core-java-modules/core-java-jvm/src/test/java/com/baeldung/classloader/CustomClassLoaderUnitTest.java diff --git a/core-java-modules/core-java/src/test/java/com/baeldung/classloader/PrintClassLoaderUnitTest.java b/core-java-modules/core-java-jvm/src/test/java/com/baeldung/classloader/PrintClassLoaderUnitTest.java similarity index 100% rename from core-java-modules/core-java/src/test/java/com/baeldung/classloader/PrintClassLoaderUnitTest.java rename to core-java-modules/core-java-jvm/src/test/java/com/baeldung/classloader/PrintClassLoaderUnitTest.java diff --git a/core-java-modules/core-java-os/README.md b/core-java-modules/core-java-os/README.md index 9205628a87..f2ec3f9d48 100644 --- a/core-java-modules/core-java-os/README.md +++ b/core-java-modules/core-java-os/README.md @@ -3,9 +3,14 @@ This module contains articles about working with the operating system (OS) in Java ### Relevant Articles: + - [Java 9 Process API Improvements](http://www.baeldung.com/java-9-process-api) - [Guide to java.lang.Process API](https://www.baeldung.com/java-process-api) - [Guide to java.lang.ProcessBuilder API](https://www.baeldung.com/java-lang-processbuilder-api) - [Get the Current Working Directory in Java](https://www.baeldung.com/java-current-directory) +- [How to Detect the OS Using Java](http://www.baeldung.com/java-detect-os) +- [How to Print Screen in Java](http://www.baeldung.com/print-screen-in-java) +- [Pattern Search with Grep in Java](http://www.baeldung.com/grep-in-java) +- [How to Run a Shell Command in Java](http://www.baeldung.com/run-shell-command-in-java) This module uses Java 9, so make sure to have the JDK 9 installed to run it. \ No newline at end of file diff --git a/core-java-modules/core-java-os/pom.xml b/core-java-modules/core-java-os/pom.xml index f6c5ef04a5..16391e968d 100644 --- a/core-java-modules/core-java-os/pom.xml +++ b/core-java-modules/core-java-os/pom.xml @@ -42,6 +42,16 @@ ${assertj.version} test + + org.unix4j + unix4j-command + ${unix4j.version} + + + com.googlecode.grep4j + grep4j + ${grep4j.version} + @@ -77,5 +87,7 @@ 1.9 1.9 25.1-jre + 0.4 + 1.8.7 diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/printscreen/Screenshot.java b/core-java-modules/core-java-os/src/main/java/com/baeldung/printscreen/Screenshot.java similarity index 100% rename from core-java-modules/core-java/src/main/java/com/baeldung/printscreen/Screenshot.java rename to core-java-modules/core-java-os/src/main/java/com/baeldung/printscreen/Screenshot.java diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/system/DetectOS.java b/core-java-modules/core-java-os/src/main/java/com/baeldung/system/DetectOS.java similarity index 100% rename from core-java-modules/core-java/src/main/java/com/baeldung/system/DetectOS.java rename to core-java-modules/core-java-os/src/main/java/com/baeldung/system/DetectOS.java diff --git a/core-java-modules/core-java/src/test/java/com/baeldung/grep/GrepWithUnix4JIntegrationTest.java b/core-java-modules/core-java-os/src/test/java/com/baeldung/grep/GrepWithUnix4JIntegrationTest.java similarity index 100% rename from core-java-modules/core-java/src/test/java/com/baeldung/grep/GrepWithUnix4JIntegrationTest.java rename to core-java-modules/core-java-os/src/test/java/com/baeldung/grep/GrepWithUnix4JIntegrationTest.java diff --git a/core-java-modules/core-java/src/test/java/com/baeldung/printscreen/ScreenshotLiveTest.java b/core-java-modules/core-java-os/src/test/java/com/baeldung/printscreen/ScreenshotLiveTest.java similarity index 100% rename from core-java-modules/core-java/src/test/java/com/baeldung/printscreen/ScreenshotLiveTest.java rename to core-java-modules/core-java-os/src/test/java/com/baeldung/printscreen/ScreenshotLiveTest.java diff --git a/core-java-modules/core-java/src/test/java/org/baeldung/java/shell/JavaProcessUnitIntegrationTest.java b/core-java-modules/core-java-os/src/test/java/com/baeldung/shell/JavaProcessUnitIntegrationTest.java similarity index 98% rename from core-java-modules/core-java/src/test/java/org/baeldung/java/shell/JavaProcessUnitIntegrationTest.java rename to core-java-modules/core-java-os/src/test/java/com/baeldung/shell/JavaProcessUnitIntegrationTest.java index efd7dda70f..53e9364207 100644 --- a/core-java-modules/core-java/src/test/java/org/baeldung/java/shell/JavaProcessUnitIntegrationTest.java +++ b/core-java-modules/core-java-os/src/test/java/com/baeldung/shell/JavaProcessUnitIntegrationTest.java @@ -1,4 +1,4 @@ -package org.baeldung.java.shell; +package com.baeldung.java.shell; import org.junit.Assert; import org.junit.Test; diff --git a/core-java-modules/core-java/src/test/java/com/baeldung/system/WhenDetectingOSUnitTest.java b/core-java-modules/core-java-os/src/test/java/com/baeldung/system/WhenDetectingOSUnitTest.java similarity index 100% rename from core-java-modules/core-java/src/test/java/com/baeldung/system/WhenDetectingOSUnitTest.java rename to core-java-modules/core-java-os/src/test/java/com/baeldung/system/WhenDetectingOSUnitTest.java diff --git a/core-java-modules/core-java/README.md b/core-java-modules/core-java/README.md index 436a481803..a592449799 100644 --- a/core-java-modules/core-java/README.md +++ b/core-java-modules/core-java/README.md @@ -1,18 +1,12 @@ -========= - ## Core Java Cookbooks and Examples ### Relevant Articles: - [Java Timer](http://www.baeldung.com/java-timer-and-timertask) -- [How to Run a Shell Command in Java](http://www.baeldung.com/run-shell-command-in-java) -- [How to Print Screen in Java](http://www.baeldung.com/print-screen-in-java) - [A Guide To Java Regular Expressions API](http://www.baeldung.com/regular-expressions-java) - [Getting Started with Java Properties](http://www.baeldung.com/java-properties) -- [Pattern Search with Grep in Java](http://www.baeldung.com/grep-in-java) - [How to Create an Executable JAR with Maven](http://www.baeldung.com/executable-jar-with-maven) - [Introduction to Nashorn](http://www.baeldung.com/java-nashorn) - [Java Money and the Currency API](http://www.baeldung.com/java-money-and-currency) -- [JVM Log Forging](http://www.baeldung.com/jvm-log-forging) - [How to Add a Single Element to a Stream](http://www.baeldung.com/java-stream-append-prepend) - [How to Find all Getters Returning Null](http://www.baeldung.com/java-getters-returning-null) - [How to Get a Name of a Method Being Executed?](http://www.baeldung.com/java-name-of-executing-method) @@ -24,16 +18,13 @@ - [Compiling Java *.class Files with javac](http://www.baeldung.com/javac) - [Introduction to Javadoc](http://www.baeldung.com/javadoc) - [Guide to the Externalizable Interface in Java](http://www.baeldung.com/java-externalizable) -- [How to Detect the OS Using Java](http://www.baeldung.com/java-detect-os) - [ASCII Art in Java](http://www.baeldung.com/ascii-art-in-java) - [What is the serialVersionUID?](http://www.baeldung.com/java-serial-version-uid) - [A Guide to the ResourceBundle](http://www.baeldung.com/java-resourcebundle) -- [Class Loaders in Java](http://www.baeldung.com/java-classloaders) - [Guide to the Java Clock Class](http://www.baeldung.com/java-clock) - [Importance of Main Manifest Attribute in a Self-Executing JAR](http://www.baeldung.com/java-jar-executable-manifest-main-class) - [Java Global Exception Handler](http://www.baeldung.com/java-global-exception-handler) - [How to Get the Size of an Object in Java](http://www.baeldung.com/java-size-of-object) -- [Guide to Java Instrumentation](http://www.baeldung.com/java-instrumentation) - [Common Java Exceptions](http://www.baeldung.com/java-common-exceptions) - [Throw Exception in Optional in Java 8](https://www.baeldung.com/java-optional-throw-exception) - [Merging java.util.Properties Objects](https://www.baeldung.com/java-merging-properties) diff --git a/core-java-modules/core-java/pom.xml b/core-java-modules/core-java/pom.xml index 2a2cb3a6af..f04e63eb7c 100644 --- a/core-java-modules/core-java/pom.xml +++ b/core-java-modules/core-java/pom.xml @@ -75,11 +75,7 @@ moneta ${javamoney.moneta.version} - - org.owasp.esapi - esapi - ${esapi.version} - + com.sun.messaging.mq fscontext @@ -115,19 +111,7 @@ h2 ${h2.version} - - - org.javassist - javassist - ${javaassist.version} - - - com.sun - tools - ${sun.tools.version} - system - ${java.home}/../lib/tools.jar - + @@ -469,7 +453,7 @@ 2.21.0 1.1 - 2.1.0.1 + 1.19 1.19 @@ -480,9 +464,8 @@ 2.0.3.RELEASE 1.6.0 61.1 - - 3.21.0-GA + - 1.8.0 + diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/printscreen/README.md b/core-java-modules/core-java/src/main/java/com/baeldung/printscreen/README.md deleted file mode 100644 index 7b3b40c102..0000000000 --- a/core-java-modules/core-java/src/main/java/com/baeldung/printscreen/README.md +++ /dev/null @@ -1,2 +0,0 @@ -### Relevant Articles: -- [How to Print Screen in Java](http://www.baeldung.com/print-screen-in-java) From a2e57b357786430143c1057da765494688a69d1b Mon Sep 17 00:00:00 2001 From: "m.raheem" Date: Mon, 7 Oct 2019 22:46:32 +0200 Subject: [PATCH 031/265] custom deserializer --- .../enums/CustomEnumDeserializer.java | 44 +++++++++++++++++++ .../com/baeldung/jackson/entities/City.java | 41 +++++++++++++++++ .../JacksonEnumDeserializationUnitTest.java | 7 +++ 3 files changed, 92 insertions(+) create mode 100644 jackson/src/main/java/com/baeldung/jackson/deserialization/enums/CustomEnumDeserializer.java diff --git a/jackson/src/main/java/com/baeldung/jackson/deserialization/enums/CustomEnumDeserializer.java b/jackson/src/main/java/com/baeldung/jackson/deserialization/enums/CustomEnumDeserializer.java new file mode 100644 index 0000000000..3b99490e0b --- /dev/null +++ b/jackson/src/main/java/com/baeldung/jackson/deserialization/enums/CustomEnumDeserializer.java @@ -0,0 +1,44 @@ +package com.baeldung.jackson.deserialization.enums; + +import java.io.IOException; +import com.baeldung.jackson.entities.City; +import com.baeldung.jackson.entities.City.CityWithCustomDeserializationEnum.Distance; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.deser.std.StdDeserializer; + +public class CustomEnumDeserializer extends StdDeserializer { + + private static final long serialVersionUID = -1166032307856492833L; + + public CustomEnumDeserializer() { + this(null); + } + + public CustomEnumDeserializer(Class vc) { + super(vc); + } + + @Override + public City.CityWithCustomDeserializationEnum.Distance deserialize(final JsonParser jsonParser, final DeserializationContext ctxt) throws IOException, JsonProcessingException { + + final JsonNode node = jsonParser.getCodec().readTree(jsonParser); + + String unit = node.get("unit").asText(); + double meters = node.get("meters").asDouble(); + + for (Distance distance : Distance.values()) { + + if (distance.getUnit().equals(unit) && + Double.compare(distance.getMeters(), meters) == 0) { + + return distance; + } + } + + return null; + } + +} diff --git a/jackson/src/main/java/com/baeldung/jackson/entities/City.java b/jackson/src/main/java/com/baeldung/jackson/entities/City.java index 9f338acc28..42911dc798 100644 --- a/jackson/src/main/java/com/baeldung/jackson/entities/City.java +++ b/jackson/src/main/java/com/baeldung/jackson/entities/City.java @@ -1,8 +1,10 @@ package com.baeldung.jackson.entities; +import com.baeldung.jackson.deserialization.enums.CustomEnumDeserializer; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; public class City { @@ -191,4 +193,43 @@ public class City { } } + public static class CityWithCustomDeserializationEnum { + + private Distance distance; + + public Distance getDistance() { + return distance; + } + + public void setDistance(Distance distance) { + this.distance = distance; + } + + @JsonDeserialize(using = CustomEnumDeserializer.class) + public enum Distance { + + KILOMETER("km", 1000), MILE("miles", 1609.34), METER("meters", 1), INCH("inches", 0.0254), CENTIMETER("cm", 0.01), MILLIMETER("mm", 0.001); + + private String unit; + private final double meters; + + private Distance(String unit, double meters) { + this.unit = unit; + this.meters = meters; + } + + public double getMeters() { + return meters; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + } + } + } diff --git a/jackson/src/test/java/com/baeldung/jackson/enums/JacksonEnumDeserializationUnitTest.java b/jackson/src/test/java/com/baeldung/jackson/enums/JacksonEnumDeserializationUnitTest.java index d823bca445..b4d63c181e 100644 --- a/jackson/src/test/java/com/baeldung/jackson/enums/JacksonEnumDeserializationUnitTest.java +++ b/jackson/src/test/java/com/baeldung/jackson/enums/JacksonEnumDeserializationUnitTest.java @@ -42,4 +42,11 @@ public class JacksonEnumDeserializationUnitTest { assertEquals(City.CityWithJsonCreatorEnum.Distance.MILE, city.getDistance()); } + @Test + public final void givenEnumWithCustomDeserializer_whenDeserializingJson_thenCorrectRepresentation() throws JsonParseException, IOException { + String json = "{\"distance\": {\"unit\":\"miles\",\"meters\":1609.34}}"; + + City.CityWithCustomDeserializationEnum city = new ObjectMapper().readValue(json, City.CityWithCustomDeserializationEnum.class); + assertEquals(City.CityWithCustomDeserializationEnum.Distance.MILE, city.getDistance()); + } } From cd0d79d8f64396ab831dfcbc8ffe3cf061cf01e6 Mon Sep 17 00:00:00 2001 From: Anshul BANSAL Date: Tue, 8 Oct 2019 15:40:45 +0300 Subject: [PATCH 032/265] BAEL-1871 - Spring Data Geode --- persistence-modules/pom.xml | 1 + persistence-modules/spring-data-geode/pom.xml | 94 +++++++++++++++++++ .../springdatageode/app/ClientCacheApp.java | 32 +++++++ .../controller/AppController.java | 37 ++++++++ .../springdatageode/domain/Author.java | 58 ++++++++++++ .../repo/AuthorRepository.java | 12 +++ .../service/AuthorService.java | 14 +++ .../src/main/resources/application.properties | 1 + .../src/main/resources/logback.xml | 13 +++ 9 files changed, 262 insertions(+) create mode 100644 persistence-modules/spring-data-geode/pom.xml create mode 100644 persistence-modules/spring-data-geode/src/main/java/com/baeldung/springdatageode/app/ClientCacheApp.java create mode 100644 persistence-modules/spring-data-geode/src/main/java/com/baeldung/springdatageode/controller/AppController.java create mode 100644 persistence-modules/spring-data-geode/src/main/java/com/baeldung/springdatageode/domain/Author.java create mode 100644 persistence-modules/spring-data-geode/src/main/java/com/baeldung/springdatageode/repo/AuthorRepository.java create mode 100644 persistence-modules/spring-data-geode/src/main/java/com/baeldung/springdatageode/service/AuthorService.java create mode 100644 persistence-modules/spring-data-geode/src/main/resources/application.properties create mode 100644 persistence-modules/spring-data-geode/src/main/resources/logback.xml diff --git a/persistence-modules/pom.xml b/persistence-modules/pom.xml index 932b62a235..f57566b879 100644 --- a/persistence-modules/pom.xml +++ b/persistence-modules/pom.xml @@ -48,6 +48,7 @@ spring-data-eclipselink spring-data-elasticsearch spring-data-gemfire + spring-data-geode spring-data-jpa spring-data-keyvalue spring-data-mongodb diff --git a/persistence-modules/spring-data-geode/pom.xml b/persistence-modules/spring-data-geode/pom.xml new file mode 100644 index 0000000000..abd3049755 --- /dev/null +++ b/persistence-modules/spring-data-geode/pom.xml @@ -0,0 +1,94 @@ + + + 4.0.0 + spring-data-geode + spring-data-geode + jar + Intro to Spring Data Geode + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + ../../ + + + + + org.springframework.boot + spring-boot-starter + 2.1.9.RELEASE + + + org.springframework.boot + spring-boot-starter-logging + + + + + org.springframework.boot + spring-boot-starter-web + ${spring-boot-version} + + + org.springframework.boot + spring-boot-starter-logging + + + + + org.springframework.geode + spring-geode-starter + ${spring-geode-starter-version} + + + + org.springframework.boot + spring-boot-autoconfigure + ${spring-boot-version} + + + org.springframework.boot + spring-boot-starter-test + ${spring-boot-version} + test + + + + + ${project.artifactId} + + + com.mysema.maven + maven-apt-plugin + 1.0 + + + generate-sources + + process + + + target/generated-sources + com.querydsl.apt.jpa.JPAAnnotationProcessor + + + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot-version} + + + + + + 2.1.9.RELEASE + UTF-8 + com.baeldung.springdatageode.app.ClientCacheApp + 1.1.1.RELEASE + + + \ No newline at end of file diff --git a/persistence-modules/spring-data-geode/src/main/java/com/baeldung/springdatageode/app/ClientCacheApp.java b/persistence-modules/spring-data-geode/src/main/java/com/baeldung/springdatageode/app/ClientCacheApp.java new file mode 100644 index 0000000000..6e9a33e953 --- /dev/null +++ b/persistence-modules/spring-data-geode/src/main/java/com/baeldung/springdatageode/app/ClientCacheApp.java @@ -0,0 +1,32 @@ +package com.baeldung.springdatageode.app; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.data.gemfire.config.annotation.ClientCacheApplication; +import org.springframework.data.gemfire.config.annotation.EnableClusterConfiguration; +import org.springframework.data.gemfire.config.annotation.EnableContinuousQueries; +import org.springframework.data.gemfire.config.annotation.EnableEntityDefinedRegions; +import org.springframework.data.gemfire.config.annotation.EnableIndexing; +import org.springframework.data.gemfire.repository.config.EnableGemfireRepositories; + +import com.baeldung.springdatageode.controller.AppController; +import com.baeldung.springdatageode.domain.Author; +import com.baeldung.springdatageode.repo.AuthorRepository; +import com.baeldung.springdatageode.service.AuthorService; + +@SpringBootApplication +@ClientCacheApplication(subscriptionEnabled = true) +@EnableEntityDefinedRegions(basePackageClasses = Author.class) +@EnableIndexing +@EnableGemfireRepositories(basePackageClasses = AuthorRepository.class) +@ComponentScan(basePackageClasses = {AppController.class, AuthorService.class}) +@EnableClusterConfiguration(useHttp = true, requireHttps=false) +@EnableContinuousQueries +public class ClientCacheApp { + + public static void main(String[] args) { + SpringApplication.run(ClientCacheApp.class, args); + } + +} diff --git a/persistence-modules/spring-data-geode/src/main/java/com/baeldung/springdatageode/controller/AppController.java b/persistence-modules/spring-data-geode/src/main/java/com/baeldung/springdatageode/controller/AppController.java new file mode 100644 index 0000000000..32f931820a --- /dev/null +++ b/persistence-modules/spring-data-geode/src/main/java/com/baeldung/springdatageode/controller/AppController.java @@ -0,0 +1,37 @@ +package com.baeldung.springdatageode.controller; + +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.baeldung.springdatageode.domain.Author; +import com.baeldung.springdatageode.repo.AuthorRepository; + +@RestController +@CrossOrigin +public class AppController { + + @Autowired + private AuthorRepository authorRepositoryImpl; + + @PostMapping(path = "/author" ) + public ResponseEntity addAuthor(@RequestBody Author author) throws Exception { + authorRepositoryImpl.save(author); + return new ResponseEntity<>("OK", HttpStatus.OK); + } + + @GetMapping(path = "/author" ) + public ResponseEntity getAuthor(@RequestParam("id") String id) throws Exception { + Optional author = authorRepositoryImpl.findById(Long.parseLong(id)); + return new ResponseEntity<>(author.isPresent() ? author.get() : null, HttpStatus.OK); + } + +} diff --git a/persistence-modules/spring-data-geode/src/main/java/com/baeldung/springdatageode/domain/Author.java b/persistence-modules/spring-data-geode/src/main/java/com/baeldung/springdatageode/domain/Author.java new file mode 100644 index 0000000000..4a2e58ff34 --- /dev/null +++ b/persistence-modules/spring-data-geode/src/main/java/com/baeldung/springdatageode/domain/Author.java @@ -0,0 +1,58 @@ +package com.baeldung.springdatageode.domain; + +import org.springframework.data.annotation.Id; +import org.springframework.data.gemfire.mapping.annotation.Indexed; +import org.springframework.data.gemfire.mapping.annotation.Region; + +@Region(name = "Authors") +public class Author { + + @Id + private Long id; + + private String firstName; + + private String lastName; + + @Indexed + private int age; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } + + @Override + public String toString() { + return this.firstName + " " + this.lastName + ", " + this.age + " years old"; + } + +} + diff --git a/persistence-modules/spring-data-geode/src/main/java/com/baeldung/springdatageode/repo/AuthorRepository.java b/persistence-modules/spring-data-geode/src/main/java/com/baeldung/springdatageode/repo/AuthorRepository.java new file mode 100644 index 0000000000..3a311039a4 --- /dev/null +++ b/persistence-modules/spring-data-geode/src/main/java/com/baeldung/springdatageode/repo/AuthorRepository.java @@ -0,0 +1,12 @@ +package com.baeldung.springdatageode.repo; + +import com.baeldung.springdatageode.domain.Author; + +import java.util.Optional; + +import org.springframework.data.repository.CrudRepository; + +public interface AuthorRepository extends CrudRepository { + + Optional findById(Long id); +} diff --git a/persistence-modules/spring-data-geode/src/main/java/com/baeldung/springdatageode/service/AuthorService.java b/persistence-modules/spring-data-geode/src/main/java/com/baeldung/springdatageode/service/AuthorService.java new file mode 100644 index 0000000000..1bf4cbaba1 --- /dev/null +++ b/persistence-modules/spring-data-geode/src/main/java/com/baeldung/springdatageode/service/AuthorService.java @@ -0,0 +1,14 @@ +package com.baeldung.springdatageode.service; + +import org.apache.geode.cache.query.CqEvent; +import org.springframework.data.gemfire.listener.annotation.ContinuousQuery; +import org.springframework.stereotype.Service; + +@Service +public class AuthorService { + + @ContinuousQuery(query = "SELECT * FROM /Authors a WHERE a.id = 1") + public void process(CqEvent event) { + System.out.println("Author #" + event.getKey() + " updated to " + event.getNewValue()); + } +} diff --git a/persistence-modules/spring-data-geode/src/main/resources/application.properties b/persistence-modules/spring-data-geode/src/main/resources/application.properties new file mode 100644 index 0000000000..7b7cb5a37b --- /dev/null +++ b/persistence-modules/spring-data-geode/src/main/resources/application.properties @@ -0,0 +1 @@ +server.port=9091 \ No newline at end of file diff --git a/persistence-modules/spring-data-geode/src/main/resources/logback.xml b/persistence-modules/spring-data-geode/src/main/resources/logback.xml new file mode 100644 index 0000000000..7d900d8ea8 --- /dev/null +++ b/persistence-modules/spring-data-geode/src/main/resources/logback.xml @@ -0,0 +1,13 @@ + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + \ No newline at end of file From e94f7c56c2d1507a21fe447afee26efeb3ad0527 Mon Sep 17 00:00:00 2001 From: enpy303 Date: Tue, 8 Oct 2019 13:01:50 +0200 Subject: [PATCH 033/265] java config added --- .../com/baeldung/tx/TxIntegrationConfig.java | 156 ++++++++++++++++++ 1 file changed, 156 insertions(+) create mode 100644 spring-integration/src/main/java/com/baeldung/tx/TxIntegrationConfig.java diff --git a/spring-integration/src/main/java/com/baeldung/tx/TxIntegrationConfig.java b/spring-integration/src/main/java/com/baeldung/tx/TxIntegrationConfig.java new file mode 100644 index 0000000000..308b00d8e9 --- /dev/null +++ b/spring-integration/src/main/java/com/baeldung/tx/TxIntegrationConfig.java @@ -0,0 +1,156 @@ +package com.baeldung.tx; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.support.AbstractApplicationContext; +import org.springframework.expression.common.LiteralExpression; +import org.springframework.integration.annotation.InboundChannelAdapter; +import org.springframework.integration.annotation.Poller; +import org.springframework.integration.annotation.ServiceActivator; +import org.springframework.integration.annotation.Transformer; +import org.springframework.integration.channel.DirectChannel; +import org.springframework.integration.config.EnableIntegration; +import org.springframework.integration.core.MessageSource; +import org.springframework.integration.dsl.Pollers; +import org.springframework.integration.file.FileReadingMessageSource; +import org.springframework.integration.file.filters.SimplePatternFileListFilter; +import org.springframework.integration.file.transformer.FileToStringTransformer; +import org.springframework.integration.scheduling.PollerMetadata; +import org.springframework.integration.transaction.DefaultTransactionSynchronizationFactory; +import org.springframework.integration.transaction.ExpressionEvaluatingTransactionSynchronizationProcessor; +import org.springframework.integration.transaction.TransactionInterceptorBuilder; +import org.springframework.integration.transaction.TransactionSynchronizationFactory; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.datasource.DataSourceTransactionManager; +import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder; +import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType; +import org.springframework.messaging.MessageChannel; +import org.springframework.transaction.interceptor.TransactionInterceptor; + +import javax.sql.DataSource; +import java.io.File; +import java.util.Scanner; + +@Configuration +@EnableIntegration +public class TxIntegrationConfig { + + private final Logger log = LoggerFactory.getLogger(this.getClass()); + + public final String INPUT_DIR = "/tmp/tx/"; + public final String FILE_PATTERN = "*.txt"; + + @Autowired + private JdbcTemplate jdbcTemplate; + + @Autowired + private DataSource dataSource; + + @Autowired + private TransactionSynchronizationFactory transactionSynchronizationFactory; + + @Autowired + DataSourceTransactionManager txManager; + + @Bean + public MessageChannel inputChannel() { + return new DirectChannel(); + } + + @Bean + @InboundChannelAdapter(value = "inputChannel", poller = @Poller(value = "pollerMetadata")) + public MessageSource fileReadingMessageSource() { + FileReadingMessageSource sourceReader = new FileReadingMessageSource(); + sourceReader.setDirectory(new File(INPUT_DIR)); + sourceReader.setFilter(new SimplePatternFileListFilter(FILE_PATTERN)); + return sourceReader; + } + + @Bean + public PollerMetadata pollerMetadata() { + return Pollers + .fixedDelay(5000) + .advice(transactionInterceptor()) + .transactionSynchronizationFactory(transactionSynchronizationFactory) + .get(); + } + + private TransactionInterceptor transactionInterceptor() { + return new TransactionInterceptorBuilder() + .transactionManager(txManager) + .build(); + } + + @Bean + public TransactionSynchronizationFactory transactionSynchronizationFactory(){ + ExpressionEvaluatingTransactionSynchronizationProcessor transactionSynchronizationProcessor = + new ExpressionEvaluatingTransactionSynchronizationProcessor(); + transactionSynchronizationProcessor.setAfterCommitExpression( + new LiteralExpression("payload.renameTo(new java.io.File(payload.absolutePath + '.PASSED'))")); + transactionSynchronizationProcessor.setAfterRollbackExpression( + new LiteralExpression("payload.renameTo(new java.io.File(payload.absolutePath + '.FAILED'))")); + return new DefaultTransactionSynchronizationFactory(transactionSynchronizationProcessor); + } + + @Bean + @Transformer(inputChannel = "inputChannel", outputChannel = "toServiceChannel") + public FileToStringTransformer fileToStringTransformer() { + return new FileToStringTransformer(); + } + + @ServiceActivator(inputChannel = "toServiceChannel") + public void serviceActivator(String payload) { + + jdbcTemplate.update("insert into STUDENT values(?)", payload); + + if (payload.toLowerCase().startsWith("fail")) { + log.error("Service failure. Test result: {} ", payload); + throw new RuntimeException("Service failure."); + } + + log.info("Service success. Test result: {}", payload); + } + + @Bean + public JdbcTemplate jdbcTemplate(DataSource dataSource) { + return new JdbcTemplate(dataSource); + } + + @Bean + public DataSource dataSource() { + return new EmbeddedDatabaseBuilder() + .setType(EmbeddedDatabaseType.H2) + .addScript("classpath:table.sql") + .build(); + } + + @Bean + public DataSourceTransactionManager txManager() { + return new DataSourceTransactionManager(dataSource); + } + + public static void main(final String... args) { + final AbstractApplicationContext context = new AnnotationConfigApplicationContext(TxIntegrationConfig.class); + context.registerShutdownHook(); + + final Scanner scanner = new Scanner(System.in); + System.out.print("Integration flow is running. Type q + to quit "); + while (true) { + final String input = scanner.nextLine(); + if ("q".equals(input.trim())) { + context.close(); + scanner.close(); + break; + } + } + System.exit(0); + } + +} + + + From e07705f3278efc25fc175f7c756244198dab6859 Mon Sep 17 00:00:00 2001 From: enpy Date: Tue, 8 Oct 2019 14:56:28 +0200 Subject: [PATCH 034/265] Update spring-integration/src/main/java/com/baeldung/tx/ServiceActivator.java Co-Authored-By: KevinGilmore --- .../src/main/java/com/baeldung/tx/ServiceActivator.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-integration/src/main/java/com/baeldung/tx/ServiceActivator.java b/spring-integration/src/main/java/com/baeldung/tx/ServiceActivator.java index 874d5d6957..56399c653f 100755 --- a/spring-integration/src/main/java/com/baeldung/tx/ServiceActivator.java +++ b/spring-integration/src/main/java/com/baeldung/tx/ServiceActivator.java @@ -17,7 +17,7 @@ public class ServiceActivator { this.jdbcTemplate.update("insert into STUDENT values(?)", payload); if (payload.toLowerCase().startsWith("fail")) { - log.error("Service failure. Test result: {} ", payload); + log.error("Service failure. Test result: {}", payload); throw new RuntimeException("Service failure."); } From e2f6729c5e7b44f496c7a0c935a1223702e1dc14 Mon Sep 17 00:00:00 2001 From: enpy Date: Tue, 8 Oct 2019 14:56:38 +0200 Subject: [PATCH 035/265] Update spring-integration/src/test/java/com/baeldung/tx/TxIntegrationTest.java Co-Authored-By: KevinGilmore --- .../src/test/java/com/baeldung/tx/TxIntegrationTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-integration/src/test/java/com/baeldung/tx/TxIntegrationTest.java b/spring-integration/src/test/java/com/baeldung/tx/TxIntegrationTest.java index dd9f4ab286..20ed93b631 100644 --- a/spring-integration/src/test/java/com/baeldung/tx/TxIntegrationTest.java +++ b/spring-integration/src/test/java/com/baeldung/tx/TxIntegrationTest.java @@ -14,7 +14,7 @@ public final class TxIntegrationTest { private static final String CONTEXT_CONFIG = "classpath:META-INF/spring/integration/spring-integration-tx-context.xml"; @Test - public void whenFileDoesntStartWithFail_thanTxSuccessful() throws InterruptedException, IOException { + public void whenFileDoesntStartWithFail_thenTxSuccessful() throws InterruptedException, IOException { final AbstractApplicationContext context = new ClassPathXmlApplicationContext(CONTEXT_CONFIG); From 0cb1f8f4cb6d20e59ed99471c5c6067001e2b85c Mon Sep 17 00:00:00 2001 From: enpy Date: Tue, 8 Oct 2019 14:56:44 +0200 Subject: [PATCH 036/265] Update spring-integration/src/test/java/com/baeldung/tx/TxIntegrationTest.java Co-Authored-By: KevinGilmore --- .../src/test/java/com/baeldung/tx/TxIntegrationTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-integration/src/test/java/com/baeldung/tx/TxIntegrationTest.java b/spring-integration/src/test/java/com/baeldung/tx/TxIntegrationTest.java index 20ed93b631..1bbd16aa4b 100644 --- a/spring-integration/src/test/java/com/baeldung/tx/TxIntegrationTest.java +++ b/spring-integration/src/test/java/com/baeldung/tx/TxIntegrationTest.java @@ -31,7 +31,7 @@ public final class TxIntegrationTest { } @Test - public void whenFileStartsWithFail_thanTxFailed() { + public void whenFileStartsWithFail_thenTxFailed() { String fileName = System.getProperty("java.io.tmpdir") + "/tx/test2.txt"; From 576929f990a59afd8411f865b880067850752483 Mon Sep 17 00:00:00 2001 From: enpy303 Date: Fri, 11 Oct 2019 00:24:35 +0200 Subject: [PATCH 037/265] java config spel fix --- .../java/com/baeldung/tx/TxIntegrationConfig.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/spring-integration/src/main/java/com/baeldung/tx/TxIntegrationConfig.java b/spring-integration/src/main/java/com/baeldung/tx/TxIntegrationConfig.java index 308b00d8e9..48fbfe9322 100644 --- a/spring-integration/src/main/java/com/baeldung/tx/TxIntegrationConfig.java +++ b/spring-integration/src/main/java/com/baeldung/tx/TxIntegrationConfig.java @@ -7,7 +7,7 @@ import org.springframework.context.annotation.AnnotationConfigApplicationContext import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.support.AbstractApplicationContext; -import org.springframework.expression.common.LiteralExpression; +import org.springframework.expression.spel.standard.SpelExpressionParser; import org.springframework.integration.annotation.InboundChannelAdapter; import org.springframework.integration.annotation.Poller; import org.springframework.integration.annotation.ServiceActivator; @@ -86,13 +86,14 @@ public class TxIntegrationConfig { } @Bean - public TransactionSynchronizationFactory transactionSynchronizationFactory(){ + public TransactionSynchronizationFactory transactionSynchronizationFactory() { ExpressionEvaluatingTransactionSynchronizationProcessor transactionSynchronizationProcessor = - new ExpressionEvaluatingTransactionSynchronizationProcessor(); - transactionSynchronizationProcessor.setAfterCommitExpression( - new LiteralExpression("payload.renameTo(new java.io.File(payload.absolutePath + '.PASSED'))")); - transactionSynchronizationProcessor.setAfterRollbackExpression( - new LiteralExpression("payload.renameTo(new java.io.File(payload.absolutePath + '.FAILED'))")); + new ExpressionEvaluatingTransactionSynchronizationProcessor(); + SpelExpressionParser spelExpressionParser = new SpelExpressionParser(); + transactionSynchronizationProcessor.setAfterCommitExpression(spelExpressionParser.parseExpression( + "payload.renameTo(new java.io.File(payload.absolutePath + '.PASSED'))")); + transactionSynchronizationProcessor.setAfterRollbackExpression(spelExpressionParser.parseExpression( + "payload.renameTo(new java.io.File(payload.absolutePath + '.FAILED'))")); return new DefaultTransactionSynchronizationFactory(transactionSynchronizationProcessor); } From c653a270c06c224a3dc4e2a3ad7b35fdcbbc7bd5 Mon Sep 17 00:00:00 2001 From: enpy303 Date: Fri, 11 Oct 2019 11:50:28 +0200 Subject: [PATCH 038/265] formatting --- .../com/baeldung/tx/TxIntegrationConfig.java | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/spring-integration/src/main/java/com/baeldung/tx/TxIntegrationConfig.java b/spring-integration/src/main/java/com/baeldung/tx/TxIntegrationConfig.java index 48fbfe9322..a5dedeafed 100644 --- a/spring-integration/src/main/java/com/baeldung/tx/TxIntegrationConfig.java +++ b/spring-integration/src/main/java/com/baeldung/tx/TxIntegrationConfig.java @@ -41,7 +41,7 @@ public class TxIntegrationConfig { private final Logger log = LoggerFactory.getLogger(this.getClass()); - public final String INPUT_DIR = "/tmp/tx/"; + public final String INPUT_DIR = System.getProperty("java.io.tmpdir") + "/tx/"; public final String FILE_PATTERN = "*.txt"; @Autowired @@ -72,28 +72,25 @@ public class TxIntegrationConfig { @Bean public PollerMetadata pollerMetadata() { - return Pollers - .fixedDelay(5000) - .advice(transactionInterceptor()) - .transactionSynchronizationFactory(transactionSynchronizationFactory) - .get(); + return Pollers.fixedDelay(5000) + .advice(transactionInterceptor()) + .transactionSynchronizationFactory(transactionSynchronizationFactory) + .get(); } private TransactionInterceptor transactionInterceptor() { - return new TransactionInterceptorBuilder() - .transactionManager(txManager) - .build(); + return new TransactionInterceptorBuilder().transactionManager(txManager).build(); } @Bean public TransactionSynchronizationFactory transactionSynchronizationFactory() { ExpressionEvaluatingTransactionSynchronizationProcessor transactionSynchronizationProcessor = - new ExpressionEvaluatingTransactionSynchronizationProcessor(); + new ExpressionEvaluatingTransactionSynchronizationProcessor(); SpelExpressionParser spelExpressionParser = new SpelExpressionParser(); transactionSynchronizationProcessor.setAfterCommitExpression(spelExpressionParser.parseExpression( - "payload.renameTo(new java.io.File(payload.absolutePath + '.PASSED'))")); + "payload.renameTo(new java.io.File(payload.absolutePath + '.PASSED'))")); transactionSynchronizationProcessor.setAfterRollbackExpression(spelExpressionParser.parseExpression( - "payload.renameTo(new java.io.File(payload.absolutePath + '.FAILED'))")); + "payload.renameTo(new java.io.File(payload.absolutePath + '.FAILED'))")); return new DefaultTransactionSynchronizationFactory(transactionSynchronizationProcessor); } From d1d1e14c4b0050722a484dd4bed5e84ae0c8e663 Mon Sep 17 00:00:00 2001 From: "matt.rossi" Date: Fri, 11 Oct 2019 18:11:03 +0200 Subject: [PATCH 039/265] Fix Format --- .../main/java/com/baeldung/jpa/text/Exam.java | 103 ++++++++ .../com/baeldung/jpa/text/ExamRepository.java | 39 +++ .../main/resources/META-INF/persistence.xml | 240 ++++++++++-------- .../baeldung/jpa/text/JPATextUnitTest.java | 41 +++ 4 files changed, 311 insertions(+), 112 deletions(-) create mode 100644 persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/text/Exam.java create mode 100644 persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/text/ExamRepository.java create mode 100644 persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/text/JPATextUnitTest.java diff --git a/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/text/Exam.java b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/text/Exam.java new file mode 100644 index 0000000000..8bea8e0121 --- /dev/null +++ b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/text/Exam.java @@ -0,0 +1,103 @@ +package com.baeldung.jpa.text; + +import javax.persistence.*; + +@Entity +public class Exam { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + @Lob + private String description; + @Column(columnDefinition = "text") + private String text; + @Column(length = 20) + private String shortText; + + public Exam() { + + } + + public Exam(String description, String text, String shortText) { + this.description = description; + this.text = text; + this.shortText = shortText; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + } + + public String getShortText() { + return shortText; + } + + public void setShortText(String shortText) { + this.shortText = shortText; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((description == null) ? 0 : description.hashCode()); + result = prime * result + ((id == null) ? 0 : id.hashCode()); + result = prime * result + ((shortText == null) ? 0 : shortText.hashCode()); + result = prime * result + ((text == null) ? 0 : text.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + Exam other = (Exam) obj; + if (description == null) { + if (other.description != null) + return false; + } else if (!description.equals(other.description)) + return false; + if (id == null) { + if (other.id != null) + return false; + } else if (!id.equals(other.id)) + return false; + if (shortText == null) { + if (other.shortText != null) + return false; + } else if (!shortText.equals(other.shortText)) + return false; + if (text == null) { + if (other.text != null) + return false; + } else if (!text.equals(other.text)) + return false; + return true; + } + +} diff --git a/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/text/ExamRepository.java b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/text/ExamRepository.java new file mode 100644 index 0000000000..2ee502bf4c --- /dev/null +++ b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/text/ExamRepository.java @@ -0,0 +1,39 @@ +package com.baeldung.jpa.text; + +import javax.persistence.EntityManager; +import javax.persistence.EntityManagerFactory; +import javax.persistence.Persistence; + +public class ExamRepository { + + private EntityManagerFactory emf = null; + + public ExamRepository() { + emf = Persistence.createEntityManagerFactory("jpa-h2-text"); + } + + public Exam find(Long id) { + EntityManager entityManager = emf.createEntityManager(); + Exam exam = entityManager.find(Exam.class, id); + entityManager.close(); + return exam; + } + + public Exam save(Exam exam) { + + EntityManager entityManager = emf.createEntityManager(); + entityManager.getTransaction() + .begin(); + exam = entityManager.merge(exam); + entityManager.getTransaction() + .commit(); + entityManager.close(); + + return exam; + } + + public void clean() { + emf.close(); + } + +} diff --git a/persistence-modules/java-jpa-2/src/main/resources/META-INF/persistence.xml b/persistence-modules/java-jpa-2/src/main/resources/META-INF/persistence.xml index 62d7ce0f5e..cd46901792 100644 --- a/persistence-modules/java-jpa-2/src/main/resources/META-INF/persistence.xml +++ b/persistence-modules/java-jpa-2/src/main/resources/META-INF/persistence.xml @@ -1,122 +1,138 @@ + version="2.2"> - - org.hibernate.jpa.HibernatePersistenceProvider - com.baeldung.jpa.queryparams.Employee - true - - - - - - - - - - - - + + org.hibernate.jpa.HibernatePersistenceProvider + com.baeldung.jpa.queryparams.Employee + true + + + + + + + + + + + + - - org.hibernate.jpa.HibernatePersistenceProvider - com.baeldung.jpa.defaultvalues.User - true - - - - - - - - - - - - - org.hibernate.jpa.HibernatePersistenceProvider - com.baeldung.jpa.querytypes.UserEntity - true - - - - - - - - - - - - + + org.hibernate.jpa.HibernatePersistenceProvider + com.baeldung.jpa.text.Exam + true + + + + + + + + + + + - - org.hibernate.jpa.HibernatePersistenceProvider - com.baeldung.jpa.projections.Product - true - - - - - - - - - - - - + + org.hibernate.jpa.HibernatePersistenceProvider + com.baeldung.jpa.defaultvalues.User + true + + + + + + + + + + + - - org.hibernate.jpa.HibernatePersistenceProvider - com.baeldung.jpa.criteria.Item - true - - - - - - - - - - - - + + org.hibernate.jpa.HibernatePersistenceProvider + com.baeldung.jpa.querytypes.UserEntity + true + + + + + + + + + + + + + + + org.hibernate.jpa.HibernatePersistenceProvider + com.baeldung.jpa.projections.Product + true + + + + + + + + + + + + + + + org.hibernate.jpa.HibernatePersistenceProvider + com.baeldung.jpa.criteria.Item + true + + + + + + + + + + + + \ No newline at end of file diff --git a/persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/text/JPATextUnitTest.java b/persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/text/JPATextUnitTest.java new file mode 100644 index 0000000000..f9f355c464 --- /dev/null +++ b/persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/text/JPATextUnitTest.java @@ -0,0 +1,41 @@ +package com.baeldung.jpa.text; + +import static org.junit.Assert.assertEquals; + +import javax.persistence.PersistenceException; + +import org.junit.BeforeClass; +import org.junit.Test; + +public class JPATextUnitTest { + + private static ExamRepository examRepository = null; + + @BeforeClass + public static void once() { + examRepository = new ExamRepository(); + } + + @Test + public void givenExam_whenSaveExam_thenReturnExpectedExam() { + Exam exam = new Exam(); + exam.setDescription("This is a description. Sometimes the description can be very very long! "); + exam.setText("This is a text. Sometimes the text can be very very long!"); + exam.setShortText("A short text"); + + exam = examRepository.save(exam); + + assertEquals(examRepository.find(exam.getId()), exam); + } + + @Test(expected = PersistenceException.class) + public void givenExamWithVeryLongShortText_whenSaveExam_thenThrowPersistenceException() { + Exam exam = new Exam(); + exam.setDescription("This is a very long text"); + exam.setText("This is a long text"); + exam.setShortText("This is a very long long short text. Maybe this can cause problems!!"); + + examRepository.save(exam); + } + +} \ No newline at end of file From f4497314297a6d1a1d4b5480f2d8ec7441365312 Mon Sep 17 00:00:00 2001 From: Vivek Balasubramaniam Date: Sat, 12 Oct 2019 08:56:35 +0530 Subject: [PATCH 040/265] BAEL-3091: The Prototype Pattern in Java --- .../java/com/baeldung/prototype/Position.java | 51 ++++++++++++++++++ .../java/com/baeldung/prototype/Tree.java | 54 +++++++++++++++++++ .../com/baeldung/prototype/TreeCloneable.java | 7 +++ .../prototype/TreePrototypeUnitTest.java | 24 +++++++++ 4 files changed, 136 insertions(+) create mode 100644 patterns/design-patterns-creational/src/main/java/com/baeldung/prototype/Position.java create mode 100644 patterns/design-patterns-creational/src/main/java/com/baeldung/prototype/Tree.java create mode 100644 patterns/design-patterns-creational/src/main/java/com/baeldung/prototype/TreeCloneable.java create mode 100644 patterns/design-patterns-creational/src/test/java/com/baeldung/prototype/TreePrototypeUnitTest.java diff --git a/patterns/design-patterns-creational/src/main/java/com/baeldung/prototype/Position.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/prototype/Position.java new file mode 100644 index 0000000000..dd7694feb6 --- /dev/null +++ b/patterns/design-patterns-creational/src/main/java/com/baeldung/prototype/Position.java @@ -0,0 +1,51 @@ +package com.baeldung.prototype; + +public final class Position { + + private final int x; + private final int y; + + public Position(int x, int y) { + this.x = x; + this.y = y; + } + + public int getX() { + return x; + } + + public int getY() { + return y; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + x; + result = prime * result + y; + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + Position other = (Position) obj; + if (x != other.x) + return false; + if (y != other.y) + return false; + return true; + } + + @Override + public String toString() { + return "Position [x=" + x + ", y=" + y + "]"; + } + +} diff --git a/patterns/design-patterns-creational/src/main/java/com/baeldung/prototype/Tree.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/prototype/Tree.java new file mode 100644 index 0000000000..242ed2176e --- /dev/null +++ b/patterns/design-patterns-creational/src/main/java/com/baeldung/prototype/Tree.java @@ -0,0 +1,54 @@ +package com.baeldung.prototype; + +public class Tree implements TreeCloneable { + + private double mass; + private double height; + private Position position; + + public Tree(double mass, double height) { + this.mass = mass; + this.height = height; + } + + public void setMass(double mass) { + this.mass = mass; + } + + public void setHeight(double height) { + this.height = height; + } + + public void setPosition(Position position) { + this.position = position; + } + + public double getMass() { + return mass; + } + + public double getHeight() { + return height; + } + + public Position getPosition() { + return position; + } + + @Override + public TreeCloneable createA_Clone() { + TreeCloneable tree = null; + try { + tree = (TreeCloneable) super.clone(); + } catch (CloneNotSupportedException e) { + e.printStackTrace(); + } + return tree; + } + + @Override + public String toString() { + return "SomeTree [mass=" + mass + ", height=" + height + ", position=" + position + "]"; + } + +} diff --git a/patterns/design-patterns-creational/src/main/java/com/baeldung/prototype/TreeCloneable.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/prototype/TreeCloneable.java new file mode 100644 index 0000000000..e554058624 --- /dev/null +++ b/patterns/design-patterns-creational/src/main/java/com/baeldung/prototype/TreeCloneable.java @@ -0,0 +1,7 @@ +package com.baeldung.prototype; + +public interface TreeCloneable extends Cloneable { + + public TreeCloneable createA_Clone(); + +} diff --git a/patterns/design-patterns-creational/src/test/java/com/baeldung/prototype/TreePrototypeUnitTest.java b/patterns/design-patterns-creational/src/test/java/com/baeldung/prototype/TreePrototypeUnitTest.java new file mode 100644 index 0000000000..7f260c52bf --- /dev/null +++ b/patterns/design-patterns-creational/src/test/java/com/baeldung/prototype/TreePrototypeUnitTest.java @@ -0,0 +1,24 @@ +package com.baeldung.prototype; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +public class TreePrototypeUnitTest { + + @Test + public void givenATreePrototypeWhenClonedThenCreateA_Clone() { + double mass = 10.0; + double height = 3.7; + Position position = new Position(3, 7); + Position otherPosition = new Position(4, 8); + + Tree tree = new Tree(mass, height); + tree.setPosition(position); + Tree anotherTree = (Tree) tree.createA_Clone(); + anotherTree.setPosition(otherPosition); + + assertEquals(position, tree.getPosition()); + assertEquals(otherPosition, anotherTree.getPosition()); + } +} From 5fa271fe024d6bbcb96f8308038abd1fd8ab7287 Mon Sep 17 00:00:00 2001 From: vatsalgosar Date: Sat, 12 Oct 2019 15:51:21 +0530 Subject: [PATCH 041/265] BAEL-3209 - Adding elements in Java Array vs ArrayList --- .../array/operations/ArrayOperations.java | 30 +++++++++++ .../operations/ArrayListOperations.java | 23 +++++++++ .../operations/ArrayOperationsUnitTest.java | 32 ++++++++++++ .../ArrayListOperationsUnitTest.java | 50 +++++++++++++++++++ 4 files changed, 135 insertions(+) create mode 100644 core-java-modules/core-java-arrays-2/src/main/java/com/baeldung/array/operations/ArrayOperations.java create mode 100644 core-java-modules/core-java-arrays-2/src/main/java/com/baeldung/arraylist/operations/ArrayListOperations.java create mode 100644 core-java-modules/core-java-arrays-2/src/test/java/com/baeldung/array/operations/ArrayOperationsUnitTest.java create mode 100644 core-java-modules/core-java-arrays-2/src/test/java/com/baeldung/arraylist/operations/ArrayListOperationsUnitTest.java diff --git a/core-java-modules/core-java-arrays-2/src/main/java/com/baeldung/array/operations/ArrayOperations.java b/core-java-modules/core-java-arrays-2/src/main/java/com/baeldung/array/operations/ArrayOperations.java new file mode 100644 index 0000000000..8d9c4d6730 --- /dev/null +++ b/core-java-modules/core-java-arrays-2/src/main/java/com/baeldung/array/operations/ArrayOperations.java @@ -0,0 +1,30 @@ +package com.baeldung.array.operations; + +public class ArrayOperations { + + public static Integer[] addElementUsingPureJava(Integer[] srcArray, int elementToAdd) { + Integer[] destArray = new Integer[srcArray.length + 1]; + + for (int i = 0; i < srcArray.length; i++) { + destArray[i] = srcArray[i]; + } + + destArray[destArray.length - 1] = elementToAdd; + return destArray; + } + + public static int[] insertAnElementAtAGivenIndex(final int[] srcArray, int index, int newElement) { + int[] destArray = new int[srcArray.length + 1]; + int j = 0; + for (int i = 0; i < destArray.length - 1; i++) { + + if (i == index) { + destArray[i] = newElement; + } else { + destArray[i] = srcArray[j]; + j++; + } + } + return destArray; + } +} diff --git a/core-java-modules/core-java-arrays-2/src/main/java/com/baeldung/arraylist/operations/ArrayListOperations.java b/core-java-modules/core-java-arrays-2/src/main/java/com/baeldung/arraylist/operations/ArrayListOperations.java new file mode 100644 index 0000000000..b2aed553da --- /dev/null +++ b/core-java-modules/core-java-arrays-2/src/main/java/com/baeldung/arraylist/operations/ArrayListOperations.java @@ -0,0 +1,23 @@ +package com.baeldung.arraylist.operations; + +import java.util.ArrayList; + +public class ArrayListOperations { + + public static Integer getAnIntegerElement(ArrayList anArrayList, int index) { + return anArrayList.get(index); + } + + public static void modifyAnIntegerElement(ArrayList anArrayList, int index, Integer newElement) { + anArrayList.set(index, newElement); + } + + public static void appendAnIntegerElement(ArrayList anArrayList, Integer newElement) { + anArrayList.add(newElement); + } + + public static void insertAnIntegerElementAtIndex(ArrayList anArrayList, int index, Integer newElement) { + anArrayList.add(index, newElement); + } + +} diff --git a/core-java-modules/core-java-arrays-2/src/test/java/com/baeldung/array/operations/ArrayOperationsUnitTest.java b/core-java-modules/core-java-arrays-2/src/test/java/com/baeldung/array/operations/ArrayOperationsUnitTest.java new file mode 100644 index 0000000000..5ed27f2dbb --- /dev/null +++ b/core-java-modules/core-java-arrays-2/src/test/java/com/baeldung/array/operations/ArrayOperationsUnitTest.java @@ -0,0 +1,32 @@ +package com.baeldung.array.operations; + +import org.junit.jupiter.api.Test; +import static org.junit.Assert.assertArrayEquals; +import static org.assertj.core.api.Assertions.assertThat; + +public class ArrayOperationsUnitTest { + + @Test + public void givenSourceArrayAndElement_whenAddElementUsingPureJavaIsInvoked_thenNewElementMustBeAdded() { + Integer[] sourceArray = { 1, 2, 3, 4 }; + int elementToAdd = 5; + + Integer[] destArray = ArrayOperations.addElementUsingPureJava(sourceArray, elementToAdd); + + Integer[] expectedArray = { 1, 2, 3, 4, 5 }; + assertArrayEquals(expectedArray, destArray); + } + + @Test + public void whenInsertAnElementAtAGivenIndexCalled_thenShiftTheFollowingElementsAndInsertTheElementInArray() { + int[] expectedArray = { 1, 4, 2, 3, 0 }; + int[] anArray = new int[4]; + anArray[0] = 1; + anArray[1] = 2; + anArray[2] = 3; + int[] outputArray = ArrayOperations.insertAnElementAtAGivenIndex(anArray, 1, 4); + + assertThat(outputArray).containsExactly(expectedArray); + } + +} diff --git a/core-java-modules/core-java-arrays-2/src/test/java/com/baeldung/arraylist/operations/ArrayListOperationsUnitTest.java b/core-java-modules/core-java-arrays-2/src/test/java/com/baeldung/arraylist/operations/ArrayListOperationsUnitTest.java new file mode 100644 index 0000000000..1ec7645d8f --- /dev/null +++ b/core-java-modules/core-java-arrays-2/src/test/java/com/baeldung/arraylist/operations/ArrayListOperationsUnitTest.java @@ -0,0 +1,50 @@ +package com.baeldung.arraylist.operations; + +import java.util.ArrayList; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import static org.assertj.core.api.Assertions.assertThat; + +public class ArrayListOperationsUnitTest { + + private ArrayList anArrayList; + + @BeforeEach + public void setupDefaults() { + anArrayList = new ArrayList<>(); + anArrayList.add(2); + anArrayList.add(3); + anArrayList.add(4); + } + + @Test + public void whenGetAnIntegerElementCalled_thenReturnTheIntegerElement() { + Integer output = ArrayListOperations.getAnIntegerElement(anArrayList, 1); + + assertThat(output).isEqualTo(3); + } + + @Test + public void whenModifyAnIntegerElementCalled_thenModifyTheIntegerElement() { + ArrayListOperations.modifyAnIntegerElement(anArrayList, 2, 5); + Integer output = ArrayListOperations.getAnIntegerElement(anArrayList, 2); + + assertThat(output).isEqualTo(5); + } + + @Test + public void whenAppendAnIntegerElementCalled_thenTheIntegerElementIsAppendedToArrayList() { + ArrayListOperations.appendAnIntegerElement(anArrayList, 6); + Integer output = ArrayListOperations.getAnIntegerElement(anArrayList, anArrayList.size() - 1); + + assertThat(output).isEqualTo(6); + } + + @Test + public void whenInsertAnIntegerAtIndexCalled_thenTheIntegerElementIsInseredToArrayList() { + ArrayListOperations.insertAnIntegerElementAtIndex(anArrayList, 1, 10); + Integer output = ArrayListOperations.getAnIntegerElement(anArrayList, 1); + + assertThat(output).isEqualTo(10); + } +} \ No newline at end of file From b47497cfc2d8619be3a18d46044fe1032c8293c8 Mon Sep 17 00:00:00 2001 From: Yavuz Tas Date: Sat, 12 Oct 2019 12:41:48 +0200 Subject: [PATCH 042/265] remove evaluation article codes --- .../hexagonal/AccountApplication.java | 21 -------- .../com/baeldung/hexagonal/IOCContainer.java | 54 ------------------- .../hexagonal/central/domain/Account.java | 42 --------------- .../hexagonal/central/domain/AccountType.java | 7 --- .../repository/IAccountRepository.java | 9 ---- .../central/service/AccountService.java | 32 ----------- .../central/service/IAccountService.java | 7 --- .../hexagonal/central/ui/IAccountUI.java | 9 ---- .../baeldung/hexagonal/input/ConsoleUI.java | 54 ------------------- .../output/InMemoryAccountRepository.java | 23 -------- 10 files changed, 258 deletions(-) delete mode 100644 patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/AccountApplication.java delete mode 100644 patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/IOCContainer.java delete mode 100644 patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/domain/Account.java delete mode 100644 patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/domain/AccountType.java delete mode 100644 patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/repository/IAccountRepository.java delete mode 100644 patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/service/AccountService.java delete mode 100644 patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/service/IAccountService.java delete mode 100644 patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/ui/IAccountUI.java delete mode 100644 patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/input/ConsoleUI.java delete mode 100644 patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/output/InMemoryAccountRepository.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/AccountApplication.java b/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/AccountApplication.java deleted file mode 100644 index d4dd34312d..0000000000 --- a/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/AccountApplication.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.baeldung.hexagonal; - -import java.util.Map; - -import com.baeldung.hexagonal.input.ConsoleUI; - -public class AccountApplication extends IOCContainer { - - public static void main(String[] args) { - - AccountApplication app = new AccountApplication(); - - ConsoleUI console = app.get(ConsoleUI.class); - console.printWelcomeMessage(); - - Map parameters = console.readParameters(); - console.create(parameters); - - } - -} diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/IOCContainer.java b/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/IOCContainer.java deleted file mode 100644 index 49ff1955ee..0000000000 --- a/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/IOCContainer.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.baeldung.hexagonal; - -import com.baeldung.hexagonal.central.service.AccountService; -import com.baeldung.hexagonal.central.service.IAccountService; -import com.baeldung.hexagonal.input.ConsoleUI; -import com.baeldung.hexagonal.output.InMemoryAccountRepository; - -public class IOCContainer { - - private ConsoleUI consoleAdapter; - private AccountService accountService; - private InMemoryAccountRepository inMemoryAccountRepository; - - public T get(Class clazz) { - - if (ConsoleUI.class.isAssignableFrom(clazz)) { - return (T) getConsoleAdapter(); - } - - if (IAccountService.class.isAssignableFrom(clazz)) { - return (T) getAccountService(); - } - - if (InMemoryAccountRepository.class.isAssignableFrom(clazz)) { - return (T) getInMemoryAccountRepository(); - } - - return null; - } - - private ConsoleUI getConsoleAdapter() { - if (consoleAdapter == null) { - consoleAdapter = new ConsoleUI(); - consoleAdapter.setAccountService(getAccountService()); - } - return consoleAdapter; - } - - private IAccountService getAccountService() { - if (accountService == null) { - accountService = new AccountService(); - accountService.setAccountRepository(getInMemoryAccountRepository()); - } - return accountService; - } - - private InMemoryAccountRepository getInMemoryAccountRepository() { - if (inMemoryAccountRepository == null) { - inMemoryAccountRepository = new InMemoryAccountRepository(); - } - return inMemoryAccountRepository; - } - -} diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/domain/Account.java b/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/domain/Account.java deleted file mode 100644 index 2ecb602690..0000000000 --- a/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/domain/Account.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.baeldung.hexagonal.central.domain; - -import java.util.UUID; - -public class Account { - - private UUID id; - - private String name; - - private AccountType type; - - public UUID getId() { - return id; - } - - public void setId(UUID id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public AccountType getType() { - return type; - } - - public void setType(AccountType type) { - this.type = type; - } - - @Override - public String toString() { - return "Account [name=" + name + ", type=" + type + "]"; - } - -} diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/domain/AccountType.java b/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/domain/AccountType.java deleted file mode 100644 index a0ec54ce7f..0000000000 --- a/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/domain/AccountType.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.baeldung.hexagonal.central.domain; - -public enum AccountType { - - USER, MODERATOR, ADMIN - -} diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/repository/IAccountRepository.java b/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/repository/IAccountRepository.java deleted file mode 100644 index 6863d04740..0000000000 --- a/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/repository/IAccountRepository.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.baeldung.hexagonal.central.repository; - -import com.baeldung.hexagonal.central.domain.Account; - -public interface IAccountRepository { - - public void save(Account account); - -} diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/service/AccountService.java b/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/service/AccountService.java deleted file mode 100644 index 97fa1fd7f9..0000000000 --- a/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/service/AccountService.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.baeldung.hexagonal.central.service; - -import com.baeldung.hexagonal.central.domain.Account; -import com.baeldung.hexagonal.central.domain.AccountType; -import com.baeldung.hexagonal.central.repository.IAccountRepository; - -public class AccountService implements IAccountService { - - private IAccountRepository accountRepository; - - public void setAccountRepository(IAccountRepository accountRepository) { - this.accountRepository = accountRepository; - } - - @Override - public void createAccount(String name, String type) { - - Account account = new Account(); - account.setName(name); - - if ("user".equals(type)) { - account.setType(AccountType.USER); - } - if ("mod".equals(type)) { - account.setType(AccountType.MODERATOR); - } - - accountRepository.save(account); - - } - -} diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/service/IAccountService.java b/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/service/IAccountService.java deleted file mode 100644 index 1df98ef49e..0000000000 --- a/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/service/IAccountService.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.baeldung.hexagonal.central.service; - -public interface IAccountService { - - public void createAccount(String name, String type); - -} diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/ui/IAccountUI.java b/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/ui/IAccountUI.java deleted file mode 100644 index fbb7cef914..0000000000 --- a/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/central/ui/IAccountUI.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.baeldung.hexagonal.central.ui; - -import java.util.Map; - -public interface IAccountUI { - - public void create(Map parameters); - -} diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/input/ConsoleUI.java b/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/input/ConsoleUI.java deleted file mode 100644 index 7c1bacfac3..0000000000 --- a/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/input/ConsoleUI.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.baeldung.hexagonal.input; - -import java.util.HashMap; -import java.util.Map; -import java.util.Scanner; - -import com.baeldung.hexagonal.central.service.IAccountService; -import com.baeldung.hexagonal.central.ui.IAccountUI; - -public class ConsoleUI implements IAccountUI { - - private IAccountService accountService; - - public void setAccountService(IAccountService accountService) { - this.accountService = accountService; - } - - public void printWelcomeMessage() { - - StringBuilder sb = new StringBuilder(); - sb.append("Welcome to Account Application!"); - sb.append("\n"); - sb.append("Usage:"); - sb.append("* new account:"); - sb.append("\tcreate "); - - System.out.println(sb.toString()); - } - - public Map readParameters() { - - Scanner scanner = new Scanner(System.in); - - Map params = new HashMap<>(); - - String name = scanner.next(); - String type = scanner.next(); - - params.put("name", name); - params.put("type", type); - - return params; - } - - @Override - public void create(Map parameters) { - - String name = parameters.get("name"); - String type = parameters.get("type"); - - accountService.createAccount(name, type); - } - -} diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/output/InMemoryAccountRepository.java b/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/output/InMemoryAccountRepository.java deleted file mode 100644 index 22924e6b23..0000000000 --- a/patterns/design-patterns-2/src/main/java/com/baeldung/hexagonal/output/InMemoryAccountRepository.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.baeldung.hexagonal.output; - -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; - -import com.baeldung.hexagonal.central.domain.Account; -import com.baeldung.hexagonal.central.repository.IAccountRepository; - -public class InMemoryAccountRepository implements IAccountRepository { - - private List accountList = new ArrayList<>(); - - @Override - public void save(Account account) { - - account.setId(UUID.randomUUID()); - - accountList.add(account); - - } - -} From 6ad475d93fc9b67dd0b933a7827e76382d2f30f6 Mon Sep 17 00:00:00 2001 From: Yavuz Tas Date: Sat, 12 Oct 2019 13:28:35 +0200 Subject: [PATCH 043/265] fix name clash --- annotations/{readme.md => README.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename annotations/{readme.md => README.md} (100%) diff --git a/annotations/readme.md b/annotations/README.md similarity index 100% rename from annotations/readme.md rename to annotations/README.md From 641548b00fa5fb77857dc4e24629b8cccb472572 Mon Sep 17 00:00:00 2001 From: Yavuz Tas Date: Sat, 12 Oct 2019 13:33:41 +0200 Subject: [PATCH 044/265] fix name clash --- core-java-modules/core-java-arrays-2/README.MD | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 core-java-modules/core-java-arrays-2/README.MD diff --git a/core-java-modules/core-java-arrays-2/README.MD b/core-java-modules/core-java-arrays-2/README.MD deleted file mode 100644 index f272f4d299..0000000000 --- a/core-java-modules/core-java-arrays-2/README.MD +++ /dev/null @@ -1,5 +0,0 @@ -## Relevant Articles - -- [Extending an Array’s Length](https://www.baeldung.com/java-array-add-element-at-the-end) -- [Checking If an Array Is Sorted in Java](https://www.baeldung.com/java-check-sorted-array) -- [Looping Diagonally Through a 2d Java Array](https://www.baeldung.com/java-loop-diagonal-array) From e08fce79d893bf512df4c76dd1bb3d5a333dff47 Mon Sep 17 00:00:00 2001 From: Yavuz Tas Date: Sat, 12 Oct 2019 13:36:04 +0200 Subject: [PATCH 045/265] fix name clash --- osgi/README.md | 94 +++++++++++++++++++ spring-boot-autoconfiguration/README.MD | 7 -- spring-boot-libraries/README.MD | 7 -- spring-boot-testing/README.MD | 9 -- spring-cloud-data-flow/README.MD | 2 - spring-cloud/spring-cloud-bootstrap/README.MD | 15 --- spring-cloud/spring-cloud-gateway/README.MD | 2 - spring-security-mvc-boot/README.MD | 15 --- 8 files changed, 94 insertions(+), 57 deletions(-) create mode 100644 osgi/README.md delete mode 100644 spring-boot-autoconfiguration/README.MD delete mode 100644 spring-boot-libraries/README.MD delete mode 100644 spring-boot-testing/README.MD delete mode 100644 spring-cloud-data-flow/README.MD delete mode 100644 spring-cloud/spring-cloud-bootstrap/README.MD delete mode 100644 spring-cloud/spring-cloud-gateway/README.MD delete mode 100644 spring-security-mvc-boot/README.MD diff --git a/osgi/README.md b/osgi/README.md new file mode 100644 index 0000000000..e380ae06c3 --- /dev/null +++ b/osgi/README.md @@ -0,0 +1,94 @@ +OSGi +==== + +Info +--- + +com.baeldung.osgi +com.baeldung.osgi.sample.activator + +Apache Felix +--- + + +### Start + +Download Apache Felix Framework Distribution +from +org.apache.felix.main.distribution-5.6.8 + +No! The Apache Karaf container is best. +Download it from: + +Download a binary distribution and unzip wherever you prefer. + +Then run + + bin\karaf.bat start + + +Unzip, pay attention to the files not being clipped(!). + + system:exit + +exit! + + shutdown -h + +or `^D` + +### clean start + +full clean, remove "data directory " + +or... + + bin\karaf.bat clean + + bin\start.bat clean + +### run mode + +can be launched in + +- the "regular" mode starts Apache Karaf in foreground, including the shell console. +- the "server" mode starts Apache Karaf in foreground, without the shell console. +- the "background" mode starts Apache Karaf in background. + +### Logging + +https://karaf.apache.org/manual/latest/#_log + +can be logged to console + + +### Bundle deploy + + bundle:install mvn:com.baeldung/osgi-intro-sample-activator/1.0-SNAPSHOT + + install mvn:com.baeldung/osgi-intro-sample-service/1.0-SNAPSHOT + install mvn:com.baeldung/osgi-intro-sample-client/1.0-SNAPSHOT + +Eclipse's Equinox +==== + +Eclipse's OSGi platform +http://www.eclipse.org/equinox/ + +http://www.eclipse.org/equinox/documents/quickstart-framework.php + +click on "download" + +Latest Release +Oxygen.1 Wed, 6 Sep 2017 -- 17:00 (-0400) + +org.eclipse.osgi_3.12.1.v20170821-1548.jar + + = = NOT GOOD = = + + ## Relevant articles: + - [Introduction to OSGi](http://www.baeldung.com/osgi) + + + + diff --git a/spring-boot-autoconfiguration/README.MD b/spring-boot-autoconfiguration/README.MD deleted file mode 100644 index dc9cad539a..0000000000 --- a/spring-boot-autoconfiguration/README.MD +++ /dev/null @@ -1,7 +0,0 @@ -### The Course -The "REST With Spring" Classes: http://bit.ly/restwithspring - -### Relevant Articles: - -- [Create a Custom Auto-Configuration with Spring Boot](http://www.baeldung.com/spring-boot-custom-auto-configuration) -- [Guide to ApplicationContextRunner in Spring Boot](https://www.baeldung.com/spring-boot-context-runner) diff --git a/spring-boot-libraries/README.MD b/spring-boot-libraries/README.MD deleted file mode 100644 index f3706e0fa4..0000000000 --- a/spring-boot-libraries/README.MD +++ /dev/null @@ -1,7 +0,0 @@ -### The Course -The "REST With Spring" Classes: http://bit.ly/restwithspring - -### Relevant Articles: - -- [Guide to ShedLock with Spring](https://www.baeldung.com/shedlock-spring) -- [A Guide to the Problem Spring Web Library](https://www.baeldung.com/problem-spring-web) diff --git a/spring-boot-testing/README.MD b/spring-boot-testing/README.MD deleted file mode 100644 index 7a4c4f53a1..0000000000 --- a/spring-boot-testing/README.MD +++ /dev/null @@ -1,9 +0,0 @@ -### The Course -The "REST With Spring" Classes: http://bit.ly/restwithspring - -### Relevant Articles: - -- [Testing with Spring and Spock](https://www.baeldung.com/spring-spock-testing) -- [Exclude Auto-Configuration Classes in Spring Boot Tests](https://www.baeldung.com/spring-boot-exclude-auto-configuration-test) -- [Setting the Log Level in Spring Boot when Testing](https://www.baeldung.com/spring-boot-testing-log-level) -- [Embedded Redis Server with Spring Boot Test](https://www.baeldung.com/spring-embedded-redis) diff --git a/spring-cloud-data-flow/README.MD b/spring-cloud-data-flow/README.MD deleted file mode 100644 index f2ab96de2c..0000000000 --- a/spring-cloud-data-flow/README.MD +++ /dev/null @@ -1,2 +0,0 @@ - -This is an aggregator module for Spring Cloud Data Flow modules. diff --git a/spring-cloud/spring-cloud-bootstrap/README.MD b/spring-cloud/spring-cloud-bootstrap/README.MD deleted file mode 100644 index 7a3a94c8e3..0000000000 --- a/spring-cloud/spring-cloud-bootstrap/README.MD +++ /dev/null @@ -1,15 +0,0 @@ -### Relevant Articles: -- [Spring Cloud – Bootstrapping](http://www.baeldung.com/spring-cloud-bootstrapping) -- [Spring Cloud – Securing Services](http://www.baeldung.com/spring-cloud-securing-services) -- [Spring Cloud – Tracing Services with Zipkin](http://www.baeldung.com/tracing-services-with-zipkin) -- [Spring Cloud Series – The Gateway Pattern](http://www.baeldung.com/spring-cloud-gateway-pattern) -- [Spring Cloud – Adding Angular 4](http://www.baeldung.com/spring-cloud-angular) - -- To run the project: - - copy the appliction-config folder to c:\Users\{username}\ on Windows or /home/{username}/ on *nix. Then open a git bash terminal in application-config and run: - - git init - - git add . - - git commit -m "First commit" - - start the config server - - start the discovery server - - start all the other servers in any order (gateway, svc-book, svc-rating, zipkin) diff --git a/spring-cloud/spring-cloud-gateway/README.MD b/spring-cloud/spring-cloud-gateway/README.MD deleted file mode 100644 index d945ae949c..0000000000 --- a/spring-cloud/spring-cloud-gateway/README.MD +++ /dev/null @@ -1,2 +0,0 @@ -### Relevant Articles: -- [Exploring the new Spring Cloud Gateway](http://www.baeldung.com/spring-cloud-gateway) diff --git a/spring-security-mvc-boot/README.MD b/spring-security-mvc-boot/README.MD deleted file mode 100644 index 20036283a3..0000000000 --- a/spring-security-mvc-boot/README.MD +++ /dev/null @@ -1,15 +0,0 @@ -### The Course -The "REST With Spring" Classes: http://github.learnspringsecurity.com - -### Relevant Articles: -- [A Custom Security Expression with Spring Security](http://www.baeldung.com/spring-security-create-new-custom-security-expression) -- [Custom AccessDecisionVoters in Spring Security](http://www.baeldung.com/spring-security-custom-voter) -- [Spring Security: Authentication with a Database-backed UserDetailsService](http://www.baeldung.com/spring-security-authentication-with-a-database) -- [Two Login Pages with Spring Security](http://www.baeldung.com/spring-security-two-login-pages) -- [Multiple Entry Points in Spring Security](http://www.baeldung.com/spring-security-multiple-entry-points) -- [Multiple Authentication Providers in Spring Security](http://www.baeldung.com/spring-security-multiple-auth-providers) -- [Granted Authority Versus Role in Spring Security](http://www.baeldung.com/spring-security-granted-authority-vs-role) -- [Spring Data with Spring Security](https://www.baeldung.com/spring-data-security) -- [Spring Security – Whitelist IP Range](https://www.baeldung.com/spring-security-whitelist-ip-range) -- [Find the Registered Spring Security Filters](https://www.baeldung.com/spring-security-registered-filters) -- [HTTPS using Self-Signed Certificate in Spring Boot](https://www.baeldung.com/spring-boot-https-self-signed-certificate) From d937267ed1cf48b9684af9cbf79a37f50b1584f4 Mon Sep 17 00:00:00 2001 From: enpy303 Date: Sat, 12 Oct 2019 15:39:04 +0200 Subject: [PATCH 046/265] formatting enhancements --- .../com/baeldung/tx/TxIntegrationConfig.java | 27 ++++++++++--------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/spring-integration/src/main/java/com/baeldung/tx/TxIntegrationConfig.java b/spring-integration/src/main/java/com/baeldung/tx/TxIntegrationConfig.java index a5dedeafed..7a58cb3125 100644 --- a/spring-integration/src/main/java/com/baeldung/tx/TxIntegrationConfig.java +++ b/spring-integration/src/main/java/com/baeldung/tx/TxIntegrationConfig.java @@ -20,10 +20,7 @@ import org.springframework.integration.file.FileReadingMessageSource; import org.springframework.integration.file.filters.SimplePatternFileListFilter; import org.springframework.integration.file.transformer.FileToStringTransformer; import org.springframework.integration.scheduling.PollerMetadata; -import org.springframework.integration.transaction.DefaultTransactionSynchronizationFactory; -import org.springframework.integration.transaction.ExpressionEvaluatingTransactionSynchronizationProcessor; -import org.springframework.integration.transaction.TransactionInterceptorBuilder; -import org.springframework.integration.transaction.TransactionSynchronizationFactory; +import org.springframework.integration.transaction.*; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder; @@ -84,15 +81,19 @@ public class TxIntegrationConfig { @Bean public TransactionSynchronizationFactory transactionSynchronizationFactory() { - ExpressionEvaluatingTransactionSynchronizationProcessor transactionSynchronizationProcessor = - new ExpressionEvaluatingTransactionSynchronizationProcessor(); - SpelExpressionParser spelExpressionParser = new SpelExpressionParser(); - transactionSynchronizationProcessor.setAfterCommitExpression(spelExpressionParser.parseExpression( - "payload.renameTo(new java.io.File(payload.absolutePath + '.PASSED'))")); - transactionSynchronizationProcessor.setAfterRollbackExpression(spelExpressionParser.parseExpression( - "payload.renameTo(new java.io.File(payload.absolutePath + '.FAILED'))")); - return new DefaultTransactionSynchronizationFactory(transactionSynchronizationProcessor); - } + ExpressionEvaluatingTransactionSynchronizationProcessor processor = + new ExpressionEvaluatingTransactionSynchronizationProcessor(); + + SpelExpressionParser spelParser = new SpelExpressionParser(); + processor.setAfterCommitExpression( + spelParser.parseExpression( + "payload.renameTo(new java.io.File(payload.absolutePath + '.PASSED'))")); + processor.setAfterRollbackExpression( + spelParser.parseExpression( + "payload.renameTo(new java.io.File(payload.absolutePath + '.FAILED'))")); + + return new DefaultTransactionSynchronizationFactory(processor); + } @Bean @Transformer(inputChannel = "inputChannel", outputChannel = "toServiceChannel") From 51e9e905411bb00697b2ac834d9a68e153fddd0d Mon Sep 17 00:00:00 2001 From: "m.raheem" Date: Sat, 12 Oct 2019 19:57:05 +0200 Subject: [PATCH 047/265] creating package per deserialization method --- .../jackson/deserialization/enums/City.java | 15 ++ .../deserialization/enums/Distance.java | 27 ++ .../enums/customdeserializer/City.java | 15 ++ .../CustomEnumDeserializer.java | 8 +- .../enums/customdeserializer/Distance.java | 29 +++ .../enums/jsoncreator/City.java | 15 ++ .../enums/jsoncreator/Distance.java | 44 ++++ .../enums/jsonproperty/City.java | 15 ++ .../enums/jsonproperty/Distance.java | 47 ++++ .../deserialization/enums/jsonvalue/City.java | 15 ++ .../enums/jsonvalue/Distance.java | 31 +++ .../com/baeldung/jackson/entities/City.java | 235 ------------------ .../DefaultJacksonEnumDeserialization.java | 19 ++ .../JacksonEnumCustomDeserialization.java | 18 ++ ...onEnumDeserializationUsingJsonCreator.java | 19 ++ ...nEnumDeserializationUsingJsonProperty.java | 20 ++ ...ksonEnumDeserializationUsingJsonValue.java | 19 ++ .../JacksonEnumDeserializationUnitTest.java | 52 ---- 18 files changed, 351 insertions(+), 292 deletions(-) create mode 100644 jackson/src/main/java/com/baeldung/jackson/deserialization/enums/City.java create mode 100644 jackson/src/main/java/com/baeldung/jackson/deserialization/enums/Distance.java create mode 100644 jackson/src/main/java/com/baeldung/jackson/deserialization/enums/customdeserializer/City.java rename jackson/src/main/java/com/baeldung/jackson/deserialization/enums/{ => customdeserializer}/CustomEnumDeserializer.java (68%) create mode 100644 jackson/src/main/java/com/baeldung/jackson/deserialization/enums/customdeserializer/Distance.java create mode 100644 jackson/src/main/java/com/baeldung/jackson/deserialization/enums/jsoncreator/City.java create mode 100644 jackson/src/main/java/com/baeldung/jackson/deserialization/enums/jsoncreator/Distance.java create mode 100644 jackson/src/main/java/com/baeldung/jackson/deserialization/enums/jsonproperty/City.java create mode 100644 jackson/src/main/java/com/baeldung/jackson/deserialization/enums/jsonproperty/Distance.java create mode 100644 jackson/src/main/java/com/baeldung/jackson/deserialization/enums/jsonvalue/City.java create mode 100644 jackson/src/main/java/com/baeldung/jackson/deserialization/enums/jsonvalue/Distance.java delete mode 100644 jackson/src/main/java/com/baeldung/jackson/entities/City.java create mode 100644 jackson/src/test/java/com/baeldung/jackson/deserialization/enums/DefaultJacksonEnumDeserialization.java create mode 100644 jackson/src/test/java/com/baeldung/jackson/deserialization/enums/customdeserializer/JacksonEnumCustomDeserialization.java create mode 100644 jackson/src/test/java/com/baeldung/jackson/deserialization/enums/jsoncreator/JacksonEnumDeserializationUsingJsonCreator.java create mode 100644 jackson/src/test/java/com/baeldung/jackson/deserialization/enums/jsonproperty/JacksonEnumDeserializationUsingJsonProperty.java create mode 100644 jackson/src/test/java/com/baeldung/jackson/deserialization/enums/jsonvalue/JacksonEnumDeserializationUsingJsonValue.java delete mode 100644 jackson/src/test/java/com/baeldung/jackson/enums/JacksonEnumDeserializationUnitTest.java diff --git a/jackson/src/main/java/com/baeldung/jackson/deserialization/enums/City.java b/jackson/src/main/java/com/baeldung/jackson/deserialization/enums/City.java new file mode 100644 index 0000000000..2bbef534c3 --- /dev/null +++ b/jackson/src/main/java/com/baeldung/jackson/deserialization/enums/City.java @@ -0,0 +1,15 @@ +package com.baeldung.jackson.deserialization.enums; + +public class City { + + private Distance distance; + + public Distance getDistance() { + return distance; + } + + public void setDistance(Distance distance) { + this.distance = distance; + } + +} diff --git a/jackson/src/main/java/com/baeldung/jackson/deserialization/enums/Distance.java b/jackson/src/main/java/com/baeldung/jackson/deserialization/enums/Distance.java new file mode 100644 index 0000000000..ce332d34ae --- /dev/null +++ b/jackson/src/main/java/com/baeldung/jackson/deserialization/enums/Distance.java @@ -0,0 +1,27 @@ +package com.baeldung.jackson.deserialization.enums; + +public enum Distance { + + KILOMETER("km", 1000), MILE("miles", 1609.34), METER("meters", 1), INCH("inches", 0.0254), CENTIMETER("cm", 0.01), MILLIMETER("mm", 0.001); + + private String unit; + private final double meters; + + private Distance(String unit, double meters) { + this.unit = unit; + this.meters = meters; + } + + public double getMeters() { + return meters; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } +} + diff --git a/jackson/src/main/java/com/baeldung/jackson/deserialization/enums/customdeserializer/City.java b/jackson/src/main/java/com/baeldung/jackson/deserialization/enums/customdeserializer/City.java new file mode 100644 index 0000000000..36ef7e244a --- /dev/null +++ b/jackson/src/main/java/com/baeldung/jackson/deserialization/enums/customdeserializer/City.java @@ -0,0 +1,15 @@ +package com.baeldung.jackson.deserialization.enums.customdeserializer; + +public class City { + + private Distance distance; + + public Distance getDistance() { + return distance; + } + + public void setDistance(Distance distance) { + this.distance = distance; + } + +} diff --git a/jackson/src/main/java/com/baeldung/jackson/deserialization/enums/CustomEnumDeserializer.java b/jackson/src/main/java/com/baeldung/jackson/deserialization/enums/customdeserializer/CustomEnumDeserializer.java similarity index 68% rename from jackson/src/main/java/com/baeldung/jackson/deserialization/enums/CustomEnumDeserializer.java rename to jackson/src/main/java/com/baeldung/jackson/deserialization/enums/customdeserializer/CustomEnumDeserializer.java index 3b99490e0b..21be368e01 100644 --- a/jackson/src/main/java/com/baeldung/jackson/deserialization/enums/CustomEnumDeserializer.java +++ b/jackson/src/main/java/com/baeldung/jackson/deserialization/enums/customdeserializer/CustomEnumDeserializer.java @@ -1,15 +1,13 @@ -package com.baeldung.jackson.deserialization.enums; +package com.baeldung.jackson.deserialization.enums.customdeserializer; import java.io.IOException; -import com.baeldung.jackson.entities.City; -import com.baeldung.jackson.entities.City.CityWithCustomDeserializationEnum.Distance; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.deser.std.StdDeserializer; -public class CustomEnumDeserializer extends StdDeserializer { +public class CustomEnumDeserializer extends StdDeserializer { private static final long serialVersionUID = -1166032307856492833L; @@ -22,7 +20,7 @@ public class CustomEnumDeserializer extends StdDeserializer Date: Sat, 12 Oct 2019 22:39:55 +0300 Subject: [PATCH 048/265] add github links to articles --- gradle-5/README.md | 5 +++++ java-math/README.md | 2 ++ java-numbers-2/README.md | 2 ++ java-strings-3/README.md | 4 ++++ javaxval/README.md | 2 +- jaxb/README.md | 2 ++ jersey/README.md | 2 ++ jhipster-5/bookstore-monolith/README.md | 2 ++ libraries-primitive/README.MD | 2 ++ mapstruct/README.md | 2 ++ metrics/README.md | 2 ++ 11 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 gradle-5/README.md diff --git a/gradle-5/README.md b/gradle-5/README.md new file mode 100644 index 0000000000..73b6b7e12a --- /dev/null +++ b/gradle-5/README.md @@ -0,0 +1,5 @@ + +### Relevant Articles: + +- [Run a Java main Method Using Gradle](https://www.baeldung.com/gradle-run-java-main) + diff --git a/java-math/README.md b/java-math/README.md index 49ff5afde1..d80a07258a 100644 --- a/java-math/README.md +++ b/java-math/README.md @@ -14,3 +14,5 @@ This module contains articles about math in Java. - [Convert Latitude and Longitude to a 2D Point in Java](https://www.baeldung.com/java-convert-latitude-longitude) - [Debugging with Eclipse](https://www.baeldung.com/eclipse-debugging) - [Matrix Multiplication in Java](https://www.baeldung.com/java-matrix-multiplication) +- [Calculating Logarithms in Java](https://www.baeldung.com/java-logarithms) +- [Finding Greatest Common Divisor in Java](https://www.baeldung.com/java-greatest-common-divisor) diff --git a/java-numbers-2/README.md b/java-numbers-2/README.md index 48f9acd32d..e200c4aa03 100644 --- a/java-numbers-2/README.md +++ b/java-numbers-2/README.md @@ -13,4 +13,6 @@ This module contains articles about numbers in Java. - [Binary Numbers in Java](https://www.baeldung.com/java-binary-numbers) - [Finding the Least Common Multiple in Java](https://www.baeldung.com/java-least-common-multiple) - [Binary Numbers in Java](https://www.baeldung.com/java-binary-numbers) +- [Generating Random Numbers in a Range in Java](https://www.baeldung.com/java-generating-random-numbers) +- [Listing Numbers Within a Range in Java](https://www.baeldung.com/java-listing-numbers-within-a-range) - More articles: [[<-- prev]](/../java-numbers) diff --git a/java-strings-3/README.md b/java-strings-3/README.md index f0aaddefcb..4e9d63b682 100644 --- a/java-strings-3/README.md +++ b/java-strings-3/README.md @@ -5,4 +5,8 @@ This module contains articles about strings in Java. ### Relevant Articles: - [Converting Java String to Double](https://www.baeldung.com/java-string-to-double) +- [Counting Words in a String](https://www.baeldung.com/java-word-counting) +- [Java String equalsIgnoreCase()](https://www.baeldung.com/java-string-equalsignorecase) +- [Finding the Difference Between Two Strings in Java](https://www.baeldung.com/java-difference-between-two-strings) +- [Add a Header to a Jersey SSE Client Request](https://www.baeldung.com/jersey-sse-client-request-headers) - More articles: [[<-- prev>]](/java-strings-2) diff --git a/javaxval/README.md b/javaxval/README.md index 64903d7463..c2c392b276 100644 --- a/javaxval/README.md +++ b/javaxval/README.md @@ -9,4 +9,4 @@ This module contains articles about Bean Validation. - [Difference Between @NotNull, @NotEmpty, and @NotBlank Constraints in Bean Validation](https://www.baeldung.com/java-bean-validation-not-null-empty-blank) - [Javax BigDecimal Validation](https://www.baeldung.com/javax-bigdecimal-validation) - [Grouping Javax Validation Constraints](https://www.baeldung.com/javax-validation-groups) -- [Javax Validations for Enums](https://www.baeldung.com/javax-validations-for-enums/) +- [Javax Validations for Enums](https://www.baeldung.com/javax-validations-enums) diff --git a/jaxb/README.md b/jaxb/README.md index aca078af15..d9d16ab70b 100644 --- a/jaxb/README.md +++ b/jaxb/README.md @@ -4,3 +4,5 @@ This module contains articles about JAXB. ### Relevant Articles: - [Guide to JAXB](https://www.baeldung.com/jaxb) +- [Unmarshalling Dates Using JAXB](https://www.baeldung.com/jaxb-unmarshalling-dates) + diff --git a/jersey/README.md b/jersey/README.md index 09de7051ca..8537e07358 100644 --- a/jersey/README.md +++ b/jersey/README.md @@ -9,3 +9,5 @@ This module contains articles about Jersey. - [Set a Response Body in JAX-RS](https://www.baeldung.com/jax-rs-response) - [Exploring the Jersey Test Framework](https://www.baeldung.com/jersey-test) - [Explore Jersey Request Parameters](https://www.baeldung.com/jersey-request-parameters) +- [Add a Header to a Jersey SSE Client Request](https://www.baeldung.com/jersey-sse-client-request-headers) + diff --git a/jhipster-5/bookstore-monolith/README.md b/jhipster-5/bookstore-monolith/README.md index 0537f5b1a5..e4e69b83ac 100644 --- a/jhipster-5/bookstore-monolith/README.md +++ b/jhipster-5/bookstore-monolith/README.md @@ -1,3 +1,5 @@ ## Relevant articles: - [Creating New APIs and Views in JHipster](https://www.baeldung.com/jhipster-new-apis-and-views) +- [JHipster Authentication with an External Service](https://www.baeldung.com/jhipster-authentication-external-service) + diff --git a/libraries-primitive/README.MD b/libraries-primitive/README.MD index f27fb73dd6..086cdc0d2d 100644 --- a/libraries-primitive/README.MD +++ b/libraries-primitive/README.MD @@ -1,3 +1,5 @@ ### Relevant Articles - [Guide to FastUtil](https://www.baeldung.com/fastutil) +- [Primitive Collections in Eclipse Collections](https://www.baeldung.com/java-eclipse-primitive-collections) + diff --git a/mapstruct/README.md b/mapstruct/README.md index b784820b98..be02c1186b 100644 --- a/mapstruct/README.md +++ b/mapstruct/README.md @@ -4,3 +4,5 @@ This module contains articles about MapStruct. ###Relevant Articles: - [Quick Guide to MapStruct](https://www.baeldung.com/mapstruct) +- [Custom Mapper with MapStruct](https://www.baeldung.com/mapstruct-custom-mapper) + diff --git a/metrics/README.md b/metrics/README.md index f27f5fb795..b8a1bf026f 100644 --- a/metrics/README.md +++ b/metrics/README.md @@ -7,3 +7,5 @@ This module contains articles about metrics. - [Intro to Dropwizard Metrics](https://www.baeldung.com/dropwizard-metrics) - [Introduction to Netflix Servo](https://www.baeldung.com/netflix-servo) - [Quick Guide to Micrometer](https://www.baeldung.com/micrometer) +- [@Timed Annotation Using Metrics and AspectJ](https://www.baeldung.com/timed-metrics-aspectj) + From d296ca7808136566325212190fa23b4268b71a7f Mon Sep 17 00:00:00 2001 From: Loredana Date: Sat, 12 Oct 2019 22:51:14 +0300 Subject: [PATCH 049/265] add github links to articles --- persistence-modules/sirix/README.md | 4 +++- spring-5-data-reactive/README.md | 2 ++ spring-5-reactive-client/README.md | 1 + spring-5/README.md | 2 +- spring-boot-autoconfiguration/README.md | 2 ++ spring-freemarker/README.md | 2 ++ spring-mvc-simple-2/README.md | 1 + spring-mvc-xml/README.md | 2 +- spring-security-mvc-boot/README.md | 2 ++ .../src/main/java/org/baeldung/jdbcauthentication/README.md | 3 --- spring-thymeleaf-2/README.md | 2 ++ testing-modules/junit-5-advanced/README.md | 2 ++ xml/README.md | 2 ++ 13 files changed, 21 insertions(+), 6 deletions(-) delete mode 100644 spring-security-mvc-boot/src/main/java/org/baeldung/jdbcauthentication/README.md diff --git a/persistence-modules/sirix/README.md b/persistence-modules/sirix/README.md index b0f6f8d04b..161e60c2cb 100644 --- a/persistence-modules/sirix/README.md +++ b/persistence-modules/sirix/README.md @@ -1,3 +1,5 @@ ## Relevant articles: -- [Introduction to Sirix](https://www.baeldung.com/introduction-to-sirix) \ No newline at end of file +- [Introduction to Sirix](https://www.baeldung.com/introduction-to-sirix) +- [A Guide to SirixDB](https://www.baeldung.com/sirix) + diff --git a/spring-5-data-reactive/README.md b/spring-5-data-reactive/README.md index 683b493317..03bd323cb4 100644 --- a/spring-5-data-reactive/README.md +++ b/spring-5-data-reactive/README.md @@ -10,3 +10,5 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Spring Data Reactive Repositories with MongoDB](https://www.baeldung.com/spring-data-mongodb-reactive) - [Spring Data MongoDB Tailable Cursors](https://www.baeldung.com/spring-data-mongodb-tailable-cursors) - [A Quick Look at R2DBC with Spring Data](https://www.baeldung.com/spring-data-r2dbc) +- [Spring Data Reactive Repositories with Couchbase](https://www.baeldung.com/spring-data-reactive-couchbase) + diff --git a/spring-5-reactive-client/README.md b/spring-5-reactive-client/README.md index 90d12cad1c..97afeccb64 100644 --- a/spring-5-reactive-client/README.md +++ b/spring-5-reactive-client/README.md @@ -6,4 +6,5 @@ This module contains articles about reactive Spring 5 WebClient The "REST With Spring" Classes: http://bit.ly/restwithspring ### Relevant Articles +- [Logging Spring WebClient Calls](https://www.baeldung.com/spring-log-webclient-calls) diff --git a/spring-5/README.md b/spring-5/README.md index 7588d23304..3f839a5bca 100644 --- a/spring-5/README.md +++ b/spring-5/README.md @@ -15,4 +15,4 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Spring ResponseStatusException](https://www.baeldung.com/spring-response-status-exception) - [Spring Assert Statements](https://www.baeldung.com/spring-assert) - [Configuring a Hikari Connection Pool with Spring Boot](https://www.baeldung.com/spring-boot-hikari) - +- [Difference between \ vs \](https://www.baeldung.com/spring-contextannotation-contextcomponentscan) diff --git a/spring-boot-autoconfiguration/README.md b/spring-boot-autoconfiguration/README.md index 67311eed50..180d857d52 100644 --- a/spring-boot-autoconfiguration/README.md +++ b/spring-boot-autoconfiguration/README.md @@ -9,3 +9,5 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Create a Custom Auto-Configuration with Spring Boot](https://www.baeldung.com/spring-boot-custom-auto-configuration) - [Guide to ApplicationContextRunner in Spring Boot](https://www.baeldung.com/spring-boot-context-runner) +- [A Guide to Spring Boot Configuration Metadata](https://www.baeldung.com/spring-boot-configuration-metadata) + diff --git a/spring-freemarker/README.md b/spring-freemarker/README.md index 410781f2ca..d9dfe16fbe 100644 --- a/spring-freemarker/README.md +++ b/spring-freemarker/README.md @@ -4,3 +4,5 @@ This module contains articles about Spring with FreeMarker ### Relevant Articles: - [Introduction to Using FreeMarker in Spring MVC](https://www.baeldung.com/freemarker-in-spring-mvc-tutorial) +- [FreeMarker Common Operations](https://www.baeldung.com/freemarker-operations) + diff --git a/spring-mvc-simple-2/README.md b/spring-mvc-simple-2/README.md index a4a545ab72..c03fa6363a 100644 --- a/spring-mvc-simple-2/README.md +++ b/spring-mvc-simple-2/README.md @@ -5,4 +5,5 @@ This module contains articles about Spring MVC ## Relevant articles: - [How to Read HTTP Headers in Spring REST Controllers](https://www.baeldung.com/spring-rest-http-headers) - [A Custom Data Binder in Spring MVC](https://www.baeldung.com/spring-mvc-custom-data-binder) +- [Validating Lists in a Spring Controller](https://www.baeldung.com/spring-validate-list-controller) - More articles: [[<-- prev]](/spring-mvc-simple) diff --git a/spring-mvc-xml/README.md b/spring-mvc-xml/README.md index b6a34475ea..bc530ba295 100644 --- a/spring-mvc-xml/README.md +++ b/spring-mvc-xml/README.md @@ -14,6 +14,6 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [web.xml vs Initializer with Spring](https://www.baeldung.com/spring-xml-vs-java-config) - [A Java Web Application Without a web.xml](https://www.baeldung.com/java-web-app-without-web-xml) - [Validating RequestParams and PathVariables in Spring](https://www.baeldung.com/spring-validate-requestparam-pathvariable) - +- [Debugging the Spring MVC 404 “No mapping found for HTTP request” Error](https://www.baeldung.com/spring-mvc-404-error) ## Spring MVC with XML Configuration Example Project - access a sample jsp page at: `http://localhost:8080/spring-mvc-xml/sample.html` diff --git a/spring-security-mvc-boot/README.md b/spring-security-mvc-boot/README.md index 7dcfe4d70f..a1056cc130 100644 --- a/spring-security-mvc-boot/README.md +++ b/spring-security-mvc-boot/README.md @@ -17,3 +17,5 @@ The "REST With Spring" Classes: http://github.learnspringsecurity.com - [Spring Security – Whitelist IP Range](https://www.baeldung.com/spring-security-whitelist-ip-range) - [Find the Registered Spring Security Filters](https://www.baeldung.com/spring-security-registered-filters) - [HTTPS using Self-Signed Certificate in Spring Boot](https://www.baeldung.com/spring-boot-https-self-signed-certificate) +- [Spring Security: Exploring JDBC Authentication](https://www.baeldung.com/spring-security-jdbc-authentication) + diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/jdbcauthentication/README.md b/spring-security-mvc-boot/src/main/java/org/baeldung/jdbcauthentication/README.md deleted file mode 100644 index a7cdfec7d8..0000000000 --- a/spring-security-mvc-boot/src/main/java/org/baeldung/jdbcauthentication/README.md +++ /dev/null @@ -1,3 +0,0 @@ -### Relevant Articles: - -- [Spring Security: Exploring JDBC Authentication](https://www.baeldung.com/spring-security-jdbc-authentication) diff --git a/spring-thymeleaf-2/README.md b/spring-thymeleaf-2/README.md index ce83032cb5..22a73f06e1 100644 --- a/spring-thymeleaf-2/README.md +++ b/spring-thymeleaf-2/README.md @@ -3,3 +3,5 @@ - [Working with Enums in Thymeleaf](https://www.baeldung.com/thymeleaf-enums) - [Changing the Thymeleaf Template Directory in Spring Boot](https://www.baeldung.com/spring-thymeleaf-template-directory) - [Spring Request Parameters with Thymeleaf](https://www.baeldung.com/spring-thymeleaf-request-parameters) +- [Thymeleaf lists Utility Object](https://www.baeldung.com/thymeleaf-lists-utility) + diff --git a/testing-modules/junit-5-advanced/README.md b/testing-modules/junit-5-advanced/README.md index 61a65b2e5a..9dfa676c5c 100644 --- a/testing-modules/junit-5-advanced/README.md +++ b/testing-modules/junit-5-advanced/README.md @@ -2,3 +2,5 @@ - [JUnit 5 TestWatcher API](https://www.baeldung.com/junit-testwatcher) - [JUnit Custom Display Name Generator API](https://www.baeldung.com/junit-custom-display-name-generator) +- [@TestInstance Annotation in JUnit 5](https://www.baeldung.com/junit-testinstance-annotation) + diff --git a/xml/README.md b/xml/README.md index d1aa3a798b..b609a1e078 100644 --- a/xml/README.md +++ b/xml/README.md @@ -10,3 +10,5 @@ This module contains articles about eXtensible Markup Language (XML) - [Write an org.w3.dom.Document to a File](https://www.baeldung.com/java-write-xml-document-file) - [Modifying an XML Attribute in Java](https://www.baeldung.com/java-modify-xml-attribute) - [Convert XML to HTML in Java](https://www.baeldung.com/java-convert-xml-to-html) +- [Parsing an XML File Using StAX](https://www.baeldung.com/java-stax) + From bd3373283bdea209ee24acc0c28bc57bf4ff3a91 Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Sun, 13 Oct 2019 09:43:31 +0200 Subject: [PATCH 050/265] #BAEL-16646 remove duplicated modules - fix the build --- core-java-modules/pom.xml | 2 -- 1 file changed, 2 deletions(-) diff --git a/core-java-modules/pom.xml b/core-java-modules/pom.xml index d9b432008b..68ece1c473 100644 --- a/core-java-modules/pom.xml +++ b/core-java-modules/pom.xml @@ -19,8 +19,6 @@ core-java-lang-operators core-java-networking-2 core-java-security-manager - core-java-datetime-conversion - core-java-datetime-string From f37d003192f7cf65fc2adbd22167410e2ea06f93 Mon Sep 17 00:00:00 2001 From: fejera Date: Sun, 13 Oct 2019 18:00:43 +0200 Subject: [PATCH 051/265] BAEL-3089 - created examples for @SecondaryTable article --- persistence-modules/java-jpa-2/pom.xml | 11 ++- .../multipleentities/AllergensAsEntity.java | 73 ++++++++++++++ .../MealWithMultipleEntities.java | 75 ++++++++++++++ .../secondarytable/MealAsSingleEntity.java | 99 +++++++++++++++++++ .../embeddable/AllergensAsEmbeddable.java | 47 +++++++++ .../embeddable/MealWithEmbeddedAllergens.java | 78 +++++++++++++++ .../main/resources/META-INF/persistence.xml | 30 ++++++ .../MultipleTablesIntegrationTest.java | 79 +++++++++++++++ .../src/test/resources/multipletables.sql | 8 ++ 9 files changed, 498 insertions(+), 2 deletions(-) create mode 100644 persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/multipletables/multipleentities/AllergensAsEntity.java create mode 100644 persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/multipletables/multipleentities/MealWithMultipleEntities.java create mode 100644 persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/multipletables/secondarytable/MealAsSingleEntity.java create mode 100644 persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/multipletables/secondarytable/embeddable/AllergensAsEmbeddable.java create mode 100644 persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/multipletables/secondarytable/embeddable/MealWithEmbeddedAllergens.java create mode 100644 persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/multipletables/MultipleTablesIntegrationTest.java create mode 100644 persistence-modules/java-jpa-2/src/test/resources/multipletables.sql diff --git a/persistence-modules/java-jpa-2/pom.xml b/persistence-modules/java-jpa-2/pom.xml index fdd482f833..3cbc15beed 100644 --- a/persistence-modules/java-jpa-2/pom.xml +++ b/persistence-modules/java-jpa-2/pom.xml @@ -1,5 +1,4 @@ - 4.0.0 java-jpa-2 @@ -47,6 +46,13 @@ ${postgres.version} runtime + + + org.assertj + assertj-core + ${assertj.version} + test + @@ -106,6 +112,7 @@ 2.7.4-RC1 42.2.5 2.2 + 3.11.1 \ No newline at end of file diff --git a/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/multipletables/multipleentities/AllergensAsEntity.java b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/multipletables/multipleentities/AllergensAsEntity.java new file mode 100644 index 0000000000..e5e228d013 --- /dev/null +++ b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/multipletables/multipleentities/AllergensAsEntity.java @@ -0,0 +1,73 @@ +package com.baeldung.jpa.multipletables.multipleentities; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.OneToOne; +import javax.persistence.PrimaryKeyJoinColumn; +import javax.persistence.Table; + +import com.baeldung.jpa.multipletables.secondarytable.MealAsSingleEntity; + +@Entity +@Table(name = "allergens") +public class AllergensAsEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "meal_id") + private Long mealId; + + @OneToOne + @PrimaryKeyJoinColumn(name = "meal_id") + private MealAsSingleEntity meal; + + @Column(name = "peanuts") + private boolean peanuts; + + @Column(name = "celery") + private boolean celery; + + @Column(name = "sesame_seeds") + private boolean sesameSeeds; + + public MealAsSingleEntity getMeal() { + return meal; + } + + public void setMeal(MealAsSingleEntity meal) { + this.meal = meal; + } + + public boolean isPeanuts() { + return peanuts; + } + + public void setPeanuts(boolean peanuts) { + this.peanuts = peanuts; + } + + public boolean isCelery() { + return celery; + } + + public void setCelery(boolean celery) { + this.celery = celery; + } + + public boolean isSesameSeeds() { + return sesameSeeds; + } + + public void setSesameSeeds(boolean sesameSeeds) { + this.sesameSeeds = sesameSeeds; + } + + @Override + public String toString() { + return "AllergensAsEntity [peanuts=" + peanuts + ", celery=" + celery + ", sesameSeeds=" + sesameSeeds + "]"; + } + +} diff --git a/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/multipletables/multipleentities/MealWithMultipleEntities.java b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/multipletables/multipleentities/MealWithMultipleEntities.java new file mode 100644 index 0000000000..74105f8f1f --- /dev/null +++ b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/multipletables/multipleentities/MealWithMultipleEntities.java @@ -0,0 +1,75 @@ +package com.baeldung.jpa.multipletables.multipleentities; + +import java.math.BigDecimal; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.OneToOne; +import javax.persistence.Table; + +@Entity +@Table(name = "meal") +public class MealWithMultipleEntities { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + private Long id; + + @Column(name = "name") + private String name; + + @Column(name = "description") + private String description; + + @Column(name = "price") + private BigDecimal price; + + @OneToOne(mappedBy = "meal") + private AllergensAsEntity allergens; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public BigDecimal getPrice() { + return price; + } + + public void setPrice(BigDecimal price) { + this.price = price; + } + + public AllergensAsEntity getAllergens() { + return allergens; + } + + public void setAllergens(AllergensAsEntity allergens) { + this.allergens = allergens; + } + + public Long getId() { + return id; + } + + @Override + public String toString() { + return "MealWithMultipleEntities [id=" + id + ", name=" + name + ", description=" + description + ", price=" + price + ", allergens=" + allergens + "]"; + } + +} diff --git a/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/multipletables/secondarytable/MealAsSingleEntity.java b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/multipletables/secondarytable/MealAsSingleEntity.java new file mode 100644 index 0000000000..2929f391a4 --- /dev/null +++ b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/multipletables/secondarytable/MealAsSingleEntity.java @@ -0,0 +1,99 @@ +package com.baeldung.jpa.multipletables.secondarytable; + +import java.math.BigDecimal; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.PrimaryKeyJoinColumn; +import javax.persistence.SecondaryTable; +import javax.persistence.Table; + +@Entity +@Table(name = "meal") +@SecondaryTable(name = "allergens", pkJoinColumns = @PrimaryKeyJoinColumn(name = "meal_id")) +public class MealAsSingleEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + private Long id; + + @Column(name = "name") + private String name; + + @Column(name = "description") + private String description; + + @Column(name = "price") + private BigDecimal price; + + @Column(name = "peanuts", table = "allergens") + private boolean peanuts; + + @Column(name = "celery", table = "allergens") + private boolean celery; + + @Column(name = "sesame_seeds", table = "allergens") + private boolean sesameSeeds; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public BigDecimal getPrice() { + return price; + } + + public void setPrice(BigDecimal price) { + this.price = price; + } + + public boolean isPeanuts() { + return peanuts; + } + + public void setPeanuts(boolean peanuts) { + this.peanuts = peanuts; + } + + public boolean isCelery() { + return celery; + } + + public void setCelery(boolean celery) { + this.celery = celery; + } + + public boolean isSesameSeeds() { + return sesameSeeds; + } + + public void setSesameSeeds(boolean sesameSeeds) { + this.sesameSeeds = sesameSeeds; + } + + public Long getId() { + return id; + } + + @Override + public String toString() { + return "MealAsSingleEntity [id=" + id + ", name=" + name + ", description=" + description + ", price=" + price + ", peanuts=" + peanuts + ", celery=" + celery + ", sesameSeeds=" + sesameSeeds + "]"; + } + +} diff --git a/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/multipletables/secondarytable/embeddable/AllergensAsEmbeddable.java b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/multipletables/secondarytable/embeddable/AllergensAsEmbeddable.java new file mode 100644 index 0000000000..1c1f05890b --- /dev/null +++ b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/multipletables/secondarytable/embeddable/AllergensAsEmbeddable.java @@ -0,0 +1,47 @@ +package com.baeldung.jpa.multipletables.secondarytable.embeddable; + +import javax.persistence.Column; +import javax.persistence.Embeddable; + +@Embeddable +public class AllergensAsEmbeddable { + + @Column(name = "peanuts", table = "allergens") + private boolean peanuts; + + @Column(name = "celery", table = "allergens") + private boolean celery; + + @Column(name = "sesame_seeds", table = "allergens") + private boolean sesameSeeds; + + public boolean isPeanuts() { + return peanuts; + } + + public void setPeanuts(boolean peanuts) { + this.peanuts = peanuts; + } + + public boolean isCelery() { + return celery; + } + + public void setCelery(boolean celery) { + this.celery = celery; + } + + public boolean isSesameSeeds() { + return sesameSeeds; + } + + public void setSesameSeeds(boolean sesameSeeds) { + this.sesameSeeds = sesameSeeds; + } + + @Override + public String toString() { + return "AllergensAsEmbeddable [peanuts=" + peanuts + ", celery=" + celery + ", sesameSeeds=" + sesameSeeds + "]"; + } + +} diff --git a/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/multipletables/secondarytable/embeddable/MealWithEmbeddedAllergens.java b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/multipletables/secondarytable/embeddable/MealWithEmbeddedAllergens.java new file mode 100644 index 0000000000..87a83157d7 --- /dev/null +++ b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/multipletables/secondarytable/embeddable/MealWithEmbeddedAllergens.java @@ -0,0 +1,78 @@ +package com.baeldung.jpa.multipletables.secondarytable.embeddable; + +import java.math.BigDecimal; + +import javax.persistence.Column; +import javax.persistence.Embedded; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.PrimaryKeyJoinColumn; +import javax.persistence.SecondaryTable; +import javax.persistence.Table; + +@Entity +@Table(name = "meal") +@SecondaryTable(name = "allergens", pkJoinColumns = @PrimaryKeyJoinColumn(name = "meal_id")) +public class MealWithEmbeddedAllergens { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + private Long id; + + @Column(name = "name") + private String name; + + @Column(name = "description") + private String description; + + @Column(name = "price") + private BigDecimal price; + + @Embedded + private AllergensAsEmbeddable allergens; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public BigDecimal getPrice() { + return price; + } + + public void setPrice(BigDecimal price) { + this.price = price; + } + + public AllergensAsEmbeddable getAllergens() { + return allergens; + } + + public void setAllergens(AllergensAsEmbeddable allergens) { + this.allergens = allergens; + } + + public Long getId() { + return id; + } + + @Override + public String toString() { + return "MealWithEmbeddedAllergens [id=" + id + ", name=" + name + ", description=" + description + ", price=" + price + ", allergens=" + allergens + "]"; + } + +} diff --git a/persistence-modules/java-jpa-2/src/main/resources/META-INF/persistence.xml b/persistence-modules/java-jpa-2/src/main/resources/META-INF/persistence.xml index 62d7ce0f5e..0602a82f6c 100644 --- a/persistence-modules/java-jpa-2/src/main/resources/META-INF/persistence.xml +++ b/persistence-modules/java-jpa-2/src/main/resources/META-INF/persistence.xml @@ -119,4 +119,34 @@ + + org.hibernate.jpa.HibernatePersistenceProvider + com.baeldung.jpa.multipletables.multipleentities.MealWithMultipleEntities + com.baeldung.jpa.multipletables.multipleentities.AllergensAsEntity + + com.baeldung.jpa.multipletables.secondarytable.MealAsSingleEntity + + com.baeldung.jpa.multipletables.secondarytable.embeddable.MealWithEmbeddedAllergens + com.baeldung.jpa.multipletables.secondarytable.embeddable.AllergensAsEmbeddable + + true + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/multipletables/MultipleTablesIntegrationTest.java b/persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/multipletables/MultipleTablesIntegrationTest.java new file mode 100644 index 0000000000..99b2cd69ee --- /dev/null +++ b/persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/multipletables/MultipleTablesIntegrationTest.java @@ -0,0 +1,79 @@ +package com.baeldung.jpa.multipletables; + +import static org.assertj.core.api.Assertions.*; + +import javax.persistence.EntityManager; +import javax.persistence.EntityManagerFactory; +import javax.persistence.Persistence; + +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +import com.baeldung.jpa.multipletables.multipleentities.MealWithMultipleEntities; +import com.baeldung.jpa.multipletables.secondarytable.MealAsSingleEntity; +import com.baeldung.jpa.multipletables.secondarytable.embeddable.MealWithEmbeddedAllergens; + +public class MultipleTablesIntegrationTest { + + private static EntityManagerFactory emf; + private static EntityManager em; + + @BeforeClass + public static void setup() { + emf = Persistence.createEntityManagerFactory("jpa-h2-multipltables"); + em = emf.createEntityManager(); + } + + @Test + public void entityManager_shouldLoadMealAsSingleEntity() { + // given + + // when + MealAsSingleEntity meal = em.find(MealAsSingleEntity.class, 1L); + + // then + assertThat(meal).isNotNull(); + assertThat(meal.getId()).isEqualTo(1L); + assertThat(meal.isPeanuts()).isFalse(); + assertThat(meal.isCelery()).isTrue(); + } + + @Test + public void entityManager_shouldLoadMealWithEmbeddedAllergens() { + // given + + // when + MealWithEmbeddedAllergens meal = em.find(MealWithEmbeddedAllergens.class, 1L); + + // then + assertThat(meal).isNotNull(); + assertThat(meal.getId()).isEqualTo(1L); + assertThat(meal.getAllergens()).isNotNull(); + assertThat(meal.getAllergens().isPeanuts()).isFalse(); + assertThat(meal.getAllergens().isCelery()).isTrue(); + } + + @Test + public void entityManager_shouldLoadMealWithAllergensEntity() { + // given + + // when + MealWithMultipleEntities meal = em.find(MealWithMultipleEntities.class, 1L); + + // then + assertThat(meal).isNotNull(); + assertThat(meal.getId()).isEqualTo(1L); + assertThat(meal.getAllergens()).isNotNull(); + assertThat(meal.getAllergens().isPeanuts()).isFalse(); + assertThat(meal.getAllergens().isCelery()).isTrue(); + } + + @AfterClass + public static void teardown() { + if (emf != null) { + emf.close(); + } + } + +} diff --git a/persistence-modules/java-jpa-2/src/test/resources/multipletables.sql b/persistence-modules/java-jpa-2/src/test/resources/multipletables.sql new file mode 100644 index 0000000000..226e63258b --- /dev/null +++ b/persistence-modules/java-jpa-2/src/test/resources/multipletables.sql @@ -0,0 +1,8 @@ +drop table if exists allergens; +drop table if exists meal; + +create table meal (id bigint auto_increment, name varchar(255) not null, description varchar(255) not null, price decimal(19, 2) not null, primary key (id)); +create table allergens (meal_id bigint auto_increment, peanuts number(1) not null, celery number(1) not null, sesame_seeds number(1) not null, primary key (meal_id)); + +insert into meal (id, name, description, price) values (1, 'Pizza', 'Delicious', 5); +insert into allergens (meal_id, peanuts, celery, sesame_seeds) values (1, 0, 1, 0); From 6a3bb3616700380a00030c8515ace3c1ea90ad14 Mon Sep 17 00:00:00 2001 From: amit2103 Date: Sun, 13 Oct 2019 23:19:30 +0530 Subject: [PATCH 052/265] [BAEL-18306-1] - Fix formatting of POMs Part 1 --- .../decoupling-pattern2/consumermodule/pom.xml | 1 - .../decoupling-pattern2/servicemodule/pom.xml | 8 ++++---- core-java-modules/core-java-lang-oop-2/pom.xml | 14 +++++++------- core-java-modules/core-java-os/pom.xml | 2 +- guava/pom.xml | 2 -- java-blockchain/pom.xml | 4 ++++ 6 files changed, 16 insertions(+), 15 deletions(-) diff --git a/core-java-modules/core-java-jpms/decoupling-pattern2/consumermodule/pom.xml b/core-java-modules/core-java-jpms/decoupling-pattern2/consumermodule/pom.xml index 757d9229df..09ca44d9be 100644 --- a/core-java-modules/core-java-jpms/decoupling-pattern2/consumermodule/pom.xml +++ b/core-java-modules/core-java-jpms/decoupling-pattern2/consumermodule/pom.xml @@ -3,7 +3,6 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - com.baeldung.consumermodule consumermodule 1.0 diff --git a/core-java-modules/core-java-jpms/decoupling-pattern2/servicemodule/pom.xml b/core-java-modules/core-java-jpms/decoupling-pattern2/servicemodule/pom.xml index 4de3df8c01..861f06f089 100644 --- a/core-java-modules/core-java-jpms/decoupling-pattern2/servicemodule/pom.xml +++ b/core-java-modules/core-java-jpms/decoupling-pattern2/servicemodule/pom.xml @@ -3,16 +3,16 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 + com.baeldung.servicemodule + servicemodule + 1.0 + >com.baeldung.decoupling-pattern2 decoupling-pattern2 1.0-SNAPSHOT - com.baeldung.servicemodule - servicemodule - 1.0 - diff --git a/core-java-modules/core-java-lang-oop-2/pom.xml b/core-java-modules/core-java-lang-oop-2/pom.xml index d27df147b7..e90b7ea4b3 100644 --- a/core-java-modules/core-java-lang-oop-2/pom.xml +++ b/core-java-modules/core-java-lang-oop-2/pom.xml @@ -29,13 +29,6 @@ test - - - 1.4.199 - - 3.10.0 - 3.0.3 - core-java-lang-oop-2 @@ -47,4 +40,11 @@ + + 1.4.199 + + 3.10.0 + 3.0.3 + + diff --git a/core-java-modules/core-java-os/pom.xml b/core-java-modules/core-java-os/pom.xml index f6c5ef04a5..8c5f7fe1e9 100644 --- a/core-java-modules/core-java-os/pom.xml +++ b/core-java-modules/core-java-os/pom.xml @@ -54,7 +54,7 @@ - + org.apache.maven.plugins maven-compiler-plugin ${maven-compiler-plugin.version} diff --git a/guava/pom.xml b/guava/pom.xml index 3a19901a02..17c930cdd2 100644 --- a/guava/pom.xml +++ b/guava/pom.xml @@ -26,8 +26,6 @@ ${assertj.version} test - - diff --git a/java-blockchain/pom.xml b/java-blockchain/pom.xml index 2f9e011aa7..4c5d0f31d5 100644 --- a/java-blockchain/pom.xml +++ b/java-blockchain/pom.xml @@ -7,12 +7,14 @@ 0.1.0-SNAPSHOT java-blockchain jar + com.baeldung parent-java 0.0.1-SNAPSHOT ../parent-java + java-blockchain @@ -33,8 +35,10 @@ + 1.8 1.8 + \ No newline at end of file From 0b4a228333ad54dddf4d6ca66020af803aa0e83e Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Sun, 13 Oct 2019 21:39:18 +0200 Subject: [PATCH 053/265] #BAEL-16646 comment out Java 9 modules - fix the build --- pom.xml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index 3fae6829c7..11a0902317 100644 --- a/pom.xml +++ b/pom.xml @@ -393,8 +393,8 @@ core-java-modules/core-java-streams core-java-modules/core-java-function core-java-modules/core-java-lang-math - core-java-modules/core-java-datetime-conversion - core-java-modules/core-java-datetime-string + + core-java-modules/core-java-text core-java-modules/core-java-lambdas @@ -482,7 +482,6 @@ java-collections-maps java-collections-maps-2 java-jdi - java-lite @@ -1153,8 +1152,8 @@ core-java-modules/core-java-streams core-java-modules/core-java-function core-java-modules/core-java-lang-math - core-java-modules/core-java-datetime-conversion - core-java-modules/core-java-datetime-string + + core-java-modules/core-java-text From 0b7a7f6221510471cf09fc5d6248cbe80e7da117 Mon Sep 17 00:00:00 2001 From: Lukasz Rys <> Date: Sun, 13 Oct 2019 23:06:40 +0200 Subject: [PATCH 054/265] [ BAEL-3322 ]: Update --- .../com/baeldung/jimfs/FilePathReader.java | 17 +++++++ .../com/baeldung/jimfs/FileRepository.java | 2 +- .../jimfs/FileManipulationUnitTest.java | 14 +++--- .../baeldung/jimfs/FilePathReaderTest.java | 48 +++++++++++++++++++ .../jimfs/FileRepositoryUnitTest.java | 37 ++++++-------- 5 files changed, 87 insertions(+), 31 deletions(-) create mode 100644 testing-modules/mocks/src/main/java/com/baeldung/jimfs/FilePathReader.java create mode 100644 testing-modules/mocks/src/test/java/com/baeldung/jimfs/FilePathReaderTest.java diff --git a/testing-modules/mocks/src/main/java/com/baeldung/jimfs/FilePathReader.java b/testing-modules/mocks/src/main/java/com/baeldung/jimfs/FilePathReader.java new file mode 100644 index 0000000000..3504207125 --- /dev/null +++ b/testing-modules/mocks/src/main/java/com/baeldung/jimfs/FilePathReader.java @@ -0,0 +1,17 @@ +package com.baeldung.jimfs; + +import java.io.IOException; +import java.io.UncheckedIOException; +import java.nio.file.Path; + +class FilePathReader { + String getSystemPath(Path path) { + try { + return path + .toRealPath() + .toString(); + } catch (IOException ex) { + throw new UncheckedIOException(ex); + } + } +} diff --git a/testing-modules/mocks/src/main/java/com/baeldung/jimfs/FileRepository.java b/testing-modules/mocks/src/main/java/com/baeldung/jimfs/FileRepository.java index 7db4941bd3..55bd87ee81 100644 --- a/testing-modules/mocks/src/main/java/com/baeldung/jimfs/FileRepository.java +++ b/testing-modules/mocks/src/main/java/com/baeldung/jimfs/FileRepository.java @@ -33,7 +33,7 @@ public class FileRepository { } } - void delete (final Path path){ + void delete(final Path path) { try { Files.deleteIfExists(path); } catch (final IOException ex) { diff --git a/testing-modules/mocks/src/test/java/com/baeldung/jimfs/FileManipulationUnitTest.java b/testing-modules/mocks/src/test/java/com/baeldung/jimfs/FileManipulationUnitTest.java index 63aaf5e571..a7cb8e53c6 100644 --- a/testing-modules/mocks/src/test/java/com/baeldung/jimfs/FileManipulationUnitTest.java +++ b/testing-modules/mocks/src/test/java/com/baeldung/jimfs/FileManipulationUnitTest.java @@ -12,19 +12,17 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.stream.Stream; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; class FileManipulationUnitTest implements FileTestProvider { - private static Stream provideFileSystem() { - return Stream.of( - Arguments.of(Jimfs.newFileSystem(Configuration.unix())), - Arguments.of(Jimfs.newFileSystem(Configuration.windows())), - Arguments.of(Jimfs.newFileSystem(Configuration.osX()))); - } - private final FileManipulation fileManipulation = new FileManipulation(); + private static Stream provideFileSystem() { + return Stream.of(Arguments.of(Jimfs.newFileSystem(Configuration.unix())), Arguments.of(Jimfs.newFileSystem(Configuration.windows())), Arguments.of(Jimfs.newFileSystem(Configuration.osX()))); + } + @ParameterizedTest @DisplayName("Should create a file on a file system") @MethodSource("provideFileSystem") diff --git a/testing-modules/mocks/src/test/java/com/baeldung/jimfs/FilePathReaderTest.java b/testing-modules/mocks/src/test/java/com/baeldung/jimfs/FilePathReaderTest.java new file mode 100644 index 0000000000..8a52bd3443 --- /dev/null +++ b/testing-modules/mocks/src/test/java/com/baeldung/jimfs/FilePathReaderTest.java @@ -0,0 +1,48 @@ +package com.baeldung.jimfs; + +import com.google.common.jimfs.Configuration; +import com.google.common.jimfs.Jimfs; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import java.nio.file.FileSystem; +import java.nio.file.Files; +import java.nio.file.Path; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class FilePathReaderTest { + + private static String DIRECTORY_NAME = "baeldung"; + + private FilePathReader filePathReader = new FilePathReader(); + + @Test + @DisplayName("Should get path on windows") + void shouldGetPath_onWindows() throws Exception { + FileSystem fileSystem = Jimfs.newFileSystem(Configuration.windows()); + Path path = getPathToFile(fileSystem); + + String stringPath = filePathReader.getSystemPath(path); + + assertEquals("C:\\work\\" + DIRECTORY_NAME, stringPath); + } + + @Test + @DisplayName("Should get path on unix") + void shouldGetPath_onUnix() throws Exception { + FileSystem fileSystem = Jimfs.newFileSystem(Configuration.unix()); + Path path = getPathToFile(fileSystem); + + String stringPath = filePathReader.getSystemPath(path); + + assertEquals("/work/" + DIRECTORY_NAME, stringPath); + } + + private Path getPathToFile(FileSystem fileSystem) throws Exception { + Path path = fileSystem.getPath(DIRECTORY_NAME); + Files.createDirectory(path); + + return path; + } +} \ No newline at end of file diff --git a/testing-modules/mocks/src/test/java/com/baeldung/jimfs/FileRepositoryUnitTest.java b/testing-modules/mocks/src/test/java/com/baeldung/jimfs/FileRepositoryUnitTest.java index 4d592abf70..ebb95e79ac 100644 --- a/testing-modules/mocks/src/test/java/com/baeldung/jimfs/FileRepositoryUnitTest.java +++ b/testing-modules/mocks/src/test/java/com/baeldung/jimfs/FileRepositoryUnitTest.java @@ -3,14 +3,11 @@ package com.baeldung.jimfs; import com.google.common.jimfs.Configuration; import com.google.common.jimfs.Jimfs; import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.Arguments; -import org.junit.jupiter.params.provider.MethodSource; +import org.junit.jupiter.api.Test; import java.nio.file.FileSystem; import java.nio.file.Files; import java.nio.file.Path; -import java.util.stream.Stream; import static org.junit.jupiter.api.Assertions.*; @@ -18,14 +15,10 @@ class FileRepositoryUnitTest implements FileTestProvider { private final FileRepository fileRepository = new FileRepository(); - private static Stream provideFileSystem() { - return Stream.of(Arguments.of(Jimfs.newFileSystem(Configuration.unix())), Arguments.of(Jimfs.newFileSystem(Configuration.windows())), Arguments.of(Jimfs.newFileSystem(Configuration.osX()))); - } - - @ParameterizedTest + @Test @DisplayName("Should create a file on a file system") - @MethodSource("provideFileSystem") - void shouldCreateFile(final FileSystem fileSystem) throws Exception { + void shouldCreateFile() { + final FileSystem fileSystem = Jimfs.newFileSystem(Configuration.unix()); final String fileName = "newFile.txt"; final Path pathToStore = fileSystem.getPath(""); @@ -34,10 +27,10 @@ class FileRepositoryUnitTest implements FileTestProvider { assertTrue(Files.exists(pathToStore.resolve(fileName))); } - @ParameterizedTest + @Test @DisplayName("Should read the content of the file") - @MethodSource("provideFileSystem") - void shouldReadFileContent_thenReturnIt(final FileSystem fileSystem) throws Exception { + void shouldReadFileContent_thenReturnIt() throws Exception { + final FileSystem fileSystem = Jimfs.newFileSystem(Configuration.osX()); final Path resourceFilePath = fileSystem.getPath(RESOURCE_FILE_NAME); Files.copy(getResourceFilePath(), resourceFilePath); @@ -46,10 +39,10 @@ class FileRepositoryUnitTest implements FileTestProvider { assertEquals(FILE_CONTENT, content); } - @ParameterizedTest - @DisplayName("Should update content of the file") - @MethodSource("provideFileSystem") - void shouldUpdateContentOfTheFile(final FileSystem fileSystem) throws Exception { + @Test + @DisplayName("Should update the content of the file") + void shouldUpdateContentOfTheFile() throws Exception { + final FileSystem fileSystem = Jimfs.newFileSystem(Configuration.windows()); final Path resourceFilePath = fileSystem.getPath(RESOURCE_FILE_NAME); Files.copy(getResourceFilePath(), resourceFilePath); final String newContent = "I'm updating you."; @@ -60,10 +53,10 @@ class FileRepositoryUnitTest implements FileTestProvider { assertEquals(newContent, fileRepository.read(resourceFilePath)); } - @ParameterizedTest - @DisplayName("Should update delete file") - @MethodSource("provideFileSystem") - void shouldDeleteFile(final FileSystem fileSystem) throws Exception { + @Test + @DisplayName("Should delete file") + void shouldDeleteFile() throws Exception { + final FileSystem fileSystem = Jimfs.newFileSystem(); final Path resourceFilePath = fileSystem.getPath(RESOURCE_FILE_NAME); Files.copy(getResourceFilePath(), resourceFilePath); From e6ff0cd990d30d21544f33f9c38df7f223c664e6 Mon Sep 17 00:00:00 2001 From: Lukasz Rys <> Date: Mon, 14 Oct 2019 00:25:27 +0200 Subject: [PATCH 055/265] [ BAEL-3322 ] : Fix test name --- ...rTest.java => FilePathReaderUnitTest.java} | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) rename testing-modules/mocks/src/test/java/com/baeldung/jimfs/{FilePathReaderTest.java => FilePathReaderUnitTest.java} (51%) diff --git a/testing-modules/mocks/src/test/java/com/baeldung/jimfs/FilePathReaderTest.java b/testing-modules/mocks/src/test/java/com/baeldung/jimfs/FilePathReaderUnitTest.java similarity index 51% rename from testing-modules/mocks/src/test/java/com/baeldung/jimfs/FilePathReaderTest.java rename to testing-modules/mocks/src/test/java/com/baeldung/jimfs/FilePathReaderUnitTest.java index 8a52bd3443..e5326fc84c 100644 --- a/testing-modules/mocks/src/test/java/com/baeldung/jimfs/FilePathReaderTest.java +++ b/testing-modules/mocks/src/test/java/com/baeldung/jimfs/FilePathReaderUnitTest.java @@ -11,19 +11,19 @@ import java.nio.file.Path; import static org.junit.jupiter.api.Assertions.assertEquals; -class FilePathReaderTest { +class FilePathReaderUnitTest { - private static String DIRECTORY_NAME = "baeldung"; + private static final String DIRECTORY_NAME = "baeldung"; - private FilePathReader filePathReader = new FilePathReader(); + private final FilePathReader filePathReader = new FilePathReader(); @Test @DisplayName("Should get path on windows") void shouldGetPath_onWindows() throws Exception { - FileSystem fileSystem = Jimfs.newFileSystem(Configuration.windows()); - Path path = getPathToFile(fileSystem); + final FileSystem fileSystem = Jimfs.newFileSystem(Configuration.windows()); + final Path path = getPathToFile(fileSystem); - String stringPath = filePathReader.getSystemPath(path); + final String stringPath = filePathReader.getSystemPath(path); assertEquals("C:\\work\\" + DIRECTORY_NAME, stringPath); } @@ -31,16 +31,16 @@ class FilePathReaderTest { @Test @DisplayName("Should get path on unix") void shouldGetPath_onUnix() throws Exception { - FileSystem fileSystem = Jimfs.newFileSystem(Configuration.unix()); - Path path = getPathToFile(fileSystem); + final FileSystem fileSystem = Jimfs.newFileSystem(Configuration.unix()); + final Path path = getPathToFile(fileSystem); - String stringPath = filePathReader.getSystemPath(path); + final String stringPath = filePathReader.getSystemPath(path); assertEquals("/work/" + DIRECTORY_NAME, stringPath); } - private Path getPathToFile(FileSystem fileSystem) throws Exception { - Path path = fileSystem.getPath(DIRECTORY_NAME); + private Path getPathToFile(final FileSystem fileSystem) throws Exception { + final Path path = fileSystem.getPath(DIRECTORY_NAME); Files.createDirectory(path); return path; From 16e764c942b08449701a7b24521570ea1188bd11 Mon Sep 17 00:00:00 2001 From: Gang Date: Mon, 14 Oct 2019 14:48:50 -0600 Subject: [PATCH 056/265] BAEL-3349 Knapsack problem implementation in Java --- .../algorithms/knapsack/Knapsack.java | 32 ++++++++++++++ .../algorithms/knapsack/KnapsackUnitTest.java | 44 +++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/knapsack/Knapsack.java create mode 100644 algorithms-miscellaneous-5/src/test/java/com/baeldung/algorithms/knapsack/KnapsackUnitTest.java diff --git a/algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/knapsack/Knapsack.java b/algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/knapsack/Knapsack.java new file mode 100644 index 0000000000..a53ab21429 --- /dev/null +++ b/algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/knapsack/Knapsack.java @@ -0,0 +1,32 @@ +package com.baeldung.algorithms.knapsack; + +class Knapsack { + + public int knapsackRec(int[] w, int[] v, int n, int W) { + if (n <= 0) + return 0; + else if (w[n - 1] > W) + return knapsackRec(w, v, n - 1, W); + else + return Math.max(knapsackRec(w, v, n - 1, W), v[n - 1] + knapsackRec(w, v, n - 1, W - w[n - 1])); + } + + public int knapsackDP(int[] w, int[] v, int n, int W) { + if (n <= 0 || W <= 0) + return 0; + int[][] m = new int[n + 1][W + 1]; + for (int j = 0; j <= W; j++) { + m[0][j] = 0; + } + + for (int i = 1; i <= n; i++) { + for (int j = 1; j <= W; j++) { + if (w[i - 1] > j) + m[i][j] = m[i - 1][j]; + else + m[i][j] = Math.max(m[i - 1][j], m[i - 1][j - w[i - 1]] + v[i - 1]); + } + } + return m[n][W]; + } +} diff --git a/algorithms-miscellaneous-5/src/test/java/com/baeldung/algorithms/knapsack/KnapsackUnitTest.java b/algorithms-miscellaneous-5/src/test/java/com/baeldung/algorithms/knapsack/KnapsackUnitTest.java new file mode 100644 index 0000000000..b168e6b1eb --- /dev/null +++ b/algorithms-miscellaneous-5/src/test/java/com/baeldung/algorithms/knapsack/KnapsackUnitTest.java @@ -0,0 +1,44 @@ +package com.baeldung.algorithms.knapsack; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +public class KnapsackUnitTest { + + @Test + public void givenWeightsandValues_whenCalculateMax_thenOutputCorrectResult() { + final int[] w = new int[] { 23, 26, 20, 18, 32, 27, 29, 26, 30, 27 }; + final int[] v = new int[] { 505, 352, 458, 220, 354, 414, 498, 545, 473, 543 }; + final int n = 10; + final int W = 67; + final Knapsack knapsack = new Knapsack(); + + assertEquals(1270, knapsack.knapsackRec(w, v, n, W)); + assertEquals(1270, knapsack.knapsackDP(w, v, n, W)); + } + + @Test + public void givenZeroItems_whenCalculateMax_thenOutputZero() { + final int[] w = new int[] {}; + final int[] v = new int[] {}; + final int n = 0; + final int W = 67; + final Knapsack knapsack = new Knapsack(); + + assertEquals(0, knapsack.knapsackRec(w, v, n, W)); + assertEquals(0, knapsack.knapsackDP(w, v, n, W)); + } + + @Test + public void givenZeroWeightLimit_whenCalculateMax_thenOutputZero() { + final int[] w = new int[] { 23, 26, 20, 18, 32, 27, 29, 26, 30, 27 }; + final int[] v = new int[] { 505, 352, 458, 220, 354, 414, 498, 545, 473, 543 }; + final int n = 10; + final int W = 0; + final Knapsack knapsack = new Knapsack(); + + assertEquals(0, knapsack.knapsackRec(w, v, n, W)); + assertEquals(0, knapsack.knapsackDP(w, v, n, W)); + } +} From 6557a8472029c76ff8a079ddcaf598cb250b3cbf Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 14:29:18 +0800 Subject: [PATCH 057/265] Update README.md --- testing-modules/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/testing-modules/README.md b/testing-modules/README.md index c6098d1210..645d3546df 100644 --- a/testing-modules/README.md +++ b/testing-modules/README.md @@ -1,3 +1,5 @@ ## Testing Modules This is an aggregator module containing multiple modules focused on testing libraries. +### Relevant Articles: +[Introduction to Lambda Behave](https://www.baeldung.com/lambda-behave) From ccb7e2cf8186a3e20ddecca9565dae55939b829a Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 14:30:33 +0800 Subject: [PATCH 058/265] Update README.md --- testing-modules/mockito/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/testing-modules/mockito/README.md b/testing-modules/mockito/README.md index 6b8f53ffee..92a4e1f688 100644 --- a/testing-modules/mockito/README.md +++ b/testing-modules/mockito/README.md @@ -14,3 +14,4 @@ - [Mocking Void Methods with Mockito](https://www.baeldung.com/mockito-void-methods) - [Mock Final Classes and Methods with Mockito](https://www.baeldung.com/mockito-final) - [Testing Callbacks with Mockito](https://www.baeldung.com/mockito-callbacks) +- [Mockito – Using Spies](https://www.baeldung.com/mockito-spy) From 315cd095e046b184b34b77d7c8b7066fe6691188 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 14:31:22 +0800 Subject: [PATCH 059/265] Update README.md --- testing-modules/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testing-modules/README.md b/testing-modules/README.md index 645d3546df..232cf5819d 100644 --- a/testing-modules/README.md +++ b/testing-modules/README.md @@ -2,4 +2,4 @@ This is an aggregator module containing multiple modules focused on testing libraries. ### Relevant Articles: -[Introduction to Lambda Behave](https://www.baeldung.com/lambda-behave) +- [Introduction to Lambda Behave](https://www.baeldung.com/lambda-behave) From 58d4efc714137452cf828434b62a4ebdf89c162e Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 14:35:28 +0800 Subject: [PATCH 060/265] Create README.md --- spring-all/README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 spring-all/README.md diff --git a/spring-all/README.md b/spring-all/README.md new file mode 100644 index 0000000000..2b9f61c76d --- /dev/null +++ b/spring-all/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: + +- [The @Scheduled Annotation in Spring](https://www.baeldung.com/spring-scheduled-tasks) From 8cff198ab1b7196fb9f302ee3b571814f9358748 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 14:36:42 +0800 Subject: [PATCH 061/265] Update README.md --- spring-boot-rest/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-boot-rest/README.md b/spring-boot-rest/README.md index ffac9335fd..3909a99c65 100644 --- a/spring-boot-rest/README.md +++ b/spring-boot-rest/README.md @@ -10,6 +10,7 @@ This module contains articles about Spring Boot RESTful APIs. - [Testing REST with multiple MIME types](https://www.baeldung.com/testing-rest-api-with-multiple-media-types) - [Testing Web APIs with Postman Collections](https://www.baeldung.com/postman-testing-collections) - [Spring Boot Consuming and Producing JSON](https://www.baeldung.com/spring-boot-json) +- [Error Handling for REST with Spring](https://www.baeldung.com/exception-handling-for-rest-with-spring) ### E-book From 7d0f2b894f06cd21ddfaea8a429d587cce110925 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 14:43:14 +0800 Subject: [PATCH 062/265] Update README.md --- core-java-modules/core-java-annotations/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core-java-modules/core-java-annotations/README.md b/core-java-modules/core-java-annotations/README.md index a125e8abd5..93da3aea62 100644 --- a/core-java-modules/core-java-annotations/README.md +++ b/core-java-modules/core-java-annotations/README.md @@ -8,4 +8,5 @@ - [Java @SafeVarargs Annotation](https://www.baeldung.com/java-safevarargs) - [Java @Deprecated Annotation](https://www.baeldung.com/java-deprecated) - [Overview of Java Built-in Annotations](https://www.baeldung.com/java-default-annotations) -- [Creating a Custom Annotation in Java](https://www.baeldung.com/java-custom-annotation) \ No newline at end of file +- [Creating a Custom Annotation in Java](https://www.baeldung.com/java-custom-annotation) +- [Efficient Word Frequency Calculator in Java](https://www.baeldung.com/java-word-frequency) From 7dd89d191952dbf927366269962ba25bfe80b157 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 14:44:45 +0800 Subject: [PATCH 063/265] Update README.md --- testing-modules/mockito/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/testing-modules/mockito/README.md b/testing-modules/mockito/README.md index 92a4e1f688..7cef9ee8f6 100644 --- a/testing-modules/mockito/README.md +++ b/testing-modules/mockito/README.md @@ -15,3 +15,4 @@ - [Mock Final Classes and Methods with Mockito](https://www.baeldung.com/mockito-final) - [Testing Callbacks with Mockito](https://www.baeldung.com/mockito-callbacks) - [Mockito – Using Spies](https://www.baeldung.com/mockito-spy) +- [Quick Guide to BDDMockito](https://www.baeldung.com/bdd-mockito) From b923bfc6cd05011ca816120c7c390cf74f856213 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 14:47:18 +0800 Subject: [PATCH 064/265] Update README.md --- core-java-modules/core-java-collections-2/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core-java-modules/core-java-collections-2/README.md b/core-java-modules/core-java-collections-2/README.md index 13ca191edb..de5daddb38 100644 --- a/core-java-modules/core-java-collections-2/README.md +++ b/core-java-modules/core-java-collections-2/README.md @@ -12,4 +12,4 @@ - [Sorting in Java](https://www.baeldung.com/java-sorting) - [Getting the Size of an Iterable in Java](https://www.baeldung.com/java-iterable-size) - [Java Null-Safe Streams from Collections](https://www.baeldung.com/java-null-safe-streams-from-collections) - +- [Operating on and Removing an Item from Stream](https://www.baeldung.com/java-use-remove-item-stream) From 6636e67220333f82b5b6c13d82ddb6d82032629c Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 14:49:16 +0800 Subject: [PATCH 065/265] Update README.md --- algorithms-miscellaneous-4/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/algorithms-miscellaneous-4/README.md b/algorithms-miscellaneous-4/README.md index fabb4d29b8..46df302aad 100644 --- a/algorithms-miscellaneous-4/README.md +++ b/algorithms-miscellaneous-4/README.md @@ -6,4 +6,5 @@ - [Find the Middle Element of a Linked List](https://www.baeldung.com/java-linked-list-middle-element) - [Find Substrings That Are Palindromes in Java](https://www.baeldung.com/java-palindrome-substrings) - [Find the Longest Substring without Repeating Characters](https://www.baeldung.com/java-longest-substring-without-repeated-characters) -- [Permutations of an Array in Java](https://www.baeldung.com/java-array-permutations) \ No newline at end of file +- [Permutations of an Array in Java](https://www.baeldung.com/java-array-permutations) +- [Creating a Custom Annotation in Java](https://www.baeldung.com/java-custom-annotation) From 6b86ccdeb6dfcc5a69f7b860d46bf89ec336df8a Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 14:54:49 +0800 Subject: [PATCH 066/265] Update README.md --- spring-mvc-simple-2/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-mvc-simple-2/README.md b/spring-mvc-simple-2/README.md index a4a545ab72..c03fa6363a 100644 --- a/spring-mvc-simple-2/README.md +++ b/spring-mvc-simple-2/README.md @@ -5,4 +5,5 @@ This module contains articles about Spring MVC ## Relevant articles: - [How to Read HTTP Headers in Spring REST Controllers](https://www.baeldung.com/spring-rest-http-headers) - [A Custom Data Binder in Spring MVC](https://www.baeldung.com/spring-mvc-custom-data-binder) +- [Validating Lists in a Spring Controller](https://www.baeldung.com/spring-validate-list-controller) - More articles: [[<-- prev]](/spring-mvc-simple) From e6cb820aa972af05b1a4fed41fa6f088f813ee1b Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 15:03:44 +0800 Subject: [PATCH 067/265] Update README.md --- algorithms-miscellaneous-4/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/algorithms-miscellaneous-4/README.md b/algorithms-miscellaneous-4/README.md index 46df302aad..e5e80505f8 100644 --- a/algorithms-miscellaneous-4/README.md +++ b/algorithms-miscellaneous-4/README.md @@ -8,3 +8,4 @@ - [Find the Longest Substring without Repeating Characters](https://www.baeldung.com/java-longest-substring-without-repeated-characters) - [Permutations of an Array in Java](https://www.baeldung.com/java-array-permutations) - [Creating a Custom Annotation in Java](https://www.baeldung.com/java-custom-annotation) +- [Interpolation Search in Java](https://www.baeldung.com/java-interpolation-search) From 3442f1104e13d460ad83e147cfe4c5172c004499 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 15:06:35 +0800 Subject: [PATCH 068/265] Update README.md --- persistence-modules/sirix/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/persistence-modules/sirix/README.md b/persistence-modules/sirix/README.md index b0f6f8d04b..ab7fb65e44 100644 --- a/persistence-modules/sirix/README.md +++ b/persistence-modules/sirix/README.md @@ -1,3 +1,4 @@ ## Relevant articles: -- [Introduction to Sirix](https://www.baeldung.com/introduction-to-sirix) \ No newline at end of file +- [Introduction to Sirix](https://www.baeldung.com/introduction-to-sirix) +- [A Guide to SirixDB](https://www.baeldung.com/sirix) From 29b78d910e4bbbbe279037843ac7a70cc1a03935 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 15:15:32 +0800 Subject: [PATCH 069/265] Update README.md --- java-math/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/java-math/README.md b/java-math/README.md index 49ff5afde1..90d3b4ecc2 100644 --- a/java-math/README.md +++ b/java-math/README.md @@ -14,3 +14,4 @@ This module contains articles about math in Java. - [Convert Latitude and Longitude to a 2D Point in Java](https://www.baeldung.com/java-convert-latitude-longitude) - [Debugging with Eclipse](https://www.baeldung.com/eclipse-debugging) - [Matrix Multiplication in Java](https://www.baeldung.com/java-matrix-multiplication) +- [Calculating Logarithms in Java](https://www.baeldung.com/java-logarithms) From 288550e9d3c5500e0c90d1533943870909e1b106 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 15:16:48 +0800 Subject: [PATCH 070/265] Update README.md --- testing-modules/junit-5-advanced/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/testing-modules/junit-5-advanced/README.md b/testing-modules/junit-5-advanced/README.md index 61a65b2e5a..4a31292683 100644 --- a/testing-modules/junit-5-advanced/README.md +++ b/testing-modules/junit-5-advanced/README.md @@ -2,3 +2,4 @@ - [JUnit 5 TestWatcher API](https://www.baeldung.com/junit-testwatcher) - [JUnit Custom Display Name Generator API](https://www.baeldung.com/junit-custom-display-name-generator) +- [@TestInstance Annotation in JUnit 5](https://www.baeldung.com/junit-testinstance-annotation) From 80688329120bd9e9ad9e18f40a513501f127c990 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 15:20:04 +0800 Subject: [PATCH 071/265] Update README.md --- java-math/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/java-math/README.md b/java-math/README.md index 90d3b4ecc2..d80a07258a 100644 --- a/java-math/README.md +++ b/java-math/README.md @@ -15,3 +15,4 @@ This module contains articles about math in Java. - [Debugging with Eclipse](https://www.baeldung.com/eclipse-debugging) - [Matrix Multiplication in Java](https://www.baeldung.com/java-matrix-multiplication) - [Calculating Logarithms in Java](https://www.baeldung.com/java-logarithms) +- [Finding Greatest Common Divisor in Java](https://www.baeldung.com/java-greatest-common-divisor) From a59032ad836d68ff033d89437daa86a706755a56 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 15:22:17 +0800 Subject: [PATCH 072/265] Update README.md --- spring-thymeleaf-2/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-thymeleaf-2/README.md b/spring-thymeleaf-2/README.md index ce83032cb5..e7f0c60add 100644 --- a/spring-thymeleaf-2/README.md +++ b/spring-thymeleaf-2/README.md @@ -3,3 +3,4 @@ - [Working with Enums in Thymeleaf](https://www.baeldung.com/thymeleaf-enums) - [Changing the Thymeleaf Template Directory in Spring Boot](https://www.baeldung.com/spring-thymeleaf-template-directory) - [Spring Request Parameters with Thymeleaf](https://www.baeldung.com/spring-thymeleaf-request-parameters) +- [Thymeleaf lists Utility Object](https://www.baeldung.com/thymeleaf-lists-utility) From 04e036f4bacf3f27d59d41cbc4384d64e25faa3a Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 15:23:24 +0800 Subject: [PATCH 073/265] Update README.md --- spring-resttemplate/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-resttemplate/README.md b/spring-resttemplate/README.md index e98af0e787..82d8234908 100644 --- a/spring-resttemplate/README.md +++ b/spring-resttemplate/README.md @@ -13,3 +13,4 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Mocking a RestTemplate in Spring](https://www.baeldung.com/spring-mock-rest-template) - [RestTemplate Post Request with JSON](https://www.baeldung.com/spring-resttemplate-post-json) - [Download a Large File Through a Spring RestTemplate](https://www.baeldung.com/spring-resttemplate-download-large-file) +- [Copy of RestTemplate Post Request with JSON](https://www.baeldung.com/spring-resttemplate-post-json-test) From 0e29b0835c9002d54d50300e3900c87b82d8ff3b Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 15:33:22 +0800 Subject: [PATCH 074/265] Update README.md --- spring-freemarker/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-freemarker/README.md b/spring-freemarker/README.md index 410781f2ca..941777207f 100644 --- a/spring-freemarker/README.md +++ b/spring-freemarker/README.md @@ -4,3 +4,4 @@ This module contains articles about Spring with FreeMarker ### Relevant Articles: - [Introduction to Using FreeMarker in Spring MVC](https://www.baeldung.com/freemarker-in-spring-mvc-tutorial) +- [FreeMarker Common Operations](https://www.baeldung.com/freemarker-operations) From c7d1a4ffb18631a5e899ad296416142e0202b618 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 15:38:41 +0800 Subject: [PATCH 075/265] Create README.md --- gradle-5/README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 gradle-5/README.md diff --git a/gradle-5/README.md b/gradle-5/README.md new file mode 100644 index 0000000000..7c9aeff07e --- /dev/null +++ b/gradle-5/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: + +- [Run a Java main Method Using Gradle](https://www.baeldung.com/gradle-run-java-main) From 1c1ee58cb8f623eaa0e1f23e3c523e4269c6d199 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 15:39:56 +0800 Subject: [PATCH 076/265] Update README.md --- metrics/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/metrics/README.md b/metrics/README.md index f27f5fb795..6050b2b310 100644 --- a/metrics/README.md +++ b/metrics/README.md @@ -7,3 +7,4 @@ This module contains articles about metrics. - [Intro to Dropwizard Metrics](https://www.baeldung.com/dropwizard-metrics) - [Introduction to Netflix Servo](https://www.baeldung.com/netflix-servo) - [Quick Guide to Micrometer](https://www.baeldung.com/micrometer) +- [@Timed Annotation Using Metrics and AspectJ](https://www.baeldung.com/timed-metrics-aspectj) From 3a7b64b70b2e090f01058a660c96cda26b798138 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 15:41:04 +0800 Subject: [PATCH 077/265] Update README.md --- jhipster-5/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/jhipster-5/README.md b/jhipster-5/README.md index ba05641af0..e4a6b3c3a0 100644 --- a/jhipster-5/README.md +++ b/jhipster-5/README.md @@ -1,3 +1,6 @@ ## JHipster 5 This module contains articles about JHipster 5. This is an aggregator module, articles are in the relevant submodules. + +### Relevant Articles: +- [JHipster Authentication with an External Service](https://www.baeldung.com/jhipster-authentication-external-service) From 88cbdd29f31ae5b1d8def2b2540859a01c3c6587 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 15:43:05 +0800 Subject: [PATCH 078/265] Update README.md --- spring-5/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-5/README.md b/spring-5/README.md index 7588d23304..8a0cbe807e 100644 --- a/spring-5/README.md +++ b/spring-5/README.md @@ -15,4 +15,4 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Spring ResponseStatusException](https://www.baeldung.com/spring-response-status-exception) - [Spring Assert Statements](https://www.baeldung.com/spring-assert) - [Configuring a Hikari Connection Pool with Spring Boot](https://www.baeldung.com/spring-boot-hikari) - +- [Difference between vs ](https://www.baeldung.com/spring-contextannotation-contextcomponentscan) From 343bf75950afe0ee04d66f5e878fb4aa43cea01e Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 15:46:09 +0800 Subject: [PATCH 079/265] Create README.md --- linux-bash/loops/README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 linux-bash/loops/README.md diff --git a/linux-bash/loops/README.md b/linux-bash/loops/README.md new file mode 100644 index 0000000000..8a0514f6f0 --- /dev/null +++ b/linux-bash/loops/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: + +- [Linux Commands – Looping Through Directories](https://www.baeldung.com/linux/loop-directories) From ca89921512159a8921053961120f3e09e17b5b2d Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 15:48:22 +0800 Subject: [PATCH 080/265] Update README.md --- mapstruct/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mapstruct/README.md b/mapstruct/README.md index b784820b98..6a42f4dc76 100644 --- a/mapstruct/README.md +++ b/mapstruct/README.md @@ -2,5 +2,6 @@ This module contains articles about MapStruct. -###Relevant Articles: +### Relevant Articles: - [Quick Guide to MapStruct](https://www.baeldung.com/mapstruct) +- [Custom Mapper with MapStruct](https://www.baeldung.com/mapstruct-custom-mapper) From 93d81b8813515627847454ef4ae880b54f51c6a3 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 15:50:04 +0800 Subject: [PATCH 081/265] Update README.md --- spring-mvc-xml/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-mvc-xml/README.md b/spring-mvc-xml/README.md index b6a34475ea..44a20e1527 100644 --- a/spring-mvc-xml/README.md +++ b/spring-mvc-xml/README.md @@ -14,6 +14,7 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [web.xml vs Initializer with Spring](https://www.baeldung.com/spring-xml-vs-java-config) - [A Java Web Application Without a web.xml](https://www.baeldung.com/java-web-app-without-web-xml) - [Validating RequestParams and PathVariables in Spring](https://www.baeldung.com/spring-validate-requestparam-pathvariable) +- [Debugging the Spring MVC 404 “No mapping found for HTTP request” Error](https://www.baeldung.com/spring-mvc-404-error) ## Spring MVC with XML Configuration Example Project - access a sample jsp page at: `http://localhost:8080/spring-mvc-xml/sample.html` From df1e4b8f55ba345f3c6934717791f1956d16daf1 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 15:51:35 +0800 Subject: [PATCH 082/265] Update README.md --- spring-5-data-reactive/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-5-data-reactive/README.md b/spring-5-data-reactive/README.md index 683b493317..42fcba96f2 100644 --- a/spring-5-data-reactive/README.md +++ b/spring-5-data-reactive/README.md @@ -10,3 +10,4 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Spring Data Reactive Repositories with MongoDB](https://www.baeldung.com/spring-data-mongodb-reactive) - [Spring Data MongoDB Tailable Cursors](https://www.baeldung.com/spring-data-mongodb-tailable-cursors) - [A Quick Look at R2DBC with Spring Data](https://www.baeldung.com/spring-data-r2dbc) +- [Spring Data Reactive Repositories with Couchbase](https://www.baeldung.com/spring-data-reactive-couchbase) From 6ffaa34a6a80fdeba990221c537742f043f989e7 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 15:53:33 +0800 Subject: [PATCH 083/265] Update README.md --- java-strings-3/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java-strings-3/README.md b/java-strings-3/README.md index 6276dfc621..7bc325243f 100644 --- a/java-strings-3/README.md +++ b/java-strings-3/README.md @@ -4,6 +4,6 @@ This module contains articles about strings in Java. ### Relevant Articles: - [Java String equalsIgnoreCase()](https://www.baeldung.com/java-string-equalsignorecase) -- [Finding the Difference Between Two Strings](https://www.baeldung.com/java-difference-between-two-strings) +- [Finding the Difference Between Two Strings in Java](https://www.baeldung.com/java-difference-between-two-strings) - [Counting Words in a String](https://www.baeldung.com/java-word-counting) - More articles: [[<-- prev>]](/java-strings-2) From 4435ac35f9de5d639cebd21817ebc2b3b8bd50af Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 15:56:29 +0800 Subject: [PATCH 084/265] Update README.md --- java-numbers-2/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/java-numbers-2/README.md b/java-numbers-2/README.md index 48f9acd32d..c625bed7ad 100644 --- a/java-numbers-2/README.md +++ b/java-numbers-2/README.md @@ -13,4 +13,5 @@ This module contains articles about numbers in Java. - [Binary Numbers in Java](https://www.baeldung.com/java-binary-numbers) - [Finding the Least Common Multiple in Java](https://www.baeldung.com/java-least-common-multiple) - [Binary Numbers in Java](https://www.baeldung.com/java-binary-numbers) +- [Generating Random Numbers in a Range in Java](https://www.baeldung.com/java-generating-random-numbers) - More articles: [[<-- prev]](/../java-numbers) From 4df590ed468f5b9e9c033b929768720306eb6924 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 15:57:33 +0800 Subject: [PATCH 085/265] Update README.md --- java-numbers-2/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/java-numbers-2/README.md b/java-numbers-2/README.md index c625bed7ad..e200c4aa03 100644 --- a/java-numbers-2/README.md +++ b/java-numbers-2/README.md @@ -14,4 +14,5 @@ This module contains articles about numbers in Java. - [Finding the Least Common Multiple in Java](https://www.baeldung.com/java-least-common-multiple) - [Binary Numbers in Java](https://www.baeldung.com/java-binary-numbers) - [Generating Random Numbers in a Range in Java](https://www.baeldung.com/java-generating-random-numbers) +- [Listing Numbers Within a Range in Java](https://www.baeldung.com/java-listing-numbers-within-a-range) - More articles: [[<-- prev]](/../java-numbers) From 5586ff86f65f225676132055200af8d0dee972bb Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 15:59:53 +0800 Subject: [PATCH 086/265] Update README.md --- spring-5-reactive-client/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-5-reactive-client/README.md b/spring-5-reactive-client/README.md index 1724db9e66..5a9a3f4e0e 100644 --- a/spring-5-reactive-client/README.md +++ b/spring-5-reactive-client/README.md @@ -7,4 +7,4 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring ### Relevant Articles - [Simultaneous Spring WebClient Calls](https://www.baeldung.com/spring-webclient-simultaneous-calls) - +- [Logging Spring WebClient Calls](https://www.baeldung.com/spring-log-webclient-calls) From 970de49cf359f33b3b693d3b804a88604aa12ec8 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 16:03:30 +0800 Subject: [PATCH 087/265] Update README.MD --- libraries-primitive/README.MD | 1 + 1 file changed, 1 insertion(+) diff --git a/libraries-primitive/README.MD b/libraries-primitive/README.MD index f27fb73dd6..9cb89f3552 100644 --- a/libraries-primitive/README.MD +++ b/libraries-primitive/README.MD @@ -1,3 +1,4 @@ ### Relevant Articles - [Guide to FastUtil](https://www.baeldung.com/fastutil) +- [Primitive Collections in Eclipse Collections](https://www.baeldung.com/java-eclipse-primitive-collections) From 31c52118db08fcd1fd86f732b0a74354e43711c6 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 16:04:46 +0800 Subject: [PATCH 088/265] Update README.md --- jersey/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/jersey/README.md b/jersey/README.md index 09de7051ca..366e7665f3 100644 --- a/jersey/README.md +++ b/jersey/README.md @@ -9,3 +9,4 @@ This module contains articles about Jersey. - [Set a Response Body in JAX-RS](https://www.baeldung.com/jax-rs-response) - [Exploring the Jersey Test Framework](https://www.baeldung.com/jersey-test) - [Explore Jersey Request Parameters](https://www.baeldung.com/jersey-request-parameters) +- [Add a Header to a Jersey SSE Client Request](https://www.baeldung.com/jersey-sse-client-request-headers) From 1259a15984bb8d3990f6547b480a1ecb016d4e44 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 16:06:06 +0800 Subject: [PATCH 089/265] Update README.md --- java-strings-3/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/java-strings-3/README.md b/java-strings-3/README.md index 7bc325243f..642752182f 100644 --- a/java-strings-3/README.md +++ b/java-strings-3/README.md @@ -6,4 +6,5 @@ This module contains articles about strings in Java. - [Java String equalsIgnoreCase()](https://www.baeldung.com/java-string-equalsignorecase) - [Finding the Difference Between Two Strings in Java](https://www.baeldung.com/java-difference-between-two-strings) - [Counting Words in a String](https://www.baeldung.com/java-word-counting) +- [Convert Character Array to String in Java](https://www.baeldung.com/java-char-array-to-string) - More articles: [[<-- prev>]](/java-strings-2) From 2b58354145cb602ff44f8872359d869ed2c76358 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 16:08:21 +0800 Subject: [PATCH 090/265] Update README.md --- spring-boot-autoconfiguration/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-boot-autoconfiguration/README.md b/spring-boot-autoconfiguration/README.md index 67311eed50..b3a50ad7a5 100644 --- a/spring-boot-autoconfiguration/README.md +++ b/spring-boot-autoconfiguration/README.md @@ -9,3 +9,4 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Create a Custom Auto-Configuration with Spring Boot](https://www.baeldung.com/spring-boot-custom-auto-configuration) - [Guide to ApplicationContextRunner in Spring Boot](https://www.baeldung.com/spring-boot-context-runner) +- [A Guide to Spring Boot Configuration Metadata](https://www.baeldung.com/spring-boot-configuration-metadata) From 50d1feae2e463607af123f05c88dbb2930288d34 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 16:09:18 +0800 Subject: [PATCH 091/265] Update README.md --- xml/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/xml/README.md b/xml/README.md index d1aa3a798b..45f05a269d 100644 --- a/xml/README.md +++ b/xml/README.md @@ -10,3 +10,4 @@ This module contains articles about eXtensible Markup Language (XML) - [Write an org.w3.dom.Document to a File](https://www.baeldung.com/java-write-xml-document-file) - [Modifying an XML Attribute in Java](https://www.baeldung.com/java-modify-xml-attribute) - [Convert XML to HTML in Java](https://www.baeldung.com/java-convert-xml-to-html) +- [Parsing an XML File Using StAX](https://www.baeldung.com/java-stax) From 80f67dcdd2d487dbe21673dfec7908a4051ae152 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 16:11:09 +0800 Subject: [PATCH 092/265] Update README.md --- persistence-modules/spring-jpa/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/persistence-modules/spring-jpa/README.md b/persistence-modules/spring-jpa/README.md index d04e9f6f41..489d990fc3 100644 --- a/persistence-modules/spring-jpa/README.md +++ b/persistence-modules/spring-jpa/README.md @@ -13,6 +13,7 @@ - [Transactions with Spring 4 and JPA](http://www.baeldung.com/transaction-configuration-with-jpa-and-spring) - [Use Criteria Queries in a Spring Data Application](https://www.baeldung.com/spring-data-criteria-queries) - [Many-To-Many Relationship in JPA](https://www.baeldung.com/jpa-many-to-many) +- [Spring Persistence (Hibernate and JPA) with a JNDI datasource](https://www.baeldung.com/spring-persistence-hibernate-and-jpa-with-a-jndi-datasource/) ### Eclipse Config From 47af91317b6abfe68754a539cde4a98e8cbd482c Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 16:12:27 +0800 Subject: [PATCH 093/265] Update README.md --- mapstruct/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/mapstruct/README.md b/mapstruct/README.md index 6a42f4dc76..3107e06190 100644 --- a/mapstruct/README.md +++ b/mapstruct/README.md @@ -5,3 +5,4 @@ This module contains articles about MapStruct. ### Relevant Articles: - [Quick Guide to MapStruct](https://www.baeldung.com/mapstruct) - [Custom Mapper with MapStruct](https://www.baeldung.com/mapstruct-custom-mapper) +- [Using Multiple Source Objects with MapStruct](https://www.baeldung.com/mapstruct-multiple-source-objects) From 4acafe7baed1a22f2d832b0074c7d19fc65cbbf6 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 16:13:47 +0800 Subject: [PATCH 094/265] Update README.md --- spring-mvc-simple-2/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-mvc-simple-2/README.md b/spring-mvc-simple-2/README.md index c03fa6363a..63227ea069 100644 --- a/spring-mvc-simple-2/README.md +++ b/spring-mvc-simple-2/README.md @@ -6,4 +6,5 @@ This module contains articles about Spring MVC - [How to Read HTTP Headers in Spring REST Controllers](https://www.baeldung.com/spring-rest-http-headers) - [A Custom Data Binder in Spring MVC](https://www.baeldung.com/spring-mvc-custom-data-binder) - [Validating Lists in a Spring Controller](https://www.baeldung.com/spring-validate-list-controller) +- [Spring Validation Message Interpolation](https://www.baeldung.com/spring-validation-message-interpolation) - More articles: [[<-- prev]](/spring-mvc-simple) From fc7e43c73c0182c836b048fed5815d517f371092 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 16:15:09 +0800 Subject: [PATCH 095/265] Update README.md --- core-groovy-2/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-groovy-2/README.md b/core-groovy-2/README.md index f1984f18f4..95a00a1f5b 100644 --- a/core-groovy-2/README.md +++ b/core-groovy-2/README.md @@ -12,4 +12,5 @@ This module contains articles about core Groovy concepts - [Concatenate Strings with Groovy](https://www.baeldung.com/groovy-concatenate-strings) - [Metaprogramming in Groovy](https://www.baeldung.com/groovy-metaprogramming) - [A Quick Guide to Working with Web Services in Groovy](https://www.baeldung.com/groovy-web-services) +- [Categories in Groovy](https://www.baeldung.com/groovy-categories) - [[<-- Prev]](/core-groovy) From 31fbccee2d5df247ed689436c6d7853dd8ada806 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 16:17:59 +0800 Subject: [PATCH 096/265] Update README.md --- java-dates-2/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/java-dates-2/README.md b/java-dates-2/README.md index b2f8319e58..70fd88558b 100644 --- a/java-dates-2/README.md +++ b/java-dates-2/README.md @@ -2,3 +2,4 @@ - [Converting Between LocalDate and XMLGregorianCalendar](https://www.baeldung.com/java-localdate-to-xmlgregoriancalendar) - [Convert Time to Milliseconds in Java](https://www.baeldung.com/java-time-milliseconds) - [Check If a String Is a Valid Date in Java](https://www.baeldung.com/java-string-valid-date) +- [Comparing Dates in Java](https://www.baeldung.com/java-comparing-dates) From 3fb3125429205e86703c9a46c01e8ecc7597d645 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 16:21:04 +0800 Subject: [PATCH 097/265] Update README.md --- spring-boot-admin/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-boot-admin/README.md b/spring-boot-admin/README.md index ac4d781d0e..1a7acef6c1 100644 --- a/spring-boot-admin/README.md +++ b/spring-boot-admin/README.md @@ -24,3 +24,4 @@ and the mail configuration from application.properties ### Relevant Articles: - [A Guide to Spring Boot Admin](https://www.baeldung.com/spring-boot-admin) +- [Changing the Logging Level at the Runtime for a Spring Boot Application](https://www.baeldung.com/spring-boot-changing-log-level-at-runtime) From e899fa2ecea250b9c497cce8554178d7d48370a1 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 16:25:10 +0800 Subject: [PATCH 098/265] Create README.md --- persistence-modules/spring-boot-jdbi/README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 persistence-modules/spring-boot-jdbi/README.md diff --git a/persistence-modules/spring-boot-jdbi/README.md b/persistence-modules/spring-boot-jdbi/README.md new file mode 100644 index 0000000000..5d171fb2ca --- /dev/null +++ b/persistence-modules/spring-boot-jdbi/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: + +- [Using JDBI with Spring Boot](https://www.baeldung.com/spring-boot-jdbi) From 5d1eb27396e1dc8b30149714a2d196144ab477f6 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 16:27:34 +0800 Subject: [PATCH 099/265] Update README.md --- algorithms-sorting/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/algorithms-sorting/README.md b/algorithms-sorting/README.md index 4fd9d5e0c6..8b801e4387 100644 --- a/algorithms-sorting/README.md +++ b/algorithms-sorting/README.md @@ -16,3 +16,4 @@ This module contains articles about sorting algorithms. - [Selection Sort in Java](https://www.baeldung.com/java-selection-sort) - [Sorting Strings by Contained Numbers in Java](https://www.baeldung.com/java-sort-strings-contained-numbers) - [Radix Sort in Java](https://www.baeldung.com/java-radix-sort) +- [Bucket Sort in Java](https://www.baeldung.com/java-bucket-sort) From 809e99a0d1860c7a42549a96d8b6062138c2d090 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 16:28:58 +0800 Subject: [PATCH 100/265] Update README.md --- spring-boot-data/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-boot-data/README.md b/spring-boot-data/README.md index 513c5fed18..eb3cd5bbaa 100644 --- a/spring-boot-data/README.md +++ b/spring-boot-data/README.md @@ -7,3 +7,4 @@ This module contains articles about Spring Boot with Spring Data - [Formatting JSON Dates in Spring Boot](https://www.baeldung.com/spring-boot-formatting-json-dates) - [Rendering Exceptions in JSON with Spring](https://www.baeldung.com/spring-exceptions-json) - [Disable Spring Data Auto Configuration](https://www.baeldung.com/spring-data-disable-auto-config) +- [Repositories with Multiple Spring Data Modules](https://www.baeldung.com/spring-multiple-data-modules) From c95133d0ff9b09d5df6cd90a337e325317c8b7ae Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 16:31:30 +0800 Subject: [PATCH 101/265] Update README.md --- ml/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ml/README.md b/ml/README.md index 5fd32012b4..c70909465e 100644 --- a/ml/README.md +++ b/ml/README.md @@ -3,4 +3,4 @@ This module contains articles about Machine Learning (ML) in Java with [deeplearning4j](https://deeplearning4j.org). ### Relevant Articles: -- [Logistic Regression in Java](https://www.baeldung.com/) +- [Logistic Regression in Java](https://www.baeldung.com/java-logistic-regression) From 89e17bb6b844834e955463651bbca08aae1a5617 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 16:35:17 +0800 Subject: [PATCH 102/265] Update README.md --- jaxb/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/jaxb/README.md b/jaxb/README.md index aca078af15..a471ccd39d 100644 --- a/jaxb/README.md +++ b/jaxb/README.md @@ -4,3 +4,4 @@ This module contains articles about JAXB. ### Relevant Articles: - [Guide to JAXB](https://www.baeldung.com/jaxb) +- [Unmarshalling Dates Using JAXB](https://www.baeldung.com/jaxb-unmarshalling-dates) From b20b9bdb3e3695f17769299691c17a675866fc4e Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 16:43:53 +0800 Subject: [PATCH 103/265] Update README.md --- spring-core-2/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spring-core-2/README.md b/spring-core-2/README.md index bcb1ce1fb4..ec6eb91306 100644 --- a/spring-core-2/README.md +++ b/spring-core-2/README.md @@ -15,4 +15,5 @@ This module contains articles about core Spring functionality - [Spring Events](https://www.baeldung.com/spring-events) - [Spring Null-Safety Annotations](https://www.baeldung.com/spring-null-safety-annotations) - [Using @Autowired in Abstract Classes](https://www.baeldung.com/spring-autowired-abstract-class) -- More articles: [[<-- prev]](/spring-core) \ No newline at end of file +- [Guide to the Spring BeanFactory](https://www.baeldung.com/spring-beanfactory) +- More articles: [[<-- prev]](/spring-core) From b3e35da72974ca9ae1d8282f59528f68fea83a5b Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 16:45:29 +0800 Subject: [PATCH 104/265] Update README.md --- testing-modules/hamcrest/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testing-modules/hamcrest/README.md b/testing-modules/hamcrest/README.md index f2ff6b996d..cc1eeb3fbb 100644 --- a/testing-modules/hamcrest/README.md +++ b/testing-modules/hamcrest/README.md @@ -7,6 +7,6 @@ This module contains articles about Hamcrest - [Hamcrest File Matchers](https://www.baeldung.com/hamcrest-file-matchers) - [Hamcrest Object Matchers](https://www.baeldung.com/hamcrest-object-matchers) - [Hamcrest Bean Matchers](https://www.baeldung.com/hamcrest-bean-matchers) -- [Hamcrest Number Matchers](https://www.baeldung.com/hamcrest-number-matchers) +- [Using Hamcrest Number Matchers](https://www.baeldung.com/hamcrest-number-matchers) - [Hamcrest Common Core Matchers](https://www.baeldung.com/hamcrest-core-matchers) - [Hamcrest Custom Matchers](https://www.baeldung.com/hamcrest-custom-matchers) From 25f0d92073dae18d34b8217633737ed6465b53dd Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 16:47:04 +0800 Subject: [PATCH 105/265] Update README.md --- xml/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xml/README.md b/xml/README.md index 45f05a269d..78ed3a52a9 100644 --- a/xml/README.md +++ b/xml/README.md @@ -6,7 +6,7 @@ This module contains articles about eXtensible Markup Language (XML) - [Intro to XPath with Java](https://www.baeldung.com/java-xpath) - [Introduction to JiBX](https://www.baeldung.com/jibx) - [XML Libraries Support in Java](https://www.baeldung.com/java-xml-libraries) -- [DOM parsing with Xerces](https://www.baeldung.com/java-xerces-dom-parsing) +- [Working with XML Files in Java Using DOM Parsing](https://www.baeldung.com/java-xerces-dom-parsing) - [Write an org.w3.dom.Document to a File](https://www.baeldung.com/java-write-xml-document-file) - [Modifying an XML Attribute in Java](https://www.baeldung.com/java-modify-xml-attribute) - [Convert XML to HTML in Java](https://www.baeldung.com/java-convert-xml-to-html) From c4285d4b788780d03a1695df6d04f73768b477e0 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 15 Oct 2019 16:50:52 +0800 Subject: [PATCH 106/265] Update README.md --- core-java-modules/core-java-lang-oop-3/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core-java-modules/core-java-lang-oop-3/README.md b/core-java-modules/core-java-lang-oop-3/README.md index 4ac6c3ffe9..bef0605577 100644 --- a/core-java-modules/core-java-lang-oop-3/README.md +++ b/core-java-modules/core-java-lang-oop-3/README.md @@ -7,11 +7,11 @@ This module contains articles about Object-oriented programming (OOP) in Java - [Access Modifiers in Java](https://www.baeldung.com/java-access-modifiers) - [Guide to the super Java Keyword](https://www.baeldung.com/java-super) - [Guide to the this Java Keyword](https://www.baeldung.com/java-this) -- [Java Public Access Modifier](https://www.baeldung.com/java-public-keyword) +- [Java ‘public’ Access Modifier](https://www.baeldung.com/java-public-keyword) - [Composition, Aggregation and Association in Java](https://www.baeldung.com/java-composition-aggregation-association) - [Nested Classes in Java](https://www.baeldung.com/java-nested-classes) - [A Guide to Inner Interfaces in Java](https://www.baeldung.com/java-inner-interfaces) - [Java Classes and Objects](https://www.baeldung.com/java-classes-objects) - [Java Interfaces](https://www.baeldung.com/java-interfaces) - [Static and Dynamic Binding in Java](https://www.baeldung.com/java-static-dynamic-binding) -- [[<-- Prev]](/core-java-modules/core-java-lang-oop-2) \ No newline at end of file +- [[<-- Prev]](/core-java-modules/core-java-lang-oop-2) From 546701f1f7c53d5628c6be1034abffaf3fb8cf26 Mon Sep 17 00:00:00 2001 From: "m.raheem" Date: Tue, 15 Oct 2019 12:42:06 +0200 Subject: [PATCH 107/265] renaming unit tests + removing unused final keyword --- .../baeldung/jackson/deserialization/enums/Distance.java | 6 +++++- .../enums/customdeserializer/CustomEnumDeserializer.java | 8 ++++---- .../enums/customdeserializer/Distance.java | 6 +++++- .../deserialization/enums/jsoncreator/Distance.java | 6 +++++- .../deserialization/enums/jsonproperty/Distance.java | 6 +++++- .../jackson/deserialization/enums/jsonvalue/Distance.java | 6 +++++- ...ation.java => DefaultEnumDeserializationUnitTest.java} | 4 ++-- ...zation.java => EnumCustomDeserializationUnitTest.java} | 4 ++-- ...a => EnumDeserializationUsingJsonCreatorUnitTest.java} | 4 ++-- ... => EnumDeserializationUsingJsonPropertyUnitTest.java} | 4 ++-- ...ava => EnumDeserializationUsingJsonValueUnitTest.java} | 4 ++-- 11 files changed, 39 insertions(+), 19 deletions(-) rename jackson/src/test/java/com/baeldung/jackson/deserialization/enums/{DefaultJacksonEnumDeserialization.java => DefaultEnumDeserializationUnitTest.java} (73%) rename jackson/src/test/java/com/baeldung/jackson/deserialization/enums/customdeserializer/{JacksonEnumCustomDeserialization.java => EnumCustomDeserializationUnitTest.java} (72%) rename jackson/src/test/java/com/baeldung/jackson/deserialization/enums/jsoncreator/{JacksonEnumDeserializationUsingJsonCreator.java => EnumDeserializationUsingJsonCreatorUnitTest.java} (72%) rename jackson/src/test/java/com/baeldung/jackson/deserialization/enums/jsonproperty/{JacksonEnumDeserializationUsingJsonProperty.java => EnumDeserializationUsingJsonPropertyUnitTest.java} (71%) rename jackson/src/test/java/com/baeldung/jackson/deserialization/enums/jsonvalue/{JacksonEnumDeserializationUsingJsonValue.java => EnumDeserializationUsingJsonValueUnitTest.java} (71%) diff --git a/jackson/src/main/java/com/baeldung/jackson/deserialization/enums/Distance.java b/jackson/src/main/java/com/baeldung/jackson/deserialization/enums/Distance.java index ce332d34ae..2c96b6eb80 100644 --- a/jackson/src/main/java/com/baeldung/jackson/deserialization/enums/Distance.java +++ b/jackson/src/main/java/com/baeldung/jackson/deserialization/enums/Distance.java @@ -5,13 +5,17 @@ public enum Distance { KILOMETER("km", 1000), MILE("miles", 1609.34), METER("meters", 1), INCH("inches", 0.0254), CENTIMETER("cm", 0.01), MILLIMETER("mm", 0.001); private String unit; - private final double meters; + private double meters; private Distance(String unit, double meters) { this.unit = unit; this.meters = meters; } + public void setMeters(double meters) { + this.meters = meters; + } + public double getMeters() { return meters; } diff --git a/jackson/src/main/java/com/baeldung/jackson/deserialization/enums/customdeserializer/CustomEnumDeserializer.java b/jackson/src/main/java/com/baeldung/jackson/deserialization/enums/customdeserializer/CustomEnumDeserializer.java index 21be368e01..bae0c0df34 100644 --- a/jackson/src/main/java/com/baeldung/jackson/deserialization/enums/customdeserializer/CustomEnumDeserializer.java +++ b/jackson/src/main/java/com/baeldung/jackson/deserialization/enums/customdeserializer/CustomEnumDeserializer.java @@ -15,14 +15,14 @@ public class CustomEnumDeserializer extends StdDeserializer { this(null); } - public CustomEnumDeserializer(Class vc) { - super(vc); + public CustomEnumDeserializer(Class c) { + super(c); } @Override - public Distance deserialize(final JsonParser jsonParser, final DeserializationContext ctxt) throws IOException, JsonProcessingException { + public Distance deserialize(JsonParser jsonParser, DeserializationContext ctxt) throws IOException, JsonProcessingException { - final JsonNode node = jsonParser.getCodec().readTree(jsonParser); + JsonNode node = jsonParser.getCodec().readTree(jsonParser); String unit = node.get("unit").asText(); double meters = node.get("meters").asDouble(); diff --git a/jackson/src/main/java/com/baeldung/jackson/deserialization/enums/customdeserializer/Distance.java b/jackson/src/main/java/com/baeldung/jackson/deserialization/enums/customdeserializer/Distance.java index 4766b43435..9cb3a0c391 100644 --- a/jackson/src/main/java/com/baeldung/jackson/deserialization/enums/customdeserializer/Distance.java +++ b/jackson/src/main/java/com/baeldung/jackson/deserialization/enums/customdeserializer/Distance.java @@ -8,7 +8,7 @@ public enum Distance { KILOMETER("km", 1000), MILE("miles", 1609.34), METER("meters", 1), INCH("inches", 0.0254), CENTIMETER("cm", 0.01), MILLIMETER("mm", 0.001); private String unit; - private final double meters; + private double meters; private Distance(String unit, double meters) { this.unit = unit; @@ -19,6 +19,10 @@ public enum Distance { return meters; } + public void setMeters(double meters) { + this.meters = meters; + } + public String getUnit() { return unit; } diff --git a/jackson/src/main/java/com/baeldung/jackson/deserialization/enums/jsoncreator/Distance.java b/jackson/src/main/java/com/baeldung/jackson/deserialization/enums/jsoncreator/Distance.java index 05c089ef69..18235fb5c6 100644 --- a/jackson/src/main/java/com/baeldung/jackson/deserialization/enums/jsoncreator/Distance.java +++ b/jackson/src/main/java/com/baeldung/jackson/deserialization/enums/jsoncreator/Distance.java @@ -8,13 +8,17 @@ public enum Distance { KILOMETER("km", 1000), MILE("miles", 1609.34), METER("meters", 1), INCH("inches", 0.0254), CENTIMETER("cm", 0.01), MILLIMETER("mm", 0.001); private String unit; - private final double meters; + private double meters; private Distance(String unit, double meters) { this.unit = unit; this.meters = meters; } + public void setMeters(double meters) { + this.meters = meters; + } + public double getMeters() { return meters; } diff --git a/jackson/src/main/java/com/baeldung/jackson/deserialization/enums/jsonproperty/Distance.java b/jackson/src/main/java/com/baeldung/jackson/deserialization/enums/jsonproperty/Distance.java index 2d324d7f8e..e671a9ae5b 100644 --- a/jackson/src/main/java/com/baeldung/jackson/deserialization/enums/jsonproperty/Distance.java +++ b/jackson/src/main/java/com/baeldung/jackson/deserialization/enums/jsonproperty/Distance.java @@ -23,13 +23,17 @@ public enum Distance { MILLIMETER("mm", 0.001); private String unit; - private final double meters; + private double meters; private Distance(String unit, double meters) { this.unit = unit; this.meters = meters; } + public void setMeters(double meters) { + this.meters = meters; + } + public double getMeters() { return meters; } diff --git a/jackson/src/main/java/com/baeldung/jackson/deserialization/enums/jsonvalue/Distance.java b/jackson/src/main/java/com/baeldung/jackson/deserialization/enums/jsonvalue/Distance.java index 06a6f870f5..44bb5f20c3 100644 --- a/jackson/src/main/java/com/baeldung/jackson/deserialization/enums/jsonvalue/Distance.java +++ b/jackson/src/main/java/com/baeldung/jackson/deserialization/enums/jsonvalue/Distance.java @@ -7,13 +7,17 @@ public enum Distance { KILOMETER("km", 1000), MILE("miles", 1609.34), METER("meters", 1), INCH("inches", 0.0254), CENTIMETER("cm", 0.01), MILLIMETER("mm", 0.001); private String unit; - private final double meters; + private double meters; private Distance(String unit, double meters) { this.unit = unit; this.meters = meters; } + public void setMeters(double meters) { + this.meters = meters; + } + @JsonValue public double getMeters() { return meters; diff --git a/jackson/src/test/java/com/baeldung/jackson/deserialization/enums/DefaultJacksonEnumDeserialization.java b/jackson/src/test/java/com/baeldung/jackson/deserialization/enums/DefaultEnumDeserializationUnitTest.java similarity index 73% rename from jackson/src/test/java/com/baeldung/jackson/deserialization/enums/DefaultJacksonEnumDeserialization.java rename to jackson/src/test/java/com/baeldung/jackson/deserialization/enums/DefaultEnumDeserializationUnitTest.java index 12c9ffa10c..c7ce96e013 100644 --- a/jackson/src/test/java/com/baeldung/jackson/deserialization/enums/DefaultJacksonEnumDeserialization.java +++ b/jackson/src/test/java/com/baeldung/jackson/deserialization/enums/DefaultEnumDeserializationUnitTest.java @@ -6,10 +6,10 @@ import org.junit.Test; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.ObjectMapper; -public class DefaultJacksonEnumDeserialization { +public class DefaultEnumDeserializationUnitTest { @Test - public final void givenEnum_whenDeserializingJson_thenCorrectRepresentation() throws JsonParseException, IOException { + public void givenEnum_whenDeserializingJson_thenCorrectRepresentation() throws JsonParseException, IOException { String json = "{\"distance\":\"KILOMETER\"}"; City city = new ObjectMapper().readValue(json, City.class); diff --git a/jackson/src/test/java/com/baeldung/jackson/deserialization/enums/customdeserializer/JacksonEnumCustomDeserialization.java b/jackson/src/test/java/com/baeldung/jackson/deserialization/enums/customdeserializer/EnumCustomDeserializationUnitTest.java similarity index 72% rename from jackson/src/test/java/com/baeldung/jackson/deserialization/enums/customdeserializer/JacksonEnumCustomDeserialization.java rename to jackson/src/test/java/com/baeldung/jackson/deserialization/enums/customdeserializer/EnumCustomDeserializationUnitTest.java index 02354a336f..e8dbfa8df8 100644 --- a/jackson/src/test/java/com/baeldung/jackson/deserialization/enums/customdeserializer/JacksonEnumCustomDeserialization.java +++ b/jackson/src/test/java/com/baeldung/jackson/deserialization/enums/customdeserializer/EnumCustomDeserializationUnitTest.java @@ -6,10 +6,10 @@ import org.junit.Test; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.ObjectMapper; -public class JacksonEnumCustomDeserialization { +public class EnumCustomDeserializationUnitTest { @Test - public final void givenEnumWithCustomDeserializer_whenDeserializingJson_thenCorrectRepresentation() throws JsonParseException, IOException { + public void givenEnumWithCustomDeserializer_whenDeserializingJson_thenCorrectRepresentation() throws JsonParseException, IOException { String json = "{\"distance\": {\"unit\":\"miles\",\"meters\":1609.34}}"; City city = new ObjectMapper().readValue(json, City.class); diff --git a/jackson/src/test/java/com/baeldung/jackson/deserialization/enums/jsoncreator/JacksonEnumDeserializationUsingJsonCreator.java b/jackson/src/test/java/com/baeldung/jackson/deserialization/enums/jsoncreator/EnumDeserializationUsingJsonCreatorUnitTest.java similarity index 72% rename from jackson/src/test/java/com/baeldung/jackson/deserialization/enums/jsoncreator/JacksonEnumDeserializationUsingJsonCreator.java rename to jackson/src/test/java/com/baeldung/jackson/deserialization/enums/jsoncreator/EnumDeserializationUsingJsonCreatorUnitTest.java index eaa06d34b0..d778cbe26b 100644 --- a/jackson/src/test/java/com/baeldung/jackson/deserialization/enums/jsoncreator/JacksonEnumDeserializationUsingJsonCreator.java +++ b/jackson/src/test/java/com/baeldung/jackson/deserialization/enums/jsoncreator/EnumDeserializationUsingJsonCreatorUnitTest.java @@ -6,10 +6,10 @@ import org.junit.Test; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.ObjectMapper; -public class JacksonEnumDeserializationUsingJsonCreator { +public class EnumDeserializationUsingJsonCreatorUnitTest { @Test - public final void givenEnumWithJsonCreator_whenDeserializingJson_thenCorrectRepresentation() throws JsonParseException, IOException { + public void givenEnumWithJsonCreator_whenDeserializingJson_thenCorrectRepresentation() throws JsonParseException, IOException { String json = "{\"distance\": {\"unit\":\"miles\",\"meters\":1609.34}}"; City city = new ObjectMapper().readValue(json, City.class); diff --git a/jackson/src/test/java/com/baeldung/jackson/deserialization/enums/jsonproperty/JacksonEnumDeserializationUsingJsonProperty.java b/jackson/src/test/java/com/baeldung/jackson/deserialization/enums/jsonproperty/EnumDeserializationUsingJsonPropertyUnitTest.java similarity index 71% rename from jackson/src/test/java/com/baeldung/jackson/deserialization/enums/jsonproperty/JacksonEnumDeserializationUsingJsonProperty.java rename to jackson/src/test/java/com/baeldung/jackson/deserialization/enums/jsonproperty/EnumDeserializationUsingJsonPropertyUnitTest.java index 2743727f98..134f4a29cc 100644 --- a/jackson/src/test/java/com/baeldung/jackson/deserialization/enums/jsonproperty/JacksonEnumDeserializationUsingJsonProperty.java +++ b/jackson/src/test/java/com/baeldung/jackson/deserialization/enums/jsonproperty/EnumDeserializationUsingJsonPropertyUnitTest.java @@ -6,10 +6,10 @@ import org.junit.Test; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.ObjectMapper; -public class JacksonEnumDeserializationUsingJsonProperty { +public class EnumDeserializationUsingJsonPropertyUnitTest { @Test - public final void givenEnumWithJsonProperty_whenDeserializingJson_thenCorrectRepresentation() throws JsonParseException, IOException { + public void givenEnumWithJsonProperty_whenDeserializingJson_thenCorrectRepresentation() throws JsonParseException, IOException { String json = "{\"distance\": \"distance-in-km\"}"; City city = new ObjectMapper().readValue(json, City.class); diff --git a/jackson/src/test/java/com/baeldung/jackson/deserialization/enums/jsonvalue/JacksonEnumDeserializationUsingJsonValue.java b/jackson/src/test/java/com/baeldung/jackson/deserialization/enums/jsonvalue/EnumDeserializationUsingJsonValueUnitTest.java similarity index 71% rename from jackson/src/test/java/com/baeldung/jackson/deserialization/enums/jsonvalue/JacksonEnumDeserializationUsingJsonValue.java rename to jackson/src/test/java/com/baeldung/jackson/deserialization/enums/jsonvalue/EnumDeserializationUsingJsonValueUnitTest.java index d49cd4771b..85afcb9a69 100644 --- a/jackson/src/test/java/com/baeldung/jackson/deserialization/enums/jsonvalue/JacksonEnumDeserializationUsingJsonValue.java +++ b/jackson/src/test/java/com/baeldung/jackson/deserialization/enums/jsonvalue/EnumDeserializationUsingJsonValueUnitTest.java @@ -6,10 +6,10 @@ import org.junit.Test; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.ObjectMapper; -public class JacksonEnumDeserializationUsingJsonValue { +public class EnumDeserializationUsingJsonValueUnitTest { @Test - public final void givenEnumWithJsonValue_whenDeserializingJson_thenCorrectRepresentation() throws JsonParseException, IOException { + public void givenEnumWithJsonValue_whenDeserializingJson_thenCorrectRepresentation() throws JsonParseException, IOException { String json = "{\"distance\": \"0.0254\"}"; City city = new ObjectMapper().readValue(json, City.class); From c27a4c1238aaafa975237565947e7d003c6cf8eb Mon Sep 17 00:00:00 2001 From: "anshul.bansal" Date: Tue, 15 Oct 2019 15:29:22 +0300 Subject: [PATCH 108/265] removed already available method --- .../java/com/baeldung/springdatageode/repo/AuthorRepository.java | 1 - 1 file changed, 1 deletion(-) diff --git a/persistence-modules/spring-data-geode/src/main/java/com/baeldung/springdatageode/repo/AuthorRepository.java b/persistence-modules/spring-data-geode/src/main/java/com/baeldung/springdatageode/repo/AuthorRepository.java index 3a311039a4..92f4165343 100644 --- a/persistence-modules/spring-data-geode/src/main/java/com/baeldung/springdatageode/repo/AuthorRepository.java +++ b/persistence-modules/spring-data-geode/src/main/java/com/baeldung/springdatageode/repo/AuthorRepository.java @@ -8,5 +8,4 @@ import org.springframework.data.repository.CrudRepository; public interface AuthorRepository extends CrudRepository { - Optional findById(Long id); } From a244dd26986601d5057e674ce7b6a7144cc3a8e2 Mon Sep 17 00:00:00 2001 From: catalin-burcea Date: Tue, 15 Oct 2019 21:20:48 +0300 Subject: [PATCH 109/265] Move articles out of java-strings part2 --- algorithms-sorting/README.md | 1 + algorithms-sorting/pom.xml | 7 +++ .../stringsort}/AnagramValidator.java | 2 +- .../stringsort}/AnagramValidatorUnitTest.java | 8 +-- .../stringsort}/SortStringUnitTest.java | 6 +- .../core-java-string-apis/README.md | 12 ++++ .../core-java-string-apis/pom.xml | 55 +++++++++++++++++++ .../password/RandomPasswordGenerator.java | 16 +++--- .../streamtokenizer/StreamTokenizerDemo.java | 2 +- .../StringBuilderStringBuffer.java | 6 +- .../baeldung/stringtokenizer/MyTokenizer.java | 0 .../CharSequenceVsStringUnitTest.java | 2 +- .../StringFormatterExampleUnitTest.java | 10 ++-- .../password/StringPasswordUnitTest.java | 6 +- .../StreamTokenizerDemoUnitTest.java | 2 +- .../stringjoiner/StringJoinerUnitTest.java | 4 +- .../stringtokenizer/TokenizerUnitTest.java | 0 .../src/test/resources/data.csv | 3 + .../resources/stream-tokenizer-example.txt | 0 java-strings-2/README.md | 3 - java-strings-ops/README.md | 2 - java-strings/README.md | 3 - pom.xml | 2 + 23 files changed, 111 insertions(+), 41 deletions(-) rename {java-strings/src/main/java/com/baeldung/string/sorting => algorithms-sorting/src/main/java/com/baeldung/algorithms/stringsort}/AnagramValidator.java (93%) rename {java-strings/src/test/java/com/baeldung/string/sorting => algorithms-sorting/src/test/java/com/baeldung/algorithms/stringsort}/AnagramValidatorUnitTest.java (86%) rename {java-strings/src/test/java/com/baeldung/string/sorting => algorithms-sorting/src/test/java/com/baeldung/algorithms/stringsort}/SortStringUnitTest.java (94%) create mode 100644 core-java-modules/core-java-string-apis/README.md create mode 100644 core-java-modules/core-java-string-apis/pom.xml rename {java-strings-2/src/main/java/com/baeldung/string => core-java-modules/core-java-string-apis/src/main/java/com/baeldung}/password/RandomPasswordGenerator.java (99%) rename {java-strings-2/src/main/java/com/baeldung/string => core-java-modules/core-java-string-apis/src/main/java/com/baeldung}/streamtokenizer/StreamTokenizerDemo.java (98%) rename java-strings-ops/src/test/java/com/baeldung/string/StringBufferStringBuilder.java => core-java-modules/core-java-string-apis/src/main/java/com/baeldung/stringbuilderstringbuffer/StringBuilderStringBuffer.java (89%) rename {java-strings => core-java-modules/core-java-string-apis}/src/main/java/com/baeldung/stringtokenizer/MyTokenizer.java (100%) rename {java-strings-ops/src/test/java/com/baeldung/string => core-java-modules/core-java-string-apis/src/test/java/com/baeldung/charsequence}/CharSequenceVsStringUnitTest.java (97%) rename {java-strings-2/src/test/java/com/baeldung/string => core-java-modules/core-java-string-apis/src/test/java/com/baeldung}/formatter/StringFormatterExampleUnitTest.java (96%) rename {java-strings-2/src/test/java/com/baeldung/string => core-java-modules/core-java-string-apis/src/test/java/com/baeldung}/password/StringPasswordUnitTest.java (98%) rename {java-strings-2/src/test/java/com/baeldung/string => core-java-modules/core-java-string-apis/src/test/java/com/baeldung}/streamtokenizer/StreamTokenizerDemoUnitTest.java (96%) rename {java-strings => core-java-modules/core-java-string-apis}/src/test/java/com/baeldung/stringjoiner/StringJoinerUnitTest.java (100%) rename {java-strings => core-java-modules/core-java-string-apis}/src/test/java/com/baeldung/stringtokenizer/TokenizerUnitTest.java (100%) create mode 100644 core-java-modules/core-java-string-apis/src/test/resources/data.csv rename {java-strings-2/src/main => core-java-modules/core-java-string-apis/src/test}/resources/stream-tokenizer-example.txt (100%) diff --git a/algorithms-sorting/README.md b/algorithms-sorting/README.md index 4fd9d5e0c6..3f27cfea49 100644 --- a/algorithms-sorting/README.md +++ b/algorithms-sorting/README.md @@ -16,3 +16,4 @@ This module contains articles about sorting algorithms. - [Selection Sort in Java](https://www.baeldung.com/java-selection-sort) - [Sorting Strings by Contained Numbers in Java](https://www.baeldung.com/java-sort-strings-contained-numbers) - [Radix Sort in Java](https://www.baeldung.com/java-radix-sort) +- [Sorting a String Alphabetically in Java](https://www.baeldung.com/java-sort-string-alphabetically) diff --git a/algorithms-sorting/pom.xml b/algorithms-sorting/pom.xml index b25adf05a8..5bb19a8069 100644 --- a/algorithms-sorting/pom.xml +++ b/algorithms-sorting/pom.xml @@ -28,6 +28,12 @@ ${lombok.version} provided + + org.junit.jupiter + junit-jupiter-api + ${junit-jupiter-api.version} + test + org.assertj assertj-core @@ -52,6 +58,7 @@ 3.6.1 3.9.0 1.11 + 5.3.1 \ No newline at end of file diff --git a/java-strings/src/main/java/com/baeldung/string/sorting/AnagramValidator.java b/algorithms-sorting/src/main/java/com/baeldung/algorithms/stringsort/AnagramValidator.java similarity index 93% rename from java-strings/src/main/java/com/baeldung/string/sorting/AnagramValidator.java rename to algorithms-sorting/src/main/java/com/baeldung/algorithms/stringsort/AnagramValidator.java index c4f684383d..67b5e5facc 100644 --- a/java-strings/src/main/java/com/baeldung/string/sorting/AnagramValidator.java +++ b/algorithms-sorting/src/main/java/com/baeldung/algorithms/stringsort/AnagramValidator.java @@ -1,4 +1,4 @@ -package com.baeldung.string.sorting; +package com.baeldung.algorithms.stringsort; import java.util.Arrays; diff --git a/java-strings/src/test/java/com/baeldung/string/sorting/AnagramValidatorUnitTest.java b/algorithms-sorting/src/test/java/com/baeldung/algorithms/stringsort/AnagramValidatorUnitTest.java similarity index 86% rename from java-strings/src/test/java/com/baeldung/string/sorting/AnagramValidatorUnitTest.java rename to algorithms-sorting/src/test/java/com/baeldung/algorithms/stringsort/AnagramValidatorUnitTest.java index 07d31c7187..25fc274dd8 100644 --- a/java-strings/src/test/java/com/baeldung/string/sorting/AnagramValidatorUnitTest.java +++ b/algorithms-sorting/src/test/java/com/baeldung/algorithms/stringsort/AnagramValidatorUnitTest.java @@ -1,12 +1,10 @@ -package com.baeldung.string.sorting; +package com.baeldung.algorithms.stringsort; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.junit.jupiter.api.Assertions.assertFalse; - import org.junit.jupiter.api.Test; -import com.baeldung.string.sorting.AnagramValidator; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; class AnagramValidatorUnitTest { diff --git a/java-strings/src/test/java/com/baeldung/string/sorting/SortStringUnitTest.java b/algorithms-sorting/src/test/java/com/baeldung/algorithms/stringsort/SortStringUnitTest.java similarity index 94% rename from java-strings/src/test/java/com/baeldung/string/sorting/SortStringUnitTest.java rename to algorithms-sorting/src/test/java/com/baeldung/algorithms/stringsort/SortStringUnitTest.java index 90d1dad554..226de64f07 100644 --- a/java-strings/src/test/java/com/baeldung/string/sorting/SortStringUnitTest.java +++ b/algorithms-sorting/src/test/java/com/baeldung/algorithms/stringsort/SortStringUnitTest.java @@ -1,9 +1,9 @@ -package com.baeldung.string.sorting; - -import java.util.Arrays; +package com.baeldung.algorithms.stringsort; import org.junit.jupiter.api.Test; +import java.util.Arrays; + import static org.assertj.core.api.Assertions.assertThat; class SortStringUnitTest { diff --git a/core-java-modules/core-java-string-apis/README.md b/core-java-modules/core-java-string-apis/README.md new file mode 100644 index 0000000000..fc36ba8640 --- /dev/null +++ b/core-java-modules/core-java-string-apis/README.md @@ -0,0 +1,12 @@ +## Java String APIs + +This module contains articles about string APIs. + +### Relevant Articles: +- [Java 8 StringJoiner](https://www.baeldung.com/java-string-joiner) +- [Quick Guide to the Java StringTokenizer](https://www.baeldung.com/java-stringtokenizer) +- [Guide to java.util.Formatter](https://www.baeldung.com/java-string-formatter) +- [Guide to StreamTokenizer](https://www.baeldung.com/java-streamtokenizer) +- [CharSequence vs. String in Java](https://www.baeldung.com/java-char-sequence-string) +- [StringBuilder and StringBuffer in Java](https://www.baeldung.com/java-string-builder-string-buffer) +- [Generate a Secure Random Password in Java](https://www.baeldung.com/java-generate-secure-password) diff --git a/core-java-modules/core-java-string-apis/pom.xml b/core-java-modules/core-java-string-apis/pom.xml new file mode 100644 index 0000000000..7d9d888fa1 --- /dev/null +++ b/core-java-modules/core-java-string-apis/pom.xml @@ -0,0 +1,55 @@ + + 4.0.0 + core-java-string-apis + 0.1.0-SNAPSHOT + jar + core-java-string-apis + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../../parent-java + + + + + org.openjdk.jmh + jmh-core + ${jmh-core.version} + + + org.openjdk.jmh + jmh-generator-annprocess + ${jmh-generator.version} + + + + org.passay + passay + ${passay.version} + + + org.apache.commons + commons-text + ${commons-text.version} + + + + + core-java-string-apis + + + src/main/resources + true + + + + + + 1.3.1 + 1.4 + + + diff --git a/java-strings-2/src/main/java/com/baeldung/string/password/RandomPasswordGenerator.java b/core-java-modules/core-java-string-apis/src/main/java/com/baeldung/password/RandomPasswordGenerator.java similarity index 99% rename from java-strings-2/src/main/java/com/baeldung/string/password/RandomPasswordGenerator.java rename to core-java-modules/core-java-string-apis/src/main/java/com/baeldung/password/RandomPasswordGenerator.java index 46af4d7c51..d49b13c9c9 100644 --- a/java-strings-2/src/main/java/com/baeldung/string/password/RandomPasswordGenerator.java +++ b/core-java-modules/core-java-string-apis/src/main/java/com/baeldung/password/RandomPasswordGenerator.java @@ -1,4 +1,11 @@ -package com.baeldung.string.password; +package com.baeldung.password; + +import org.apache.commons.lang3.RandomStringUtils; +import org.apache.commons.text.RandomStringGenerator; +import org.passay.CharacterRule; +import org.passay.EnglishCharacterData; +import org.passay.CharacterData; +import org.passay.PasswordGenerator; import java.security.SecureRandom; import java.util.Collections; @@ -8,13 +15,6 @@ import java.util.stream.Collectors; import java.util.stream.IntStream; import java.util.stream.Stream; -import org.apache.commons.lang3.RandomStringUtils; -import org.apache.commons.text.RandomStringGenerator; -import org.passay.CharacterData; -import org.passay.CharacterRule; -import org.passay.EnglishCharacterData; -import org.passay.PasswordGenerator; - public class RandomPasswordGenerator { /** diff --git a/java-strings-2/src/main/java/com/baeldung/string/streamtokenizer/StreamTokenizerDemo.java b/core-java-modules/core-java-string-apis/src/main/java/com/baeldung/streamtokenizer/StreamTokenizerDemo.java similarity index 98% rename from java-strings-2/src/main/java/com/baeldung/string/streamtokenizer/StreamTokenizerDemo.java rename to core-java-modules/core-java-string-apis/src/main/java/com/baeldung/streamtokenizer/StreamTokenizerDemo.java index 3bb0ff5b77..5ab506f259 100644 --- a/java-strings-2/src/main/java/com/baeldung/string/streamtokenizer/StreamTokenizerDemo.java +++ b/core-java-modules/core-java-string-apis/src/main/java/com/baeldung/streamtokenizer/StreamTokenizerDemo.java @@ -1,4 +1,4 @@ -package com.baeldung.string.streamtokenizer; +package com.baeldung.streamtokenizer; import java.io.*; import java.util.ArrayList; diff --git a/java-strings-ops/src/test/java/com/baeldung/string/StringBufferStringBuilder.java b/core-java-modules/core-java-string-apis/src/main/java/com/baeldung/stringbuilderstringbuffer/StringBuilderStringBuffer.java similarity index 89% rename from java-strings-ops/src/test/java/com/baeldung/string/StringBufferStringBuilder.java rename to core-java-modules/core-java-string-apis/src/main/java/com/baeldung/stringbuilderstringbuffer/StringBuilderStringBuffer.java index 72af4a9aee..50c139e2d3 100644 --- a/java-strings-ops/src/test/java/com/baeldung/string/StringBufferStringBuilder.java +++ b/core-java-modules/core-java-string-apis/src/main/java/com/baeldung/stringbuilderstringbuffer/StringBuilderStringBuffer.java @@ -1,4 +1,4 @@ -package com.baeldung.string; +package com.baeldung.stringbuilderstringbuffer; import org.openjdk.jmh.annotations.Benchmark; import org.openjdk.jmh.annotations.Scope; @@ -8,12 +8,12 @@ import org.openjdk.jmh.runner.RunnerException; import org.openjdk.jmh.runner.options.Options; import org.openjdk.jmh.runner.options.OptionsBuilder; -public class StringBufferStringBuilder { +public class StringBuilderStringBuffer { public static void main(String[] args) throws RunnerException { Options opt = new OptionsBuilder() - .include(StringBufferStringBuilder.class.getSimpleName()) + .include(StringBuilderStringBuffer.class.getSimpleName()) .build(); new Runner(opt).run(); diff --git a/java-strings/src/main/java/com/baeldung/stringtokenizer/MyTokenizer.java b/core-java-modules/core-java-string-apis/src/main/java/com/baeldung/stringtokenizer/MyTokenizer.java similarity index 100% rename from java-strings/src/main/java/com/baeldung/stringtokenizer/MyTokenizer.java rename to core-java-modules/core-java-string-apis/src/main/java/com/baeldung/stringtokenizer/MyTokenizer.java diff --git a/java-strings-ops/src/test/java/com/baeldung/string/CharSequenceVsStringUnitTest.java b/core-java-modules/core-java-string-apis/src/test/java/com/baeldung/charsequence/CharSequenceVsStringUnitTest.java similarity index 97% rename from java-strings-ops/src/test/java/com/baeldung/string/CharSequenceVsStringUnitTest.java rename to core-java-modules/core-java-string-apis/src/test/java/com/baeldung/charsequence/CharSequenceVsStringUnitTest.java index 916a3c79ff..aa15345bcb 100644 --- a/java-strings-ops/src/test/java/com/baeldung/string/CharSequenceVsStringUnitTest.java +++ b/core-java-modules/core-java-string-apis/src/test/java/com/baeldung/charsequence/CharSequenceVsStringUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.string; +package com.baeldung.charsequence; import org.junit.Test; diff --git a/java-strings-2/src/test/java/com/baeldung/string/formatter/StringFormatterExampleUnitTest.java b/core-java-modules/core-java-string-apis/src/test/java/com/baeldung/formatter/StringFormatterExampleUnitTest.java similarity index 96% rename from java-strings-2/src/test/java/com/baeldung/string/formatter/StringFormatterExampleUnitTest.java rename to core-java-modules/core-java-string-apis/src/test/java/com/baeldung/formatter/StringFormatterExampleUnitTest.java index 648fdaf65a..549c889028 100644 --- a/java-strings-2/src/test/java/com/baeldung/string/formatter/StringFormatterExampleUnitTest.java +++ b/core-java-modules/core-java-string-apis/src/test/java/com/baeldung/formatter/StringFormatterExampleUnitTest.java @@ -1,12 +1,12 @@ -package com.baeldung.string.formatter; +package com.baeldung.formatter; + +import org.junit.Test; import java.util.Calendar; import java.util.Formatter; import java.util.GregorianCalendar; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; -import org.junit.Test; + +import static org.junit.Assert.*; public class StringFormatterExampleUnitTest { diff --git a/java-strings-2/src/test/java/com/baeldung/string/password/StringPasswordUnitTest.java b/core-java-modules/core-java-string-apis/src/test/java/com/baeldung/password/StringPasswordUnitTest.java similarity index 98% rename from java-strings-2/src/test/java/com/baeldung/string/password/StringPasswordUnitTest.java rename to core-java-modules/core-java-string-apis/src/test/java/com/baeldung/password/StringPasswordUnitTest.java index bfd4b0fe8e..7fb55ad1cb 100644 --- a/java-strings-2/src/test/java/com/baeldung/string/password/StringPasswordUnitTest.java +++ b/core-java-modules/core-java-string-apis/src/test/java/com/baeldung/password/StringPasswordUnitTest.java @@ -1,9 +1,9 @@ -package com.baeldung.string.password; - -import static org.junit.Assert.assertTrue; +package com.baeldung.password; import org.junit.Test; +import static org.junit.Assert.assertTrue; + /** * Examples of passwords conforming to various specifications, using different libraries. * diff --git a/java-strings-2/src/test/java/com/baeldung/string/streamtokenizer/StreamTokenizerDemoUnitTest.java b/core-java-modules/core-java-string-apis/src/test/java/com/baeldung/streamtokenizer/StreamTokenizerDemoUnitTest.java similarity index 96% rename from java-strings-2/src/test/java/com/baeldung/string/streamtokenizer/StreamTokenizerDemoUnitTest.java rename to core-java-modules/core-java-string-apis/src/test/java/com/baeldung/streamtokenizer/StreamTokenizerDemoUnitTest.java index 01091ec629..29214167be 100644 --- a/java-strings-2/src/test/java/com/baeldung/string/streamtokenizer/StreamTokenizerDemoUnitTest.java +++ b/core-java-modules/core-java-string-apis/src/test/java/com/baeldung/streamtokenizer/StreamTokenizerDemoUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.string.streamtokenizer; +package com.baeldung.streamtokenizer; import org.junit.Test; diff --git a/java-strings/src/test/java/com/baeldung/stringjoiner/StringJoinerUnitTest.java b/core-java-modules/core-java-string-apis/src/test/java/com/baeldung/stringjoiner/StringJoinerUnitTest.java similarity index 100% rename from java-strings/src/test/java/com/baeldung/stringjoiner/StringJoinerUnitTest.java rename to core-java-modules/core-java-string-apis/src/test/java/com/baeldung/stringjoiner/StringJoinerUnitTest.java index a72f811336..89f91acd6e 100644 --- a/java-strings/src/test/java/com/baeldung/stringjoiner/StringJoinerUnitTest.java +++ b/core-java-modules/core-java-string-apis/src/test/java/com/baeldung/stringjoiner/StringJoinerUnitTest.java @@ -1,6 +1,6 @@ package com.baeldung.stringjoiner; -import static org.junit.Assert.assertEquals; +import org.junit.Test; import java.util.ArrayList; import java.util.Arrays; @@ -8,7 +8,7 @@ import java.util.List; import java.util.StringJoiner; import java.util.stream.Collectors; -import org.junit.Test; +import static org.junit.Assert.assertEquals; public class StringJoinerUnitTest { private final String DELIMITER_COMMA = ","; diff --git a/java-strings/src/test/java/com/baeldung/stringtokenizer/TokenizerUnitTest.java b/core-java-modules/core-java-string-apis/src/test/java/com/baeldung/stringtokenizer/TokenizerUnitTest.java similarity index 100% rename from java-strings/src/test/java/com/baeldung/stringtokenizer/TokenizerUnitTest.java rename to core-java-modules/core-java-string-apis/src/test/java/com/baeldung/stringtokenizer/TokenizerUnitTest.java diff --git a/core-java-modules/core-java-string-apis/src/test/resources/data.csv b/core-java-modules/core-java-string-apis/src/test/resources/data.csv new file mode 100644 index 0000000000..ec4ac10443 --- /dev/null +++ b/core-java-modules/core-java-string-apis/src/test/resources/data.csv @@ -0,0 +1,3 @@ +1|IND|India +2|MY|Malaysia +3|AU|Australia diff --git a/java-strings-2/src/main/resources/stream-tokenizer-example.txt b/core-java-modules/core-java-string-apis/src/test/resources/stream-tokenizer-example.txt similarity index 100% rename from java-strings-2/src/main/resources/stream-tokenizer-example.txt rename to core-java-modules/core-java-string-apis/src/test/resources/stream-tokenizer-example.txt diff --git a/java-strings-2/README.md b/java-strings-2/README.md index 9865019f74..ced813163d 100644 --- a/java-strings-2/README.md +++ b/java-strings-2/README.md @@ -9,12 +9,10 @@ This module contains articles about strings in Java. - [Removing Stopwords from a String in Java](https://www.baeldung.com/java-string-remove-stopwords) - [Java – Generate Random String](https://www.baeldung.com/java-random-string) - [Java Base64 Encoding and Decoding](https://www.baeldung.com/java-base64-encode-and-decode) -- [Generate a Secure Random Password in Java](https://www.baeldung.com/java-generate-secure-password) - [Removing Repeated Characters from a String](https://www.baeldung.com/java-remove-repeated-char) - [Join Array of Primitives with Separator in Java](https://www.baeldung.com/java-join-primitive-array) - [Pad a String with Zeros or Spaces in Java](https://www.baeldung.com/java-pad-string) - [Remove Emojis from a Java String](https://www.baeldung.com/java-string-remove-emojis) -- [Guide to java.util.Formatter](https://www.baeldung.com/java-string-formatter) - [Remove Leading and Trailing Characters from a String](https://www.baeldung.com/java-remove-trailing-characters) - [Concatenating Strings In Java](https://www.baeldung.com/java-strings-concatenation) - [Java String Interview Questions and Answers](https://www.baeldung.com/java-string-interview-questions) @@ -26,5 +24,4 @@ This module contains articles about strings in Java. - [Checking If a String Is a Repeated Substring](https://www.baeldung.com/java-repeated-substring) - [How to Reverse a String in Java](https://www.baeldung.com/java-reverse-string) - [String toLowerCase and toUpperCase Methods in Java](https://www.baeldung.com/java-string-convert-case) -- [Guide to StreamTokenizer](https://www.baeldung.com/java-streamtokenizer) - More articles: [[<-- prev>]](/java-strings) [[next -->]](/java-strings-3) diff --git a/java-strings-ops/README.md b/java-strings-ops/README.md index 3b00cd11ed..1300cf028e 100644 --- a/java-strings-ops/README.md +++ b/java-strings-ops/README.md @@ -14,5 +14,3 @@ This module contains articles about operations on strings in Java. - [Split a String in Java](https://www.baeldung.com/java-split-string) - [Common String Operations in Java](https://www.baeldung.com/java-string-operations) - [Java toString() Method](https://www.baeldung.com/java-tostring) -- [CharSequence vs. String in Java](https://www.baeldung.com/java-char-sequence-string) -- [StringBuilder and StringBuffer in Java](https://www.baeldung.com/java-string-builder-string-buffer) diff --git a/java-strings/README.md b/java-strings/README.md index 3146b54fa8..17b74231a4 100644 --- a/java-strings/README.md +++ b/java-strings/README.md @@ -4,12 +4,9 @@ This module contains articles about strings in Java. ### Relevant Articles: - [String Operations with Java Streams](https://www.baeldung.com/java-stream-operations-on-strings) -- [Java 8 StringJoiner](https://www.baeldung.com/java-string-joiner) -- [Quick Guide to the Java StringTokenizer](https://www.baeldung.com/java-stringtokenizer) - [Use char[] Array Over a String for Manipulating Passwords in Java?](https://www.baeldung.com/java-storing-passwords) - [Compact Strings in Java 9](https://www.baeldung.com/java-9-compact-string) - [Java Check a String for Lowercase/Uppercase Letter, Special Character and Digit](https://www.baeldung.com/java-lowercase-uppercase-special-character-digit-regex) -- [Sorting a String Alphabetically in Java](https://www.baeldung.com/java-sort-string-alphabetically) - [String Not Empty Test Assertions in Java](https://www.baeldung.com/java-assert-string-not-empty) - [String Performance Hints](https://www.baeldung.com/java-string-performance) - [Using indexOf to Find All Occurrences of a Word in a String](https://www.baeldung.com/java-indexOf-find-string-occurrences) diff --git a/pom.xml b/pom.xml index a00190c874..8b657454d8 100644 --- a/pom.xml +++ b/pom.xml @@ -430,6 +430,7 @@ core-java-modules/core-java-sun core-java-modules/core-java-string-conversions core-java-modules/core-java-string-conversions-2 + core-java-modules/core-java-string-apis core-java-modules/core-java core-java-modules/core-java-jvm core-scala @@ -1193,6 +1194,7 @@ core-java-modules/core-java-sun core-java-modules/core-java-string-conversions core-java-modules/core-java-string-conversions-2 + core-java-modules/core-java-string-apis core-scala couchbase custom-pmd From 7bc98e99c10657757e04f29de371eaf0b2a4b622 Mon Sep 17 00:00:00 2001 From: Kamlesh Kumar Date: Sun, 13 Oct 2019 12:48:59 +0530 Subject: [PATCH 110/265] BAEL-1363: Review Comments - applications port updated --- .../api-gateway/src/main/resources/application.yml | 4 ++-- .../weather-service/src/main/resources/application.yml | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/spring-cloud/spring-cloud-zuul-fallback/api-gateway/src/main/resources/application.yml b/spring-cloud/spring-cloud-zuul-fallback/api-gateway/src/main/resources/application.yml index 9a7d3314a3..4a0662a960 100644 --- a/spring-cloud/spring-cloud-zuul-fallback/api-gateway/src/main/resources/application.yml +++ b/spring-cloud/spring-cloud-zuul-fallback/api-gateway/src/main/resources/application.yml @@ -2,7 +2,7 @@ spring: application: name: api-gateway server: - port: 8008 + port: 7070 zuul: igoredServices: '*' @@ -18,5 +18,5 @@ ribbon: weather-service: ribbon: - listOfServers: localhost:7070 + listOfServers: localhost:8080 diff --git a/spring-cloud/spring-cloud-zuul-fallback/weather-service/src/main/resources/application.yml b/spring-cloud/spring-cloud-zuul-fallback/weather-service/src/main/resources/application.yml index 30ceeee438..242f842f44 100644 --- a/spring-cloud/spring-cloud-zuul-fallback/weather-service/src/main/resources/application.yml +++ b/spring-cloud/spring-cloud-zuul-fallback/weather-service/src/main/resources/application.yml @@ -1,5 +1,4 @@ spring: application: name: weather-service -server: - port: 7070 + From 85b5042cb7c6ca1c7c09dcfa7f782cc66648376e Mon Sep 17 00:00:00 2001 From: Gang Date: Tue, 15 Oct 2019 21:19:57 -0600 Subject: [PATCH 111/265] BAEL-3349, Add brackets and make the class public --- .../baeldung/algorithms/knapsack/Knapsack.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/knapsack/Knapsack.java b/algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/knapsack/Knapsack.java index a53ab21429..61c3f05a95 100644 --- a/algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/knapsack/Knapsack.java +++ b/algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/knapsack/Knapsack.java @@ -1,19 +1,22 @@ package com.baeldung.algorithms.knapsack; -class Knapsack { +public class Knapsack { public int knapsackRec(int[] w, int[] v, int n, int W) { - if (n <= 0) + if (n <= 0) { return 0; - else if (w[n - 1] > W) + } else if (w[n - 1] > W) { return knapsackRec(w, v, n - 1, W); - else + } else { return Math.max(knapsackRec(w, v, n - 1, W), v[n - 1] + knapsackRec(w, v, n - 1, W - w[n - 1])); + } } public int knapsackDP(int[] w, int[] v, int n, int W) { - if (n <= 0 || W <= 0) + if (n <= 0 || W <= 0) { return 0; + } + int[][] m = new int[n + 1][W + 1]; for (int j = 0; j <= W; j++) { m[0][j] = 0; @@ -21,10 +24,11 @@ class Knapsack { for (int i = 1; i <= n; i++) { for (int j = 1; j <= W; j++) { - if (w[i - 1] > j) + if (w[i - 1] > j) { m[i][j] = m[i - 1][j]; - else + } else { m[i][j] = Math.max(m[i - 1][j], m[i - 1][j - w[i - 1]] + v[i - 1]); + } } } return m[n][W]; From ad6fe27389569786e9d04ac8b0d876466c27d618 Mon Sep 17 00:00:00 2001 From: Sjmillington Date: Thu, 17 Oct 2019 16:23:02 +0100 Subject: [PATCH 112/265] [BAEL-16649] split kotlin-libraries module --- kotlin-libraries-2/README.md | 2 ++ kotlin-libraries-2/pom.xml | 21 +++++++++++++++++++ .../immutable/KotlinxImmutablesUnitTest.kt | 0 .../kotlin/immutable/ReadOnlyUnitTest.kt | 0 .../baeldung/mockk/AnnotationMockKUnitTest.kt | 0 .../com/baeldung/mockk/BasicMockKUnitTest.kt | 0 .../mockk/HierarchicalMockKUnitTest.kt | 0 .../com/baeldung/mockk/TestableService.kt | 0 kotlin-libraries/README.md | 2 -- kotlin-libraries/pom.xml | 21 ------------------- 10 files changed, 23 insertions(+), 23 deletions(-) rename {kotlin-libraries => kotlin-libraries-2}/src/test/kotlin/com/baeldung/kotlin/immutable/KotlinxImmutablesUnitTest.kt (100%) rename {kotlin-libraries => kotlin-libraries-2}/src/test/kotlin/com/baeldung/kotlin/immutable/ReadOnlyUnitTest.kt (100%) rename {kotlin-libraries => kotlin-libraries-2}/src/test/kotlin/com/baeldung/mockk/AnnotationMockKUnitTest.kt (100%) rename {kotlin-libraries => kotlin-libraries-2}/src/test/kotlin/com/baeldung/mockk/BasicMockKUnitTest.kt (100%) rename {kotlin-libraries => kotlin-libraries-2}/src/test/kotlin/com/baeldung/mockk/HierarchicalMockKUnitTest.kt (100%) rename {kotlin-libraries => kotlin-libraries-2}/src/test/kotlin/com/baeldung/mockk/TestableService.kt (100%) diff --git a/kotlin-libraries-2/README.md b/kotlin-libraries-2/README.md index 188f99dc16..4064ef67d8 100644 --- a/kotlin-libraries-2/README.md +++ b/kotlin-libraries-2/README.md @@ -6,4 +6,6 @@ This module contains articles about Kotlin Libraries. - [Jackson Support for Kotlin](https://www.baeldung.com/jackson-kotlin) - [Introduction to RxKotlin](https://www.baeldung.com/rxkotlin) +- [MockK: A Mocking Library for Kotlin](https://www.baeldung.com/kotlin-mockk) +- [Kotlin Immutable Collections](https://www.baeldung.com/kotlin-immutable-collections) - More articles: [[<-- prev]](/kotlin-libraries) diff --git a/kotlin-libraries-2/pom.xml b/kotlin-libraries-2/pom.xml index 14ac61a093..518142403e 100644 --- a/kotlin-libraries-2/pom.xml +++ b/kotlin-libraries-2/pom.xml @@ -28,9 +28,30 @@ junit test + + com.google.guava + guava + ${guava.version} + + + + org.jetbrains.kotlinx + kotlinx-collections-immutable + ${kotlinx-collections-immutable.version} + + + + io.mockk + mockk + ${mockk.version} + test + + 27.1-jre + 1.9.3 + 0.1 diff --git a/kotlin-libraries/src/test/kotlin/com/baeldung/kotlin/immutable/KotlinxImmutablesUnitTest.kt b/kotlin-libraries-2/src/test/kotlin/com/baeldung/kotlin/immutable/KotlinxImmutablesUnitTest.kt similarity index 100% rename from kotlin-libraries/src/test/kotlin/com/baeldung/kotlin/immutable/KotlinxImmutablesUnitTest.kt rename to kotlin-libraries-2/src/test/kotlin/com/baeldung/kotlin/immutable/KotlinxImmutablesUnitTest.kt diff --git a/kotlin-libraries/src/test/kotlin/com/baeldung/kotlin/immutable/ReadOnlyUnitTest.kt b/kotlin-libraries-2/src/test/kotlin/com/baeldung/kotlin/immutable/ReadOnlyUnitTest.kt similarity index 100% rename from kotlin-libraries/src/test/kotlin/com/baeldung/kotlin/immutable/ReadOnlyUnitTest.kt rename to kotlin-libraries-2/src/test/kotlin/com/baeldung/kotlin/immutable/ReadOnlyUnitTest.kt diff --git a/kotlin-libraries/src/test/kotlin/com/baeldung/mockk/AnnotationMockKUnitTest.kt b/kotlin-libraries-2/src/test/kotlin/com/baeldung/mockk/AnnotationMockKUnitTest.kt similarity index 100% rename from kotlin-libraries/src/test/kotlin/com/baeldung/mockk/AnnotationMockKUnitTest.kt rename to kotlin-libraries-2/src/test/kotlin/com/baeldung/mockk/AnnotationMockKUnitTest.kt diff --git a/kotlin-libraries/src/test/kotlin/com/baeldung/mockk/BasicMockKUnitTest.kt b/kotlin-libraries-2/src/test/kotlin/com/baeldung/mockk/BasicMockKUnitTest.kt similarity index 100% rename from kotlin-libraries/src/test/kotlin/com/baeldung/mockk/BasicMockKUnitTest.kt rename to kotlin-libraries-2/src/test/kotlin/com/baeldung/mockk/BasicMockKUnitTest.kt diff --git a/kotlin-libraries/src/test/kotlin/com/baeldung/mockk/HierarchicalMockKUnitTest.kt b/kotlin-libraries-2/src/test/kotlin/com/baeldung/mockk/HierarchicalMockKUnitTest.kt similarity index 100% rename from kotlin-libraries/src/test/kotlin/com/baeldung/mockk/HierarchicalMockKUnitTest.kt rename to kotlin-libraries-2/src/test/kotlin/com/baeldung/mockk/HierarchicalMockKUnitTest.kt diff --git a/kotlin-libraries/src/test/kotlin/com/baeldung/mockk/TestableService.kt b/kotlin-libraries-2/src/test/kotlin/com/baeldung/mockk/TestableService.kt similarity index 100% rename from kotlin-libraries/src/test/kotlin/com/baeldung/mockk/TestableService.kt rename to kotlin-libraries-2/src/test/kotlin/com/baeldung/mockk/TestableService.kt diff --git a/kotlin-libraries/README.md b/kotlin-libraries/README.md index e4b0a35d28..99a57c8293 100644 --- a/kotlin-libraries/README.md +++ b/kotlin-libraries/README.md @@ -14,6 +14,4 @@ This module contains articles about Kotlin Libraries. - [Introduction to Arrow in Kotlin](https://www.baeldung.com/kotlin-arrow) - [Kotlin with Ktor](https://www.baeldung.com/kotlin-ktor) - [REST API With Kotlin and Kovert](https://www.baeldung.com/kotlin-kovert) -- [MockK: A Mocking Library for Kotlin](https://www.baeldung.com/kotlin-mockk) -- [Kotlin Immutable Collections](https://www.baeldung.com/kotlin-immutable-collections) - More articles: [[next -->]](/kotlin-libraries-2) diff --git a/kotlin-libraries/pom.xml b/kotlin-libraries/pom.xml index 5299b5029e..7099166674 100644 --- a/kotlin-libraries/pom.xml +++ b/kotlin-libraries/pom.xml @@ -129,25 +129,7 @@ test - - com.google.guava - guava - ${guava.version} - - - - org.jetbrains.kotlinx - kotlinx-collections-immutable - ${kotlinx-collections-immutable.version} - - - - io.mockk - mockk - ${mockk.version} - test - net.bytebuddy byte-buddy @@ -185,13 +167,10 @@ 5.2.0 3.10.0 0.10.4 - 1.9.3 - 27.1-jre 3.3.0 1.8.13 2.6 2.3.0 - 0.1 0.7.3 From 511849dd58f2d9777bd5a72488fd9d9652a79489 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 18:24:16 +0800 Subject: [PATCH 113/265] Update README.md --- algorithms-miscellaneous-4/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/algorithms-miscellaneous-4/README.md b/algorithms-miscellaneous-4/README.md index e5e80505f8..93a9796092 100644 --- a/algorithms-miscellaneous-4/README.md +++ b/algorithms-miscellaneous-4/README.md @@ -7,5 +7,4 @@ - [Find Substrings That Are Palindromes in Java](https://www.baeldung.com/java-palindrome-substrings) - [Find the Longest Substring without Repeating Characters](https://www.baeldung.com/java-longest-substring-without-repeated-characters) - [Permutations of an Array in Java](https://www.baeldung.com/java-array-permutations) -- [Creating a Custom Annotation in Java](https://www.baeldung.com/java-custom-annotation) - [Interpolation Search in Java](https://www.baeldung.com/java-interpolation-search) From e8f29d2e7fda77b1087e2251aafc2c8e7d84404b Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 18:25:22 +0800 Subject: [PATCH 114/265] Update README.md --- algorithms-miscellaneous-3/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/algorithms-miscellaneous-3/README.md b/algorithms-miscellaneous-3/README.md index a1456c6b20..1a113a4f89 100644 --- a/algorithms-miscellaneous-3/README.md +++ b/algorithms-miscellaneous-3/README.md @@ -16,4 +16,5 @@ This module contains articles about algorithms. Some classes of algorithms, e.g. - [Efficient Word Frequency Calculator in Java](https://www.baeldung.com/java-word-frequency) - [Interpolation Search in Java](https://www.baeldung.com/java-interpolation-search) - [The K-Means Clustering Algorithm in Java](https://www.baeldung.com/java-k-means-clustering-algorithm) +- [Creating a Custom Annotation in Java](https://www.baeldung.com/java-custom-annotation) - More articles: [[<-- prev]](/algorithms-miscellaneous-2) [[next -->]](/algorithms-miscellaneous-4) From 3e246d4758e9dd7b317ffc6b8e60205101a30e51 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 18:28:06 +0800 Subject: [PATCH 115/265] Update README.md --- testing-modules/README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/testing-modules/README.md b/testing-modules/README.md index 232cf5819d..c6098d1210 100644 --- a/testing-modules/README.md +++ b/testing-modules/README.md @@ -1,5 +1,3 @@ ## Testing Modules This is an aggregator module containing multiple modules focused on testing libraries. -### Relevant Articles: -- [Introduction to Lambda Behave](https://www.baeldung.com/lambda-behave) From 5f0c693cfab6e4945ecc604e9e60b9b5315ef3e9 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 18:29:13 +0800 Subject: [PATCH 116/265] Update README.md --- testing-modules/junit-4/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/testing-modules/junit-4/README.md b/testing-modules/junit-4/README.md index d19a0a1e47..6cc3981ed4 100644 --- a/testing-modules/junit-4/README.md +++ b/testing-modules/junit-4/README.md @@ -4,3 +4,4 @@ - [Custom JUnit 4 Test Runners](http://www.baeldung.com/junit-4-custom-runners) - [Introduction to JUnitParams](http://www.baeldung.com/junit-params) - [Running JUnit Tests Programmatically, from a Java Application](https://www.baeldung.com/junit-tests-run-programmatically-from-java) +- [Introduction to Lambda Behave](https://www.baeldung.com/lambda-behave) From 37c381034dd5174b751b94121c15badd1db88f86 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 19:44:20 +0800 Subject: [PATCH 117/265] Update README.md --- core-java-modules/core-java-lang/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core-java-modules/core-java-lang/README.md b/core-java-modules/core-java-lang/README.md index 9b485d80e9..bd24c2831f 100644 --- a/core-java-modules/core-java-lang/README.md +++ b/core-java-modules/core-java-lang/README.md @@ -13,4 +13,5 @@ This module contains articles about core features in the Java language - [Synthetic Constructs in Java](https://www.baeldung.com/java-synthetic) - [Retrieving a Class Name in Java](https://www.baeldung.com/java-class-name) - [Attaching Values to Java Enum](https://www.baeldung.com/java-enum-values) -- [[More --> ]](/core-java-modules/core-java-lang-2) \ No newline at end of file +- [The Java continue and break Keywords](https://www.baeldung.com/java-continue-and-break) +- [[More --> ]](/core-java-modules/core-java-lang-2) From 42ec60311c692dcce87c3432f357cad4997bcd06 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 19:45:45 +0800 Subject: [PATCH 118/265] Update README.md --- spring-core/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-core/README.md b/spring-core/README.md index 6d274e89f0..03e946eda4 100644 --- a/spring-core/README.md +++ b/spring-core/README.md @@ -6,7 +6,7 @@ This module contains articles about core Spring functionality - [Wiring in Spring: @Autowired, @Resource and @Inject](https://www.baeldung.com/spring-annotations-resource-inject-autowire) - [Constructor Injection in Spring with Lombok](httsp://www.baeldung.com/spring-injection-lombok) - [Introduction to Spring’s StreamUtils](https://www.baeldung.com/spring-stream-utils) -- [XML-Based Injection in Spring](httsp://www.baeldung.com/spring-xml-injection) +- [XML-Based Injection in Spring](https://www.baeldung.com/spring-xml-injection) - [A Quick Guide to the Spring @Lazy Annotation](https://www.baeldung.com/spring-lazy-annotation) - [BeanNameAware and BeanFactoryAware Interfaces in Spring](https://www.baeldung.com/spring-bean-name-factory-aware) - [Access a File from the Classpath in a Spring Application](https://www.baeldung.com/spring-classpath-file-access) From be73064472322987b9035df947644c854d844d13 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 19:48:08 +0800 Subject: [PATCH 119/265] Update README.md --- spring-ejb/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/spring-ejb/README.md b/spring-ejb/README.md index 6c63c2709f..423d55ea22 100644 --- a/spring-ejb/README.md +++ b/spring-ejb/README.md @@ -6,7 +6,6 @@ This module contains articles about Spring with EJB - [Guide to EJB Set-up](https://www.baeldung.com/ejb-intro) - [Java EE Session Beans](https://www.baeldung.com/ejb-session-beans) -- [Introduction to EJB JNDI Lookup on WildFly Application Server](httpss://www.baeldung.com/wildfly-ejb-jndi) - [A Guide to Message Driven Beans in EJB](https://www.baeldung.com/ejb-message-driven-beans) - [Integration Guide for Spring and EJB](https://www.baeldung.com/spring-ejb) - [Singleton Session Bean in Java EE](https://www.baeldung.com/java-ee-singleton-session-bean) From 67670bb4e4cf11b328c0fdfd2e2b3872a3dde233 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 19:49:26 +0800 Subject: [PATCH 120/265] Create README.md --- spring-ejb/spring-ejb-client/README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 spring-ejb/spring-ejb-client/README.md diff --git a/spring-ejb/spring-ejb-client/README.md b/spring-ejb/spring-ejb-client/README.md new file mode 100644 index 0000000000..9addac7867 --- /dev/null +++ b/spring-ejb/spring-ejb-client/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: + +- [Introduction to EJB JNDI Lookup on WildFly Application Server](https://www.baeldung.com/wildfly-ejb-jndi) From 92bbfccefb8eec933325326297aec59442cbde7e Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 19:50:07 +0800 Subject: [PATCH 121/265] Create README.md --- spring-ejb/spring-ejb-remote/README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 spring-ejb/spring-ejb-remote/README.md diff --git a/spring-ejb/spring-ejb-remote/README.md b/spring-ejb/spring-ejb-remote/README.md new file mode 100644 index 0000000000..9addac7867 --- /dev/null +++ b/spring-ejb/spring-ejb-remote/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: + +- [Introduction to EJB JNDI Lookup on WildFly Application Server](https://www.baeldung.com/wildfly-ejb-jndi) From bc6855e4e7bdc395cef4923f5d3bac78d2c76c37 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 19:51:42 +0800 Subject: [PATCH 122/265] Update README.md --- spring-core/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-core/README.md b/spring-core/README.md index 03e946eda4..1f3dcb783b 100644 --- a/spring-core/README.md +++ b/spring-core/README.md @@ -4,7 +4,7 @@ This module contains articles about core Spring functionality ### Relevant Articles: - [Wiring in Spring: @Autowired, @Resource and @Inject](https://www.baeldung.com/spring-annotations-resource-inject-autowire) -- [Constructor Injection in Spring with Lombok](httsp://www.baeldung.com/spring-injection-lombok) +- [Constructor Injection in Spring with Lombok](https://www.baeldung.com/spring-injection-lombok) - [Introduction to Spring’s StreamUtils](https://www.baeldung.com/spring-stream-utils) - [XML-Based Injection in Spring](https://www.baeldung.com/spring-xml-injection) - [A Quick Guide to the Spring @Lazy Annotation](https://www.baeldung.com/spring-lazy-annotation) From 0c5f5a3dc402bc8c62ede1234e400d1612936462 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 19:53:22 +0800 Subject: [PATCH 123/265] Update README.md --- java-collections-maps-2/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java-collections-maps-2/README.md b/java-collections-maps-2/README.md index 0db83fbae7..8b33276f56 100644 --- a/java-collections-maps-2/README.md +++ b/java-collections-maps-2/README.md @@ -5,7 +5,7 @@ This module contains articles about Map data structures in Java. ### Relevant Articles: - [Map of Primitives in Java](https://www.baeldung.com/java-map-primitives) - [Copying a HashMap in Java](https://www.baeldung.com/java-copy-hashmap) -- [Guide to Java HashMap]() +- [A Guide to Java HashMap](https://www.baeldung.com/java-hashmap) - [Guide to WeakHashMap in Java](https://www.baeldung.com/java-weakhashmap) - [Map to String Conversion in Java](https://www.baeldung.com/java-map-to-string-conversion) - [Iterate over a Map in Java](https://www.baeldung.com/java-iterate-map) From 12a6e3d86210db7748432f08a0e384999a745d6b Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 19:55:27 +0800 Subject: [PATCH 124/265] Update README.md --- core-java-modules/core-java-lang/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-lang/README.md b/core-java-modules/core-java-lang/README.md index bd24c2831f..c4a880310c 100644 --- a/core-java-modules/core-java-lang/README.md +++ b/core-java-modules/core-java-lang/README.md @@ -14,4 +14,5 @@ This module contains articles about core features in the Java language - [Retrieving a Class Name in Java](https://www.baeldung.com/java-class-name) - [Attaching Values to Java Enum](https://www.baeldung.com/java-enum-values) - [The Java continue and break Keywords](https://www.baeldung.com/java-continue-and-break) +- [A Guide to Java Enums](https://www.baeldung.com/a-guide-to-java-enums) - [[More --> ]](/core-java-modules/core-java-lang-2) From 47a1f27b97cc71fd0408dc4eaf94fd2bc12370c9 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 19:57:58 +0800 Subject: [PATCH 125/265] Update README.md --- core-java-modules/core-java-exceptions/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core-java-modules/core-java-exceptions/README.md b/core-java-modules/core-java-exceptions/README.md index ba327b06f2..54fb910492 100644 --- a/core-java-modules/core-java-exceptions/README.md +++ b/core-java-modules/core-java-exceptions/README.md @@ -12,4 +12,4 @@ This module contains articles about core java exceptions - [“Sneaky Throws” in Java](https://www.baeldung.com/java-sneaky-throws) - [The StackOverflowError in Java](https://www.baeldung.com/java-stack-overflow-error) - [Checked and Unchecked Exceptions in Java](https://www.baeldung.com/java-checked-unchecked-exceptions) - +- [Java – Try with Resources](https://www.baeldung.com/java-try-with-resources) From 8fe77a9e5fa0f492a5130545c082f2ebc2f4f5e4 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 19:59:57 +0800 Subject: [PATCH 126/265] Update README.md --- core-java-modules/core-java-lang/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-lang/README.md b/core-java-modules/core-java-lang/README.md index c4a880310c..9e98bb849b 100644 --- a/core-java-modules/core-java-lang/README.md +++ b/core-java-modules/core-java-lang/README.md @@ -15,4 +15,5 @@ This module contains articles about core features in the Java language - [Attaching Values to Java Enum](https://www.baeldung.com/java-enum-values) - [The Java continue and break Keywords](https://www.baeldung.com/java-continue-and-break) - [A Guide to Java Enums](https://www.baeldung.com/a-guide-to-java-enums) +- [Infinite Loops in Java](https://www.baeldung.com/infinite-loops-java) - [[More --> ]](/core-java-modules/core-java-lang-2) From c454bfd58c6720af830d397fa227358dc9d79894 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 20:01:43 +0800 Subject: [PATCH 127/265] Update README.md --- core-java-modules/core-java-exceptions/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-exceptions/README.md b/core-java-modules/core-java-exceptions/README.md index 54fb910492..1cd8411805 100644 --- a/core-java-modules/core-java-exceptions/README.md +++ b/core-java-modules/core-java-exceptions/README.md @@ -13,3 +13,4 @@ This module contains articles about core java exceptions - [The StackOverflowError in Java](https://www.baeldung.com/java-stack-overflow-error) - [Checked and Unchecked Exceptions in Java](https://www.baeldung.com/java-checked-unchecked-exceptions) - [Java – Try with Resources](https://www.baeldung.com/java-try-with-resources) +- [Java Global Exception Handler](https://www.baeldung.com/java-global-exception-handler) From e6d04b8624b5d6ab03d47a0f49da836d6de40f38 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 20:02:51 +0800 Subject: [PATCH 128/265] Update README.md --- core-java-modules/core-java-exceptions/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-exceptions/README.md b/core-java-modules/core-java-exceptions/README.md index 1cd8411805..6a32de8012 100644 --- a/core-java-modules/core-java-exceptions/README.md +++ b/core-java-modules/core-java-exceptions/README.md @@ -14,3 +14,4 @@ This module contains articles about core java exceptions - [Checked and Unchecked Exceptions in Java](https://www.baeldung.com/java-checked-unchecked-exceptions) - [Java – Try with Resources](https://www.baeldung.com/java-try-with-resources) - [Java Global Exception Handler](https://www.baeldung.com/java-global-exception-handler) +- [Common Java Exceptions](https://www.baeldung.com/java-common-exceptions) From 9c9363400e62690e75bd0a4bb7bd0ee7cc53d695 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 20:03:45 +0800 Subject: [PATCH 129/265] Update README.md --- core-java-modules/core-java-exceptions/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-exceptions/README.md b/core-java-modules/core-java-exceptions/README.md index 6a32de8012..4936c032c7 100644 --- a/core-java-modules/core-java-exceptions/README.md +++ b/core-java-modules/core-java-exceptions/README.md @@ -15,3 +15,4 @@ This module contains articles about core java exceptions - [Java – Try with Resources](https://www.baeldung.com/java-try-with-resources) - [Java Global Exception Handler](https://www.baeldung.com/java-global-exception-handler) - [Common Java Exceptions](https://www.baeldung.com/java-common-exceptions) +- [Throw Exception in Optional in Java 8](https://www.baeldung.com/java-optional-throw-exception) From 06679f56b258abfaf737a12d0fe326b49560bd85 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 20:06:52 +0800 Subject: [PATCH 130/265] Update README.md --- core-java-modules/core-java-exceptions/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-exceptions/README.md b/core-java-modules/core-java-exceptions/README.md index 4936c032c7..f7b0c37e73 100644 --- a/core-java-modules/core-java-exceptions/README.md +++ b/core-java-modules/core-java-exceptions/README.md @@ -16,3 +16,4 @@ This module contains articles about core java exceptions - [Java Global Exception Handler](https://www.baeldung.com/java-global-exception-handler) - [Common Java Exceptions](https://www.baeldung.com/java-common-exceptions) - [Throw Exception in Optional in Java 8](https://www.baeldung.com/java-optional-throw-exception) +- [How to Find an Exception’s Root Cause in Java](https://www.baeldung.com/java-exception-root-cause) From 0517a2f4278f985c4452c9d26f89ae4f65ea61f9 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 20:09:00 +0800 Subject: [PATCH 131/265] Update README.md --- core-java-modules/core-java-lang-oop-3/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-lang-oop-3/README.md b/core-java-modules/core-java-lang-oop-3/README.md index bef0605577..f8efcb737f 100644 --- a/core-java-modules/core-java-lang-oop-3/README.md +++ b/core-java-modules/core-java-lang-oop-3/README.md @@ -14,4 +14,5 @@ This module contains articles about Object-oriented programming (OOP) in Java - [Java Classes and Objects](https://www.baeldung.com/java-classes-objects) - [Java Interfaces](https://www.baeldung.com/java-interfaces) - [Static and Dynamic Binding in Java](https://www.baeldung.com/java-static-dynamic-binding) +- [Methods in Java](https://www.baeldung.com/java-methods) - [[<-- Prev]](/core-java-modules/core-java-lang-oop-2) From 6e113fbb5f4b056bdf6f2eab98713e7add053937 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 20:10:10 +0800 Subject: [PATCH 132/265] Update README.md --- logging-modules/log4j2/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/logging-modules/log4j2/README.md b/logging-modules/log4j2/README.md index dd326bc7a1..6a65ae9c02 100644 --- a/logging-modules/log4j2/README.md +++ b/logging-modules/log4j2/README.md @@ -5,3 +5,4 @@ - [Programmatic Configuration with Log4j 2](http://www.baeldung.com/log4j2-programmatic-config) - [Creating a Custom Log4j2 Appender](https://www.baeldung.com/log4j2-custom-appender) - [Get Log Output in JSON](http://www.baeldung.com/java-log-json-output) +- [System.out.println vs Loggers](https://www.baeldung.com/java-system-out-println-vs-loggers) From 414f7fd949b5ab0c845550e643bd015170a3da56 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 20:11:35 +0800 Subject: [PATCH 133/265] Create README.md --- logging-modules/flogger/README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 logging-modules/flogger/README.md diff --git a/logging-modules/flogger/README.md b/logging-modules/flogger/README.md new file mode 100644 index 0000000000..ad7a25e24f --- /dev/null +++ b/logging-modules/flogger/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: + +- [Flogger Fluent Logging](https://www.baeldung.com/flogger-logging) From 4ae6011742debc9c149f26636e854f6d94c849bd Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 20:13:10 +0800 Subject: [PATCH 134/265] Update README.md --- spring-5-reactive-client/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-5-reactive-client/README.md b/spring-5-reactive-client/README.md index 5a9a3f4e0e..303f86a9ef 100644 --- a/spring-5-reactive-client/README.md +++ b/spring-5-reactive-client/README.md @@ -8,3 +8,4 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring ### Relevant Articles - [Simultaneous Spring WebClient Calls](https://www.baeldung.com/spring-webclient-simultaneous-calls) - [Logging Spring WebClient Calls](https://www.baeldung.com/spring-log-webclient-calls) +- [Mocking a WebClient in Spring](https://www.baeldung.com/spring-mocking-webclient) From e1680a387e466bcc64587348d96dd5feaffe13e1 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 20:14:21 +0800 Subject: [PATCH 135/265] Update README.md --- mapstruct/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/mapstruct/README.md b/mapstruct/README.md index 3107e06190..c586267478 100644 --- a/mapstruct/README.md +++ b/mapstruct/README.md @@ -6,3 +6,4 @@ This module contains articles about MapStruct. - [Quick Guide to MapStruct](https://www.baeldung.com/mapstruct) - [Custom Mapper with MapStruct](https://www.baeldung.com/mapstruct-custom-mapper) - [Using Multiple Source Objects with MapStruct](https://www.baeldung.com/mapstruct-multiple-source-objects) +- [Ignoring Unmapped Properties with MapStruct](https://www.baeldung.com/mapstruct-ignore-unmapped-properties) From a6b064e665e8fce5096708a44ec0689b79d4fcb0 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 20:16:16 +0800 Subject: [PATCH 136/265] Update README.md --- core-java-modules/core-java-networking-2/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-networking-2/README.md b/core-java-modules/core-java-networking-2/README.md index c384a28b64..7dc33b5e11 100644 --- a/core-java-modules/core-java-networking-2/README.md +++ b/core-java-modules/core-java-networking-2/README.md @@ -9,4 +9,5 @@ This module contains articles about networking in Java - [Using Curl in Java](https://www.baeldung.com/java-curl) - [Do a Simple HTTP Request in Java](http://www.baeldung.com/java-http-request) - [Sending Emails with Java](http://www.baeldung.com/java-email) +- [Authentication with HttpUrlConnection](https://www.baeldung.com/java-http-url-connection) - [[<-- Prev]](/core-java-modules/core-java-networking) From a0fb03031f284b5c4dd4656f3fd1e14b1919332b Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 20:18:14 +0800 Subject: [PATCH 137/265] Create README.md --- spring-boot-data/src/main/java/com/baeldung/javers/README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 spring-boot-data/src/main/java/com/baeldung/javers/README.md diff --git a/spring-boot-data/src/main/java/com/baeldung/javers/README.md b/spring-boot-data/src/main/java/com/baeldung/javers/README.md new file mode 100644 index 0000000000..4f8dd4abff --- /dev/null +++ b/spring-boot-data/src/main/java/com/baeldung/javers/README.md @@ -0,0 +1,3 @@ +### Relevant Articles + +- [Using JaVers for Data Model Auditing in Spring Data](https://www.baeldung.com/spring-data-javers-audit) From ca29686b7c152429f74fb6ab80e362027b1b7e21 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 20:19:36 +0800 Subject: [PATCH 138/265] Update README.md --- xml/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/xml/README.md b/xml/README.md index 78ed3a52a9..367a0334f6 100644 --- a/xml/README.md +++ b/xml/README.md @@ -11,3 +11,4 @@ This module contains articles about eXtensible Markup Language (XML) - [Modifying an XML Attribute in Java](https://www.baeldung.com/java-modify-xml-attribute) - [Convert XML to HTML in Java](https://www.baeldung.com/java-convert-xml-to-html) - [Parsing an XML File Using StAX](https://www.baeldung.com/java-stax) +- [Parsing an XML File Using SAX Parser](https://www.baeldung.com/java-sax-parser) From 77264aa6f07013131a5ac244bd80b764bab3e9ee Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 20:20:45 +0800 Subject: [PATCH 139/265] Update README.md --- spring-mvc-simple-2/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-mvc-simple-2/README.md b/spring-mvc-simple-2/README.md index 63227ea069..09a2370f57 100644 --- a/spring-mvc-simple-2/README.md +++ b/spring-mvc-simple-2/README.md @@ -7,4 +7,5 @@ This module contains articles about Spring MVC - [A Custom Data Binder in Spring MVC](https://www.baeldung.com/spring-mvc-custom-data-binder) - [Validating Lists in a Spring Controller](https://www.baeldung.com/spring-validate-list-controller) - [Spring Validation Message Interpolation](https://www.baeldung.com/spring-validation-message-interpolation) +- [Using a Slash Character in Spring URLs](https://www.baeldung.com/spring-slash-character-in-url) - More articles: [[<-- prev]](/spring-mvc-simple) From 6fa36b1ecbb1e2e3fe2705986eb1128737d2c643 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 20:22:38 +0800 Subject: [PATCH 140/265] Create README.md --- linux-bash/text/README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 linux-bash/text/README.md diff --git a/linux-bash/text/README.md b/linux-bash/text/README.md new file mode 100644 index 0000000000..e0ee0c1600 --- /dev/null +++ b/linux-bash/text/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: + +- [Linux Commands – Remove All Text After X](https://www.baeldung.com/linux/remove-text-after-x-in-file) From a3992b3042dd13f494aa1a9cf9f5c825b19aaaef Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 20:28:55 +0800 Subject: [PATCH 141/265] Update README.md --- persistence-modules/hibernate-mapping/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/persistence-modules/hibernate-mapping/README.md b/persistence-modules/hibernate-mapping/README.md index 3271f0c1b6..5bbdeecbea 100644 --- a/persistence-modules/hibernate-mapping/README.md +++ b/persistence-modules/hibernate-mapping/README.md @@ -8,3 +8,4 @@ This module contains articles about Object-relational Mapping (ORM) with Hiberna - [Difference Between @Size, @Length, and @Column(length=value)](https://www.baeldung.com/jpa-size-length-column-differences) - [Hibernate Validator Specific Constraints](https://www.baeldung.com/hibernate-validator-constraints) - [Hibernate One to Many Annotation Tutorial](http://www.baeldung.com/hibernate-one-to-many) +- [Hibernate @WhereJoinTable Annotation](https://www.baeldung.com/hibernate-wherejointable) From 271b3e4de437139282e5c36c75c16332b5ee9177 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 20:30:42 +0800 Subject: [PATCH 142/265] Update README.md --- core-java-modules/core-java-io-2/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core-java-modules/core-java-io-2/README.md b/core-java-modules/core-java-io-2/README.md index 2299320f32..f7a2cb2c0c 100644 --- a/core-java-modules/core-java-io-2/README.md +++ b/core-java-modules/core-java-io-2/README.md @@ -3,4 +3,4 @@ - [Create a File in a Specific Directory in Java](https://www.baeldung.com/java-create-file-in-directory) - [A Guide to the Java FileReader Class](https://www.baeldung.com/java-filereader) - +- [The Java File Class](https://www.baeldung.com/java-io-file) From a4c3c7914a08edfdef2d600f63733559f27a8629 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 20:33:56 +0800 Subject: [PATCH 143/265] Create README.md --- core-java-modules/core-java-security-manager/README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 core-java-modules/core-java-security-manager/README.md diff --git a/core-java-modules/core-java-security-manager/README.md b/core-java-modules/core-java-security-manager/README.md new file mode 100644 index 0000000000..68dd9d5223 --- /dev/null +++ b/core-java-modules/core-java-security-manager/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: + +-[Intro to the Java SecurityManager](https://www.baeldung.com/java-security-manager) From 77afc8a81b158cf82a60c0745de60a357959feb2 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 20:34:10 +0800 Subject: [PATCH 144/265] Update README.md --- core-java-modules/core-java-security-manager/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core-java-modules/core-java-security-manager/README.md b/core-java-modules/core-java-security-manager/README.md index 68dd9d5223..a4abe7f80a 100644 --- a/core-java-modules/core-java-security-manager/README.md +++ b/core-java-modules/core-java-security-manager/README.md @@ -1,3 +1,3 @@ ### Relevant Articles: --[Intro to the Java SecurityManager](https://www.baeldung.com/java-security-manager) +- [Intro to the Java SecurityManager](https://www.baeldung.com/java-security-manager) From 41f2c7eea18ab10788ff8ee0499790efd6af7a1b Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 20:36:17 +0800 Subject: [PATCH 145/265] Update README.md --- core-kotlin-2/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-kotlin-2/README.md b/core-kotlin-2/README.md index ecf16c2c91..06dda396d9 100644 --- a/core-kotlin-2/README.md +++ b/core-kotlin-2/README.md @@ -12,4 +12,5 @@ This module contains articles about core Kotlin. - [Split a List into Parts in Kotlin](https://www.baeldung.com/kotlin-split-list-into-parts) - [String Comparison in Kotlin](https://www.baeldung.com/kotlin-string-comparison) - [Guide to JVM Platform Annotations in Kotlin](https://www.baeldung.com/kotlin-jvm-annotations) +- [Finding an Element in a List Using Kotlin](https://www.baeldung.com/kotlin-finding-element-in-list) - More articles: [[<-- prev]](/core-kotlin) From 9161a675b82d0717d5edf49a1198440805d61f79 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 20:37:44 +0800 Subject: [PATCH 146/265] Update README.md --- testing-modules/spring-testing/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/testing-modules/spring-testing/README.md b/testing-modules/spring-testing/README.md index 1b06c13953..2427dfabbe 100644 --- a/testing-modules/spring-testing/README.md +++ b/testing-modules/spring-testing/README.md @@ -6,3 +6,4 @@ - [How to Test the @Scheduled Annotation](https://www.baeldung.com/spring-testing-scheduled-annotation) - [Using SpringJUnit4ClassRunner with Parameterized](https://www.baeldung.com/springjunit4classrunner-parameterized) - [Override Properties in Spring’s Tests](https://www.baeldung.com/spring-tests-override-properties) +- [A Quick Guide to @DirtiesContext](https://www.baeldung.com/spring-dirtiescontext) From a658d67165a7617e05c92c58d99688aacd4ae046 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 20:38:55 +0800 Subject: [PATCH 147/265] Update README.md --- spring-mvc-simple-2/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-mvc-simple-2/README.md b/spring-mvc-simple-2/README.md index 09a2370f57..18e5dd369b 100644 --- a/spring-mvc-simple-2/README.md +++ b/spring-mvc-simple-2/README.md @@ -8,4 +8,5 @@ This module contains articles about Spring MVC - [Validating Lists in a Spring Controller](https://www.baeldung.com/spring-validate-list-controller) - [Spring Validation Message Interpolation](https://www.baeldung.com/spring-validation-message-interpolation) - [Using a Slash Character in Spring URLs](https://www.baeldung.com/spring-slash-character-in-url) +- [Using Enums as Request Parameters in Spring](https://www.baeldung.com/spring-enum-request-param) - More articles: [[<-- prev]](/spring-mvc-simple) From 112850073229cfed2c18b20b70b4f1a5a7b092f6 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 20:40:19 +0800 Subject: [PATCH 148/265] Update README.md --- spring-cloud/spring-cloud-stream/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-cloud/spring-cloud-stream/README.md b/spring-cloud/spring-cloud-stream/README.md index fd1eeccfda..1fb0647ee3 100644 --- a/spring-cloud/spring-cloud-stream/README.md +++ b/spring-cloud/spring-cloud-stream/README.md @@ -4,3 +4,4 @@ This module contains articles about Spring Cloud Stream ## Relevant Articles - [Introduction to Spring Cloud Stream](http://www.baeldung.com/spring-cloud-stream) +- [Integrating Spring with AWS Kinesis](https://www.baeldung.com/spring-aws-kinesis) From 9549ba9a6e9f456c9e85be99511b551129859633 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 20:42:53 +0800 Subject: [PATCH 149/265] Update README.md --- spring-mvc-simple-2/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-mvc-simple-2/README.md b/spring-mvc-simple-2/README.md index 18e5dd369b..cff8891a1a 100644 --- a/spring-mvc-simple-2/README.md +++ b/spring-mvc-simple-2/README.md @@ -9,4 +9,5 @@ This module contains articles about Spring MVC - [Spring Validation Message Interpolation](https://www.baeldung.com/spring-validation-message-interpolation) - [Using a Slash Character in Spring URLs](https://www.baeldung.com/spring-slash-character-in-url) - [Using Enums as Request Parameters in Spring](https://www.baeldung.com/spring-enum-request-param) +- [Excluding URLs for a Filter in a Spring Web Application](https://www.baeldung.com/spring-exclude-filter) - More articles: [[<-- prev]](/spring-mvc-simple) From 201166f4a90462690d75acbec098da3fbfde3eba Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 20:44:36 +0800 Subject: [PATCH 150/265] Update README.md --- core-java-modules/core-java-io-2/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-io-2/README.md b/core-java-modules/core-java-io-2/README.md index f7a2cb2c0c..867b7ad732 100644 --- a/core-java-modules/core-java-io-2/README.md +++ b/core-java-modules/core-java-io-2/README.md @@ -4,3 +4,4 @@ - [Create a File in a Specific Directory in Java](https://www.baeldung.com/java-create-file-in-directory) - [A Guide to the Java FileReader Class](https://www.baeldung.com/java-filereader) - [The Java File Class](https://www.baeldung.com/java-io-file) +- [Java FileWriter](https://www.baeldung.com/java-filewriter) From 6c177407c845be2da94516f847eb6d44d4a36ff8 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 20:47:45 +0800 Subject: [PATCH 151/265] Update README.md --- java-collections-maps/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/java-collections-maps/README.md b/java-collections-maps/README.md index 87fefe1b9d..dfd0d47dbc 100644 --- a/java-collections-maps/README.md +++ b/java-collections-maps/README.md @@ -4,7 +4,7 @@ This module contains articles about Map data structures in Java. ### Relevant Articles: - [Guide to the Guava BiMap](https://www.baeldung.com/guava-bimap) -- [The Java HashMap Under the Hood](https://www.baeldung.com/java-hashmap) +- [A Guide to Java HashMap](https://www.baeldung.com/java-hashmap) - [A Guide to LinkedHashMap in Java](https://www.baeldung.com/java-linked-hashmap) - [A Guide to TreeMap in Java](https://www.baeldung.com/java-treemap) - [How to Store Duplicate Keys in a Map in Java?](https://www.baeldung.com/java-map-duplicate-keys) @@ -13,4 +13,5 @@ This module contains articles about Map data structures in Java. - [Comparing Two HashMaps in Java](https://www.baeldung.com/java-compare-hashmaps) - [Immutable Map Implementations in Java](https://www.baeldung.com/java-immutable-maps) - [Guide to Apache Commons MultiValuedMap](https://www.baeldung.com/apache-commons-multi-valued-map) +- [The Java HashMap Under the Hood](https://www.baeldung.com/java-hashmap-advanced) - More articles: [[next -->]](/../java-collections-maps-2) From 149153e09ea587e4e356a5c37a0b3100d07d15d3 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 20:49:31 +0800 Subject: [PATCH 152/265] Update README.md --- algorithms-miscellaneous-3/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/algorithms-miscellaneous-3/README.md b/algorithms-miscellaneous-3/README.md index 1a113a4f89..93426b3e0d 100644 --- a/algorithms-miscellaneous-3/README.md +++ b/algorithms-miscellaneous-3/README.md @@ -17,4 +17,5 @@ This module contains articles about algorithms. Some classes of algorithms, e.g. - [Interpolation Search in Java](https://www.baeldung.com/java-interpolation-search) - [The K-Means Clustering Algorithm in Java](https://www.baeldung.com/java-k-means-clustering-algorithm) - [Creating a Custom Annotation in Java](https://www.baeldung.com/java-custom-annotation) +- [Breadth-First Search Algorithm in Java](https://www.baeldung.com/java-breadth-first-search) - More articles: [[<-- prev]](/algorithms-miscellaneous-2) [[next -->]](/algorithms-miscellaneous-4) From 3ff80e5684a633e11aa2cf5ebbcc82005ccb77e2 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 20:50:36 +0800 Subject: [PATCH 153/265] Update README.md --- libraries-security/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/libraries-security/README.md b/libraries-security/README.md index 68badcf12d..819bc866cf 100644 --- a/libraries-security/README.md +++ b/libraries-security/README.md @@ -9,3 +9,4 @@ This module contains articles about security libraries. - [Guide to Google Tink](https://www.baeldung.com/google-tink) - [Introduction to BouncyCastle with Java](https://www.baeldung.com/java-bouncy-castle) - [Intro to Jasypt](https://www.baeldung.com/jasypt) +- [Digital Signature in Java](https://www.baeldung.com/java-digital-signature) From 578ee20d24c66c1c6421f1ae78afeba693ca79b8 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 20:52:39 +0800 Subject: [PATCH 154/265] Update README.md --- libraries-2/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libraries-2/README.md b/libraries-2/README.md index fd1f73c386..95c454edbb 100644 --- a/libraries-2/README.md +++ b/libraries-2/README.md @@ -18,6 +18,7 @@ Remember, for advanced libraries like [Jackson](/jackson) and [JUnit](/testing-m - [Key Value Store with Chronicle Map](https://www.baeldung.com/java-chronicle-map) - [Guide to MapDB](https://www.baeldung.com/mapdb) - [A Guide to Apache Mesos](https://www.baeldung.com/apache-mesos) -- [JasperReports with Spring](https://www.baeldung.com/spring-jasper) +- [JasperReports with Spring](https://www.baeldung.com/spring-jasper)] +- [Jetty ReactiveStreams HTTP Client](https://www.baeldung.com/jetty-reactivestreams-http-client) - More articles [[<-- prev]](/libraries) From fb5a73f793bd8479c0fd8aa05bf8fd33c9dbf45e Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 20:53:29 +0800 Subject: [PATCH 155/265] Update README.md --- spring-batch/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-batch/README.md b/spring-batch/README.md index 95abbaf931..9e09612490 100644 --- a/spring-batch/README.md +++ b/spring-batch/README.md @@ -7,3 +7,4 @@ This module contains articles about Spring Batch - [Spring Batch using Partitioner](https://www.baeldung.com/spring-batch-partitioner) - [Spring Batch – Tasklets vs Chunks](https://www.baeldung.com/spring-batch-tasklet-chunk) - [How to Trigger and Stop a Scheduled Spring Batch Job](https://www.baeldung.com/spring-batch-start-stop-job) +- [Configuring Skip Logic in Spring Batch](https://www.baeldung.com/spring-batch-skip-logic) From c840d817d8a31faa54dec2dad2ec26493de9932f Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 20:55:06 +0800 Subject: [PATCH 156/265] Update README.md --- core-java-modules/core-java-collections-list-2/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core-java-modules/core-java-collections-list-2/README.md b/core-java-modules/core-java-collections-list-2/README.md index fada9d96ac..0d2da41b41 100644 --- a/core-java-modules/core-java-collections-list-2/README.md +++ b/core-java-modules/core-java-collections-list-2/README.md @@ -11,4 +11,5 @@ This module contains articles about the Java List collection - [Ways to Iterate Over a List in Java](https://www.baeldung.com/java-iterate-list) - [Flattening Nested Collections in Java](http://www.baeldung.com/java-flatten-nested-collections) - [Intersection of Two Lists in Java](https://www.baeldung.com/java-lists-intersection) -- [[<-- Prev]](/core-java-modules/core-java-collections-list)[[Next -->]](/core-java-modules/core-java-collections-list-3) \ No newline at end of file +- [Searching for a String in an ArrayList](https://www.baeldung.com/java-search-string-arraylist) +- [[<-- Prev]](/core-java-modules/core-java-collections-list)[[Next -->]](/core-java-modules/core-java-collections-list-3) From dcce44b543c5b7c98171b0455ed477eee31fc6c6 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 21:14:53 +0800 Subject: [PATCH 157/265] Update README.md --- core-java-modules/core-java/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core-java-modules/core-java/README.md b/core-java-modules/core-java/README.md index 436a481803..3826644b0c 100644 --- a/core-java-modules/core-java/README.md +++ b/core-java-modules/core-java/README.md @@ -41,7 +41,7 @@ - [Abstract Classes in Java](https://www.baeldung.com/java-abstract-class) - [Guide to Character Encoding](https://www.baeldung.com/java-char-encoding) - [Graphs in Java](https://www.baeldung.com/java-graphs) -- [Console I/O in Java](http://www.baeldung.com/java-console-input-output) +- [Read and Write User Input in Java](http://www.baeldung.com/java-console-input-output) - [Formatting with printf() in Java](https://www.baeldung.com/java-printstream-printf) - [Retrieve Fields from a Java Class Using Reflection](https://www.baeldung.com/java-reflection-class-fields) - [Introduction to Basic Syntax in Java](https://www.baeldung.com/java-syntax) From 1259bee61d09423c1e96b4bf89c39a5a77da905d Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 18 Oct 2019 21:19:38 +0800 Subject: [PATCH 158/265] Update README.md --- core-java-modules/core-java-string-conversions-2/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core-java-modules/core-java-string-conversions-2/README.md b/core-java-modules/core-java-string-conversions-2/README.md index b4da1b8bad..afdd7e5760 100644 --- a/core-java-modules/core-java-string-conversions-2/README.md +++ b/core-java-modules/core-java-string-conversions-2/README.md @@ -5,5 +5,5 @@ This module contains articles about string conversions from/to another type. ### Relevant Articles: - [Java String Conversions](https://www.baeldung.com/java-string-conversions) - [Convert String to Byte Array and Reverse in Java](https://www.baeldung.com/java-string-to-byte-array) -- [Convert Char Array to String](https://www.baeldung.com/java-char-array-to-string) +- [Convert Character Array to String in Java](https://www.baeldung.com/java-char-array-to-string) - More articles: [[<-- prev]](/core-java-string-conversions) From ba4c7594a63ff1bb4ecb504e3851ef453c96a173 Mon Sep 17 00:00:00 2001 From: Lukasz Rys <> Date: Fri, 18 Oct 2019 19:40:55 +0200 Subject: [PATCH 159/265] [ BAEL-3322 ] : Change method test names --- .../java/com/baeldung/jimfs/FileManipulationUnitTest.java | 4 ++-- .../java/com/baeldung/jimfs/FilePathReaderUnitTest.java | 4 ++-- .../java/com/baeldung/jimfs/FileRepositoryUnitTest.java | 8 ++++---- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/testing-modules/mocks/src/test/java/com/baeldung/jimfs/FileManipulationUnitTest.java b/testing-modules/mocks/src/test/java/com/baeldung/jimfs/FileManipulationUnitTest.java index a7cb8e53c6..05f3405e57 100644 --- a/testing-modules/mocks/src/test/java/com/baeldung/jimfs/FileManipulationUnitTest.java +++ b/testing-modules/mocks/src/test/java/com/baeldung/jimfs/FileManipulationUnitTest.java @@ -24,9 +24,9 @@ class FileManipulationUnitTest implements FileTestProvider { } @ParameterizedTest - @DisplayName("Should create a file on a file system") + @DisplayName("Should move file to new destination") @MethodSource("provideFileSystem") - void shouldCreateFile(final FileSystem fileSystem) throws Exception { + void givenEachSystem_whenMovingFile_thenMovedToNewPath(final FileSystem fileSystem) throws Exception { final Path origin = fileSystem.getPath(RESOURCE_FILE_NAME); Files.copy(getResourceFilePath(), origin); final Path destination = fileSystem.getPath("newDirectory", RESOURCE_FILE_NAME); diff --git a/testing-modules/mocks/src/test/java/com/baeldung/jimfs/FilePathReaderUnitTest.java b/testing-modules/mocks/src/test/java/com/baeldung/jimfs/FilePathReaderUnitTest.java index e5326fc84c..f95b76a86d 100644 --- a/testing-modules/mocks/src/test/java/com/baeldung/jimfs/FilePathReaderUnitTest.java +++ b/testing-modules/mocks/src/test/java/com/baeldung/jimfs/FilePathReaderUnitTest.java @@ -19,7 +19,7 @@ class FilePathReaderUnitTest { @Test @DisplayName("Should get path on windows") - void shouldGetPath_onWindows() throws Exception { + void givenWindowsSystem_shouldGetPath_thenReturnWindowsPath() throws Exception { final FileSystem fileSystem = Jimfs.newFileSystem(Configuration.windows()); final Path path = getPathToFile(fileSystem); @@ -30,7 +30,7 @@ class FilePathReaderUnitTest { @Test @DisplayName("Should get path on unix") - void shouldGetPath_onUnix() throws Exception { + void givenUnixSystem_shouldGetPath_thenReturnUnixPath() throws Exception { final FileSystem fileSystem = Jimfs.newFileSystem(Configuration.unix()); final Path path = getPathToFile(fileSystem); diff --git a/testing-modules/mocks/src/test/java/com/baeldung/jimfs/FileRepositoryUnitTest.java b/testing-modules/mocks/src/test/java/com/baeldung/jimfs/FileRepositoryUnitTest.java index ebb95e79ac..b7dc1f91de 100644 --- a/testing-modules/mocks/src/test/java/com/baeldung/jimfs/FileRepositoryUnitTest.java +++ b/testing-modules/mocks/src/test/java/com/baeldung/jimfs/FileRepositoryUnitTest.java @@ -17,7 +17,7 @@ class FileRepositoryUnitTest implements FileTestProvider { @Test @DisplayName("Should create a file on a file system") - void shouldCreateFile() { + void givenUnixSystem_whenCreatingFile_thenCreatedInPath() { final FileSystem fileSystem = Jimfs.newFileSystem(Configuration.unix()); final String fileName = "newFile.txt"; final Path pathToStore = fileSystem.getPath(""); @@ -29,7 +29,7 @@ class FileRepositoryUnitTest implements FileTestProvider { @Test @DisplayName("Should read the content of the file") - void shouldReadFileContent_thenReturnIt() throws Exception { + void givenOSXSystem_whenReadingFile_thenContentIsReturned() throws Exception { final FileSystem fileSystem = Jimfs.newFileSystem(Configuration.osX()); final Path resourceFilePath = fileSystem.getPath(RESOURCE_FILE_NAME); Files.copy(getResourceFilePath(), resourceFilePath); @@ -41,7 +41,7 @@ class FileRepositoryUnitTest implements FileTestProvider { @Test @DisplayName("Should update the content of the file") - void shouldUpdateContentOfTheFile() throws Exception { + void givenWindowsSystem_whenUpdatingFile_thenContentHasChanged() throws Exception { final FileSystem fileSystem = Jimfs.newFileSystem(Configuration.windows()); final Path resourceFilePath = fileSystem.getPath(RESOURCE_FILE_NAME); Files.copy(getResourceFilePath(), resourceFilePath); @@ -55,7 +55,7 @@ class FileRepositoryUnitTest implements FileTestProvider { @Test @DisplayName("Should delete file") - void shouldDeleteFile() throws Exception { + void givenRandomSystem_whenDeletingFile_thenFileHasBeenDeleted() throws Exception { final FileSystem fileSystem = Jimfs.newFileSystem(); final Path resourceFilePath = fileSystem.getPath(RESOURCE_FILE_NAME); Files.copy(getResourceFilePath(), resourceFilePath); From bb0178340dd165664d2ffa4e4e94776d6f89c388 Mon Sep 17 00:00:00 2001 From: Lukasz Rys <> Date: Fri, 18 Oct 2019 20:04:51 +0200 Subject: [PATCH 160/265] [ BAEL-3322 ] : Change naming, add final --- .../src/main/java/com/baeldung/jimfs/FilePathReader.java | 5 +++-- .../test/java/com/baeldung/jimfs/FileRepositoryUnitTest.java | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/testing-modules/mocks/src/main/java/com/baeldung/jimfs/FilePathReader.java b/testing-modules/mocks/src/main/java/com/baeldung/jimfs/FilePathReader.java index 3504207125..9c5371910e 100644 --- a/testing-modules/mocks/src/main/java/com/baeldung/jimfs/FilePathReader.java +++ b/testing-modules/mocks/src/main/java/com/baeldung/jimfs/FilePathReader.java @@ -5,12 +5,13 @@ import java.io.UncheckedIOException; import java.nio.file.Path; class FilePathReader { - String getSystemPath(Path path) { + + String getSystemPath(final Path path) { try { return path .toRealPath() .toString(); - } catch (IOException ex) { + } catch (final IOException ex) { throw new UncheckedIOException(ex); } } diff --git a/testing-modules/mocks/src/test/java/com/baeldung/jimfs/FileRepositoryUnitTest.java b/testing-modules/mocks/src/test/java/com/baeldung/jimfs/FileRepositoryUnitTest.java index b7dc1f91de..c72c2f1a1f 100644 --- a/testing-modules/mocks/src/test/java/com/baeldung/jimfs/FileRepositoryUnitTest.java +++ b/testing-modules/mocks/src/test/java/com/baeldung/jimfs/FileRepositoryUnitTest.java @@ -55,7 +55,7 @@ class FileRepositoryUnitTest implements FileTestProvider { @Test @DisplayName("Should delete file") - void givenRandomSystem_whenDeletingFile_thenFileHasBeenDeleted() throws Exception { + void givenCurrentSystem_whenDeletingFile_thenFileHasBeenDeleted() throws Exception { final FileSystem fileSystem = Jimfs.newFileSystem(); final Path resourceFilePath = fileSystem.getPath(RESOURCE_FILE_NAME); Files.copy(getResourceFilePath(), resourceFilePath); From f0df9a7998b9c02bf131e63b857c85f87fcfb665 Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Fri, 18 Oct 2019 23:39:07 +0530 Subject: [PATCH 161/265] BAEL-17684 Pom properties cleanup --- ddd/pom.xml | 4 --- disruptor/pom.xml | 11 +-------- dozer/pom.xml | 1 - dubbo/pom.xml | 1 - ethereum/pom.xml | 3 --- flyway-cdi-extension/pom.xml | 3 --- google-web-toolkit/pom.xml | 1 - gson/pom.xml | 1 - guava-collections-map/pom.xml | 6 ----- guava-collections-set/pom.xml | 3 --- guava-collections/pom.xml | 2 -- guava-io/pom.xml | 1 - guava-modules/guava-18/pom.xml | 4 --- guava-modules/guava-19/pom.xml | 4 --- guava-modules/guava-21/pom.xml | 1 - guava/pom.xml | 4 --- hazelcast/pom.xml | 1 - httpclient-simple/pom.xml | 1 - httpclient/pom.xml | 45 ---------------------------------- hystrix/pom.xml | 14 ----------- 20 files changed, 1 insertion(+), 110 deletions(-) diff --git a/ddd/pom.xml b/ddd/pom.xml index 4ac65ea841..c249007ba4 100644 --- a/ddd/pom.xml +++ b/ddd/pom.xml @@ -3,7 +3,6 @@ 4.0.0 com.baeldung.ddd ddd - 0.0.1-SNAPSHOT ddd jar DDD series examples @@ -35,7 +34,6 @@ org.junit.platform junit-platform-launcher - ${junit-platform.version} test @@ -85,8 +83,6 @@ 1.0.1 - 2.22.0 - 2.0.6.RELEASE \ No newline at end of file diff --git a/disruptor/pom.xml b/disruptor/pom.xml index e1d78e7ed6..a4859d4bae 100644 --- a/disruptor/pom.xml +++ b/disruptor/pom.xml @@ -1,7 +1,6 @@ 4.0.0 - com.baeldung disruptor 0.1.0-SNAPSHOT disruptor @@ -15,11 +14,6 @@ - - org.apache.commons - commons-lang3 - ${commons-lang3.version} - com.lmax disruptor @@ -116,10 +110,7 @@ 3.3.6 - - 6.10 - 3.6.1 - + 2.4.3 3.0.2 1.4.4 diff --git a/dozer/pom.xml b/dozer/pom.xml index 8234eb4c79..c781962d83 100644 --- a/dozer/pom.xml +++ b/dozer/pom.xml @@ -1,7 +1,6 @@ 4.0.0 - com.baeldung dozer 1.0 dozer diff --git a/dubbo/pom.xml b/dubbo/pom.xml index 9fe228bf89..947175b6a0 100644 --- a/dubbo/pom.xml +++ b/dubbo/pom.xml @@ -32,7 +32,6 @@ 2.5.7 3.4.11 0.10 - 2.19.1 diff --git a/ethereum/pom.xml b/ethereum/pom.xml index 80e1c04676..f4850df844 100644 --- a/ethereum/pom.xml +++ b/ethereum/pom.xml @@ -3,7 +3,6 @@ 4.0.0 com.baeldung.ethereum ethereum - 0.0.1-SNAPSHOT ethereum @@ -207,8 +206,6 @@ - UTF-8 - 8.5.4 1.5.0-RELEASE 3.3.1 1.5.6.RELEASE diff --git a/flyway-cdi-extension/pom.xml b/flyway-cdi-extension/pom.xml index e8b327e35f..49bd6bd9fd 100644 --- a/flyway-cdi-extension/pom.xml +++ b/flyway-cdi-extension/pom.xml @@ -3,7 +3,6 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - com.baeldung flyway-cdi-extension 1.0-SNAPSHOT flyway-cdi-extension @@ -51,8 +50,6 @@ - 1.8 - 1.8 2.0.SP1 3.0.5.Final 5.1.4 diff --git a/google-web-toolkit/pom.xml b/google-web-toolkit/pom.xml index 0723cd3be2..8a7cb87701 100644 --- a/google-web-toolkit/pom.xml +++ b/google-web-toolkit/pom.xml @@ -5,7 +5,6 @@ 4.0.0 - com.baeldung google-web-toolkit 1.0-SNAPSHOT google-web-toolkit diff --git a/gson/pom.xml b/gson/pom.xml index 9d2cf630d0..4aa6c00458 100644 --- a/gson/pom.xml +++ b/gson/pom.xml @@ -2,7 +2,6 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - com.baeldung gson 0.1-SNAPSHOT gson diff --git a/guava-collections-map/pom.xml b/guava-collections-map/pom.xml index 45bb6b8caa..21597d0e28 100644 --- a/guava-collections-map/pom.xml +++ b/guava-collections-map/pom.xml @@ -13,9 +13,6 @@ ../parent-java - - - guava-collections-map @@ -26,7 +23,4 @@ - - - \ No newline at end of file diff --git a/guava-collections-set/pom.xml b/guava-collections-set/pom.xml index 46dcae492d..640a28c4c1 100644 --- a/guava-collections-set/pom.xml +++ b/guava-collections-set/pom.xml @@ -1,7 +1,6 @@ 4.0.0 - com.baeldung guava-collections-set 0.1.0-SNAPSHOT guava-collections-set @@ -28,8 +27,6 @@ - - 27.1-jre 3.6.1 diff --git a/guava-collections/pom.xml b/guava-collections/pom.xml index 8cdb086029..9dfcceaab8 100644 --- a/guava-collections/pom.xml +++ b/guava-collections/pom.xml @@ -1,7 +1,6 @@ 4.0.0 - com.baeldung guava-collections 0.1.0-SNAPSHOT guava-collections @@ -54,7 +53,6 @@ - 24.0-jre 4.1 diff --git a/guava-io/pom.xml b/guava-io/pom.xml index 2a66baba80..aaaf7edd4e 100644 --- a/guava-io/pom.xml +++ b/guava-io/pom.xml @@ -1,7 +1,6 @@ 4.0.0 - com.baeldung guava-io 0.1.0-SNAPSHOT guava-io diff --git a/guava-modules/guava-18/pom.xml b/guava-modules/guava-18/pom.xml index d55aa9ce82..199d735a41 100644 --- a/guava-modules/guava-18/pom.xml +++ b/guava-modules/guava-18/pom.xml @@ -13,8 +13,4 @@ ../../parent-java - - 18.0 - - \ No newline at end of file diff --git a/guava-modules/guava-19/pom.xml b/guava-modules/guava-19/pom.xml index 0548bb0c1f..c431f78cf7 100644 --- a/guava-modules/guava-19/pom.xml +++ b/guava-modules/guava-19/pom.xml @@ -13,8 +13,4 @@ ../../parent-java - - 19.0 - - \ No newline at end of file diff --git a/guava-modules/guava-21/pom.xml b/guava-modules/guava-21/pom.xml index bdb1058a48..150ce2d4d2 100644 --- a/guava-modules/guava-21/pom.xml +++ b/guava-modules/guava-21/pom.xml @@ -22,7 +22,6 @@ - 21.0 0.9.12 diff --git a/guava/pom.xml b/guava/pom.xml index 3a19901a02..fb8989111c 100644 --- a/guava/pom.xml +++ b/guava/pom.xml @@ -1,7 +1,6 @@ 4.0.0 - com.baeldung guava 0.1.0-SNAPSHOT guava @@ -41,9 +40,6 @@ - - 24.0-jre - 3.6.1 diff --git a/hazelcast/pom.xml b/hazelcast/pom.xml index 705792ad05..9e0b0671d0 100644 --- a/hazelcast/pom.xml +++ b/hazelcast/pom.xml @@ -1,7 +1,6 @@ 4.0.0 - com.baeldung hazelcast 0.0.1-SNAPSHOT hazelcast diff --git a/httpclient-simple/pom.xml b/httpclient-simple/pom.xml index b2b0f98dd1..183c4438de 100644 --- a/httpclient-simple/pom.xml +++ b/httpclient-simple/pom.xml @@ -1,7 +1,6 @@ 4.0.0 - com.baeldung httpclient-simple 0.1-SNAPSHOT httpclient-simple diff --git a/httpclient/pom.xml b/httpclient/pom.xml index 8cd483cfc6..6316ee4eed 100644 --- a/httpclient/pom.xml +++ b/httpclient/pom.xml @@ -1,7 +1,6 @@ 4.0.0 - com.baeldung httpclient 0.1-SNAPSHOT httpclient @@ -48,11 +47,6 @@ httpmime ${httpclient.version} - - commons-codec - commons-codec - ${commons-codec.version} - org.apache.httpcomponents httpasyncclient @@ -82,51 +76,12 @@ - - - live - - - - org.apache.maven.plugins - maven-surefire-plugin - - - integration-test - - test - - - - **/*ManualTest.java - - - **/*LiveTest.java - - - - - - - json - - - - - - - - - 19.0 - 1.10 4.1.4 2.5.1 4.5.8 - - 1.6.1 \ No newline at end of file diff --git a/hystrix/pom.xml b/hystrix/pom.xml index e08af2c40f..4aeb47f095 100644 --- a/hystrix/pom.xml +++ b/hystrix/pom.xml @@ -41,23 +41,11 @@ hystrix-metrics-event-stream ${hystrix-metrics-event-stream.version} - com.netflix.rxjava rxjava-core ${rxjava-core.version} - - org.hamcrest - hamcrest-all - ${hamcrest-all.version} - test - - - org.springframework - spring-test - test - @@ -65,9 +53,7 @@ 1.5.8 0.20.7 - 2.7 1.5.8 - 1.5.8 From 9405318805ceeb2e389ea497c3d178f7d2130b2d Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Fri, 18 Oct 2019 23:48:22 +0530 Subject: [PATCH 162/265] BAEL-17684 Pom properties cleanup --- disruptor/pom.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/disruptor/pom.xml b/disruptor/pom.xml index a4859d4bae..213331f25c 100644 --- a/disruptor/pom.xml +++ b/disruptor/pom.xml @@ -14,6 +14,11 @@ + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + com.lmax disruptor From 88a83f5d2c0eb15ffd574ddb9b3ed929bf497694 Mon Sep 17 00:00:00 2001 From: Vivek Balasubramaniam Date: Sat, 19 Oct 2019 17:46:30 +0530 Subject: [PATCH 163/265] BAEL-3091: The Prototype Pattern in Java (Code review comments) --- .../src/main/java/com/baeldung/prototype/Tree.java | 8 ++++---- .../main/java/com/baeldung/prototype/TreeCloneable.java | 7 ------- .../com/baeldung/prototype/TreePrototypeUnitTest.java | 4 ++-- 3 files changed, 6 insertions(+), 13 deletions(-) delete mode 100644 patterns/design-patterns-creational/src/main/java/com/baeldung/prototype/TreeCloneable.java diff --git a/patterns/design-patterns-creational/src/main/java/com/baeldung/prototype/Tree.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/prototype/Tree.java index 242ed2176e..470704765c 100644 --- a/patterns/design-patterns-creational/src/main/java/com/baeldung/prototype/Tree.java +++ b/patterns/design-patterns-creational/src/main/java/com/baeldung/prototype/Tree.java @@ -1,6 +1,6 @@ package com.baeldung.prototype; -public class Tree implements TreeCloneable { +public class Tree implements Cloneable { private double mass; private double height; @@ -36,10 +36,10 @@ public class Tree implements TreeCloneable { } @Override - public TreeCloneable createA_Clone() { - TreeCloneable tree = null; + public Tree clone() { + Tree tree = null; try { - tree = (TreeCloneable) super.clone(); + tree = (Tree) super.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } diff --git a/patterns/design-patterns-creational/src/main/java/com/baeldung/prototype/TreeCloneable.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/prototype/TreeCloneable.java deleted file mode 100644 index e554058624..0000000000 --- a/patterns/design-patterns-creational/src/main/java/com/baeldung/prototype/TreeCloneable.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.baeldung.prototype; - -public interface TreeCloneable extends Cloneable { - - public TreeCloneable createA_Clone(); - -} diff --git a/patterns/design-patterns-creational/src/test/java/com/baeldung/prototype/TreePrototypeUnitTest.java b/patterns/design-patterns-creational/src/test/java/com/baeldung/prototype/TreePrototypeUnitTest.java index 7f260c52bf..0d06da53d6 100644 --- a/patterns/design-patterns-creational/src/test/java/com/baeldung/prototype/TreePrototypeUnitTest.java +++ b/patterns/design-patterns-creational/src/test/java/com/baeldung/prototype/TreePrototypeUnitTest.java @@ -12,10 +12,10 @@ public class TreePrototypeUnitTest { double height = 3.7; Position position = new Position(3, 7); Position otherPosition = new Position(4, 8); - + Tree tree = new Tree(mass, height); tree.setPosition(position); - Tree anotherTree = (Tree) tree.createA_Clone(); + Tree anotherTree = tree.clone(); anotherTree.setPosition(otherPosition); assertEquals(position, tree.getPosition()); From a5f90502fc8a584646102416fcb258bc13924d62 Mon Sep 17 00:00:00 2001 From: Vivek Balasubramaniam Date: Sat, 19 Oct 2019 18:00:56 +0530 Subject: [PATCH 164/265] Minor changes to the toString() method --- .../src/main/java/com/baeldung/prototype/Tree.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/patterns/design-patterns-creational/src/main/java/com/baeldung/prototype/Tree.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/prototype/Tree.java index 470704765c..f95d568647 100644 --- a/patterns/design-patterns-creational/src/main/java/com/baeldung/prototype/Tree.java +++ b/patterns/design-patterns-creational/src/main/java/com/baeldung/prototype/Tree.java @@ -48,7 +48,7 @@ public class Tree implements Cloneable { @Override public String toString() { - return "SomeTree [mass=" + mass + ", height=" + height + ", position=" + position + "]"; + return "Tree [mass=" + mass + ", height=" + height + ", position=" + position + "]"; } } From 46fc338771866c1e38e279232d13685dc1dffd77 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Sat, 19 Oct 2019 20:34:19 +0800 Subject: [PATCH 165/265] Update README.md --- spring-boot-artifacts/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spring-boot-artifacts/README.md b/spring-boot-artifacts/README.md index 4025e43a65..876954e858 100644 --- a/spring-boot-artifacts/README.md +++ b/spring-boot-artifacts/README.md @@ -7,4 +7,5 @@ This module contains articles about configuring the Spring Boot build process. - [Create a Fat Jar App with Spring Boot](https://www.baeldung.com/deployable-fat-jar-spring-boot) - [Intro to Spring Boot Starters](https://www.baeldung.com/spring-boot-starters) - [Introduction to WebJars](https://www.baeldung.com/maven-webjars) - - [A Quick Guide to Maven Wrapper](https://www.baeldung.com/maven-wrapper) \ No newline at end of file + - [A Quick Guide to Maven Wrapper](https://www.baeldung.com/maven-wrapper) + - [Running a Spring Boot App with Maven vs an Executable War/Jar](https://www.baeldung.com/spring-boot-run-maven-vs-executable-jar) From 19811fdef9036a2a56d9ccb92112432efdcd63aa Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Sat, 19 Oct 2019 15:52:22 +0200 Subject: [PATCH 166/265] #BAEL-10229 Remove the spring-boot-dependencies --- ethereum/pom.xml | 31 ++------------ parent-boot-2/pom.xml | 2 +- parent-kotlin/pom.xml | 16 +------- spring-5-webflux/pom.xml | 16 -------- spring-batch/pom.xml | 27 +----------- spring-boot-admin/pom.xml | 22 ++-------- .../greeter-spring-boot-sample-app/pom.xml | 17 +------- spring-boot-kotlin/pom.xml | 14 ------- .../spring-boot-with-custom-parent/pom.xml | 17 +------- spring-ejb/pom.xml | 4 +- spring-ejb/spring-ejb-client/pom.xml | 12 ------ spring-jinq/pom.xml | 17 +------- .../load-testing-comparison/pom.xml | 41 ++----------------- 13 files changed, 23 insertions(+), 213 deletions(-) diff --git a/ethereum/pom.xml b/ethereum/pom.xml index 80e1c04676..1086b09833 100644 --- a/ethereum/pom.xml +++ b/ethereum/pom.xml @@ -7,37 +7,18 @@ ethereum - parent-spring-5 + parent-boot-1 com.baeldung 0.0.1-SNAPSHOT - ../parent-spring-5 + ../parent-boot-1 - - - org.springframework.boot - spring-boot-starter - ${spring.boot.version} - - - - org.springframework.boot - spring-boot-starter-web - ${spring.boot.version} - - - org.springframework.boot - spring-boot-starter-tomcat - ${spring.boot.version} - - org.springframework spring-core - ${spring.version} org.springframework @@ -114,12 +95,6 @@ - - org.springframework.boot - spring-boot-starter-test - test - ${spring.boot.version} - org.springframework spring-context @@ -211,7 +186,7 @@ 8.5.4 1.5.0-RELEASE 3.3.1 - 1.5.6.RELEASE + 5.1.9.RELEASE 2.21.0 2.4.0 1.2.3 diff --git a/parent-boot-2/pom.xml b/parent-boot-2/pom.xml index edc115d186..3d727a7467 100644 --- a/parent-boot-2/pom.xml +++ b/parent-boot-2/pom.xml @@ -78,6 +78,6 @@ 3.3.0 1.0.22.RELEASE - 2.1.7.RELEASE + 2.2.0.RELEASE diff --git a/parent-kotlin/pom.xml b/parent-kotlin/pom.xml index bda5fb70e7..910f97c4d4 100644 --- a/parent-kotlin/pom.xml +++ b/parent-kotlin/pom.xml @@ -9,8 +9,8 @@ com.baeldung - parent-modules - 1.0.0-SNAPSHOT + parent-boot-2 + 0.0.1-SNAPSHOT @@ -40,18 +40,6 @@ - - - - org.springframework.boot - spring-boot-dependencies - 2.2.0.M4 - pom - import - - - - org.jetbrains.kotlin diff --git a/spring-5-webflux/pom.xml b/spring-5-webflux/pom.xml index 6887f01753..485fd8f3bf 100644 --- a/spring-5-webflux/pom.xml +++ b/spring-5-webflux/pom.xml @@ -16,18 +16,6 @@ ../parent-boot-2 - - - - org.springframework.boot - spring-boot-dependencies - ${spring-boot.version} - pom - import - - - - org.springframework.boot @@ -97,8 +85,4 @@ https://repo.spring.io/milestone - - - 2.2.0.M3 - diff --git a/spring-batch/pom.xml b/spring-batch/pom.xml index 48d3baeae3..c28d7d6c89 100644 --- a/spring-batch/pom.xml +++ b/spring-batch/pom.xml @@ -10,8 +10,8 @@ com.baeldung - parent-modules - 1.0.0-SNAPSHOT + parent-boot-2 + 0.0.1-SNAPSHOT @@ -75,43 +75,20 @@ ${opencsv.version} - - org.springframework.boot - spring-boot-starter-batch - ${spring.boot.version} - - org.hsqldb hsqldb - 2.5.0 runtime - - org.awaitility - awaitility - ${awaitility.version} - test - - - - org.springframework.boot - spring-boot-starter-test - ${spring.boot.version} - test - - 5.2.0.RELEASE 4.2.0.RELEASE - 2.1.9.RELEASE 3.15.1 4.1 2.3.1 - 3.1.1 diff --git a/spring-boot-admin/pom.xml b/spring-boot-admin/pom.xml index 1c933723e7..c553790359 100644 --- a/spring-boot-admin/pom.xml +++ b/spring-boot-admin/pom.xml @@ -8,8 +8,8 @@ com.baeldung - parent-modules - 1.0.0-SNAPSHOT + parent-boot-2 + 0.0.1-SNAPSHOT @@ -17,20 +17,4 @@ spring-boot-admin-client - - - - org.springframework.boot - spring-boot-dependencies - ${spring.boot.version} - pom - import - - - - - - 2.1.8.RELEASE - - - \ No newline at end of file + diff --git a/spring-boot-custom-starter/greeter-spring-boot-sample-app/pom.xml b/spring-boot-custom-starter/greeter-spring-boot-sample-app/pom.xml index 91cc41d669..1528853b0c 100644 --- a/spring-boot-custom-starter/greeter-spring-boot-sample-app/pom.xml +++ b/spring-boot-custom-starter/greeter-spring-boot-sample-app/pom.xml @@ -7,24 +7,12 @@ greeter-spring-boot-sample-app - spring-boot-custom-starter + parent-boot-1 com.baeldung 0.0.1-SNAPSHOT ../../spring-boot-custom-starter - - - - org.springframework.boot - spring-boot-dependencies - ${spring-boot.version} - pom - import - - - - com.baeldung @@ -51,8 +39,7 @@ - 1.5.15.RELEASE 0.0.1-SNAPSHOT - \ No newline at end of file + diff --git a/spring-boot-kotlin/pom.xml b/spring-boot-kotlin/pom.xml index 25508c52b9..c024f3fda1 100644 --- a/spring-boot-kotlin/pom.xml +++ b/spring-boot-kotlin/pom.xml @@ -30,19 +30,6 @@ - - - - - org.springframework.boot - spring-boot-dependencies - ${spring-boot.version} - pom - import - - - - spring-snapshots @@ -160,7 +147,6 @@ 1.0.0.M7 1.0.0.BUILD-SNAPSHOT 1.2.1 - 2.2.0.M2 diff --git a/spring-boot-parent/spring-boot-with-custom-parent/pom.xml b/spring-boot-parent/spring-boot-with-custom-parent/pom.xml index de2946fbb2..a64ebc246a 100644 --- a/spring-boot-parent/spring-boot-with-custom-parent/pom.xml +++ b/spring-boot-parent/spring-boot-with-custom-parent/pom.xml @@ -10,22 +10,10 @@ com.baeldung - spring-boot-parent - 1.0.0-SNAPSHOT + parent-boot-2 + 0.0.1-SNAPSHOT - - - - org.springframework.boot - spring-boot-dependencies - ${spring-boot.version} - pom - import - - - - org.springframework.boot @@ -35,7 +23,6 @@ 1.8 - 2.1.5.RELEASE diff --git a/spring-ejb/pom.xml b/spring-ejb/pom.xml index 712bfc66ab..126bace9bd 100755 --- a/spring-ejb/pom.xml +++ b/spring-ejb/pom.xml @@ -10,8 +10,8 @@ com.baeldung - parent-modules - 1.0.0-SNAPSHOT + parent-boot-2 + 0.0.1-SNAPSHOT diff --git a/spring-ejb/spring-ejb-client/pom.xml b/spring-ejb/spring-ejb-client/pom.xml index e0348d5ae3..8d4cdd37e8 100644 --- a/spring-ejb/spring-ejb-client/pom.xml +++ b/spring-ejb/spring-ejb-client/pom.xml @@ -13,18 +13,6 @@ 1.0.0-SNAPSHOT - - - - org.springframework.boot - spring-boot-dependencies - 2.0.4.RELEASE - pom - import - - - - org.springframework.boot diff --git a/spring-jinq/pom.xml b/spring-jinq/pom.xml index f142b3ee2f..1661614fa0 100644 --- a/spring-jinq/pom.xml +++ b/spring-jinq/pom.xml @@ -9,8 +9,8 @@ com.baeldung - parent-modules - 1.0.0-SNAPSHOT + parent-boot-1 + 0.0.1-SNAPSHOT @@ -59,20 +59,7 @@ - - - - org.springframework.boot - spring-boot-dependencies - ${spring-boot.version} - pom - import - - - - - 1.5.9.RELEASE 1.8.22 diff --git a/testing-modules/load-testing-comparison/pom.xml b/testing-modules/load-testing-comparison/pom.xml index 2c53657481..6e307a24ca 100644 --- a/testing-modules/load-testing-comparison/pom.xml +++ b/testing-modules/load-testing-comparison/pom.xml @@ -7,10 +7,10 @@ load-testing-comparison - parent-modules + parent-boot-2 com.baeldung - 1.0.0-SNAPSHOT - ../../pom.xml + 0.0.1-SNAPSHOT + ../../parent-boot-2 @@ -44,38 +44,6 @@ jackson-databind ${jackson.version} - - org.springframework.boot - spring-boot-starter - ${spring.boot.version} - - - org.springframework.boot - spring-boot-starter-web - ${spring.boot.version} - - - org.springframework.boot - spring-boot-starter-data-jpa - ${spring.boot.version} - - - org.springframework.boot - spring-boot-starter-test - ${spring.boot.version} - test - - - com.h2database - h2 - ${h2.version} - - - org.projectlombok - lombok - ${lombok.version} - compile - @@ -144,7 +112,6 @@ 2.2.1 5.0 3.11 - 2.0.5.RELEASE - \ No newline at end of file + From 33a31701cd5d5b21ae64467cfc7d83b7ed1d87e5 Mon Sep 17 00:00:00 2001 From: fejera Date: Sat, 19 Oct 2019 16:43:11 +0200 Subject: [PATCH 167/265] cleaned up persistence.xml --- .../java-jpa-2/src/main/resources/META-INF/persistence.xml | 2 -- 1 file changed, 2 deletions(-) diff --git a/persistence-modules/java-jpa-2/src/main/resources/META-INF/persistence.xml b/persistence-modules/java-jpa-2/src/main/resources/META-INF/persistence.xml index 0602a82f6c..faf00e1b2b 100644 --- a/persistence-modules/java-jpa-2/src/main/resources/META-INF/persistence.xml +++ b/persistence-modules/java-jpa-2/src/main/resources/META-INF/persistence.xml @@ -144,8 +144,6 @@ - - From 22deaaa756ee547ed0b00a6a192fd1541c315f93 Mon Sep 17 00:00:00 2001 From: NickTononi <48349671+NickTononi@users.noreply.github.com> Date: Sat, 19 Oct 2019 22:19:09 +0200 Subject: [PATCH 168/265] [BAEL-3147] Java 'protected' modifier (#7886) * [BAEL-3147] Java 'protected' modifier * updated README.md * Update README.md * Update SecondGenericClass.java --- .../baeldung/core/modifiers/FirstClass.java | 18 +++++++++++++++++ .../baeldung/core/modifiers/GenericClass.java | 15 ++++++++++++++ .../modifiers/otherpackage/SecondClass.java | 18 +++++++++++++++++ .../otherpackage/SecondGenericClass.java | 20 +++++++++++++++++++ 4 files changed, 71 insertions(+) create mode 100644 core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/modifiers/FirstClass.java create mode 100644 core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/modifiers/GenericClass.java create mode 100644 core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/modifiers/otherpackage/SecondClass.java create mode 100644 core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/modifiers/otherpackage/SecondGenericClass.java diff --git a/core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/modifiers/FirstClass.java b/core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/modifiers/FirstClass.java new file mode 100644 index 0000000000..a80387d61a --- /dev/null +++ b/core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/modifiers/FirstClass.java @@ -0,0 +1,18 @@ +package com.baeldung.core.modifiers; + +public class FirstClass { + + protected String name; + + protected FirstClass(String name) { + this.name = name; + } + + protected String getName() { + return name; + } + + protected static class InnerClass { + public InnerClass() {} + } +} diff --git a/core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/modifiers/GenericClass.java b/core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/modifiers/GenericClass.java new file mode 100644 index 0000000000..83381931d0 --- /dev/null +++ b/core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/modifiers/GenericClass.java @@ -0,0 +1,15 @@ +package com.baeldung.core.modifiers; + +public class GenericClass { + + public static void main(String[] args) { + // accessing protected constructor + FirstClass first = new FirstClass("random name"); + // using protected method + System.out.println("FirstClass name is " + first.getName()); + // accessing a protected field + first.name = "new name"; + // instantiating protected inner class + FirstClass.InnerClass innerClass = new FirstClass.InnerClass(); + } +} diff --git a/core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/modifiers/otherpackage/SecondClass.java b/core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/modifiers/otherpackage/SecondClass.java new file mode 100644 index 0000000000..528f97539a --- /dev/null +++ b/core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/modifiers/otherpackage/SecondClass.java @@ -0,0 +1,18 @@ +package com.baeldung.core.modifiers.otherpackage; + +import com.baeldung.core.modifiers.FirstClass; + +public class SecondClass extends FirstClass { + + public SecondClass(String name) { + // accessing protected constructor + super(name); + // using protected method + System.out.println("SecondClass name is " + this.getName()); + // accessing a protected field + this.name = "new name"; + // instantiating protected inner class -> add public constructor to InnerClass + FirstClass.InnerClass innerClass = new FirstClass.InnerClass(); + } + +} diff --git a/core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/modifiers/otherpackage/SecondGenericClass.java b/core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/modifiers/otherpackage/SecondGenericClass.java new file mode 100644 index 0000000000..d29533edef --- /dev/null +++ b/core-java-modules/core-java-lang-syntax-2/src/main/java/com/baeldung/core/modifiers/otherpackage/SecondGenericClass.java @@ -0,0 +1,20 @@ +package com.baeldung.core.modifiers.otherpackage; + +import com.baeldung.core.modifiers.FirstClass; +//import com.baeldung.core.modifiers.FirstClass.InnerClass; + +public class SecondGenericClass { + + // uncomment the following lines to see the errors + public static void main(String[] args) { + // accessing protected constructor + // FirstClass first = new FirstClass("random name"); + // using protected method + // System.out.println("FirstClass name is " + first.getName()); + // accessing a protected field + // first.name = "new name"; + // instantiating protected inner class + // FirstClass.InnerClass innerClass = new FirstClass.InnerClass(); + } + +} From 0c379fd66d2bf3988a7b46b5a7962a73ed527fcc Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Sun, 20 Oct 2019 16:55:42 +0800 Subject: [PATCH 169/265] Update README.md --- spring-boot-deployment/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spring-boot-deployment/README.md b/spring-boot-deployment/README.md index 6171decf2d..b6aa468098 100644 --- a/spring-boot-deployment/README.md +++ b/spring-boot-deployment/README.md @@ -6,4 +6,5 @@ This module contains articles about deployment of a Spring Boot Application - [Deploy a Spring Boot WAR into a Tomcat Server](https://www.baeldung.com/spring-boot-war-tomcat-deploy) - [Spring Boot Console Application](https://www.baeldung.com/spring-boot-console-app) - [How to Configure Spring Boot Tomcat](https://www.baeldung.com/spring-boot-configure-tomcat) - - [Comparing Embedded Servlet Containers in Spring Boot](https://www.baeldung.com/spring-boot-servlet-containers) \ No newline at end of file + - [Comparing Embedded Servlet Containers in Spring Boot](https://www.baeldung.com/spring-boot-servlet-containers) + - [Graceful Shutdown of a Spring Boot Application](https://www.baeldung.com/spring-boot-graceful-shutdown) From 9946fa53a1e752f970c956779011225823939c0a Mon Sep 17 00:00:00 2001 From: vatsalgosar Date: Mon, 21 Oct 2019 00:17:18 +0530 Subject: [PATCH 170/265] BAEL-3143 - nextLine() method of java.util.Scanner class --- .../baeldung/scanner/JavaScannerUnitTest.java | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 core-java-modules/core-java-io-2/src/test/java/com/baeldung/scanner/JavaScannerUnitTest.java diff --git a/core-java-modules/core-java-io-2/src/test/java/com/baeldung/scanner/JavaScannerUnitTest.java b/core-java-modules/core-java-io-2/src/test/java/com/baeldung/scanner/JavaScannerUnitTest.java new file mode 100644 index 0000000000..ea80c7aef7 --- /dev/null +++ b/core-java-modules/core-java-io-2/src/test/java/com/baeldung/scanner/JavaScannerUnitTest.java @@ -0,0 +1,54 @@ +package com.baeldung.scanner; + +import org.junit.Test; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import java.util.NoSuchElementException; +import java.util.Scanner; + +import static org.assertj.core.api.Assertions.fail; +import static org.junit.Assert.assertEquals; + +public class JavaScannerUnitTest { + + @Test + public void whenReadingLines_thenCorrect() { + String input = "Scanner\nTest\n"; + + byte[] byteArray = input.getBytes(StandardCharsets.UTF_8); + //@formatter:off + try (InputStream is = new ByteArrayInputStream(byteArray); + Scanner scanner = new Scanner(is)) { + + //@formatter:on + String result = scanner.nextLine() + " " + scanner.nextLine(); + + String expected = input.replace("\n", " ") + .trim(); + assertEquals(expected, result); + } catch (IOException e) { + fail(e.getMessage()); + } + } + + @Test(expected = NoSuchElementException.class) + public void whenReadingLinesFromStringContainingNoLines_thenThrowNoSuchElementException() { + String input = ""; + Scanner scanner = new Scanner(input); + String result = scanner.nextLine(); + scanner.close(); + } + + @Test(expected = IllegalStateException.class) + public void whenReadingLinesUsingClosedScanner_thenThrowIllegalStateException() { + String input = ""; + Scanner scanner = new Scanner(input); + scanner.close(); + String result = scanner.nextLine(); + } + + +} From f89232dd213d8ed73d4ce409b17d560ee20ff1eb Mon Sep 17 00:00:00 2001 From: Yavuz Tas Date: Mon, 21 Oct 2019 15:31:19 +0200 Subject: [PATCH 171/265] sync with upstream/master --- annotations/README.md | 7 ++++++- osgi/README.md | 17 ++++++++++------- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/annotations/README.md b/annotations/README.md index 2b052803e6..ec4005fc5e 100644 --- a/annotations/README.md +++ b/annotations/README.md @@ -1,2 +1,7 @@ +## Annotations + +This module contains articles about Java annotations + ### Relevant Articles: -- [Java Annotation Processing and Creating a Builder](http://www.baeldung.com/java-annotation-processing-builder) + +- [Java Annotation Processing and Creating a Builder](https://www.baeldung.com/java-annotation-processing-builder) diff --git a/osgi/README.md b/osgi/README.md index ec355c9773..732f624302 100644 --- a/osgi/README.md +++ b/osgi/README.md @@ -17,9 +17,9 @@ Apache Felix ### Start -Download Apache Felix Framework Distribution +Download Apache Felix Framework Distribution from -org.apache.felix.main.distribution-5.6.8 +org.apache.felix.main.distribution-5.6.8 No! The Apache Karaf container is best. Download it from: @@ -33,12 +33,12 @@ Then run Unzip, pay attention to the files not being clipped(!). - system:exit - + system:exit + exit! shutdown -h - + or `^D` ### clean start @@ -69,7 +69,7 @@ can be logged to console ### Bundle deploy bundle:install mvn:com.baeldung/osgi-intro-sample-activator/1.0-SNAPSHOT - + install mvn:com.baeldung/osgi-intro-sample-service/1.0-SNAPSHOT install mvn:com.baeldung/osgi-intro-sample-client/1.0-SNAPSHOT @@ -88,4 +88,7 @@ Oxygen.1 Wed, 6 Sep 2017 -- 17:00 (-0400) org.eclipse.osgi_3.12.1.v20170821-1548.jar - = = NOT GOOD = = + = = NOT GOOD = = + + + From b03aa3f99feefb099c20b3bb2395c6a7548df8fc Mon Sep 17 00:00:00 2001 From: Yavuz Tas Date: Mon, 21 Oct 2019 15:36:54 +0200 Subject: [PATCH 172/265] Add source code for article BAEL-3379 --- .../javaxval/messageinterpolator/Person.java | 30 ++++++++++ ...terMessageInterpolaterIntegrationTest.java | 58 +++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 javaxval/src/main/java/org/baeldung/javaxval/messageinterpolator/Person.java create mode 100644 javaxval/src/test/java/org/baeldung/javaxval/messageinterpolator/ParameterMessageInterpolaterIntegrationTest.java diff --git a/javaxval/src/main/java/org/baeldung/javaxval/messageinterpolator/Person.java b/javaxval/src/main/java/org/baeldung/javaxval/messageinterpolator/Person.java new file mode 100644 index 0000000000..1b6f598b60 --- /dev/null +++ b/javaxval/src/main/java/org/baeldung/javaxval/messageinterpolator/Person.java @@ -0,0 +1,30 @@ +package org.baeldung.javaxval.messageinterpolator; + +import javax.validation.constraints.Min; +import javax.validation.constraints.Size; + +public class Person { + + @Size(min = 10, max = 200, message = "Name should be in-between {min} and {max} characters") + private String name; + + @Min(value = 18, message = "Age should not be less than {value} but it is ${validatedValue}") + private int age; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } + +} diff --git a/javaxval/src/test/java/org/baeldung/javaxval/messageinterpolator/ParameterMessageInterpolaterIntegrationTest.java b/javaxval/src/test/java/org/baeldung/javaxval/messageinterpolator/ParameterMessageInterpolaterIntegrationTest.java new file mode 100644 index 0000000000..877f8348d2 --- /dev/null +++ b/javaxval/src/test/java/org/baeldung/javaxval/messageinterpolator/ParameterMessageInterpolaterIntegrationTest.java @@ -0,0 +1,58 @@ +package org.baeldung.javaxval.messageinterpolator; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.Set; + +import javax.validation.ConstraintViolation; +import javax.validation.Validation; +import javax.validation.Validator; +import javax.validation.ValidatorFactory; + +import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator; +import org.junit.BeforeClass; +import org.junit.Test; + +public class ParameterMessageInterpolaterIntegrationTest { + + private static Validator validator; + + @BeforeClass + public static void beforeClass() { + ValidatorFactory validatorFactory = Validation.byDefaultProvider() + .configure() + .messageInterpolator(new ParameterMessageInterpolator()) + .buildValidatorFactory(); + + validator = validatorFactory.getValidator(); + } + + @Test + public void ifNameLengthIsLess_nameValidationFails() { + Person person = new Person(); + person.setName("John Doe"); + person.setAge(18); + + Set> violations = validator.validate(person); + assertEquals(1, violations.size()); + + ConstraintViolation violation = violations.iterator().next(); + assertEquals("Name should be in-between 10 and 200 characters", violation.getMessage()); + } + + @Test + public void ifAgeIsLess_ageMinValidationFails() { + Person person = new Person(); + person.setName("John Stephaner Doe"); + person.setAge(16); + + Set> violations = validator.validate(person); + assertEquals(1, violations.size()); + + ConstraintViolation violation = violations.iterator().next(); + assertEquals("Age should not be less than 18 but it is ${validatedValue}", violation.getMessage()); + } + +} + + From 1fb34e3c6ae0a2562297a1414ece52f41b547898 Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Mon, 21 Oct 2019 21:42:13 +0530 Subject: [PATCH 173/265] BAEL-17684 Pom properties cleanup - Reverted guava module changes --- guava-modules/guava-18/pom.xml | 4 ++++ guava-modules/guava-19/pom.xml | 4 ++++ guava-modules/guava-21/pom.xml | 1 + 3 files changed, 9 insertions(+) diff --git a/guava-modules/guava-18/pom.xml b/guava-modules/guava-18/pom.xml index 199d735a41..d55aa9ce82 100644 --- a/guava-modules/guava-18/pom.xml +++ b/guava-modules/guava-18/pom.xml @@ -13,4 +13,8 @@ ../../parent-java + + 18.0 + + \ No newline at end of file diff --git a/guava-modules/guava-19/pom.xml b/guava-modules/guava-19/pom.xml index c431f78cf7..0548bb0c1f 100644 --- a/guava-modules/guava-19/pom.xml +++ b/guava-modules/guava-19/pom.xml @@ -13,4 +13,8 @@ ../../parent-java + + 19.0 + + \ No newline at end of file diff --git a/guava-modules/guava-21/pom.xml b/guava-modules/guava-21/pom.xml index 150ce2d4d2..bdb1058a48 100644 --- a/guava-modules/guava-21/pom.xml +++ b/guava-modules/guava-21/pom.xml @@ -22,6 +22,7 @@ + 21.0 0.9.12 From 15bf90a2bed930d9403f2c066cc53021c143454f Mon Sep 17 00:00:00 2001 From: at508 Date: Mon, 21 Oct 2019 22:04:26 -0400 Subject: [PATCH 174/265] [BAEL-2998] - Fix jenkins tests --- testing-modules/spring-testing/pom.xml | 8 +++++++- .../dirtiescontext/DirtiesContextIntegrationTest.java | 2 ++ .../ProfilePropertySourceResolverIntegrationTest.java | 10 +++++++--- ...pringBootPropertySourceResolverIntegrationTest.java | 8 ++++++-- ...tResourcePropertySourceResolverIntegrationTest.java | 10 +++++++--- 5 files changed, 29 insertions(+), 9 deletions(-) diff --git a/testing-modules/spring-testing/pom.xml b/testing-modules/spring-testing/pom.xml index 8a76dc903c..15431cfb77 100644 --- a/testing-modules/spring-testing/pom.xml +++ b/testing-modules/spring-testing/pom.xml @@ -84,6 +84,11 @@ ${junit.jupiter.version} test + + org.junit.platform + junit-platform-commons + ${junit.commons.version} + org.awaitility awaitility @@ -112,7 +117,8 @@ 2.0.0.0 3.1.6 - 5.4.0 + 5.5.0 + 1.5.2 5.1.4.RELEASE 4.0.1 2.1.1 diff --git a/testing-modules/spring-testing/src/test/java/com/baeldung/dirtiescontext/DirtiesContextIntegrationTest.java b/testing-modules/spring-testing/src/test/java/com/baeldung/dirtiescontext/DirtiesContextIntegrationTest.java index f3e7b8c228..7afd4a22d4 100644 --- a/testing-modules/spring-testing/src/test/java/com/baeldung/dirtiescontext/DirtiesContextIntegrationTest.java +++ b/testing-modules/spring-testing/src/test/java/com/baeldung/dirtiescontext/DirtiesContextIntegrationTest.java @@ -10,10 +10,12 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.annotation.DirtiesContext.MethodMode; import org.springframework.test.context.junit.jupiter.SpringExtension; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; @TestMethodOrder(OrderAnnotation.class) @ExtendWith(SpringExtension.class) @SpringBootTest(classes = SpringDataRestApplication.class) +@EnableWebMvc class DirtiesContextIntegrationTest { @Autowired diff --git a/testing-modules/spring-testing/src/test/java/com/baeldung/overrideproperties/ProfilePropertySourceResolverIntegrationTest.java b/testing-modules/spring-testing/src/test/java/com/baeldung/overrideproperties/ProfilePropertySourceResolverIntegrationTest.java index 95d83420b7..815b628f0a 100644 --- a/testing-modules/spring-testing/src/test/java/com/baeldung/overrideproperties/ProfilePropertySourceResolverIntegrationTest.java +++ b/testing-modules/spring-testing/src/test/java/com/baeldung/overrideproperties/ProfilePropertySourceResolverIntegrationTest.java @@ -1,21 +1,25 @@ package com.baeldung.overrideproperties; -import com.baeldung.overrideproperties.resolver.PropertySourceResolver; +import static org.junit.Assert.assertEquals; + import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; -import static org.junit.Assert.assertEquals; +import com.baeldung.overrideproperties.resolver.PropertySourceResolver; @RunWith(SpringRunner.class) @SpringBootTest @ActiveProfiles("test") +@EnableWebMvc public class ProfilePropertySourceResolverIntegrationTest { - @Autowired private PropertySourceResolver propertySourceResolver; + @Autowired + private PropertySourceResolver propertySourceResolver; @Test public void shouldProfiledProperty_overridePropertyValues() { diff --git a/testing-modules/spring-testing/src/test/java/com/baeldung/overrideproperties/SpringBootPropertySourceResolverIntegrationTest.java b/testing-modules/spring-testing/src/test/java/com/baeldung/overrideproperties/SpringBootPropertySourceResolverIntegrationTest.java index 573a46dd5f..d00aa51e6c 100644 --- a/testing-modules/spring-testing/src/test/java/com/baeldung/overrideproperties/SpringBootPropertySourceResolverIntegrationTest.java +++ b/testing-modules/spring-testing/src/test/java/com/baeldung/overrideproperties/SpringBootPropertySourceResolverIntegrationTest.java @@ -1,18 +1,22 @@ package com.baeldung.overrideproperties; -import com.baeldung.overrideproperties.resolver.PropertySourceResolver; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; + +import com.baeldung.overrideproperties.resolver.PropertySourceResolver; @RunWith(SpringRunner.class) @SpringBootTest(properties = { "example.firstProperty=annotation" }) +@EnableWebMvc public class SpringBootPropertySourceResolverIntegrationTest { - @Autowired private PropertySourceResolver propertySourceResolver; + @Autowired + private PropertySourceResolver propertySourceResolver; @Test public void shouldSpringBootTestAnnotation_overridePropertyValues() { diff --git a/testing-modules/spring-testing/src/test/java/com/baeldung/overrideproperties/TestResourcePropertySourceResolverIntegrationTest.java b/testing-modules/spring-testing/src/test/java/com/baeldung/overrideproperties/TestResourcePropertySourceResolverIntegrationTest.java index c724713854..dc15851277 100644 --- a/testing-modules/spring-testing/src/test/java/com/baeldung/overrideproperties/TestResourcePropertySourceResolverIntegrationTest.java +++ b/testing-modules/spring-testing/src/test/java/com/baeldung/overrideproperties/TestResourcePropertySourceResolverIntegrationTest.java @@ -1,19 +1,23 @@ package com.baeldung.overrideproperties; -import com.baeldung.overrideproperties.resolver.PropertySourceResolver; +import static org.junit.Assert.assertEquals; + import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; -import static org.junit.Assert.assertEquals; +import com.baeldung.overrideproperties.resolver.PropertySourceResolver; @RunWith(SpringRunner.class) @SpringBootTest +@EnableWebMvc public class TestResourcePropertySourceResolverIntegrationTest { - @Autowired private PropertySourceResolver propertySourceResolver; + @Autowired + private PropertySourceResolver propertySourceResolver; @Test public void shouldTestResourceFile_overridePropertyValues() { From b92b031867e8026cab1a361c5470d3189591fc18 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 22 Oct 2019 16:10:50 +0800 Subject: [PATCH 175/265] Update README.md --- algorithms-miscellaneous-4/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/algorithms-miscellaneous-4/README.md b/algorithms-miscellaneous-4/README.md index 93a9796092..0a2aa63a0c 100644 --- a/algorithms-miscellaneous-4/README.md +++ b/algorithms-miscellaneous-4/README.md @@ -7,4 +7,3 @@ - [Find Substrings That Are Palindromes in Java](https://www.baeldung.com/java-palindrome-substrings) - [Find the Longest Substring without Repeating Characters](https://www.baeldung.com/java-longest-substring-without-repeated-characters) - [Permutations of an Array in Java](https://www.baeldung.com/java-array-permutations) -- [Interpolation Search in Java](https://www.baeldung.com/java-interpolation-search) From ec8d42826b4d2a23cfd4f3ae02e7d43b99fe281f Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 22 Oct 2019 16:12:11 +0800 Subject: [PATCH 176/265] Update README.md --- algorithms-miscellaneous-4/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/algorithms-miscellaneous-4/README.md b/algorithms-miscellaneous-4/README.md index 0a2aa63a0c..a9d0dd4e5b 100644 --- a/algorithms-miscellaneous-4/README.md +++ b/algorithms-miscellaneous-4/README.md @@ -7,3 +7,4 @@ - [Find Substrings That Are Palindromes in Java](https://www.baeldung.com/java-palindrome-substrings) - [Find the Longest Substring without Repeating Characters](https://www.baeldung.com/java-longest-substring-without-repeated-characters) - [Permutations of an Array in Java](https://www.baeldung.com/java-array-permutations) +- More articles: [[<-- prev]](/algorithms-miscellaneous-3) [[next -->]](/algorithms-miscellaneous-5) From 2468c93e64aa7eebb47ce4c90252318c529ff6c8 Mon Sep 17 00:00:00 2001 From: catalin-burcea Date: Tue, 22 Oct 2019 16:06:15 +0300 Subject: [PATCH 177/265] Move Existing Articles to core-groovy-collections Module --- core-groovy-collections/README.md | 4 +- .../com/baeldung/find/ListFindUnitTest.groovy | 6 +- .../com/baeldung/find/MapFindUnitTest.groovy | 84 +--------- .../groovy/com/baeldung/find}/Person.groovy | 2 +- .../com/baeldung/find/SetFindUnitTest.groovy | 4 +- .../iteratemap/IterateMapUnitTest.groovy | 87 ++++++++++ .../com/baeldung/lists/ListUnitTest.groovy | 4 +- .../com/baeldung/{map => maps}/MapTest.groovy | 2 +- core-groovy/README.md | 3 - .../groovy/com/baeldung/map/MapTest.groovy | 148 ------------------ 10 files changed, 102 insertions(+), 242 deletions(-) rename core-groovy/src/test/groovy/com/baeldung/lists/ListUnitTest.groovy => core-groovy-collections/src/test/groovy/com/baeldung/find/ListFindUnitTest.groovy (95%) rename core-groovy/src/test/groovy/com/baeldung/map/MapUnitTest.groovy => core-groovy-collections/src/test/groovy/com/baeldung/find/MapFindUnitTest.groovy (53%) rename {core-groovy/src/main/groovy/com/baeldung => core-groovy-collections/src/test/groovy/com/baeldung/find}/Person.groovy (96%) rename core-groovy/src/test/groovy/com/baeldung/set/SetUnitTest.groovy => core-groovy-collections/src/test/groovy/com/baeldung/find/SetFindUnitTest.groovy (83%) create mode 100644 core-groovy-collections/src/test/groovy/com/baeldung/iteratemap/IterateMapUnitTest.groovy rename core-groovy/src/test/groovy/com/baeldung/lists/ListTest.groovy => core-groovy-collections/src/test/groovy/com/baeldung/lists/ListUnitTest.groovy (98%) rename core-groovy-collections/src/test/groovy/com/baeldung/{map => maps}/MapTest.groovy (99%) delete mode 100644 core-groovy/src/test/groovy/com/baeldung/map/MapTest.groovy diff --git a/core-groovy-collections/README.md b/core-groovy-collections/README.md index 4afd214e7d..aae8be508e 100644 --- a/core-groovy-collections/README.md +++ b/core-groovy-collections/README.md @@ -5,4 +5,6 @@ This module contains articles about Groovy core collections ## Relevant articles: - [Maps in Groovy](https://www.baeldung.com/groovy-maps) - +- [Finding Elements in Collections in Groovy](https://www.baeldung.com/groovy-collections-find-elements) +- [Lists in Groovy](https://www.baeldung.com/groovy-lists) +- [A Quick Guide to Iterating a Map in Groovy](https://www.baeldung.com/groovy-map-iterating) diff --git a/core-groovy/src/test/groovy/com/baeldung/lists/ListUnitTest.groovy b/core-groovy-collections/src/test/groovy/com/baeldung/find/ListFindUnitTest.groovy similarity index 95% rename from core-groovy/src/test/groovy/com/baeldung/lists/ListUnitTest.groovy rename to core-groovy-collections/src/test/groovy/com/baeldung/find/ListFindUnitTest.groovy index 9617c099ce..82a2138be4 100644 --- a/core-groovy/src/test/groovy/com/baeldung/lists/ListUnitTest.groovy +++ b/core-groovy-collections/src/test/groovy/com/baeldung/find/ListFindUnitTest.groovy @@ -1,11 +1,11 @@ -package com.baeldung.lists +package com.baeldung.find -import com.baeldung.Person +import com.baeldung.find.Person import org.junit.Test import static org.junit.Assert.* -class ListUnitTest { +class ListFindUnitTest { private final personList = [ new Person("Regina", "Fitzpatrick", 25), diff --git a/core-groovy/src/test/groovy/com/baeldung/map/MapUnitTest.groovy b/core-groovy-collections/src/test/groovy/com/baeldung/find/MapFindUnitTest.groovy similarity index 53% rename from core-groovy/src/test/groovy/com/baeldung/map/MapUnitTest.groovy rename to core-groovy-collections/src/test/groovy/com/baeldung/find/MapFindUnitTest.groovy index 0d6bbed04b..16e231182b 100644 --- a/core-groovy/src/test/groovy/com/baeldung/map/MapUnitTest.groovy +++ b/core-groovy-collections/src/test/groovy/com/baeldung/find/MapFindUnitTest.groovy @@ -1,11 +1,11 @@ -package com.baeldung.map +package com.baeldung.find -import com.baeldung.Person +import com.baeldung.find.Person import org.junit.Test import static org.junit.Assert.* -class MapUnitTest { +class MapFindUnitTest { private final personMap = [ Regina : new Person("Regina", "Fitzpatrick", 25), @@ -13,84 +13,6 @@ class MapUnitTest { Lucian : new Person("Lucian", "Walter", 30) ] - @Test - void whenUsingEach_thenMapIsIterated() { - def map = [ - 'FF0000' : 'Red', - '00FF00' : 'Lime', - '0000FF' : 'Blue', - 'FFFF00' : 'Yellow' - ] - - map.each { println "Hex Code: $it.key = Color Name: $it.value" } - } - - @Test - void whenUsingEachWithEntry_thenMapIsIterated() { - def map = [ - 'E6E6FA' : 'Lavender', - 'D8BFD8' : 'Thistle', - 'DDA0DD' : 'Plum', - ] - - map.each { entry -> println "Hex Code: $entry.key = Color Name: $entry.value" } - } - - @Test - void whenUsingEachWithKeyAndValue_thenMapIsIterated() { - def map = [ - '000000' : 'Black', - 'FFFFFF' : 'White', - '808080' : 'Gray' - ] - - map.each { key, val -> - println "Hex Code: $key = Color Name $val" - } - } - - @Test - void whenUsingEachWithIndexAndEntry_thenMapIsIterated() { - def map = [ - '800080' : 'Purple', - '4B0082' : 'Indigo', - '6A5ACD' : 'Slate Blue' - ] - - map.eachWithIndex { entry, index -> - def indent = ((index == 0 || index % 2 == 0) ? " " : "") - println "$indent Hex Code: $entry.key = Color Name: $entry.value" - } - } - - @Test - void whenUsingEachWithIndexAndKeyAndValue_thenMapIsIterated() { - def map = [ - 'FFA07A' : 'Light Salmon', - 'FF7F50' : 'Coral', - 'FF6347' : 'Tomato', - 'FF4500' : 'Orange Red' - ] - - map.eachWithIndex { key, val, index -> - def indent = ((index == 0 || index % 2 == 0) ? " " : "") - println "$indent Hex Code: $key = Color Name: $val" - } - } - - @Test - void whenUsingForLoop_thenMapIsIterated() { - def map = [ - '2E8B57' : 'Seagreen', - '228B22' : 'Forest Green', - '008000' : 'Green' - ] - - for (entry in map) { - println "Hex Code: $entry.key = Color Name: $entry.value" - } - } - @Test void whenMapContainsKeyElement_thenCheckReturnsTrue() { def map = [a: 'd', b: 'e', c: 'f'] diff --git a/core-groovy/src/main/groovy/com/baeldung/Person.groovy b/core-groovy-collections/src/test/groovy/com/baeldung/find/Person.groovy similarity index 96% rename from core-groovy/src/main/groovy/com/baeldung/Person.groovy rename to core-groovy-collections/src/test/groovy/com/baeldung/find/Person.groovy index 6a009aeee0..e65826363a 100644 --- a/core-groovy/src/main/groovy/com/baeldung/Person.groovy +++ b/core-groovy-collections/src/test/groovy/com/baeldung/find/Person.groovy @@ -1,4 +1,4 @@ -package com.baeldung +package com.baeldung.find class Person { private String firstname diff --git a/core-groovy/src/test/groovy/com/baeldung/set/SetUnitTest.groovy b/core-groovy-collections/src/test/groovy/com/baeldung/find/SetFindUnitTest.groovy similarity index 83% rename from core-groovy/src/test/groovy/com/baeldung/set/SetUnitTest.groovy rename to core-groovy-collections/src/test/groovy/com/baeldung/find/SetFindUnitTest.groovy index 1248c9ac91..d2d03d5427 100644 --- a/core-groovy/src/test/groovy/com/baeldung/set/SetUnitTest.groovy +++ b/core-groovy-collections/src/test/groovy/com/baeldung/find/SetFindUnitTest.groovy @@ -1,10 +1,10 @@ -package com.baeldung.set +package com.baeldung.find import org.junit.Test import static org.junit.Assert.assertTrue -class SetUnitTest { +class SetFindUnitTest { @Test void whenSetContainsElement_thenCheckReturnsTrue() { diff --git a/core-groovy-collections/src/test/groovy/com/baeldung/iteratemap/IterateMapUnitTest.groovy b/core-groovy-collections/src/test/groovy/com/baeldung/iteratemap/IterateMapUnitTest.groovy new file mode 100644 index 0000000000..970203ce85 --- /dev/null +++ b/core-groovy-collections/src/test/groovy/com/baeldung/iteratemap/IterateMapUnitTest.groovy @@ -0,0 +1,87 @@ +package com.baeldung.iteratemap + +import com.baeldung.find.Person +import org.junit.Test + +import static org.junit.Assert.* + +class IterateMapUnitTest { + + @Test + void whenUsingEach_thenMapIsIterated() { + def map = [ + 'FF0000' : 'Red', + '00FF00' : 'Lime', + '0000FF' : 'Blue', + 'FFFF00' : 'Yellow' + ] + + map.each { println "Hex Code: $it.key = Color Name: $it.value" } + } + + @Test + void whenUsingEachWithEntry_thenMapIsIterated() { + def map = [ + 'E6E6FA' : 'Lavender', + 'D8BFD8' : 'Thistle', + 'DDA0DD' : 'Plum', + ] + + map.each { entry -> println "Hex Code: $entry.key = Color Name: $entry.value" } + } + + @Test + void whenUsingEachWithKeyAndValue_thenMapIsIterated() { + def map = [ + '000000' : 'Black', + 'FFFFFF' : 'White', + '808080' : 'Gray' + ] + + map.each { key, val -> + println "Hex Code: $key = Color Name $val" + } + } + + @Test + void whenUsingEachWithIndexAndEntry_thenMapIsIterated() { + def map = [ + '800080' : 'Purple', + '4B0082' : 'Indigo', + '6A5ACD' : 'Slate Blue' + ] + + map.eachWithIndex { entry, index -> + def indent = ((index == 0 || index % 2 == 0) ? " " : "") + println "$indent Hex Code: $entry.key = Color Name: $entry.value" + } + } + + @Test + void whenUsingEachWithIndexAndKeyAndValue_thenMapIsIterated() { + def map = [ + 'FFA07A' : 'Light Salmon', + 'FF7F50' : 'Coral', + 'FF6347' : 'Tomato', + 'FF4500' : 'Orange Red' + ] + + map.eachWithIndex { key, val, index -> + def indent = ((index == 0 || index % 2 == 0) ? " " : "") + println "$indent Hex Code: $key = Color Name: $val" + } + } + + @Test + void whenUsingForLoop_thenMapIsIterated() { + def map = [ + '2E8B57' : 'Seagreen', + '228B22' : 'Forest Green', + '008000' : 'Green' + ] + + for (entry in map) { + println "Hex Code: $entry.key = Color Name: $entry.value" + } + } +} diff --git a/core-groovy/src/test/groovy/com/baeldung/lists/ListTest.groovy b/core-groovy-collections/src/test/groovy/com/baeldung/lists/ListUnitTest.groovy similarity index 98% rename from core-groovy/src/test/groovy/com/baeldung/lists/ListTest.groovy rename to core-groovy-collections/src/test/groovy/com/baeldung/lists/ListUnitTest.groovy index 7771028132..e4c0a0c177 100644 --- a/core-groovy/src/test/groovy/com/baeldung/lists/ListTest.groovy +++ b/core-groovy-collections/src/test/groovy/com/baeldung/lists/ListUnitTest.groovy @@ -1,9 +1,9 @@ -package com.baeldung.groovy.lists +package com.baeldung.lists import static groovy.test.GroovyAssert.* import org.junit.Test -class ListTest{ +class ListUnitTest { @Test void testCreateList() { diff --git a/core-groovy-collections/src/test/groovy/com/baeldung/map/MapTest.groovy b/core-groovy-collections/src/test/groovy/com/baeldung/maps/MapTest.groovy similarity index 99% rename from core-groovy-collections/src/test/groovy/com/baeldung/map/MapTest.groovy rename to core-groovy-collections/src/test/groovy/com/baeldung/maps/MapTest.groovy index c6105eb1c4..deb552c420 100644 --- a/core-groovy-collections/src/test/groovy/com/baeldung/map/MapTest.groovy +++ b/core-groovy-collections/src/test/groovy/com/baeldung/maps/MapTest.groovy @@ -1,4 +1,4 @@ -package com.baeldung.map; +package com.baeldung.maps; import static groovy.test.GroovyAssert.* import org.junit.Test diff --git a/core-groovy/README.md b/core-groovy/README.md index 0f45eed879..25a0aece3a 100644 --- a/core-groovy/README.md +++ b/core-groovy/README.md @@ -8,11 +8,8 @@ This module contains articles about core Groovy concepts - [Working with JSON in Groovy](https://www.baeldung.com/groovy-json) - [Reading a File in Groovy](https://www.baeldung.com/groovy-file-read) - [Types of Strings in Groovy](https://www.baeldung.com/groovy-strings) -- [A Quick Guide to Iterating a Map in Groovy](https://www.baeldung.com/groovy-map-iterating) - [An Introduction to Traits in Groovy](https://www.baeldung.com/groovy-traits) - [Closures in Groovy](https://www.baeldung.com/groovy-closures) -- [Finding Elements in Collections in Groovy](https://www.baeldung.com/groovy-collections-find-elements) -- [Lists in Groovy](https://www.baeldung.com/groovy-lists) - [Converting a String to a Date in Groovy](https://www.baeldung.com/groovy-string-to-date) - [Guide to I/O in Groovy](https://www.baeldung.com/groovy-io) - [[More -->]](/core-groovy-2) \ No newline at end of file diff --git a/core-groovy/src/test/groovy/com/baeldung/map/MapTest.groovy b/core-groovy/src/test/groovy/com/baeldung/map/MapTest.groovy deleted file mode 100644 index f1d528207f..0000000000 --- a/core-groovy/src/test/groovy/com/baeldung/map/MapTest.groovy +++ /dev/null @@ -1,148 +0,0 @@ -package com.baeldung.groovy.map; - -import static groovy.test.GroovyAssert.* -import org.junit.Test - -class MapTest{ - - @Test - void createMap() { - - def emptyMap = [:] - assertNotNull(emptyMap) - - assertTrue(emptyMap instanceof java.util.LinkedHashMap) - - def map = [name:"Jerry", age: 42, city: "New York"] - assertTrue(map.size() == 3) - } - - @Test - void addItemsToMap() { - - def map = [name:"Jerry"] - - map["age"] = 42 - - map.city = "New York" - - def hobbyLiteral = "hobby" - def hobbyMap = [(hobbyLiteral): "Singing"] - map.putAll(hobbyMap) - - assertTrue(map == [name:"Jerry", age: 42, city: "New York", hobby:"Singing"]) - assertTrue(hobbyMap.hobby == "Singing") - assertTrue(hobbyMap[hobbyLiteral] == "Singing") - - map.plus([1:20]) // returns new map - - map << [2:30] - - } - - @Test - void getItemsFromMap() { - - def map = [name:"Jerry", age: 42, city: "New York", hobby:"Singing"] - - assertTrue(map["name"] == "Jerry") - - assertTrue(map.name == "Jerry") - - def propertyAge = "age" - assertTrue(map[propertyAge] == 42) - } - - @Test - void removeItemsFromMap() { - - def map = [1:20, a:30, 2:42, 4:34, ba:67, 6:39, 7:49] - - def minusMap = map.minus([2:42, 4:34]); - assertTrue(minusMap == [1:20, a:30, ba:67, 6:39, 7:49]) - - minusMap.removeAll{it -> it.key instanceof String} - assertTrue( minusMap == [ 1:20, 6:39, 7:49]) - - minusMap.retainAll{it -> it.value %2 == 0} - assertTrue( minusMap == [1:20]) - } - - @Test - void iteratingOnMaps(){ - def map = [name:"Jerry", age: 42, city: "New York", hobby:"Singing"] - - map.each{ entry -> println "$entry.key: $entry.value" } - - map.eachWithIndex{ entry, i -> println "$i $entry.key: $entry.value" } - - map.eachWithIndex{ key, value, i -> println "$i $key: $value" } - } - - @Test - void filteringAndSearchingMaps(){ - def map = [name:"Jerry", age: 42, city: "New York", hobby:"Singing"] - - assertTrue(map.find{ it.value == "New York"}.key == "city") - - assertTrue(map.findAll{ it.value == "New York"} == [city : "New York"]) - - map.grep{it.value == "New York"}.each{ it -> assertTrue(it.key == "city" && it.value == "New York")} - - assertTrue(map.every{it -> it.value instanceof String} == false) - - assertTrue(map.any{it -> it.value instanceof String} == true) - } - - @Test - void collect(){ - - def map = [1: [name:"Jerry", age: 42, city: "New York"], - 2: [name:"Long", age: 25, city: "New York"], - 3: [name:"Dustin", age: 29, city: "New York"], - 4: [name:"Dustin", age: 34, city: "New York"]] - - def names = map.collect{entry -> entry.value.name} // returns only list - assertTrue(names == ["Jerry", "Long", "Dustin", "Dustin"]) - - def uniqueNames = map.collect([] as HashSet){entry -> entry.value.name} - assertTrue(uniqueNames == ["Jerry", "Long", "Dustin"] as Set) - - def idNames = map.collectEntries{key, value -> [key, value.name]} - assertTrue(idNames == [1:"Jerry", 2: "Long", 3:"Dustin", 4: "Dustin"]) - - def below30Names = map.findAll{it.value.age < 30}.collect{key, value -> value.name} - assertTrue(below30Names == ["Long", "Dustin"]) - - - } - - @Test - void group(){ - def map = [1:20, 2: 40, 3: 11, 4: 93] - - def subMap = map.groupBy{it.value % 2} - println subMap - assertTrue(subMap == [0:[1:20, 2:40 ], 1:[3:11, 4:93]]) - - def keySubMap = map.subMap([1, 2]) - assertTrue(keySubMap == [1:20, 2:40]) - - } - - @Test - void sorting(){ - def map = [ab:20, a: 40, cb: 11, ba: 93] - - def naturallyOrderedMap = map.sort() - assertTrue([a:40, ab:20, ba:93, cb:11] == naturallyOrderedMap) - - def compSortedMap = map.sort({ k1, k2 -> k1 <=> k2 } as Comparator) - assertTrue([a:40, ab:20, ba:93, cb:11] == compSortedMap) - - def cloSortedMap = map.sort({ it1, it2 -> it1.value <=> it1.value }) - assertTrue([cb:11, ab:20, a:40, ba:93] == cloSortedMap) - - } - -} From c43f5a542e760e453a986532ae9bb571bc72299a Mon Sep 17 00:00:00 2001 From: catalin-burcea Date: Tue, 22 Oct 2019 16:53:16 +0300 Subject: [PATCH 178/265] Split or move java-collections-conversions module --- java-collections-conversions-2/README.md | 7 ++++ java-collections-conversions-2/pom.xml | 36 +++++++++++++++++++ .../ArrayToStringUnitTest.java | 13 ++++--- java-collections-conversions/README.md | 2 +- java-collections-conversions/pom.xml | 10 ++++++ ...ava => CollectionToArrayListUnitTest.java} | 4 +-- .../ConvertIteratorToListServiceUnitTest.java | 2 +- ...WithDuplicatedIdToMapServiceUnitTest.java} | 2 +- .../JavaCollectionConversionUnitTest.java | 2 +- .../java/lists/ListToStringUnitTest.java} | 4 +-- pom.xml | 4 ++- 11 files changed, 70 insertions(+), 16 deletions(-) create mode 100644 java-collections-conversions-2/README.md create mode 100644 java-collections-conversions-2/pom.xml rename {java-collections-conversions/src/test/java/org => java-collections-conversions-2/src/test/java/com}/baeldung/convertarraytostring/ArrayToStringUnitTest.java (98%) rename java-collections-conversions/src/test/java/com/baeldung/convertcollectiontoarraylist/{FooUnitTest.java => CollectionToArrayListUnitTest.java} (97%) rename java-collections-conversions/src/test/java/com/baeldung/{convert/iteratortolist => convertiteratortolist}/ConvertIteratorToListServiceUnitTest.java (98%) rename java-collections-conversions/src/test/java/com/baeldung/convertlisttomap/{ConvertListWithDiplicatedIdToMapServiceUnitTest.java => ConvertListWithDuplicatedIdToMapServiceUnitTest.java} (96%) rename java-collections-conversions/src/test/java/{org => com}/baeldung/java/collections/JavaCollectionConversionUnitTest.java (99%) rename java-collections-conversions/src/test/java/{org/baeldung/java/lists/ListToSTring.java => com/baeldung/java/lists/ListToStringUnitTest.java} (91%) diff --git a/java-collections-conversions-2/README.md b/java-collections-conversions-2/README.md new file mode 100644 index 0000000000..761e56253e --- /dev/null +++ b/java-collections-conversions-2/README.md @@ -0,0 +1,7 @@ +## Java Collections Cookbooks and Examples + +This module contains articles about conversions among Collection types and arrays in Java. + +### Relevant Articles: +- [Array to String Conversions](https://www.baeldung.com/java-array-to-string) +- More articles: [[<-- prev]](../java-collections-conversions) \ No newline at end of file diff --git a/java-collections-conversions-2/pom.xml b/java-collections-conversions-2/pom.xml new file mode 100644 index 0000000000..72673527ac --- /dev/null +++ b/java-collections-conversions-2/pom.xml @@ -0,0 +1,36 @@ + + 4.0.0 + java-collections-conversions-2 + 0.1.0-SNAPSHOT + java-collections-conversions-2 + jar + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../parent-java + + + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + + + java-collections-conversions-2 + + + src/main/resources + true + + + + + + + diff --git a/java-collections-conversions/src/test/java/org/baeldung/convertarraytostring/ArrayToStringUnitTest.java b/java-collections-conversions-2/src/test/java/com/baeldung/convertarraytostring/ArrayToStringUnitTest.java similarity index 98% rename from java-collections-conversions/src/test/java/org/baeldung/convertarraytostring/ArrayToStringUnitTest.java rename to java-collections-conversions-2/src/test/java/com/baeldung/convertarraytostring/ArrayToStringUnitTest.java index b563475997..73cf9d6baa 100644 --- a/java-collections-conversions/src/test/java/org/baeldung/convertarraytostring/ArrayToStringUnitTest.java +++ b/java-collections-conversions-2/src/test/java/com/baeldung/convertarraytostring/ArrayToStringUnitTest.java @@ -1,15 +1,14 @@ -package org.baeldung.convertarraytostring; +package com.baeldung.convertarraytostring; + +import com.google.common.base.Joiner; +import com.google.common.base.Splitter; +import org.apache.commons.lang3.StringUtils; +import org.junit.Test; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; -import org.apache.commons.lang3.StringUtils; -import org.junit.Test; - -import com.google.common.base.Joiner; -import com.google.common.base.Splitter; - import static org.hamcrest.CoreMatchers.instanceOf; import static org.hamcrest.MatcherAssert.assertThat; import static org.junit.Assert.assertEquals; diff --git a/java-collections-conversions/README.md b/java-collections-conversions/README.md index 6d4f6ddb3a..2d3aa41f2d 100644 --- a/java-collections-conversions/README.md +++ b/java-collections-conversions/README.md @@ -9,8 +9,8 @@ This module contains articles about conversions among Collection types and array - [Convert a Map to an Array, List or Set in Java](https://www.baeldung.com/convert-map-values-to-array-list-set) - [Converting a List to String in Java](https://www.baeldung.com/java-list-to-string) - [How to Convert List to Map in Java](https://www.baeldung.com/java-list-to-map) -- [Array to String Conversions](https://www.baeldung.com/java-array-to-string) - [Converting a Collection to ArrayList in Java](https://www.baeldung.com/java-convert-collection-arraylist) - [Java 8 Collectors toMap](https://www.baeldung.com/java-collectors-tomap) - [Converting Iterable to Collection in Java](https://www.baeldung.com/java-iterable-to-collection) - [Converting Iterator to List](https://www.baeldung.com/java-convert-iterator-to-list) +- More articles: [[next -->]](../java-collections-conversions-2) \ No newline at end of file diff --git a/java-collections-conversions/pom.xml b/java-collections-conversions/pom.xml index 24d918d105..b5ab4f841a 100644 --- a/java-collections-conversions/pom.xml +++ b/java-collections-conversions/pom.xml @@ -32,6 +32,16 @@ + + java-collections-conversions-2 + + + src/main/resources + true + + + + 4.1 3.6.1 diff --git a/java-collections-conversions/src/test/java/com/baeldung/convertcollectiontoarraylist/FooUnitTest.java b/java-collections-conversions/src/test/java/com/baeldung/convertcollectiontoarraylist/CollectionToArrayListUnitTest.java similarity index 97% rename from java-collections-conversions/src/test/java/com/baeldung/convertcollectiontoarraylist/FooUnitTest.java rename to java-collections-conversions/src/test/java/com/baeldung/convertcollectiontoarraylist/CollectionToArrayListUnitTest.java index 1de600aebf..ad2ab2a756 100644 --- a/java-collections-conversions/src/test/java/com/baeldung/convertcollectiontoarraylist/FooUnitTest.java +++ b/java-collections-conversions/src/test/java/com/baeldung/convertcollectiontoarraylist/CollectionToArrayListUnitTest.java @@ -14,10 +14,10 @@ import static org.junit.Assert.*; * * @author chris */ -public class FooUnitTest { +public class CollectionToArrayListUnitTest { private static Collection srcCollection = new HashSet<>(); - public FooUnitTest() { + public CollectionToArrayListUnitTest() { } @BeforeClass diff --git a/java-collections-conversions/src/test/java/com/baeldung/convert/iteratortolist/ConvertIteratorToListServiceUnitTest.java b/java-collections-conversions/src/test/java/com/baeldung/convertiteratortolist/ConvertIteratorToListServiceUnitTest.java similarity index 98% rename from java-collections-conversions/src/test/java/com/baeldung/convert/iteratortolist/ConvertIteratorToListServiceUnitTest.java rename to java-collections-conversions/src/test/java/com/baeldung/convertiteratortolist/ConvertIteratorToListServiceUnitTest.java index ced2ddcfc0..4d6cba7d27 100644 --- a/java-collections-conversions/src/test/java/com/baeldung/convert/iteratortolist/ConvertIteratorToListServiceUnitTest.java +++ b/java-collections-conversions/src/test/java/com/baeldung/convertiteratortolist/ConvertIteratorToListServiceUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.convert.iteratortolist; +package com.baeldung.convertiteratortolist; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.collection.IsCollectionWithSize.hasSize; diff --git a/java-collections-conversions/src/test/java/com/baeldung/convertlisttomap/ConvertListWithDiplicatedIdToMapServiceUnitTest.java b/java-collections-conversions/src/test/java/com/baeldung/convertlisttomap/ConvertListWithDuplicatedIdToMapServiceUnitTest.java similarity index 96% rename from java-collections-conversions/src/test/java/com/baeldung/convertlisttomap/ConvertListWithDiplicatedIdToMapServiceUnitTest.java rename to java-collections-conversions/src/test/java/com/baeldung/convertlisttomap/ConvertListWithDuplicatedIdToMapServiceUnitTest.java index 6e766433d1..5e6828a3d5 100644 --- a/java-collections-conversions/src/test/java/com/baeldung/convertlisttomap/ConvertListWithDiplicatedIdToMapServiceUnitTest.java +++ b/java-collections-conversions/src/test/java/com/baeldung/convertlisttomap/ConvertListWithDuplicatedIdToMapServiceUnitTest.java @@ -11,7 +11,7 @@ import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.hasItem; import static org.hamcrest.Matchers.hasSize; -public class ConvertListWithDiplicatedIdToMapServiceUnitTest { +public class ConvertListWithDuplicatedIdToMapServiceUnitTest { List duplicatedIdList; private ConvertListToMapService convertListService = new ConvertListToMapService(); diff --git a/java-collections-conversions/src/test/java/org/baeldung/java/collections/JavaCollectionConversionUnitTest.java b/java-collections-conversions/src/test/java/com/baeldung/java/collections/JavaCollectionConversionUnitTest.java similarity index 99% rename from java-collections-conversions/src/test/java/org/baeldung/java/collections/JavaCollectionConversionUnitTest.java rename to java-collections-conversions/src/test/java/com/baeldung/java/collections/JavaCollectionConversionUnitTest.java index a5f684a141..4977c122e7 100644 --- a/java-collections-conversions/src/test/java/org/baeldung/java/collections/JavaCollectionConversionUnitTest.java +++ b/java-collections-conversions/src/test/java/com/baeldung/java/collections/JavaCollectionConversionUnitTest.java @@ -1,4 +1,4 @@ -package org.baeldung.java.collections; +package com.baeldung.java.collections; import java.util.ArrayList; import java.util.Arrays; diff --git a/java-collections-conversions/src/test/java/org/baeldung/java/lists/ListToSTring.java b/java-collections-conversions/src/test/java/com/baeldung/java/lists/ListToStringUnitTest.java similarity index 91% rename from java-collections-conversions/src/test/java/org/baeldung/java/lists/ListToSTring.java rename to java-collections-conversions/src/test/java/com/baeldung/java/lists/ListToStringUnitTest.java index 3fc26bcb51..0fdc096d14 100644 --- a/java-collections-conversions/src/test/java/org/baeldung/java/lists/ListToSTring.java +++ b/java-collections-conversions/src/test/java/com/baeldung/java/lists/ListToStringUnitTest.java @@ -1,4 +1,4 @@ -package org.baeldung.java.lists; +package com.baeldung.java.lists; import java.util.Arrays; import java.util.List; @@ -7,7 +7,7 @@ import java.util.stream.Collectors; import org.apache.commons.lang3.StringUtils; import org.junit.Test; -public class ListToSTring { +public class ListToStringUnitTest { @Test public void whenListToString_thenPrintDefault() { diff --git a/pom.xml b/pom.xml index 5404c908d3..d61d12ad4d 100644 --- a/pom.xml +++ b/pom.xml @@ -482,6 +482,7 @@ jackson-2 jackson-simple java-collections-conversions + java-collections-conversions-2 java-collections-maps java-collections-maps-2 java-jdi @@ -609,7 +610,7 @@ spring-boot-nashorn java-blockchain -wildfly + wildfly @@ -1241,6 +1242,7 @@ jackson-2 jackson-simple java-collections-conversions + java-collections-conversions-2 java-collections-maps java-collections-maps-2 java-jdi From a87822229a2247098752e0f59c7014b9e7c08bff Mon Sep 17 00:00:00 2001 From: vatsalgosar Date: Wed, 23 Oct 2019 00:17:07 +0530 Subject: [PATCH 179/265] BAEL-3143 - made the required changes --- .../baeldung/scanner/JavaScannerUnitTest.java | 42 +++++-------------- 1 file changed, 11 insertions(+), 31 deletions(-) diff --git a/core-java-modules/core-java-io-2/src/test/java/com/baeldung/scanner/JavaScannerUnitTest.java b/core-java-modules/core-java-io-2/src/test/java/com/baeldung/scanner/JavaScannerUnitTest.java index ea80c7aef7..8bc859ca07 100644 --- a/core-java-modules/core-java-io-2/src/test/java/com/baeldung/scanner/JavaScannerUnitTest.java +++ b/core-java-modules/core-java-io-2/src/test/java/com/baeldung/scanner/JavaScannerUnitTest.java @@ -1,54 +1,34 @@ package com.baeldung.scanner; -import org.junit.Test; +import static org.junit.Assert.assertEquals; -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.nio.charset.StandardCharsets; import java.util.NoSuchElementException; import java.util.Scanner; -import static org.assertj.core.api.Assertions.fail; -import static org.junit.Assert.assertEquals; +import org.junit.Test; public class JavaScannerUnitTest { @Test public void whenReadingLines_thenCorrect() { String input = "Scanner\nTest\n"; - - byte[] byteArray = input.getBytes(StandardCharsets.UTF_8); - //@formatter:off - try (InputStream is = new ByteArrayInputStream(byteArray); - Scanner scanner = new Scanner(is)) { - - //@formatter:on - String result = scanner.nextLine() + " " + scanner.nextLine(); - - String expected = input.replace("\n", " ") - .trim(); - assertEquals(expected, result); - } catch (IOException e) { - fail(e.getMessage()); + try (Scanner scanner = new Scanner(input)) { + assertEquals("Scanner", scanner.nextLine()); + assertEquals("Test", scanner.nextLine()); } } @Test(expected = NoSuchElementException.class) - public void whenReadingLinesFromStringContainingNoLines_thenThrowNoSuchElementException() { - String input = ""; - Scanner scanner = new Scanner(input); - String result = scanner.nextLine(); - scanner.close(); + public void whenReadingLines_thenThrowNoSuchElementException() { + try (Scanner scanner = new Scanner("")) { + String result = scanner.nextLine(); + } } @Test(expected = IllegalStateException.class) - public void whenReadingLinesUsingClosedScanner_thenThrowIllegalStateException() { - String input = ""; - Scanner scanner = new Scanner(input); + public void whenReadingLines_thenThrowIllegalStateException() { + Scanner scanner = new Scanner(""); scanner.close(); String result = scanner.nextLine(); } - - } From bcf119bf1a0c00c33418c7c0de3dc1c0ccd26cda Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Wed, 23 Oct 2019 06:50:50 +0530 Subject: [PATCH 180/265] Spring Integration Java DSL - Github Issue 7885 (#8060) * Spring Integration Java DSL - Github Issue 7885 - Fixed the bridge example * Spring Integration Java DSL - Github Issue 7885 - Fixed the bridge example --- .../java/com/baeldung/dsl/JavaDSLFileCopyConfig.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/spring-integration/src/main/java/com/baeldung/dsl/JavaDSLFileCopyConfig.java b/spring-integration/src/main/java/com/baeldung/dsl/JavaDSLFileCopyConfig.java index 7e91345f04..e79eec3e83 100644 --- a/spring-integration/src/main/java/com/baeldung/dsl/JavaDSLFileCopyConfig.java +++ b/spring-integration/src/main/java/com/baeldung/dsl/JavaDSLFileCopyConfig.java @@ -16,8 +16,10 @@ import org.springframework.integration.core.MessageSource; import org.springframework.integration.dsl.IntegrationFlow; import org.springframework.integration.dsl.IntegrationFlows; import org.springframework.integration.dsl.Pollers; +import org.springframework.integration.dsl.channel.MessageChannels; import org.springframework.integration.file.FileReadingMessageSource; import org.springframework.integration.file.FileWritingMessageHandler; +import org.springframework.messaging.MessageChannel; import org.springframework.messaging.MessageHandler; /** @@ -104,9 +106,14 @@ public class JavaDSLFileCopyConfig { return handler; } + @Bean + public MessageChannel holdingTank() { + return MessageChannels.queue().get(); + } + // @Bean public IntegrationFlow fileReader() { - return IntegrationFlows.from(sourceDirectory()) + return IntegrationFlows.from(sourceDirectory(), configurer -> configurer.poller(Pollers.fixedDelay(10))) .filter(onlyJpgs()) .channel("holdingTank") .get(); From dcfa9a1782b65eb6acb219efb40425b08b923d08 Mon Sep 17 00:00:00 2001 From: Kai Yuan Date: Tue, 15 Oct 2019 22:54:02 +0200 Subject: [PATCH 181/265] [BAEL-3343] hasNext() vs hasNextLine() in scanner demo --- .../scanner/HasNextVsHasNextLineDemo.java | 96 +++++++++++++++++++ .../main/resources/scanner/log4j.properties | 4 + 2 files changed, 100 insertions(+) create mode 100644 core-java-modules/core-java-io-2/src/main/java/com/baeldung/scanner/HasNextVsHasNextLineDemo.java create mode 100644 core-java-modules/core-java-io-2/src/main/resources/scanner/log4j.properties diff --git a/core-java-modules/core-java-io-2/src/main/java/com/baeldung/scanner/HasNextVsHasNextLineDemo.java b/core-java-modules/core-java-io-2/src/main/java/com/baeldung/scanner/HasNextVsHasNextLineDemo.java new file mode 100644 index 0000000000..8653b1e137 --- /dev/null +++ b/core-java-modules/core-java-io-2/src/main/java/com/baeldung/scanner/HasNextVsHasNextLineDemo.java @@ -0,0 +1,96 @@ +package com.baeldung.scanner; + +import lombok.extern.log4j.Log4j; +import org.apache.log4j.LogManager; +import org.apache.log4j.PropertyConfigurator; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Properties; +import java.util.Scanner; + +@Log4j +public class HasNextVsHasNextLineDemo { + private static final String LINE = "----------------------------"; + private static final String END_LINE = "--------OUTPUT--END---------\n"; + + + private static final String INPUT = new StringBuilder() + .append("magic\tproject\n") + .append(" database: oracle\n") + .append("dependencies:\n") + .append("spring:foo:bar\n") + .append("\n").toString(); + + private static void hasNextBasic() { + printHeader("hasNext() Basic"); + Scanner scanner = new Scanner(INPUT); + while (scanner.hasNext()) { + log.info(scanner.next()); + } + log.info(END_LINE); + scanner.close(); + } + + private static void hasNextWithDelimiter() { + printHeader("hasNext() with delimiter"); + Scanner scanner = new Scanner(INPUT); + while (scanner.hasNext()) { + String token = scanner.next(); + if ("dependencies:".equals(token)) { + scanner.useDelimiter(":"); + } + log.info(token); + } + log.info(END_LINE); + scanner.close(); + } + + private static void hasNextWithDelimiterFixed() { + printHeader("hasNext() with delimiter FIX"); + Scanner scanner = new Scanner(INPUT); + while (scanner.hasNext()) { + String token = scanner.next(); + if ("dependencies:".equals(token)) { + scanner.useDelimiter(":|\\s+"); + } + log.info(token); + } + log.info(END_LINE); + scanner.close(); + } + + private static void addLineNumber() { + printHeader("add line number by hasNextLine() "); + Scanner scanner = new Scanner(INPUT); + int i = 0; + while (scanner.hasNextLine()) { + log.info(String.format("%d|%s", ++i, scanner.nextLine())); + } + log.info(END_LINE); + scanner.close(); + } + + private static void printHeader(String title) { + log.info(LINE); + log.info(title); + log.info(LINE); + } + + public static void main(String[] args) throws IOException { + setLogger(); + hasNextBasic(); + hasNextWithDelimiter(); + hasNextWithDelimiterFixed(); + addLineNumber(); + } + + //overwrite the logger config + private static void setLogger() throws IOException { + InputStream is = HasNextVsHasNextLineDemo.class.getResourceAsStream("/scanner/log4j.properties"); + Properties props = new Properties(); + props.load(is); + LogManager.resetConfiguration(); + PropertyConfigurator.configure(props); + } +} \ No newline at end of file diff --git a/core-java-modules/core-java-io-2/src/main/resources/scanner/log4j.properties b/core-java-modules/core-java-io-2/src/main/resources/scanner/log4j.properties new file mode 100644 index 0000000000..59cb116bff --- /dev/null +++ b/core-java-modules/core-java-io-2/src/main/resources/scanner/log4j.properties @@ -0,0 +1,4 @@ +log4j.rootLogger=INFO, A1 +log4j.appender.A1=org.apache.log4j.ConsoleAppender +log4j.appender.A1.layout=org.apache.log4j.PatternLayout +log4j.appender.A1.layout.ConversionPattern=[DEMO]%m%n From 7edc71d8e14cf4844c865b84693a4346bec44775 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 23 Oct 2019 16:52:12 +0800 Subject: [PATCH 182/265] Update README.md --- algorithms-sorting/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/algorithms-sorting/README.md b/algorithms-sorting/README.md index 8b801e4387..15a5ec6e02 100644 --- a/algorithms-sorting/README.md +++ b/algorithms-sorting/README.md @@ -16,4 +16,5 @@ This module contains articles about sorting algorithms. - [Selection Sort in Java](https://www.baeldung.com/java-selection-sort) - [Sorting Strings by Contained Numbers in Java](https://www.baeldung.com/java-sort-strings-contained-numbers) - [Radix Sort in Java](https://www.baeldung.com/java-radix-sort) +- [Sorting a String Alphabetically in Java](https://www.baeldung.com/java-sort-string-alphabetically) - [Bucket Sort in Java](https://www.baeldung.com/java-bucket-sort) From 73037b5e8b39b98c791ae7ec119f53a9552bd3e6 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 23 Oct 2019 16:54:58 +0800 Subject: [PATCH 183/265] Update README.md --- algorithms-miscellaneous-4/README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/algorithms-miscellaneous-4/README.md b/algorithms-miscellaneous-4/README.md index a9d0dd4e5b..b9f41cf3b0 100644 --- a/algorithms-miscellaneous-4/README.md +++ b/algorithms-miscellaneous-4/README.md @@ -1,4 +1,8 @@ -## Relevant articles: +## Algorithms - Miscellaneous + +This module contains articles about algorithms. Some classes of algorithms, e.g., sorting and genetic algorithms, have their own dedicated modules. + +### Relevant articles: - [Multi-Swarm Optimization Algorithm in Java](https://www.baeldung.com/java-multi-swarm-algorithm) - [String Search Algorithms for Large Texts](https://www.baeldung.com/java-full-text-search-algorithms) From 220b2d9010012f2f7bd51993064d9c4de2a78398 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 23 Oct 2019 16:56:38 +0800 Subject: [PATCH 184/265] Update README.md --- algorithms-miscellaneous-4/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/algorithms-miscellaneous-4/README.md b/algorithms-miscellaneous-4/README.md index b9f41cf3b0..df2eafb733 100644 --- a/algorithms-miscellaneous-4/README.md +++ b/algorithms-miscellaneous-4/README.md @@ -1,6 +1,6 @@ ## Algorithms - Miscellaneous -This module contains articles about algorithms. Some classes of algorithms, e.g., sorting and genetic algorithms, have their own dedicated modules. +This module contains articles about algorithms. Some classes of algorithms, e.g., [sorting](https://github.com/eugenp/tutorials/blob/algorithms-sorting) and [genetic algorithms](https://github.com/eugenp/tutorials/blob/algorithms-genetic), have their own dedicated modules. ### Relevant articles: From 1de7b016a87b375e4573661f880cfcd24265c3e2 Mon Sep 17 00:00:00 2001 From: Martin van Wingerden Date: Wed, 23 Oct 2019 11:04:40 +0200 Subject: [PATCH 185/265] [BAEL-3315] Added missing code snippets from the Java 8 Date/Time article Also: - formatted changed files with Eclipse profile - corrected failing test: givenTwoDatesInJava8_whenDifferentiating_thenWeGetSix --- .../datetime/UseDateTimeFormatter.java | 21 ++++++++++ .../com/baeldung/datetime/UseLocalDate.java | 7 +++- .../baeldung/datetime/UseLocalDateTime.java | 4 ++ .../com/baeldung/datetime/UseLocalTime.java | 4 ++ .../baeldung/datetime/UseOffsetDateTime.java | 11 +++++ .../baeldung/datetime/UseZonedDateTime.java | 24 ++++++----- .../com/baeldung/date/DateDiffUnitTest.java | 11 ++--- ...DateTimeApiGeneralComparisonsUnitTest.java | 28 +++++++++---- .../dateapi/JavaDurationUnitTest.java | 35 ++++++++++++++-- .../baeldung/dateapi/JavaPeriodUnitTest.java | 41 +++++++++++++++---- .../UseDateTimeFormatterUnitTest.java | 36 ++++++++++++++++ .../datetime/UseLocalDateTimeUnitTest.java | 27 +++++++++++- .../datetime/UseLocalDateUnitTest.java | 29 ++++++++++++- .../datetime/UseLocalTimeUnitTest.java | 17 ++++++-- .../datetime/UseOffsetDateTimeUnitTest.java | 24 +++++++++++ .../datetime/UseToInstantUnitTest.java | 33 +++++++++++++++ .../datetime/UseZonedDateTimeUnitTest.java | 21 +++++++++- 17 files changed, 330 insertions(+), 43 deletions(-) create mode 100644 java-dates/src/main/java/com/baeldung/datetime/UseDateTimeFormatter.java create mode 100644 java-dates/src/main/java/com/baeldung/datetime/UseOffsetDateTime.java create mode 100644 java-dates/src/test/java/com/baeldung/datetime/UseDateTimeFormatterUnitTest.java create mode 100644 java-dates/src/test/java/com/baeldung/datetime/UseOffsetDateTimeUnitTest.java create mode 100644 java-dates/src/test/java/com/baeldung/datetime/UseToInstantUnitTest.java diff --git a/java-dates/src/main/java/com/baeldung/datetime/UseDateTimeFormatter.java b/java-dates/src/main/java/com/baeldung/datetime/UseDateTimeFormatter.java new file mode 100644 index 0000000000..13a2ba6a1a --- /dev/null +++ b/java-dates/src/main/java/com/baeldung/datetime/UseDateTimeFormatter.java @@ -0,0 +1,21 @@ +package com.baeldung.datetime; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.time.format.FormatStyle; +import java.util.Locale; + +public class UseDateTimeFormatter { + public String formatAsIsoDate(LocalDateTime localDateTime) { + return localDateTime.format(DateTimeFormatter.ISO_DATE); + } + + public String formatCustom(LocalDateTime localDateTime, String pattern) { + return localDateTime.format(DateTimeFormatter.ofPattern(pattern)); + } + + public String formatWithStyleAndLocale(LocalDateTime localDateTime, FormatStyle formatStyle, Locale locale) { + return localDateTime.format(DateTimeFormatter.ofLocalizedDateTime(formatStyle) + .withLocale(locale)); + } +} diff --git a/java-dates/src/main/java/com/baeldung/datetime/UseLocalDate.java b/java-dates/src/main/java/com/baeldung/datetime/UseLocalDate.java index b380c04fc2..ec8dfa2fc4 100644 --- a/java-dates/src/main/java/com/baeldung/datetime/UseLocalDate.java +++ b/java-dates/src/main/java/com/baeldung/datetime/UseLocalDate.java @@ -36,10 +36,15 @@ class UseLocalDate { } LocalDate getFirstDayOfMonth() { - LocalDate firstDayOfMonth = LocalDate.now().with(TemporalAdjusters.firstDayOfMonth()); + LocalDate firstDayOfMonth = LocalDate.now() + .with(TemporalAdjusters.firstDayOfMonth()); return firstDayOfMonth; } + boolean isLeapYear(LocalDate localDate) { + return localDate.isLeapYear(); + } + LocalDateTime getStartOfDay(LocalDate localDate) { LocalDateTime startofDay = localDate.atStartOfDay(); return startofDay; diff --git a/java-dates/src/main/java/com/baeldung/datetime/UseLocalDateTime.java b/java-dates/src/main/java/com/baeldung/datetime/UseLocalDateTime.java index b2ff11ba16..267a9412eb 100644 --- a/java-dates/src/main/java/com/baeldung/datetime/UseLocalDateTime.java +++ b/java-dates/src/main/java/com/baeldung/datetime/UseLocalDateTime.java @@ -2,6 +2,7 @@ package com.baeldung.datetime; import java.time.LocalDateTime; import java.time.LocalTime; +import java.time.ZoneOffset; import java.time.temporal.ChronoField; public class UseLocalDateTime { @@ -21,4 +22,7 @@ public class UseLocalDateTime { return endOfDate; } + LocalDateTime ofEpochSecond(int epochSecond, ZoneOffset zoneOffset) { + return LocalDateTime.ofEpochSecond(epochSecond, 0, zoneOffset); + } } diff --git a/java-dates/src/main/java/com/baeldung/datetime/UseLocalTime.java b/java-dates/src/main/java/com/baeldung/datetime/UseLocalTime.java index 8d166c413f..876516e365 100644 --- a/java-dates/src/main/java/com/baeldung/datetime/UseLocalTime.java +++ b/java-dates/src/main/java/com/baeldung/datetime/UseLocalTime.java @@ -9,6 +9,10 @@ public class UseLocalTime { return LocalTime.of(hour, min, seconds); } + LocalTime getLocalTimeUsingFactoryOfMethod(int hour, int min) { + return LocalTime.of(hour, min); + } + LocalTime getLocalTimeUsingParseMethod(String timeRepresentation) { return LocalTime.parse(timeRepresentation); } diff --git a/java-dates/src/main/java/com/baeldung/datetime/UseOffsetDateTime.java b/java-dates/src/main/java/com/baeldung/datetime/UseOffsetDateTime.java new file mode 100644 index 0000000000..ed8499d6e0 --- /dev/null +++ b/java-dates/src/main/java/com/baeldung/datetime/UseOffsetDateTime.java @@ -0,0 +1,11 @@ +package com.baeldung.datetime; + +import java.time.LocalDateTime; +import java.time.OffsetDateTime; +import java.time.ZoneOffset; + +public class UseOffsetDateTime { + public OffsetDateTime offsetOfLocalDateTimeAndOffset(LocalDateTime localDateTime, ZoneOffset offset) { + return OffsetDateTime.of(localDateTime, offset); + } +} diff --git a/java-dates/src/main/java/com/baeldung/datetime/UseZonedDateTime.java b/java-dates/src/main/java/com/baeldung/datetime/UseZonedDateTime.java index 505bfa741f..a8948e5ce1 100644 --- a/java-dates/src/main/java/com/baeldung/datetime/UseZonedDateTime.java +++ b/java-dates/src/main/java/com/baeldung/datetime/UseZonedDateTime.java @@ -12,31 +12,35 @@ class UseZonedDateTime { return ZonedDateTime.of(localDateTime, zoneId); } + ZonedDateTime getZonedDateTimeUsingParseMethod(String parsableString) { + return ZonedDateTime.parse(parsableString); + } + ZonedDateTime getStartOfDay(LocalDate localDate, ZoneId zone) { - ZonedDateTime startofDay = localDate.atStartOfDay() + ZonedDateTime startOfDay = localDate.atStartOfDay() .atZone(zone); - return startofDay; + return startOfDay; } ZonedDateTime getStartOfDayShorthand(LocalDate localDate, ZoneId zone) { - ZonedDateTime startofDay = localDate.atStartOfDay(zone); - return startofDay; + ZonedDateTime startOfDay = localDate.atStartOfDay(zone); + return startOfDay; } ZonedDateTime getStartOfDayFromZonedDateTime(ZonedDateTime zonedDateTime) { - ZonedDateTime startofDay = zonedDateTime.toLocalDateTime() + ZonedDateTime startOfDay = zonedDateTime.toLocalDateTime() .toLocalDate() .atStartOfDay(zonedDateTime.getZone()); - return startofDay; + return startOfDay; } ZonedDateTime getStartOfDayAtMinTime(ZonedDateTime zonedDateTime) { - ZonedDateTime startofDay = zonedDateTime.with(ChronoField.HOUR_OF_DAY, 0); - return startofDay; + ZonedDateTime startOfDay = zonedDateTime.with(ChronoField.HOUR_OF_DAY, 0); + return startOfDay; } ZonedDateTime getStartOfDayAtMidnightTime(ZonedDateTime zonedDateTime) { - ZonedDateTime startofDay = zonedDateTime.with(ChronoField.NANO_OF_DAY, 0); - return startofDay; + ZonedDateTime startOfDay = zonedDateTime.with(ChronoField.NANO_OF_DAY, 0); + return startOfDay; } } diff --git a/java-dates/src/test/java/com/baeldung/date/DateDiffUnitTest.java b/java-dates/src/test/java/com/baeldung/date/DateDiffUnitTest.java index a35699e469..226556d4bb 100644 --- a/java-dates/src/test/java/com/baeldung/date/DateDiffUnitTest.java +++ b/java-dates/src/test/java/com/baeldung/date/DateDiffUnitTest.java @@ -1,6 +1,6 @@ package com.baeldung.date; -import org.junit.Test; +import static org.junit.Assert.assertEquals; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -16,7 +16,7 @@ import java.util.Locale; import java.util.TimeZone; import java.util.concurrent.TimeUnit; -import static org.junit.Assert.assertEquals; +import org.junit.Test; public class DateDiffUnitTest { @@ -31,14 +31,14 @@ public class DateDiffUnitTest { assertEquals(diff, 6); } - + @Test public void givenTwoDatesInJava8_whenDifferentiating_thenWeGetSix() { LocalDate now = LocalDate.now(); LocalDate sixDaysBehind = now.minusDays(6); Period period = Period.between(now, sixDaysBehind); - int diff = period.getDays(); + int diff = Math.abs(period.getDays()); assertEquals(diff, 6); } @@ -68,7 +68,8 @@ public class DateDiffUnitTest { public void givenTwoZonedDateTimesInJava8_whenDifferentiating_thenWeGetSix() { LocalDateTime ldt = LocalDateTime.now(); ZonedDateTime now = ldt.atZone(ZoneId.of("America/Montreal")); - ZonedDateTime sixDaysBehind = now.withZoneSameInstant(ZoneId.of("Asia/Singapore")).minusDays(6); + ZonedDateTime sixDaysBehind = now.withZoneSameInstant(ZoneId.of("Asia/Singapore")) + .minusDays(6); long diff = ChronoUnit.DAYS.between(sixDaysBehind, now); assertEquals(diff, 6); } diff --git a/java-dates/src/test/java/com/baeldung/date/comparison/Java8DateTimeApiGeneralComparisonsUnitTest.java b/java-dates/src/test/java/com/baeldung/date/comparison/Java8DateTimeApiGeneralComparisonsUnitTest.java index ff51476e7c..af72f9e58a 100644 --- a/java-dates/src/test/java/com/baeldung/date/comparison/Java8DateTimeApiGeneralComparisonsUnitTest.java +++ b/java-dates/src/test/java/com/baeldung/date/comparison/Java8DateTimeApiGeneralComparisonsUnitTest.java @@ -1,12 +1,16 @@ package com.baeldung.date.comparison; -import org.junit.Test; - -import java.time.*; - import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertThat; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.ZoneId; +import java.time.ZonedDateTime; + +import org.junit.Test; + public class Java8DateTimeApiGeneralComparisonsUnitTest { @Test @@ -54,10 +58,8 @@ public class Java8DateTimeApiGeneralComparisonsUnitTest { @Test public void givenZonedDateTimes_whenComparing_thenAssertsPass() { - ZonedDateTime timeInNewYork = ZonedDateTime.of(2019, 8, 10, 8, 0, 0, 0, - ZoneId.of("America/New_York")); - ZonedDateTime timeInBerlin = ZonedDateTime.of(2019, 8, 10, 14, 0, 0, 0, - ZoneId.of("Europe/Berlin")); + ZonedDateTime timeInNewYork = ZonedDateTime.of(2019, 8, 10, 8, 0, 0, 0, ZoneId.of("America/New_York")); + ZonedDateTime timeInBerlin = ZonedDateTime.of(2019, 8, 10, 14, 0, 0, 0, ZoneId.of("Europe/Berlin")); assertThat(timeInNewYork.isAfter(timeInBerlin), is(false)); assertThat(timeInNewYork.isBefore(timeInBerlin), is(false)); @@ -80,4 +82,14 @@ public class Java8DateTimeApiGeneralComparisonsUnitTest { assertThat(firstTime.compareTo(secondTime), is(-1)); } + + @Test + public void givenMinMaxLocalTimes_whenComparing_thenAssertsPass() { + LocalTime minTime = LocalTime.MIN; + LocalTime time = LocalTime.of(8, 30); + LocalTime maxTime = LocalTime.MAX; + + assertThat(minTime.isBefore(time), is(true)); + assertThat(time.isBefore(maxTime), is(true)); + } } \ No newline at end of file diff --git a/java-dates/src/test/java/com/baeldung/dateapi/JavaDurationUnitTest.java b/java-dates/src/test/java/com/baeldung/dateapi/JavaDurationUnitTest.java index db6b353ba6..be43fb609a 100644 --- a/java-dates/src/test/java/com/baeldung/dateapi/JavaDurationUnitTest.java +++ b/java-dates/src/test/java/com/baeldung/dateapi/JavaDurationUnitTest.java @@ -1,16 +1,39 @@ package com.baeldung.dateapi; +import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import java.time.Duration; import java.time.Instant; +import java.time.LocalTime; import java.time.temporal.ChronoUnit; import org.junit.Test; public class JavaDurationUnitTest { + @Test + public void givenATimePlus30Seconds_whenRequestingDuration_thenExpect30() { + LocalTime initialTime = LocalTime.of(6, 30, 0); + LocalTime finalTime = initialTime.plus(Duration.ofSeconds(30)); + + long seconds = Duration.between(initialTime, finalTime) + .getSeconds(); + + assertThat(seconds).isEqualTo(30); + } + + @Test + public void givenATimePlus30Seconds_whenRequestingSecondsBetween_thenExpect30() { + LocalTime initialTime = LocalTime.of(6, 30, 0); + LocalTime finalTime = initialTime.plus(Duration.ofSeconds(30)); + + long seconds = ChronoUnit.SECONDS.between(initialTime, finalTime); + + assertThat(seconds).isEqualTo(30); + } + @Test public void test2() { Instant start = Instant.parse("2017-10-03T10:15:30.00Z"); @@ -29,11 +52,15 @@ public class JavaDurationUnitTest { Duration fromMinutes = Duration.ofMinutes(60); assertEquals(1, fromMinutes.toHours()); - assertEquals(120, duration.plusSeconds(60).getSeconds()); - assertEquals(30, duration.minusSeconds(30).getSeconds()); + assertEquals(120, duration.plusSeconds(60) + .getSeconds()); + assertEquals(30, duration.minusSeconds(30) + .getSeconds()); - assertEquals(120, duration.plus(60, ChronoUnit.SECONDS).getSeconds()); - assertEquals(30, duration.minus(30, ChronoUnit.SECONDS).getSeconds()); + assertEquals(120, duration.plus(60, ChronoUnit.SECONDS) + .getSeconds()); + assertEquals(30, duration.minus(30, ChronoUnit.SECONDS) + .getSeconds()); Duration fromChar1 = Duration.parse("P1DT1H10M10.5S"); Duration fromChar2 = Duration.parse("PT10M"); diff --git a/java-dates/src/test/java/com/baeldung/dateapi/JavaPeriodUnitTest.java b/java-dates/src/test/java/com/baeldung/dateapi/JavaPeriodUnitTest.java index 81e9153a51..6dfbbe8c24 100644 --- a/java-dates/src/test/java/com/baeldung/dateapi/JavaPeriodUnitTest.java +++ b/java-dates/src/test/java/com/baeldung/dateapi/JavaPeriodUnitTest.java @@ -1,18 +1,41 @@ package com.baeldung.dateapi; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; + +import java.time.LocalDate; +import java.time.Period; +import java.time.temporal.ChronoUnit; + import org.apache.log4j.Logger; import org.junit.Test; -import java.time.LocalDate; -import java.time.Period; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; - public class JavaPeriodUnitTest { private static final Logger LOG = Logger.getLogger(JavaPeriodUnitTest.class); + @Test + public void givenADatePlus5Days_whenRequestingPeriod_thenExpectFive() { + LocalDate initialDate = LocalDate.parse("2007-05-10"); + LocalDate finalDate = initialDate.plus(Period.ofDays(5)); + + int days = Period.between(initialDate, finalDate) + .getDays(); + + assertThat(days).isEqualTo(5); + } + + @Test + public void givenADatePlus5Days_whenRequestingDaysBetween_thenExpectFive() { + LocalDate initialDate = LocalDate.parse("2007-05-10"); + LocalDate finalDate = initialDate.plus(Period.ofDays(5)); + + long days = ChronoUnit.DAYS.between(initialDate, finalDate); + + assertThat(days).isEqualTo(5); + } + @Test public void whenTestPeriod_thenOk() { @@ -24,8 +47,10 @@ public class JavaPeriodUnitTest { LOG.info(String.format("Years:%d months:%d days:%d", period.getYears(), period.getMonths(), period.getDays())); assertFalse(period.isNegative()); - assertEquals(56, period.plusDays(50).getDays()); - assertEquals(9, period.minusMonths(2).getMonths()); + assertEquals(56, period.plusDays(50) + .getDays()); + assertEquals(9, period.minusMonths(2) + .getMonths()); Period fromUnits = Period.of(3, 10, 10); Period fromDays = Period.ofDays(50); diff --git a/java-dates/src/test/java/com/baeldung/datetime/UseDateTimeFormatterUnitTest.java b/java-dates/src/test/java/com/baeldung/datetime/UseDateTimeFormatterUnitTest.java new file mode 100644 index 0000000000..797e0b954a --- /dev/null +++ b/java-dates/src/test/java/com/baeldung/datetime/UseDateTimeFormatterUnitTest.java @@ -0,0 +1,36 @@ +package com.baeldung.datetime; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.time.LocalDateTime; +import java.time.Month; +import java.time.format.FormatStyle; +import java.util.Locale; + +import org.junit.Test; + +public class UseDateTimeFormatterUnitTest { + private final UseDateTimeFormatter subject = new UseDateTimeFormatter(); + private final LocalDateTime localDateTime = LocalDateTime.of(2015, Month.JANUARY, 25, 6, 30); + + @Test + public void givenALocalDate_whenFormattingAsIso_thenPass() { + String result = subject.formatAsIsoDate(localDateTime); + + assertThat(result).isEqualTo("2015-01-25"); + } + + @Test + public void givenALocalDate_whenFormattingWithPattern_thenPass() { + String result = subject.formatCustom(localDateTime, "yyyy/MM/dd"); + + assertThat(result).isEqualTo("2015/01/25"); + } + + @Test + public void givenALocalDate_whenFormattingWithStyleAndLocale_thenPass() { + String result = subject.formatWithStyleAndLocale(localDateTime, FormatStyle.MEDIUM, Locale.UK); + + assertThat(result).isEqualTo("25 Jan 2015, 06:30:00"); + } +} \ No newline at end of file diff --git a/java-dates/src/test/java/com/baeldung/datetime/UseLocalDateTimeUnitTest.java b/java-dates/src/test/java/com/baeldung/datetime/UseLocalDateTimeUnitTest.java index 5709fc7209..2bbee16e25 100644 --- a/java-dates/src/test/java/com/baeldung/datetime/UseLocalDateTimeUnitTest.java +++ b/java-dates/src/test/java/com/baeldung/datetime/UseLocalDateTimeUnitTest.java @@ -7,12 +7,13 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.Month; +import java.time.ZoneOffset; import org.junit.Test; public class UseLocalDateTimeUnitTest { - UseLocalDateTime useLocalDateTime = new UseLocalDateTime(); + private UseLocalDateTime useLocalDateTime = new UseLocalDateTime(); @Test public void givenString_whenUsingParse_thenLocalDateTime() { @@ -33,4 +34,28 @@ public class UseLocalDateTimeUnitTest { assertThat(endOfDayFromGivenDirectly.toLocalTime()).isEqualTo(LocalTime.MAX); assertThat(endOfDayFromGivenDirectly.toString()).isEqualTo("2018-06-23T23:59:59.999999999"); } + + @Test + public void givenLocalDateTimeInFebruary_whenRequestingMonth_thenMonthIsFebruary() { + LocalDateTime givenLocalDateTime = LocalDateTime.of(2015, Month.FEBRUARY, 20, 6, 30); + + assertThat(givenLocalDateTime.getMonth()).isEqualTo(Month.FEBRUARY); + } + + @Test + public void givenLocalDateTime_whenManipulating_thenResultIsAsExpected() { + LocalDateTime givenLocalDateTime = LocalDateTime.parse("2015-02-20T06:30:00"); + + LocalDateTime manipulatedLocalDateTime = givenLocalDateTime.plusDays(1); + manipulatedLocalDateTime = manipulatedLocalDateTime.minusHours(2); + + assertThat(manipulatedLocalDateTime).isEqualTo(LocalDateTime.of(2015, Month.FEBRUARY, 21, 4, 30)); + } + + @Test + public void whenRequestTimeFromEpoch_thenResultIsAsExpected() { + LocalDateTime result = useLocalDateTime.ofEpochSecond(1465817690, ZoneOffset.UTC); + + assertThat(result.toString()).isEqualTo("2016-06-13T11:34:50"); + } } diff --git a/java-dates/src/test/java/com/baeldung/datetime/UseLocalDateUnitTest.java b/java-dates/src/test/java/com/baeldung/datetime/UseLocalDateUnitTest.java index bb9b60956d..fd22be9260 100644 --- a/java-dates/src/test/java/com/baeldung/datetime/UseLocalDateUnitTest.java +++ b/java-dates/src/test/java/com/baeldung/datetime/UseLocalDateUnitTest.java @@ -12,7 +12,7 @@ import org.junit.Test; public class UseLocalDateUnitTest { - UseLocalDate useLocalDate = new UseLocalDate(); + private UseLocalDate useLocalDate = new UseLocalDate(); @Test public void givenValues_whenUsingFactoryOf_thenLocalDate() { @@ -88,4 +88,31 @@ public class UseLocalDateUnitTest { assertThat(endOfDayWithMax.toString()).isEqualTo("2018-06-23T23:59:59.999999999"); } + @Test + public void givenTheYear2000_whenCheckingForLeapYear_thenReturnTrue() { + LocalDate given = LocalDate.parse("2000-06-23"); + + boolean leapYear = useLocalDate.isLeapYear(given); + + assertThat(leapYear).isEqualTo(true); + } + + @Test + public void givenTheYear2004_whenCheckingForLeapYear_thenReturnTrue() { + LocalDate given = LocalDate.parse("2004-06-23"); + + boolean leapYear = useLocalDate.isLeapYear(given); + + assertThat(leapYear).isEqualTo(true); + } + + @Test + public void givenTheYear2019_whenCheckingForLeapYear_thenReturnFalse() { + LocalDate given = LocalDate.parse("2019-06-23"); + + boolean leapYear = useLocalDate.isLeapYear(given); + + assertThat(leapYear).isEqualTo(false); + } + } diff --git a/java-dates/src/test/java/com/baeldung/datetime/UseLocalTimeUnitTest.java b/java-dates/src/test/java/com/baeldung/datetime/UseLocalTimeUnitTest.java index 996e200ae9..afee9126f9 100644 --- a/java-dates/src/test/java/com/baeldung/datetime/UseLocalTimeUnitTest.java +++ b/java-dates/src/test/java/com/baeldung/datetime/UseLocalTimeUnitTest.java @@ -7,21 +7,30 @@ import org.junit.Test; public class UseLocalTimeUnitTest { - UseLocalTime useLocalTime = new UseLocalTime(); + private UseLocalTime useLocalTime = new UseLocalTime(); @Test public void givenValues_whenUsingFactoryOf_thenLocalTime() { - Assert.assertEquals("07:07:07", useLocalTime.getLocalTimeUsingFactoryOfMethod(7, 7, 7).toString()); + Assert.assertEquals("07:07:07", useLocalTime.getLocalTimeUsingFactoryOfMethod(7, 7, 7) + .toString()); + } + + @Test + public void givenValues_whenUsingFactoryOfWithoutSeconds_thenLocalTime() { + Assert.assertEquals("07:07", useLocalTime.getLocalTimeUsingFactoryOfMethod(7, 7) + .toString()); } @Test public void givenString_whenUsingParse_thenLocalTime() { - Assert.assertEquals("06:30", useLocalTime.getLocalTimeUsingParseMethod("06:30").toString()); + Assert.assertEquals("06:30", useLocalTime.getLocalTimeUsingParseMethod("06:30") + .toString()); } @Test public void givenTime_whenAddHour_thenLocalTime() { - Assert.assertEquals("07:30", useLocalTime.addAnHour(LocalTime.of(6, 30)).toString()); + Assert.assertEquals("07:30", useLocalTime.addAnHour(LocalTime.of(6, 30)) + .toString()); } @Test diff --git a/java-dates/src/test/java/com/baeldung/datetime/UseOffsetDateTimeUnitTest.java b/java-dates/src/test/java/com/baeldung/datetime/UseOffsetDateTimeUnitTest.java new file mode 100644 index 0000000000..5b58dd3848 --- /dev/null +++ b/java-dates/src/test/java/com/baeldung/datetime/UseOffsetDateTimeUnitTest.java @@ -0,0 +1,24 @@ +package com.baeldung.datetime; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.time.LocalDateTime; +import java.time.Month; +import java.time.OffsetDateTime; +import java.time.ZoneOffset; + +import org.junit.Test; + +public class UseOffsetDateTimeUnitTest { + private final UseOffsetDateTime subject = new UseOffsetDateTime(); + + @Test + public void givenAZoneOffSetAndLocalDateTime_whenCombing_thenValidResult() { + ZoneOffset offset = ZoneOffset.of("+02:00"); + LocalDateTime localDateTime = LocalDateTime.of(2015, Month.FEBRUARY, 20, 6, 30); + + OffsetDateTime result = subject.offsetOfLocalDateTimeAndOffset(localDateTime, offset); + + assertThat(result.toString()).isEqualTo("2015-02-20T06:30+02:00"); + } +} \ No newline at end of file diff --git a/java-dates/src/test/java/com/baeldung/datetime/UseToInstantUnitTest.java b/java-dates/src/test/java/com/baeldung/datetime/UseToInstantUnitTest.java new file mode 100644 index 0000000000..78d9a647fe --- /dev/null +++ b/java-dates/src/test/java/com/baeldung/datetime/UseToInstantUnitTest.java @@ -0,0 +1,33 @@ +package com.baeldung.datetime; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.time.LocalDateTime; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; + +import org.junit.Test; + +public class UseToInstantUnitTest { + + private UseToInstant subject = new UseToInstant(); + + @Test + public void givenAGregorianCalenderDate_whenConvertingToLocalDate_thenAsExpected() { + GregorianCalendar givenCalender = new GregorianCalendar(2018, Calendar.JULY, 28); + + LocalDateTime localDateTime = subject.convertDateToLocalDate(givenCalender); + + assertThat(localDateTime).isEqualTo("2018-07-28T00:00:00"); + } + + @Test + public void givenADate_whenConvertingToLocalDate_thenAsExpected() { + Date givenDate = new Date(1465817690000L); + + LocalDateTime localDateTime = subject.convertDateToLocalDate(givenDate); + + assertThat(localDateTime).isEqualTo("2016-06-13T13:34:50"); + } +} \ No newline at end of file diff --git a/java-dates/src/test/java/com/baeldung/datetime/UseZonedDateTimeUnitTest.java b/java-dates/src/test/java/com/baeldung/datetime/UseZonedDateTimeUnitTest.java index f9b4008888..4a39f6056e 100644 --- a/java-dates/src/test/java/com/baeldung/datetime/UseZonedDateTimeUnitTest.java +++ b/java-dates/src/test/java/com/baeldung/datetime/UseZonedDateTimeUnitTest.java @@ -7,13 +7,14 @@ import java.time.LocalDateTime; import java.time.LocalTime; import java.time.ZoneId; import java.time.ZonedDateTime; +import java.util.Set; import org.junit.Assert; import org.junit.Test; public class UseZonedDateTimeUnitTest { - UseZonedDateTime zonedDateTime = new UseZonedDateTime(); + private UseZonedDateTime zonedDateTime = new UseZonedDateTime(); @Test public void givenZoneId_thenZonedDateTime() { @@ -22,6 +23,13 @@ public class UseZonedDateTimeUnitTest { Assert.assertEquals(zoneId, ZoneId.from(zonedDatetime)); } + @Test + public void whenRequestingZones_thenAtLeastOneIsReturned() { + Set allZoneIds = ZoneId.getAvailableZoneIds(); + + assertThat(allZoneIds.size()).isGreaterThan(1); + } + @Test public void givenLocalDateOrZoned_whenSettingStartOfDay_thenReturnMidnightInAllCases() { LocalDate given = LocalDate.parse("2018-06-23"); @@ -42,4 +50,15 @@ public class UseZonedDateTimeUnitTest { assertThat(startOfOfDayWithMethod.toLocalTime() .toString()).isEqualTo("00:00"); } + + @Test + public void givenAStringWithTimeZone_whenParsing_thenEqualsExpected() { + ZonedDateTime resultFromString = zonedDateTime.getZonedDateTimeUsingParseMethod("2015-05-03T10:15:30+01:00[Europe/Paris]"); + ZonedDateTime resultFromLocalDateTime = ZonedDateTime.of(2015, 5, 3, 11, 15, 30, 0, ZoneId.of("Europe/Paris")); + + assertThat(resultFromString.getZone()).isEqualTo(ZoneId.of("Europe/Paris")); + assertThat(resultFromLocalDateTime.getZone()).isEqualTo(ZoneId.of("Europe/Paris")); + + assertThat(resultFromString).isEqualTo(resultFromLocalDateTime); + } } From 546acf842fc4d542cfe7bf7d6092933acb1704d0 Mon Sep 17 00:00:00 2001 From: Martin van Wingerden Date: Wed, 23 Oct 2019 11:33:00 +0200 Subject: [PATCH 186/265] [BAEL-3289] Add missing code snippets from the Spring Scheduled article All the samples still existed with some slight variation, I updated where applicable Main thing is that the link in the article has to be corrected --- spring-scheduling/README.md | 1 + .../baeldung/scheduling/ScheduledAnnotationExample.java | 8 +++++--- .../src/main/resources/springScheduled-config.xml | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/spring-scheduling/README.md b/spring-scheduling/README.md index 72d5a7dc83..2e3bb2b5e5 100644 --- a/spring-scheduling/README.md +++ b/spring-scheduling/README.md @@ -1,5 +1,6 @@ ### Relevant articles: - [A Guide to the Spring Task Scheduler](http://www.baeldung.com/spring-task-scheduler) +- [The @Scheduled Annotation in Spring](https://www.baeldung.com/spring-scheduled-tasks) - [Guide to Spring Retry](http://www.baeldung.com/spring-retry) - [How To Do @Async in Spring](http://www.baeldung.com/spring-async) diff --git a/spring-scheduling/src/main/java/org/baeldung/scheduling/ScheduledAnnotationExample.java b/spring-scheduling/src/main/java/org/baeldung/scheduling/ScheduledAnnotationExample.java index 284bcf5e6a..23bbee3bc3 100644 --- a/spring-scheduling/src/main/java/org/baeldung/scheduling/ScheduledAnnotationExample.java +++ b/spring-scheduling/src/main/java/org/baeldung/scheduling/ScheduledAnnotationExample.java @@ -31,9 +31,10 @@ public class ScheduledAnnotationExample { System.out.println("Fixed rate task - " + System.currentTimeMillis() / 1000); } - @Scheduled(fixedDelay = 1000, initialDelay = 100) + @Scheduled(fixedDelay = 1000, initialDelay = 1000) public void scheduleFixedRateWithInitialDelayTask() { - System.out.println("Fixed delay task with one second initial delay - " + System.currentTimeMillis() / 1000); + long now = System.currentTimeMillis() / 1000; + System.out.println("Fixed rate task with one second initial delay - " + now); } /** @@ -41,7 +42,8 @@ public class ScheduledAnnotationExample { */ @Scheduled(cron = "0 15 10 15 * ?") public void scheduleTaskUsingCronExpression() { - System.out.println("schedule tasks using cron expressions - " + System.currentTimeMillis() / 1000); + long now = System.currentTimeMillis() / 1000; + System.out.println("schedule tasks using cron jobs - " + now); } @Scheduled(cron = "${cron.expression}") diff --git a/spring-scheduling/src/main/resources/springScheduled-config.xml b/spring-scheduling/src/main/resources/springScheduled-config.xml index d1ff9dc028..4078f535da 100644 --- a/spring-scheduling/src/main/resources/springScheduled-config.xml +++ b/spring-scheduling/src/main/resources/springScheduled-config.xml @@ -15,7 +15,7 @@ - + From a42fc708fb92127504c8eda61f8ec276fa2c5ffd Mon Sep 17 00:00:00 2001 From: Martin van Wingerden Date: Wed, 23 Oct 2019 12:04:31 +0200 Subject: [PATCH 187/265] [BAEL-3292] Add missing code snippets from the Java 8 groupingBy article The Tuple had to be changed because it required an equals/hashcode Also: formatted with eclipse profile --- .../java_8_features/groupingby/Tuple.java | 31 ++++++++----- .../Java8GroupingByCollectorUnitTest.java | 46 ++++++++++++++++--- 2 files changed, 58 insertions(+), 19 deletions(-) diff --git a/core-java-modules/core-java-8/src/main/java/com/baeldung/java_8_features/groupingby/Tuple.java b/core-java-modules/core-java-8/src/main/java/com/baeldung/java_8_features/groupingby/Tuple.java index 7a9f62341e..82a84bb2d6 100644 --- a/core-java-modules/core-java-8/src/main/java/com/baeldung/java_8_features/groupingby/Tuple.java +++ b/core-java-modules/core-java-8/src/main/java/com/baeldung/java_8_features/groupingby/Tuple.java @@ -1,12 +1,12 @@ package com.baeldung.java_8_features.groupingby; -public class Tuple { +import java.util.Objects; + +public class Tuple { + private final BlogPostType type; + private final String author; - private BlogPostType type; - private String author; - public Tuple(BlogPostType type, String author) { - super(); this.type = type; this.author = author; } @@ -15,20 +15,27 @@ public class Tuple { return type; } - public void setType(BlogPostType type) { - this.type = type; - } - public String getAuthor() { return author; } - public void setAuthor(String author) { - this.author = author; + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + Tuple tuple = (Tuple) o; + return type == tuple.type && author.equals(tuple.author); + } + + @Override + public int hashCode() { + return Objects.hash(type, author); } @Override public String toString() { - return "Tuple [type=" + type + ", author=" + author + ", getType()=" + getType() + ", getAuthor()=" + getAuthor() + ", getClass()=" + getClass() + ", hashCode()=" + hashCode() + ", toString()=" + super.toString() + "]"; + return "Tuple{" + "type=" + type + ", author='" + author + '\'' + '}'; } } diff --git a/core-java-modules/core-java-8/src/test/java/com/baeldung/java_8_features/groupingby/Java8GroupingByCollectorUnitTest.java b/core-java-modules/core-java-8/src/test/java/com/baeldung/java_8_features/groupingby/Java8GroupingByCollectorUnitTest.java index 323586b85f..1da705294e 100644 --- a/core-java-modules/core-java-8/src/test/java/com/baeldung/java_8_features/groupingby/Java8GroupingByCollectorUnitTest.java +++ b/core-java-modules/core-java-8/src/test/java/com/baeldung/java_8_features/groupingby/Java8GroupingByCollectorUnitTest.java @@ -1,15 +1,32 @@ package com.baeldung.java_8_features.groupingby; -import com.baeldung.java_8_features.groupingby.BlogPost; -import com.baeldung.java_8_features.groupingby.BlogPostType; -import org.junit.Test; +import static java.util.Comparator.comparingInt; +import static java.util.stream.Collectors.averagingInt; +import static java.util.stream.Collectors.counting; +import static java.util.stream.Collectors.groupingBy; +import static java.util.stream.Collectors.groupingByConcurrent; +import static java.util.stream.Collectors.joining; +import static java.util.stream.Collectors.mapping; +import static java.util.stream.Collectors.maxBy; +import static java.util.stream.Collectors.summarizingInt; +import static java.util.stream.Collectors.summingInt; +import static java.util.stream.Collectors.toList; +import static java.util.stream.Collectors.toSet; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; -import java.util.*; +import java.util.Arrays; +import java.util.EnumMap; +import java.util.IntSummaryStatistics; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.Set; import java.util.concurrent.ConcurrentMap; -import static java.util.Comparator.comparingInt; -import static java.util.stream.Collectors.*; -import static org.junit.Assert.*; +import org.junit.Test; public class Java8GroupingByCollectorUnitTest { @@ -180,4 +197,19 @@ public class Java8GroupingByCollectorUnitTest { assertEquals(15, newsLikeStatistics.getMin()); } + @Test + public void givenAListOfPosts_whenGroupedByComplexMapKeyType_thenGetAMapBetweenTupleAndList() { + Map> postsPerTypeAndAuthor = posts.stream() + .collect(groupingBy(post -> new Tuple(post.getType(), post.getAuthor()))); + + List result = postsPerTypeAndAuthor.get(new Tuple(BlogPostType.GUIDE, "Author 1")); + + assertThat(result.size()).isEqualTo(1); + + BlogPost blogPost = result.get(0); + + assertThat(blogPost.getTitle()).isEqualTo("Programming guide"); + assertThat(blogPost.getType()).isEqualTo(BlogPostType.GUIDE); + assertThat(blogPost.getAuthor()).isEqualTo("Author 1"); + } } From f20d2a61947d13e2c7f02816eb03eb168b512ca4 Mon Sep 17 00:00:00 2001 From: Martin van Wingerden Date: Wed, 23 Oct 2019 13:27:02 +0200 Subject: [PATCH 188/265] [BAEL-3295] Add missing code snippets from the Spring Session article --- .../com/baeldung/session/bean/Constants.java | 5 +++ .../java/com/baeldung/session/bean/Foo.java | 29 ++++++++++++ .../security/config/SecSecurityConfig.java | 2 +- .../baeldung/session/web/FooController.java | 44 +++++++++++++++++++ .../session/web/SessionRestController.java | 4 +- .../src/main/resources/application.properties | 2 + .../src/main/resources/webSecurityConfig.xml | 5 +-- .../src/main/webapp/WEB-INF/web.xml | 3 +- 8 files changed, 86 insertions(+), 8 deletions(-) create mode 100644 spring-security-mvc/src/main/java/com/baeldung/session/bean/Constants.java create mode 100644 spring-security-mvc/src/main/java/com/baeldung/session/bean/Foo.java create mode 100644 spring-security-mvc/src/main/java/com/baeldung/session/web/FooController.java diff --git a/spring-security-mvc/src/main/java/com/baeldung/session/bean/Constants.java b/spring-security-mvc/src/main/java/com/baeldung/session/bean/Constants.java new file mode 100644 index 0000000000..bf204c3b99 --- /dev/null +++ b/spring-security-mvc/src/main/java/com/baeldung/session/bean/Constants.java @@ -0,0 +1,5 @@ +package com.baeldung.session.bean; + +public class Constants { + public static final String FOO = "foo"; +} diff --git a/spring-security-mvc/src/main/java/com/baeldung/session/bean/Foo.java b/spring-security-mvc/src/main/java/com/baeldung/session/bean/Foo.java new file mode 100644 index 0000000000..c9c9c011d4 --- /dev/null +++ b/spring-security-mvc/src/main/java/com/baeldung/session/bean/Foo.java @@ -0,0 +1,29 @@ +package com.baeldung.session.bean; + +import static org.springframework.context.annotation.ScopedProxyMode.TARGET_CLASS; +import static org.springframework.web.context.WebApplicationContext.SCOPE_SESSION; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; + +@Component +@Scope(value = SCOPE_SESSION, proxyMode = TARGET_CLASS) +public class Foo { + private final String created; + + public Foo() { + this.created = LocalDateTime.now() + .format(DateTimeFormatter.ISO_DATE_TIME); + } + + public Foo(Foo theFoo) { + this.created = theFoo.created; + } + + public String getCreated() { + return created; + } +} diff --git a/spring-security-mvc/src/main/java/com/baeldung/session/security/config/SecSecurityConfig.java b/spring-security-mvc/src/main/java/com/baeldung/session/security/config/SecSecurityConfig.java index 35b53a0e7f..9a4978c27e 100644 --- a/spring-security-mvc/src/main/java/com/baeldung/session/security/config/SecSecurityConfig.java +++ b/spring-security-mvc/src/main/java/com/baeldung/session/security/config/SecSecurityConfig.java @@ -38,7 +38,7 @@ public class SecSecurityConfig extends WebSecurityConfigurerAdapter { .csrf().disable() .authorizeRequests() .antMatchers("/anonymous*").anonymous() - .antMatchers("/login*","/invalidSession*", "/sessionExpired*").permitAll() + .antMatchers("/login*","/invalidSession*", "/sessionExpired*", "/foo/**").permitAll() .anyRequest().authenticated() .and() .formLogin() diff --git a/spring-security-mvc/src/main/java/com/baeldung/session/web/FooController.java b/spring-security-mvc/src/main/java/com/baeldung/session/web/FooController.java new file mode 100644 index 0000000000..7c3385dcbd --- /dev/null +++ b/spring-security-mvc/src/main/java/com/baeldung/session/web/FooController.java @@ -0,0 +1,44 @@ +package com.baeldung.session.web; + +import javax.servlet.http.HttpSession; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import com.baeldung.session.bean.Constants; +import com.baeldung.session.bean.Foo; + +@RestController +@RequestMapping(path = "/foo") +public class FooController { + + @Autowired + private Foo theFoo; + + @GetMapping(path = "set") + public void fooSet(HttpSession session) { + session.setAttribute(Constants.FOO, new Foo()); + } + + @GetMapping(path = "autowired") + public Foo getAutowired() { + return new Foo(theFoo); + } + + @GetMapping(path = "inject") + public Foo fooInject(HttpSession session) { + return (Foo) session.getAttribute(Constants.FOO); + } + + @GetMapping(path = "raw") + public Foo fromRaw() { + ServletRequestAttributes attr = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes(); + HttpSession session = attr.getRequest() + .getSession(true); + return (Foo) session.getAttribute(Constants.FOO); + } +} diff --git a/spring-security-mvc/src/main/java/com/baeldung/session/web/SessionRestController.java b/spring-security-mvc/src/main/java/com/baeldung/session/web/SessionRestController.java index 82199a9e4e..79f57246a9 100644 --- a/spring-security-mvc/src/main/java/com/baeldung/session/web/SessionRestController.java +++ b/spring-security-mvc/src/main/java/com/baeldung/session/web/SessionRestController.java @@ -3,15 +3,13 @@ package com.baeldung.session.web; import javax.servlet.http.HttpSession; import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; @RestController public class SessionRestController { @GetMapping("/session-max-interval") - @ResponseBody - public String retrieveMaxSessionIncativeInterval(HttpSession session) { + public String retrieveMaxSessionInactiveInterval(HttpSession session) { return "Max Inactive Interval before Session expires: " + session.getMaxInactiveInterval(); } } diff --git a/spring-security-mvc/src/main/resources/application.properties b/spring-security-mvc/src/main/resources/application.properties index 56b2b7b123..6f0d0519ef 100644 --- a/spring-security-mvc/src/main/resources/application.properties +++ b/spring-security-mvc/src/main/resources/application.properties @@ -1,3 +1,5 @@ +spring.jackson.serialization.fail-on-empty-beans=false + server.servlet.session.timeout=65s spring.mvc.view.prefix=/WEB-INF/view/ diff --git a/spring-security-mvc/src/main/resources/webSecurityConfig.xml b/spring-security-mvc/src/main/resources/webSecurityConfig.xml index 42ff4c2186..e91755d394 100644 --- a/spring-security-mvc/src/main/resources/webSecurityConfig.xml +++ b/spring-security-mvc/src/main/resources/webSecurityConfig.xml @@ -7,7 +7,7 @@ http://www.springframework.org/schema/beans/spring-beans.xsd" > - + @@ -22,10 +22,9 @@ - - + diff --git a/spring-security-mvc/src/main/webapp/WEB-INF/web.xml b/spring-security-mvc/src/main/webapp/WEB-INF/web.xml index 2ef734441b..88087c92ed 100644 --- a/spring-security-mvc/src/main/webapp/WEB-INF/web.xml +++ b/spring-security-mvc/src/main/webapp/WEB-INF/web.xml @@ -8,13 +8,14 @@ 1 + COOKIE - org.baeldung.web.SessionListenerWithMetrics + com.baeldung.web.SessionListenerWithMetrics spring-data-neo4j @@ -60,7 +61,7 @@ spring-jpa spring-persistence-simple jpa-hibernate-cascade-type - r2dbc + r2dbc spring-boot-jdbi diff --git a/persistence-modules/spring-data-jpa-3/pom.xml b/persistence-modules/spring-data-jpa-3/pom.xml new file mode 100644 index 0000000000..f743fce2a3 --- /dev/null +++ b/persistence-modules/spring-data-jpa-3/pom.xml @@ -0,0 +1,78 @@ + + + + 4.0.0 + spring-data-jpa-3 + spring-data-jpa-3 + + + parent-boot-2 + com.baeldung + 0.0.1-SNAPSHOT + ../../parent-boot-2 + + + + + + + org.springframework.boot + spring-boot-starter-data-jpa + + + org.postgresql + postgresql + ${postgresql.version} + + + + + org.testcontainers + junit-jupiter + ${testcontainers.version} + test + + + org.testcontainers + postgresql + ${testcontainers.version} + test + + + org.springframework.boot + spring-boot-starter-test + test + + + junit + junit + + + + + org.junit.jupiter + junit-jupiter-api + test + + + org.junit.jupiter + junit-jupiter-engine + test + + + org.junit.platform + junit-platform-launcher + ${junit-platform.version} + test + + + + + 1.12.2 + 42.2.8 + + + diff --git a/persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/Application.java b/persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/Application.java new file mode 100644 index 0000000000..c0490d50c6 --- /dev/null +++ b/persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/Application.java @@ -0,0 +1,12 @@ +package com.baeldung; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class Application { + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } +} diff --git a/persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/tx/Payment.java b/persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/tx/Payment.java new file mode 100644 index 0000000000..37f3d09381 --- /dev/null +++ b/persistence-modules/spring-data-jpa-3/src/main/java/com/baeldung/tx/Payment.java @@ -0,0 +1,55 @@ +package com.baeldung.tx; + +import javax.persistence.*; + +@Entity +public class Payment { + + @Id + @GeneratedValue + private Long id; + + private Long amount; + + @Column(unique = true) + private String referenceNumber; + + @Enumerated(EnumType.STRING) + private State state; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getAmount() { + return amount; + } + + public void setAmount(Long amount) { + this.amount = amount; + } + + public String getReferenceNumber() { + return referenceNumber; + } + + public void setReferenceNumber(String referenceNumber) { + this.referenceNumber = referenceNumber; + } + + public State getState() { + return state; + } + + public void setState(State state) { + this.state = state; + } + + public enum State { + STARTED, FAILED, SUCCESSFUL + } +} diff --git a/persistence-modules/spring-data-jpa-3/src/test/java/com/baeldung/tx/ManualTransactionIntegrationTest.java b/persistence-modules/spring-data-jpa-3/src/test/java/com/baeldung/tx/ManualTransactionIntegrationTest.java new file mode 100644 index 0000000000..62d64d4372 --- /dev/null +++ b/persistence-modules/spring-data-jpa-3/src/test/java/com/baeldung/tx/ManualTransactionIntegrationTest.java @@ -0,0 +1,171 @@ +package com.baeldung.tx; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase; +import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.transaction.PlatformTransactionManager; +import org.springframework.transaction.TransactionDefinition; +import org.springframework.transaction.TransactionStatus; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.support.DefaultTransactionDefinition; +import org.springframework.transaction.support.TransactionCallbackWithoutResult; +import org.springframework.transaction.support.TransactionTemplate; +import org.testcontainers.containers.PostgreSQLContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; + +import javax.persistence.EntityManager; + +import static java.util.Collections.singletonList; +import static org.assertj.core.api.Assertions.assertThat; +import static org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase.Replace.NONE; +import static org.springframework.transaction.annotation.Propagation.NOT_SUPPORTED; + +@DataJpaTest +@Testcontainers +@ActiveProfiles("test") +@AutoConfigureTestDatabase(replace = NONE) +@Transactional(propagation = NOT_SUPPORTED) +class ManualTransactionIntegrationTest { + + @Container + private static PostgreSQLContainer pg = initPostgres(); + + @Autowired + private PlatformTransactionManager transactionManager; + + @Autowired + private EntityManager entityManager; + + private TransactionTemplate transactionTemplate; + + @BeforeEach + void setUp() { + transactionTemplate = new TransactionTemplate(transactionManager); + } + + @AfterEach + void flushDb() { + transactionTemplate.execute(status -> entityManager + .createQuery("delete from Payment") + .executeUpdate()); + } + + @Test + void givenAPayment_WhenNotDuplicate_ThenShouldCommit() { + Long id = transactionTemplate.execute(status -> { + Payment payment = new Payment(); + payment.setAmount(1000L); + payment.setReferenceNumber("Ref-1"); + payment.setState(Payment.State.SUCCESSFUL); + + entityManager.persist(payment); + + return payment.getId(); + }); + + Payment payment = entityManager.find(Payment.class, id); + assertThat(payment).isNotNull(); + } + + @Test + void givenAPayment_WhenMarkAsRollback_ThenShouldRollback() { + transactionTemplate.execute(status -> { + Payment payment = new Payment(); + payment.setAmount(1000L); + payment.setReferenceNumber("Ref-1"); + payment.setState(Payment.State.SUCCESSFUL); + + entityManager.persist(payment); + status.setRollbackOnly(); + + return payment.getId(); + }); + + assertThat(entityManager + .createQuery("select p from Payment p") + .getResultList()).isEmpty(); + } + + @Test + void givenTwoPayments_WhenRefIsDuplicate_ThenShouldRollback() { + try { + transactionTemplate.execute(s -> { + Payment first = new Payment(); + first.setAmount(1000L); + first.setReferenceNumber("Ref-1"); + first.setState(Payment.State.SUCCESSFUL); + + Payment second = new Payment(); + second.setAmount(2000L); + second.setReferenceNumber("Ref-1"); + second.setState(Payment.State.SUCCESSFUL); + + entityManager.persist(first); + entityManager.persist(second); + + return "Ref-1"; + }); + } catch (Exception ignored) { + } + + assertThat(entityManager + .createQuery("select p from Payment p") + .getResultList()).isEmpty(); + } + + @Test + void givenAPayment_WhenNotExpectingAnyResult_ThenShouldCommit() { + transactionTemplate.execute(new TransactionCallbackWithoutResult() { + @Override + protected void doInTransactionWithoutResult(TransactionStatus status) { + Payment payment = new Payment(); + payment.setReferenceNumber("Ref-1"); + payment.setState(Payment.State.SUCCESSFUL); + + entityManager.persist(payment); + } + }); + + assertThat(entityManager + .createQuery("select p from Payment p") + .getResultList()).hasSize(1); + } + + @Test + void givenAPayment_WhenUsingTxManager_ThenShouldCommit() { + DefaultTransactionDefinition definition = new DefaultTransactionDefinition(); + definition.setIsolationLevel(TransactionDefinition.ISOLATION_REPEATABLE_READ); + definition.setTimeout(3); + + TransactionStatus status = transactionManager.getTransaction(definition); + try { + Payment payment = new Payment(); + payment.setReferenceNumber("Ref-1"); + payment.setState(Payment.State.SUCCESSFUL); + + entityManager.persist(payment); + transactionManager.commit(status); + } catch (Exception ex) { + transactionManager.rollback(status); + } + + assertThat(entityManager + .createQuery("select p from Payment p") + .getResultList()).hasSize(1); + } + + private static PostgreSQLContainer initPostgres() { + PostgreSQLContainer pg = new PostgreSQLContainer<>("postgres:11.1") + .withDatabaseName("baeldung") + .withUsername("test") + .withPassword("test"); + pg.setPortBindings(singletonList("54320:5432")); + + return pg; + } +} diff --git a/persistence-modules/spring-data-jpa-3/src/test/resources/application-test.properties b/persistence-modules/spring-data-jpa-3/src/test/resources/application-test.properties new file mode 100644 index 0000000000..aa7093f751 --- /dev/null +++ b/persistence-modules/spring-data-jpa-3/src/test/resources/application-test.properties @@ -0,0 +1,4 @@ +spring.jpa.hibernate.ddl-auto=update +spring.datasource.url=jdbc:postgresql://localhost:54320/baeldung +spring.datasource.username=test +spring.datasource.password=test From 960bffd8290db43e6f2c8888a92676603a68b89c Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Thu, 24 Oct 2019 23:33:23 +0530 Subject: [PATCH 194/265] BAEL-18143 Fix spring-jooq issue related to dialect (#8061) - Updated SQLErrorCodeSQLExceptionTranslator to use dialect.thirdParty().springDbName() --- .../com/baeldung/jooq/introduction/ExceptionTranslator.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-jooq/src/test/java/com/baeldung/jooq/introduction/ExceptionTranslator.java b/spring-jooq/src/test/java/com/baeldung/jooq/introduction/ExceptionTranslator.java index 8312f20c05..26c061e9cd 100644 --- a/spring-jooq/src/test/java/com/baeldung/jooq/introduction/ExceptionTranslator.java +++ b/spring-jooq/src/test/java/com/baeldung/jooq/introduction/ExceptionTranslator.java @@ -12,7 +12,7 @@ public class ExceptionTranslator extends DefaultExecuteListener { @Override public void exception(ExecuteContext context) { SQLDialect dialect = context.configuration().dialect(); - SQLExceptionTranslator translator = new SQLErrorCodeSQLExceptionTranslator(dialect.name()); + SQLExceptionTranslator translator = new SQLErrorCodeSQLExceptionTranslator(dialect.thirdParty().springDbName()); context.exception(translator.translate("Access database using jOOQ", context.sql(), context.sqlException())); } From d102bbe6cb28708e39cf66941398789168847daf Mon Sep 17 00:00:00 2001 From: vatsalgosar Date: Fri, 25 Oct 2019 14:23:39 +0530 Subject: [PATCH 195/265] -- Added partial line example --- .../java/com/baeldung/scanner/JavaScannerUnitTest.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/core-java-modules/core-java-io-2/src/test/java/com/baeldung/scanner/JavaScannerUnitTest.java b/core-java-modules/core-java-io-2/src/test/java/com/baeldung/scanner/JavaScannerUnitTest.java index 8bc859ca07..7c244803dd 100644 --- a/core-java-modules/core-java-io-2/src/test/java/com/baeldung/scanner/JavaScannerUnitTest.java +++ b/core-java-modules/core-java-io-2/src/test/java/com/baeldung/scanner/JavaScannerUnitTest.java @@ -18,6 +18,16 @@ public class JavaScannerUnitTest { } } + @Test + public void whenReadingPartialLines_thenCorrect() { + String input = "Scanner\n"; + try (Scanner scanner = new Scanner(input)) { + scanner.useDelimiter(""); + scanner.next(); + assertEquals("canner", scanner.nextLine()); + } + } + @Test(expected = NoSuchElementException.class) public void whenReadingLines_thenThrowNoSuchElementException() { try (Scanner scanner = new Scanner("")) { From f2a06c7c34c7ae787b30af4af3332cdf93dd8a36 Mon Sep 17 00:00:00 2001 From: Yavuz Tas Date: Fri, 25 Oct 2019 14:50:02 +0200 Subject: [PATCH 196/265] Multpile issues resolved - fix formatting issues - add email field to Person - add email validation test --- .../javaxval/messageinterpolator/Person.java | 44 +++++++---- ...terMessageInterpolaterIntegrationTest.java | 76 +++++++++++-------- 2 files changed, 72 insertions(+), 48 deletions(-) diff --git a/javaxval/src/main/java/org/baeldung/javaxval/messageinterpolator/Person.java b/javaxval/src/main/java/org/baeldung/javaxval/messageinterpolator/Person.java index 1b6f598b60..b9fcfdf4d4 100644 --- a/javaxval/src/main/java/org/baeldung/javaxval/messageinterpolator/Person.java +++ b/javaxval/src/main/java/org/baeldung/javaxval/messageinterpolator/Person.java @@ -1,30 +1,42 @@ package org.baeldung.javaxval.messageinterpolator; +import javax.validation.constraints.Email; import javax.validation.constraints.Min; import javax.validation.constraints.Size; public class Person { - @Size(min = 10, max = 200, message = "Name should be in-between {min} and {max} characters") - private String name; + @Size(min = 10, max = 100, message = "Name should be between {min} and {max} characters") + private String name; - @Min(value = 18, message = "Age should not be less than {value} but it is ${validatedValue}") - private int age; + @Min(value = 18, message = "Age should not be less than {value}") + private int age; + + @Email(message = "Email address should be in a correct format: ${validatedValue}") + private String email; - public String getName() { - return name; - } + public String getName() { + return name; + } - public void setName(String name) { - this.name = name; - } + public void setName(String name) { + this.name = name; + } - public int getAge() { - return age; - } + public int getAge() { + return age; + } - public void setAge(int age) { - this.age = age; - } + public void setAge(int age) { + this.age = age; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } } diff --git a/javaxval/src/test/java/org/baeldung/javaxval/messageinterpolator/ParameterMessageInterpolaterIntegrationTest.java b/javaxval/src/test/java/org/baeldung/javaxval/messageinterpolator/ParameterMessageInterpolaterIntegrationTest.java index 877f8348d2..9badd5d5a4 100644 --- a/javaxval/src/test/java/org/baeldung/javaxval/messageinterpolator/ParameterMessageInterpolaterIntegrationTest.java +++ b/javaxval/src/test/java/org/baeldung/javaxval/messageinterpolator/ParameterMessageInterpolaterIntegrationTest.java @@ -15,44 +15,56 @@ import org.junit.Test; public class ParameterMessageInterpolaterIntegrationTest { - private static Validator validator; + private static Validator validator; - @BeforeClass - public static void beforeClass() { - ValidatorFactory validatorFactory = Validation.byDefaultProvider() - .configure() - .messageInterpolator(new ParameterMessageInterpolator()) - .buildValidatorFactory(); - - validator = validatorFactory.getValidator(); - } + @BeforeClass + public static void beforeClass() { + ValidatorFactory validatorFactory = Validation.byDefaultProvider() + .configure() + .messageInterpolator(new ParameterMessageInterpolator()) + .buildValidatorFactory(); - @Test - public void ifNameLengthIsLess_nameValidationFails() { - Person person = new Person(); - person.setName("John Doe"); - person.setAge(18); + validator = validatorFactory.getValidator(); + } - Set> violations = validator.validate(person); - assertEquals(1, violations.size()); + @Test + public void ifNameLengthIsLess_nameValidationFails() { + Person person = new Person(); + person.setName("John Doe"); + person.setAge(18); - ConstraintViolation violation = violations.iterator().next(); - assertEquals("Name should be in-between 10 and 200 characters", violation.getMessage()); - } - - @Test - public void ifAgeIsLess_ageMinValidationFails() { - Person person = new Person(); - person.setName("John Stephaner Doe"); - person.setAge(16); + Set> violations = validator.validate(person); + assertEquals(1, violations.size()); - Set> violations = validator.validate(person); - assertEquals(1, violations.size()); + ConstraintViolation violation = violations.iterator().next(); + assertEquals("Name should be between 10 and 100 characters", violation.getMessage()); + } - ConstraintViolation violation = violations.iterator().next(); - assertEquals("Age should not be less than 18 but it is ${validatedValue}", violation.getMessage()); - } + @Test + public void ifAgeIsLess_ageMinValidationFails() { + Person person = new Person(); + person.setName("John Stephaner Doe"); + person.setAge(16); -} + Set> violations = validator.validate(person); + assertEquals(1, violations.size()); + ConstraintViolation violation = violations.iterator().next(); + assertEquals("Age should not be less than 18", violation.getMessage()); + } + + @Test + public void ifEmailIsMalformed_emailFormatValidationFails() { + Person person = new Person(); + person.setName("John Stephaner Doe"); + person.setAge(18); + person.setEmail("johndoe.dev"); + + Set> violations = validator.validate(person); + assertEquals(1, violations.size()); + + ConstraintViolation violation = violations.iterator().next(); + assertEquals("Email address should be in a correct format: ${validatedValue}", violation.getMessage()); + } +} \ No newline at end of file From 1df0f4add5056424fb759a872b9da5d1fe9be160 Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Fri, 25 Oct 2019 16:50:07 +0200 Subject: [PATCH 197/265] #BAEL-10229 fix relativePath of parent-kotlin --- parent-kotlin/pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/parent-kotlin/pom.xml b/parent-kotlin/pom.xml index 910f97c4d4..1ca786c32f 100644 --- a/parent-kotlin/pom.xml +++ b/parent-kotlin/pom.xml @@ -11,6 +11,7 @@ com.baeldung parent-boot-2 0.0.1-SNAPSHOT + ../parent-boot-2 From 3b5e2bca6996b3a2674dfb3c8a4b3e7f03a2305d Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Fri, 25 Oct 2019 16:54:07 +0200 Subject: [PATCH 198/265] #BAEL-10229 fix version of parent-kotlin --- parent-kotlin/pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/parent-kotlin/pom.xml b/parent-kotlin/pom.xml index 1ca786c32f..1cacd31e13 100644 --- a/parent-kotlin/pom.xml +++ b/parent-kotlin/pom.xml @@ -3,6 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 4.0.0 parent-kotlin + 1.0.0-SNAPSHOT parent-kotlin pom Parent for all kotlin modules From e7af68c1165e2421cad90c80579253422424345d Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Fri, 25 Oct 2019 17:06:07 +0200 Subject: [PATCH 199/265] #BAEL-10229 try to fix the build (mostly, missing relativePath) --- jta/pom.xml | 6 ------ libraries-testing/pom.xml | 13 ------------- .../spring-boot-persistence-h2/pom.xml | 5 ----- spring-boot-properties/pom.xml | 5 ----- spring-ejb/pom.xml | 1 + 5 files changed, 1 insertion(+), 29 deletions(-) diff --git a/jta/pom.xml b/jta/pom.xml index b7e39c66e1..1e86a0144c 100644 --- a/jta/pom.xml +++ b/jta/pom.xml @@ -30,12 +30,6 @@ spring-boot-starter - - org.springframework.boot - spring-boot-starter-test - test - - org.hsqldb hsqldb diff --git a/libraries-testing/pom.xml b/libraries-testing/pom.xml index a2fbed31b2..86c9bd52e1 100644 --- a/libraries-testing/pom.xml +++ b/libraries-testing/pom.xml @@ -125,19 +125,6 @@ ${java-hamcrest.version} test - - - net.serenity-bdd - serenity-core - ${serenity.version} - test - - - org.asciidoctor - asciidoctorj - - - org.asciidoctor asciidoctor-maven-plugin diff --git a/persistence-modules/spring-boot-persistence-h2/pom.xml b/persistence-modules/spring-boot-persistence-h2/pom.xml index bd36a46144..30c727bfc8 100644 --- a/persistence-modules/spring-boot-persistence-h2/pom.xml +++ b/persistence-modules/spring-boot-persistence-h2/pom.xml @@ -26,11 +26,6 @@ com.h2database h2 - - org.springframework.boot - spring-boot-starter-test - test - diff --git a/spring-boot-properties/pom.xml b/spring-boot-properties/pom.xml index ccb9204d96..5e65aadc28 100644 --- a/spring-boot-properties/pom.xml +++ b/spring-boot-properties/pom.xml @@ -32,11 +32,6 @@ org.springframework.cloud spring-cloud-starter - - org.springframework.boot - spring-boot-starter-test - test - com.google.guava guava diff --git a/spring-ejb/pom.xml b/spring-ejb/pom.xml index 126bace9bd..587d626cac 100755 --- a/spring-ejb/pom.xml +++ b/spring-ejb/pom.xml @@ -12,6 +12,7 @@ com.baeldung parent-boot-2 0.0.1-SNAPSHOT + ../parent-boot-2 From 10c9a89f5e3767602bfc149b35911dccfcd5c6dd Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Fri, 25 Oct 2019 17:14:35 +0200 Subject: [PATCH 200/265] #BAEL-10229 try and fix the build (Kotlin dependencies) --- spring-5-mvc/pom.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/spring-5-mvc/pom.xml b/spring-5-mvc/pom.xml index be21db481a..86397f650d 100644 --- a/spring-5-mvc/pom.xml +++ b/spring-5-mvc/pom.xml @@ -46,14 +46,17 @@ org.jetbrains.kotlin kotlin-stdlib-jre8 + ${kotlin.version} org.jetbrains.kotlin kotlin-reflect + ${kotlin.version} com.fasterxml.jackson.module jackson-module-kotlin + ${jackson.version @@ -170,7 +173,8 @@ 2.9.0 - 1.1.2 + 2.9.9 + 1.2.71 com.baeldung.Spring5Application 4.5.8 From 1e92058f408ffb1a4ee525c3d3c0a6eed49f00e3 Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Fri, 25 Oct 2019 17:18:23 +0200 Subject: [PATCH 201/265] #BAEL-10229 try and fix the build (misspelled Jackson version) --- spring-5-mvc/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-5-mvc/pom.xml b/spring-5-mvc/pom.xml index 86397f650d..7417f39c21 100644 --- a/spring-5-mvc/pom.xml +++ b/spring-5-mvc/pom.xml @@ -56,7 +56,7 @@ com.fasterxml.jackson.module jackson-module-kotlin - ${jackson.version + ${jackson.version} From 8c643f007f2cb26b958dfc13f2742306e75185e8 Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Fri, 25 Oct 2019 17:37:56 +0200 Subject: [PATCH 202/265] #BAEL-10229 try and fix the build (spring-ejb version) --- spring-ejb/pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-ejb/pom.xml b/spring-ejb/pom.xml index 587d626cac..12c1d029ff 100755 --- a/spring-ejb/pom.xml +++ b/spring-ejb/pom.xml @@ -4,6 +4,7 @@ 4.0.0 com.baeldung.spring.ejb spring-ejb + 1.0.0-SNAPSHOT spring-ejb pom Spring EJB Tutorial From 0ec65d7bb83f856ed4009c053f8bc1ca1a4e71c3 Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Fri, 25 Oct 2019 17:50:12 +0200 Subject: [PATCH 203/265] #BAEL-10229 try and fix the build (xml-apis version) --- spring-rest-full/pom.xml | 4 +++- spring-rest-query-language/pom.xml | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/spring-rest-full/pom.xml b/spring-rest-full/pom.xml index 5bc3a70ed5..a2736ba03c 100644 --- a/spring-rest-full/pom.xml +++ b/spring-rest-full/pom.xml @@ -125,6 +125,7 @@ xml-apis xml-apis + ${xml-apis.version} org.javassist @@ -284,6 +285,7 @@ 1.4.9 + 1.4.01 19.0 @@ -294,4 +296,4 @@ 1.1.3 - \ No newline at end of file + diff --git a/spring-rest-query-language/pom.xml b/spring-rest-query-language/pom.xml index 7ee658d8ba..293bac9479 100644 --- a/spring-rest-query-language/pom.xml +++ b/spring-rest-query-language/pom.xml @@ -144,6 +144,7 @@ xml-apis xml-apis + ${xml-apis.version} org.javassist @@ -350,6 +351,7 @@ 1.4.9 3.21.0-GA + 1.4.01 19.0 @@ -359,4 +361,4 @@ 1.1.3 - \ No newline at end of file + From 11ddb0d216f7ad5b182f7b2f942d52cf6a9e6c72 Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Fri, 25 Oct 2019 17:57:56 +0200 Subject: [PATCH 204/265] #BAEL-10229 Restore parent-kotlin's parent (parent-modules) instead of parent-boot-2 --- parent-kotlin/pom.xml | 92 ++++++++++++++++++++++++------------------- 1 file changed, 51 insertions(+), 41 deletions(-) diff --git a/parent-kotlin/pom.xml b/parent-kotlin/pom.xml index 1cacd31e13..84844dbb8b 100644 --- a/parent-kotlin/pom.xml +++ b/parent-kotlin/pom.xml @@ -1,60 +1,70 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 4.0.0 parent-kotlin - 1.0.0-SNAPSHOT parent-kotlin pom Parent for all kotlin modules com.baeldung - parent-boot-2 - 0.0.1-SNAPSHOT - ../parent-boot-2 + parent-modules + 1.0.0-SNAPSHOT - - - jcenter - http://jcenter.bintray.com - - - kotlin-ktor - https://dl.bintray.com/kotlin/ktor/ - - - kotlin-eap - http://dl.bintray.com/kotlin/kotlin-eap - - - spring-milestone - Spring Milestone Repository - http://repo.spring.io/milestone - - - - - - kotlin-eap - http://dl.bintray.com/kotlin/kotlin-eap - - - + + + jcenter + http://jcenter.bintray.com + + + kotlin-ktor + https://dl.bintray.com/kotlin/ktor/ + + + kotlin-eap + http://dl.bintray.com/kotlin/kotlin-eap + + + spring-milestone + Spring Milestone Repository + http://repo.spring.io/milestone + + + + + + kotlin-eap + http://dl.bintray.com/kotlin/kotlin-eap + + + + + + + org.springframework.boot + spring-boot-dependencies + 2.2.0.M4 + pom + import + + + + org.jetbrains.kotlin kotlin-stdlib-jdk8 - - - org.jetbrains.kotlin - kotlin-stdlib - + + + org.jetbrains.kotlin + kotlin-stdlib + org.jetbrains.kotlin kotlin-reflect - + org.jetbrains.kotlinx @@ -103,9 +113,9 @@ ${project.basedir}/src/main/java ${java.version} - - -Xjvm-default=enable - + + -Xjvm-default=enable + From 3fb88700d5c24af5f6cd796a0f8e98cc112b2c80 Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Fri, 25 Oct 2019 18:06:17 +0200 Subject: [PATCH 205/265] #BAEL-10229 Restore parent-kotlin's parent (parent-modules) instead of parent-boot-2 --- spring-boot-kotlin/pom.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/spring-boot-kotlin/pom.xml b/spring-boot-kotlin/pom.xml index c024f3fda1..ccb1585a75 100644 --- a/spring-boot-kotlin/pom.xml +++ b/spring-boot-kotlin/pom.xml @@ -68,7 +68,6 @@ org.springframework.boot spring-boot-starter-webflux - ${spring-boot.version} com.fasterxml.jackson.module From 98e139531374da7d755aa90b9db3484605b8fca6 Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Fri, 25 Oct 2019 18:17:49 +0200 Subject: [PATCH 206/265] #BAEL-10229 Fix the build (restore spring-boot-* dependencies of ethereum module) --- ethereum/pom.xml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/ethereum/pom.xml b/ethereum/pom.xml index d9712e53e0..e0666e49d8 100644 --- a/ethereum/pom.xml +++ b/ethereum/pom.xml @@ -13,6 +13,20 @@ + + + org.springframework.boot + spring-boot-starter + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-tomcat + From bd32b8e8e8f419a0aa26284b72a34384b287ae6a Mon Sep 17 00:00:00 2001 From: Ali Dehghani Date: Fri, 25 Oct 2019 22:29:54 +0330 Subject: [PATCH 207/265] Fixed the Broken Test. --- spring-mvc-simple-2/src/main/resources/application.properties | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/spring-mvc-simple-2/src/main/resources/application.properties b/spring-mvc-simple-2/src/main/resources/application.properties index 709574239b..d29338d3d3 100644 --- a/spring-mvc-simple-2/src/main/resources/application.properties +++ b/spring-mvc-simple-2/src/main/resources/application.properties @@ -1 +1,3 @@ -spring.main.allow-bean-definition-overriding=true \ No newline at end of file +spring.main.allow-bean-definition-overriding=true +spring.mail.host=localhost +spring.mail.port=8025 \ No newline at end of file From 6b797bd5a724893abc73a4506323bfac686bdc66 Mon Sep 17 00:00:00 2001 From: Ali Dehghani Date: Fri, 25 Oct 2019 23:06:08 +0330 Subject: [PATCH 208/265] Fixed the Class Not Found Problem --- core-java-modules/core-java-io/pom.xml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/core-java-modules/core-java-io/pom.xml b/core-java-modules/core-java-io/pom.xml index c3c48ba679..3478f71286 100644 --- a/core-java-modules/core-java-io/pom.xml +++ b/core-java-modules/core-java-io/pom.xml @@ -50,6 +50,12 @@ jmimemagic ${jmime-magic.version} + + + com.sun.messaging.mq + fscontext + ${fscontext.version} + @@ -154,7 +160,7 @@ 1.18 0.1.5 3.1.0 - + 4.4.2 \ No newline at end of file From 496fb2c64b5261a167551a8c846dfd3554c4f07e Mon Sep 17 00:00:00 2001 From: Ali Dehghani Date: Fri, 25 Oct 2019 23:46:30 +0330 Subject: [PATCH 209/265] Moved the User Model to its Package! --- spring-boot/src/main/java/org/baeldung/model/User.java | 2 +- .../src/main/java/org/baeldung/repository/UserRepository.java | 3 +-- .../baeldung/repository/UserRepositoryIntegrationTest.java | 4 +--- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/spring-boot/src/main/java/org/baeldung/model/User.java b/spring-boot/src/main/java/org/baeldung/model/User.java index 049b118b12..eb886338a0 100644 --- a/spring-boot/src/main/java/org/baeldung/model/User.java +++ b/spring-boot/src/main/java/org/baeldung/model/User.java @@ -1,4 +1,4 @@ -package org.baeldung.caching.model; +package org.baeldung.model; import javax.persistence.Entity; import javax.persistence.GeneratedValue; diff --git a/spring-boot/src/main/java/org/baeldung/repository/UserRepository.java b/spring-boot/src/main/java/org/baeldung/repository/UserRepository.java index 0113c4c5d4..752664cd5d 100644 --- a/spring-boot/src/main/java/org/baeldung/repository/UserRepository.java +++ b/spring-boot/src/main/java/org/baeldung/repository/UserRepository.java @@ -1,6 +1,6 @@ package org.baeldung.repository; -import org.baeldung.caching.model.User; +import org.baeldung.model.User; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; @@ -15,7 +15,6 @@ import java.util.Collection; import java.util.List; import java.util.Optional; import java.util.concurrent.CompletableFuture; -import java.util.stream.Stream; @Repository("userRepository") public interface UserRepository extends JpaRepository { diff --git a/spring-boot/src/test/java/org/baeldung/repository/UserRepositoryIntegrationTest.java b/spring-boot/src/test/java/org/baeldung/repository/UserRepositoryIntegrationTest.java index 54ce3b4bf3..ea7f118967 100644 --- a/spring-boot/src/test/java/org/baeldung/repository/UserRepositoryIntegrationTest.java +++ b/spring-boot/src/test/java/org/baeldung/repository/UserRepositoryIntegrationTest.java @@ -1,19 +1,17 @@ package org.baeldung.repository; import org.baeldung.boot.config.H2JpaConfig; -import org.baeldung.caching.model.User; +import org.baeldung.model.User; import org.junit.After; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; -import org.springframework.transaction.annotation.Transactional; import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; -import java.util.stream.Stream; import static org.assertj.core.api.Assertions.assertThat; From 00b553acb73930ad98f074251b419f2ac099a0cd Mon Sep 17 00:00:00 2001 From: Ali Dehghani Date: Sat, 26 Oct 2019 00:02:43 +0330 Subject: [PATCH 210/265] Revert an unwanted file. --- spring-mvc-simple-2/src/main/resources/application.properties | 2 -- 1 file changed, 2 deletions(-) diff --git a/spring-mvc-simple-2/src/main/resources/application.properties b/spring-mvc-simple-2/src/main/resources/application.properties index d29338d3d3..e439ebd851 100644 --- a/spring-mvc-simple-2/src/main/resources/application.properties +++ b/spring-mvc-simple-2/src/main/resources/application.properties @@ -1,3 +1 @@ spring.main.allow-bean-definition-overriding=true -spring.mail.host=localhost -spring.mail.port=8025 \ No newline at end of file From 644d650e8d84efe1185199a4a1e062566e2e62b7 Mon Sep 17 00:00:00 2001 From: Ali Dehghani Date: Sat, 26 Oct 2019 00:04:33 +0330 Subject: [PATCH 211/265] Removed the newline. --- spring-mvc-simple-2/src/main/resources/application.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-mvc-simple-2/src/main/resources/application.properties b/spring-mvc-simple-2/src/main/resources/application.properties index e439ebd851..709574239b 100644 --- a/spring-mvc-simple-2/src/main/resources/application.properties +++ b/spring-mvc-simple-2/src/main/resources/application.properties @@ -1 +1 @@ -spring.main.allow-bean-definition-overriding=true +spring.main.allow-bean-definition-overriding=true \ No newline at end of file From 2c422858c0649e20977342d920e032739207df02 Mon Sep 17 00:00:00 2001 From: Ali Dehghani Date: Sat, 26 Oct 2019 07:24:43 +0330 Subject: [PATCH 212/265] Fixed the Unsatisfied Dependency Issue --- spring-mvc-simple-2/src/main/resources/application.properties | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/spring-mvc-simple-2/src/main/resources/application.properties b/spring-mvc-simple-2/src/main/resources/application.properties index 709574239b..d29338d3d3 100644 --- a/spring-mvc-simple-2/src/main/resources/application.properties +++ b/spring-mvc-simple-2/src/main/resources/application.properties @@ -1 +1,3 @@ -spring.main.allow-bean-definition-overriding=true \ No newline at end of file +spring.main.allow-bean-definition-overriding=true +spring.mail.host=localhost +spring.mail.port=8025 \ No newline at end of file From b2cbfdc6865c928cea6bc42bab14fd0b9724e16d Mon Sep 17 00:00:00 2001 From: Josh Cummings Date: Sat, 26 Oct 2019 09:20:04 -0600 Subject: [PATCH 213/265] Restore sun.tools.version properti --- core-java-modules/core-java/pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java/pom.xml b/core-java-modules/core-java/pom.xml index 800649c163..7f2694b346 100644 --- a/core-java-modules/core-java/pom.xml +++ b/core-java-modules/core-java/pom.xml @@ -455,5 +455,6 @@ 3.21.0-GA + 1.8.0 From 029084ae6c111064cc97adcbd4777b46726dcea4 Mon Sep 17 00:00:00 2001 From: amit2103 Date: Sat, 26 Oct 2019 20:52:13 +0530 Subject: [PATCH 214/265] [BAEL-18779] - Make sure the tutorials build doesn't generate any un-committed or un-ignored artifacts --- .gitignore | 8 +- apache-fop/src/test/resources/input.xml | 1674 ----------------- .../src/test/resources/output_herold.pdf | Bin 34733 -> 0 bytes .../src/test/resources/output_html2fo.pdf | Bin 14642 -> 0 bytes .../src/test/resources/output_jtidy.pdf | Bin 25904 -> 0 bytes 5 files changed, 7 insertions(+), 1675 deletions(-) delete mode 100644 apache-fop/src/test/resources/input.xml delete mode 100644 apache-fop/src/test/resources/output_herold.pdf delete mode 100644 apache-fop/src/test/resources/output_html2fo.pdf delete mode 100644 apache-fop/src/test/resources/output_jtidy.pdf diff --git a/.gitignore b/.gitignore index 90daf38dee..349efbcb67 100644 --- a/.gitignore +++ b/.gitignore @@ -84,4 +84,10 @@ software-security/sql-injection-samples/derby.log spring-soap/src/main/java/com/baeldung/springsoap/gen/ /report-*.json transaction.log -*-shell.log \ No newline at end of file +*-shell.log + +apache-cxf/cxf-aegis/baeldung.xml +apache-fop/src/test/resources/input.xml +apache-fop/src/test/resources/output_herold.pdf +apache-fop/src/test/resources/output_html2fo.pdf +apache-fop/src/test/resources/output_jtidy.pdf \ No newline at end of file diff --git a/apache-fop/src/test/resources/input.xml b/apache-fop/src/test/resources/input.xml deleted file mode 100644 index a8266f3f5c..0000000000 --- a/apache-fop/src/test/resources/input.xml +++ /dev/null @@ -1,1674 +0,0 @@ - -
- - Bootstrap a Web Application with Spring 4 - - - - - - Return to Content - - - - - - Contents - - - Table of Contents - - - 1. Overview - - - 2. The Maven pom.xml - - - 3. The Java based Web Configuration - - - 4. Conclusion - - - If you're new here, you may want to get my "REST APIs with Spring" eBook. Thanks for visiting! - - - -
- <anchor xml:id="Table_of_Contents"/><emphasis role="bold">Table of Contents</emphasis> - - - 1. Overview - - - 2. The Maven pom.xml - - -     2.1. Justification of the cglib dependency - - -     2.2. The cglib dependency in Spring 3.2 and beyond - - - 3. The Java based web configuration - - -    3.1. The web.xml - - - 4. Conclusion - - -
- <anchor xml:id="dbdoclet.1_Overview"/><emphasis role="bold">1. Overview</emphasis> - The tutorial illustrates how to Bootstrap a Web Application with Spring and also discusses how to make the jump from XML to Java without having to completely migrate the entire XML configuration. -
-
- <anchor xml:id="dbdoclet.2_The_Maven_pomxml"/><emphasis role="bold">2. The Maven pom.xml</emphasis> - <project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation=" - http://maven.apache.org/POM/4.0.0 - http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <groupId>org</groupId> - <artifactId>rest</artifactId> - <version>0.0.1-SNAPSHOT</version> - <packaging>war</packaging> - - <dependencies> - - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-webmvc</artifactId> - <version>${spring.version}</version> - <exclusions> - <exclusion> - <artifactId>commons-logging</artifactId> - <groupId>commons-logging</groupId> - </exclusion> - </exclusions> - </dependency> - - </dependencies> - - <build> - <finalName>rest</finalName> - - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-compiler-plugin</artifactId> - <version>3.1</version> - <configuration> - <source>1.6</source> - <target>1.6</target> - <encoding>UTF-8</encoding> - </configuration> - </plugin> - </plugins> - </build> - - <properties> - <spring.version>4.0.5.RELEASE</spring.version> - </properties> - -</project> -
- <emphasis role="bold">2.1. The cglib dependency before Spring 3.2</emphasis> - You may wonder why cglib is a dependency – it turns out there is a valid reason to include it – the entire configuration cannot function without it. If removed, Spring will throw: - Caused by: java.lang.IllegalStateException: CGLIB is required to process @Configuration classes. Either add CGLIB to the classpath or remove the following @Configuration bean definitions - The reason this happens is explained by the way Spring deals with @Configuration classes. These classes are effectively beans, and because of this they need to be aware of the Context, and respect scope and other bean semantics. This is achieved by dynamically creating a cglib proxy with this awareness for each @Configuration class, hence the cglib dependency. - Also, because of this, there are a few restrictions for Configuration annotated classes: - - - Configuration classes should not be final - - - They should have a constructor with no arguments - - -
-
- <emphasis role="bold">2.2. The cglib dependency in Spring 3.2 and beyond</emphasis> - Starting with Spring 3.2, it is no longer necessary to add cglib as an explicit dependency. This is because Spring is in now inlining cglib – which will ensure that all class based proxying functionality will work out of the box with Spring 3.2. - The new cglib code is placed under the Spring package: org.springframework.cglib (replacing the original net.sf.cglib). The reason for the package change is to avoid conflicts with any cglib versions already existing on the classpath. - Also, the new cglib 3.0 is now used, upgraded from the older 2.2 dependency (see this JIRA issue for more details). - Finally, now that Spring 4.0 is out in the wild, changes like this one (removing the cglib dependency) are to be expected with Java 8 just around the corner – you can watch this Spring Jira to keep track of the Spring support, and the Java 8 Resources page to keep tabs on the that. -
-
-
- <anchor xml:id="dbdoclet.3_The_Java_based_Web_Configuration"/><emphasis role="bold">3. The Java based Web Configuration</emphasis> - @Configuration -@ImportResource( { "classpath*:/rest_config.xml" } ) -@ComponentScan( basePackages = "org.rest" ) -@PropertySource({ "classpath:rest.properties", "classpath:web.properties" }) -public class AppConfig{ - - @Bean -   public static PropertySourcesPlaceholderConfigurer properties() { -   return new PropertySourcesPlaceholderConfigurer(); -   } -} - First, the @Configuration annotation – this is the main artifact used by the Java based Spring configuration; it is itself meta-annotated with @Component, which makes the annotated classes standard beans and as such, also candidates for component scanning. The main purpose of @Configuration classes is to be sources of bean definitions for the Spring IoC Container. For a more detailed description, see the official docs. - Then, @ImportResource is used to import the existing XML based Spring configuration. This may be configuration which is still being migrated from XML to Java, or simply legacy configuration that you wish to keep. Either way, importing it into the Container is essential for a successful migration, allowing small steps without to much risk. The equivalent XML annotation that is replaced is: - <import resource=”classpath*:/rest_config.xml” /> - Moving on to @ComponentScan – this configures the component scanning directive, effectively replacing the XML: - <context:component-scan base-package="org.rest" /> - As of Spring 3.1, the @Configuration are excluded from classpath scanning by default – see this JIRA issue. Before Spring 3.1 though, these classes should have been excluded explicitly: - excludeFilters = { @ComponentScan.Filter( Configuration.class ) } - The @Configuration classes should not be autodiscovered because they are already specified and used by the Container – allowing them to be rediscovered and introduced into the Spring context will result in the following error: - Caused by: org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name ‘webConfig’ for bean class [org.rest.spring.AppConfig] conflicts with existing, non-compatible bean definition of same name and class [org.rest.spring.AppConfig] - And finally, using the @Bean annotation to configure the properties support – PropertySourcesPlaceholderConfigurer is initialized in a @Bean annotated method, indicating it will produce a Spring bean managed by the Container. This new configuration has replaced the following XML: - <context:property-placeholder -location="classpath:persistence.properties, classpath:web.properties" -ignore-unresolvable="true"/> - For a more in depth discussion on why it was necessary to manually register the PropertySourcesPlaceholderConfigurer bean, see the Properties with Spring Tutorial. -
- <emphasis role="bold">3.1. The web.xml</emphasis> - <?xml version="1.0" encoding="UTF-8"?> -<web-app xmlns=" - http://java.sun.com/xml/ns/javaee" -     xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" -     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" -    xsi:schemaLocation=" - http://java.sun.com/xml/ns/javaee - http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" -    id="rest" version="3.0"> - - <context-param> - <param-name>contextClass</param-name> - <param-value> - org.springframework.web.context.support.AnnotationConfigWebApplicationContext - </param-value> - </context-param> - <context-param> - <param-name>contextConfigLocation</param-name> - <param-value>org.rest.spring.root</param-value> - </context-param> - <listener> - <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> - </listener> - - <servlet> - <servlet-name>rest</servlet-name> - <servlet-class> - org.springframework.web.servlet.DispatcherServlet - </servlet-class> - <init-param> - <param-name>contextClass</param-name> - <param-value> - org.springframework.web.context.support.AnnotationConfigWebApplicationContext - </param-value> - </init-param> - <init-param> - <param-name>contextConfigLocation</param-name> - <param-value>org.rest.spring.rest</param-value> - </init-param> - <load-on-startup>1</load-on-startup> - </servlet> - <servlet-mapping> - <servlet-name>rest</servlet-name> - <url-pattern>/api/*</url-pattern> - </servlet-mapping> - - <welcome-file-list> - <welcome-file /> - </welcome-file-list> - -</web-app> - First, the root context is defined and configured to use AnnotationConfigWebApplicationContext instead of the default XmlWebApplicationContext. The newer AnnotationConfigWebApplicationContext accepts @Configuration annotated classes as input for the Container configuration and is needed in order to set up the Java based context. Unlike XmlWebApplicationContext, it assumes no default configuration class locations, so the “contextConfigLocation”init-param for the Servlet must be set. This will point to the java package where the @Configuration classes are located; the fully qualified name(s) of the classes are also supported. - Next, the DispatcherServlet is configured to use the same kind of context, with the only difference that it’s loading configuration classes out of a different package. - Other than this, the web.xml doesn’t really change from a XML to a Java based configuration. -
-
-
- <anchor xml:id="dbdoclet.4_Conclusion"/><emphasis role="bold">4. Conclusion</emphasis> - The presented approach allows for a smooth migration of the Spring configuration from XML to Java, mixing the old and the new. This is important for older projects, which may have a lot of XML based configuration that cannot be migrated all at once. - This way, in a migration, the XML beans can be ported in small increments. - In the next article on REST with Spring, I cover setting up MVC in the project, configuration of the HTTP status codes, payload marshalling and content negotiation. - The implementation of this Bootstrap a Spring Web App Tutorial can be downloaded as a working sample project. - This is an Eclipse based project, so it should be easy to import and run as it is. - -   - - - - - - - - - java, Spring - - - - - - - - - - - © 2014 Baeldung. All Rights Reserved. - - - - - - - -
-
-
- -
- - Build a REST API with Spring 4 and Java Config - - - - - - Return to Content - - - - - - Contents - - - Table of Contents - - - 1. Overview - - - 2. Understanding REST in Spring - - - 3. The Java configuration - - - 4. Testing the Spring context - - - 5. The Controller - - - 6. Mapping the HTTP response codes - - - 7. Additional Maven dependencies - - - 8. Conclusion - - - If you're new here, you may want to get my "REST APIs with Spring" eBook. Thanks for visiting! - - -   - -
- <anchor xml:id="Table_of_Contents"/><emphasis role="bold">Table of Contents</emphasis> - - - 1. Overview - - - 2. Understanding REST in Spring - - - 3. The Java configuration - - - 4. Testing the Spring context - - - 5. The Controller - - - 6. Mapping the HTTP response codes - - -     6.1. Unmapped requests - - -     6.2. Valid, mapped requests - - -     6.3. Client error - - -     6.4. Using @ExceptionHandler - - - 7. Additional Maven dependencies - - - 8. Conclusion - - -
- <anchor xml:id="dbdoclet.1_Overview"/><emphasis role="bold">1. Overview</emphasis> - This article shows how to set up REST in Spring – the Controller and HTTP response codes, configuration of payload marshalling and content negotiation. -
-
- <anchor xml:id="dbdoclet.2_Understanding_REST_in_Spring"/><emphasis role="bold">2. Understanding REST in Spring</emphasis> - The Spring framework supports 2 ways of creating RESTful services: - - - using MVC with ModelAndView - - - using HTTP message converters - - - The ModelAndView approach is older and much better documented, but also more verbose and configuration heavy. It tries to shoehorn the REST paradigm into the old model, which is not without problems. The Spring team understood this and provided first-class REST support starting with Spring 3.0. - The new approach, based on HttpMessageConverterand annotations, is much more lightweight and easy to implement. Configuration is minimal and it provides sensible defaults for what you would expect from a RESTful service. It is however newer and a a bit on the light side concerning documentation; what’s , the reference doesn’t go out of it’s way to make the distinction and the tradeoffs between the two approaches as clear as they should be. Nevertheless, this is the way RESTful services should be build after Spring 3.0. -
-
- <anchor xml:id="dbdoclet.3_The_Java_configuration"/><emphasis role="bold">3. The Java configuration</emphasis> - - @Configuration -@EnableWebMvc -public class WebConfig{ - // -} - The new @EnableWebMvc annotation does a number of useful things – specifically, in the case of REST, it detect the existence of Jackson and JAXB 2 on the classpath and automatically creates and registers default JSON and XML converters. The functionality of the annotation is equivalent to the XML version: - <mvc:annotation-driven /> - This is a shortcut, and though it may be useful in many situations, it’s not perfect. When more complex configuration is needed, remove the annotation and extend WebMvcConfigurationSupport directly. -
-
- <anchor xml:id="dbdoclet.4_Testing_the_Spring_context"/><emphasis role="bold">4. Testing the Spring context</emphasis> - Starting with Spring 3.1, we get first-class testing support for @Configuration classes: - @RunWith( SpringJUnit4ClassRunner.class ) -@ContextConfiguration( classes = { ApplicationConfig.class, PersistenceConfig.class }, - loader = AnnotationConfigContextLoader.class ) -public class SpringTest{ - - @Test - public void whenSpringContextIsInstantiated_thenNoExceptions(){ - // When - } -} - The Java configuration classes are simply specified with the @ContextConfiguration annotation and the new AnnotationConfigContextLoader loads the bean definitions from the @Configuration classes. - Notice that the WebConfig configuration class was not included in the test because it needs to run in a Servlet context, which is not provided. -
-
- <anchor xml:id="dbdoclet.5_The_Controller"/><emphasis role="bold">5. The Controller</emphasis> - The @Controller is the central artifact in the entire Web Tier of the RESTful API. For the purpose of this post, the controller is modeling a simple REST resource – Foo: - @Controller -@RequestMapping( value = "/foos" ) -class FooController{ - - @Autowired - IFooService service; - - @RequestMapping( method = RequestMethod.GET ) - @ResponseBody - public List< Foo > findAll(){ - return service.findAll(); - } - - @RequestMapping( value = "/{id}", method = RequestMethod.GET ) - @ResponseBody - public Foo findOne( @PathVariable( "id" ) Long id ){ - return RestPreconditions.checkFound( service.findOne( id ) ); - } - - @RequestMapping( method = RequestMethod.POST ) - @ResponseStatus( HttpStatus.CREATED ) - @ResponseBody - public Long create( @RequestBody Foo resource ){ - Preconditions.checkNotNull( resource ); - return service.create( resource ); - } - - @RequestMapping( value = "/{id}", method = RequestMethod.PUT ) - @ResponseStatus( HttpStatus.OK ) - public void update( @PathVariable( "id" ) Long id, @RequestBody Foo resource ){ - Preconditions.checkNotNull( resource ); - RestPreconditions.checkNotNull( service.getById( resource.getId() ) ); - service.update( resource ); - } - - @RequestMapping( value = "/{id}", method = RequestMethod.DELETE ) - @ResponseStatus( HttpStatus.OK ) - public void delete( @PathVariable( "id" ) Long id ){ - service.deleteById( id ); - } - -} - You may have noticed I’m using a very simple, guava style RestPreconditions utility: - public class RestPreconditions { - public static <T> T checkFound(final T resource) { - if (resource == null) { - throw new MyResourceNotFoundException(); - } - return resource; - } -} - The Controller implementation is non-public – this is because it doesn’t need to be. Usually the controller is the last in the chain of dependencies – it receives HTTP requests from the Spring front controller (the DispathcerServlet) and simply delegate them forward to a service layer. If there is no use case where the controller has to be injected or manipulated through a direct reference, then I prefer not to declare it as public. - The request mappings are straightforward – as with any controller, the actual value of the mapping as well as the HTTP method are used to determine the target method for the request. @RequestBody will bind the parameters of the method to the body of the HTTP request, whereas @ResponseBody does the same for the response and return type. They also ensure that the resource will be marshalled and unmarshalled using the correct HTTP converter. Content negotiation will take place to choose which one of the active converters will be used, based mostly on the Accept header, although other HTTP headers may be used to determine the representation as well. -
-
- <anchor xml:id="dbdoclet.6_Mapping_the_HTTP_response_codes"/><emphasis role="bold">6. Mapping the HTTP response codes</emphasis> - The status codes of the HTTP response are one of the most important parts of the REST service, and the subject can quickly become very complex. Getting these right can be what makes or breaks the service. -
- <emphasis role="bold">6.1. Unmapped requests</emphasis> - If Spring MVC receives a request which doesn’t have a mapping, it considers the request not to be allowed and returns a 405 METHOD NOT ALLOWED back to the client. It is also good practice to include the Allow HTTP header when returning a 405 to the client, in order to specify which operations are allowed. This is the standard behavior of Spring MVC and does not require any additional configuration. -
-
- <emphasis role="bold">6.2. Valid, mapped requests</emphasis> - For any request that does have a mapping, Spring MVC considers the request valid and responds with 200 OK if no other status code is specified otherwise. It is because of this that controller declares different @ResponseStatus for the create, update and delete actions but not for get, which should indeed return the default 200 OK. -
-
- <emphasis role="bold">6.3. Client error</emphasis> - In case of a client error, custom exceptions are defined and mapped to the appropriate error codes. Simply throwing these exceptions from any of the layers of the web tier will ensure Spring maps the corresponding status code on the HTTP response. - @ResponseStatus( value = HttpStatus.BAD_REQUEST ) -public class BadRequestException extends RuntimeException{ - // -} -@ResponseStatus( value = HttpStatus.NOT_FOUND ) -public class ResourceNotFoundException extends RuntimeException{ - // -} - These exceptions are part of the REST API and, as such, should only be used in the appropriate layers corresponding to REST; if for instance a DAO/DAL layer exist, it should not use the exceptions directly. Note also that these are not checked exceptions but runtime exceptions – in line with Spring practices and idioms. -
-
- <emphasis role="bold">6.4. Using @ExceptionHandler</emphasis> - Another option to map custom exceptions on specific status codes is to use the @ExceptionHandler annotation in the controller. The problem with that approach is that the annotation only applies to the controller in which it is defined, not to the entire Spring Container, which means that it needs to be declared in each controller individually. This quickly becomes cumbersome, especially in more complex applications which many controllers. There are a few JIRA issues opened with Spring at this time to handle this and other related limitations: SPR-8124, SPR-7278, SPR-8406. -
-
-
- <anchor xml:id="dbdoclet.7_Additional_Maven_dependencies"/><emphasis role="bold">7. Additional Maven dependencies</emphasis><emphasis role="bold"></emphasis> - In addition to the spring-webmvc dependency required for the standard web application, we’ll need to set up content marshalling and unmarshalling for the REST API: - <dependencies> - <dependency> -   <groupId>com.fasterxml.jackson.core</groupId> -    <artifactId>jackson-databind</artifactId> -   <version>${jackson.version}</version> - </dependency> - <dependency> - <groupId>javax.xml.bind</groupId> - <artifactId>jaxb-api</artifactId> - <version>${jaxb-api.version}</version> - <scope>runtime</scope> - </dependency> -</dependencies> - -<properties> - <jackson.version>2.4.0</jackson.version> - <jaxb-api.version>2.2.11</jaxb-api.version> -</properties> - These are the libraries used to convert the representation of the REST resource to either JSON or XML. -
-
- <anchor xml:id="dbdoclet.8_Conclusion"/><emphasis role="bold">8. Conclusion</emphasis> - This tutorial illustrated how to implement and configure a REST Service using Spring 4 and Java based configuration, discussing HTTP response codes, basic Content Negotiation and marshaling. - In the next articles of the series I will focus on Discoverability of the API, advanced content negotiation and working with additional representations of a Resource. - The implementation of this Spring REST API Tutorial can be downloaded as a working sample project. - This is an Eclipse based project, so it should be easy to import and run as it is. - - - - - - - - - - java, REST, Spring, testing - - - - - - - - - - - © 2014 Baeldung. All Rights Reserved. - - - - - - - - - -
-
-
- -
- - Spring Security for a REST API - - - - - - Return to Content - - - - - - Contents - - - Table of Contents - - - 1. Overview - - - 2. Spring Security in the web.xml - - - 3. The Security Configuration - - - 4. Maven and other trouble - - - 5. Conclusion - - - - - -
- <anchor xml:id="Table_of_Contents"/><emphasis role="bold">Table of Contents</emphasis> - - - 1. Overview - - - 2. Introducing Spring Security in the web.xml - - - 3. The Security Configuration - - -     3.1. The basics - - -     3.2. The Entry Point - - -     3.3. The Login - - -     3.4. Authentication should return 200 instead of 301 - - -     3.5. Failed Authentication should return 401 instead of 302 - - -     3.6. The Authentication Manager and Provider - - -     3.7. Finally – Authentication against the running REST Service - - - 4. Maven and other trouble - - - 5. Conclusion - - -
- <anchor xml:id="dbdoclet.1_Overview"/><emphasis role="bold">1. Overview</emphasis> - This tutorial shows how to Secure a REST Service using Spring and Spring Security 3.1 with Java based configuration. The article will focus on how to set up the Security Configuration specifically for the REST API using a Login and Cookie approach. -
-
- <anchor xml:id="dbdoclet.2_Spring_Security_in_the_webxml"/><emphasis role="bold">2. Spring Security in the web.xml</emphasis> - The architecture of Spring Security is based entirely on Servlet Filters and, as such, comes before Spring MVC in regards to the processing of HTTP requests. Keeping this in mind, to begin with, a filter needs to be declared in the web.xml of the application: - <filter> - <filter-name>springSecurityFilterChain</filter-name> - <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> -</filter> -<filter-mapping> - <filter-name>springSecurityFilterChain</filter-name> - <url-pattern>/*</url-pattern> -</filter-mapping> - The filter must necessarily be named ‘springSecurityFilterChain’  to match the default bean created by Spring Security in the container. - Note that the defined filter is not the actual class implementing the security logic but a DelegatingFilterProxy with the purpose of delegating the Filter’s methods to an internal bean. This is done so that the target bean can still benefit from the Spring context lifecycle and flexibility. - The URL pattern used to configure the Filter is /* even though the entire web service is mapped to /api/* so that the security configuration has the option to secure other possible mappings as well, if required. -
-
- <anchor xml:id="dbdoclet.3_The_Security_Configuration"/><emphasis role="bold">3. The Security Configuration</emphasis> - <?xml version="1.0" encoding="UTF-8"?> -<beans:beans - xmlns="http://www.springframework.org/schema/security" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xmlns:beans="http://www.springframework.org/schema/beans" - xmlns:sec="http://www.springframework.org/schema/security" - xsi:schemaLocation=" - http://www.springframework.org/schema/security - http://www.springframework.org/schema/security/spring-security-3.2.xsd - http://www.springframework.org/schema/beans - http://www.springframework.org/schema/beans/spring-beans-4.0.xsd"> - - <http entry-point-ref="restAuthenticationEntryPoint"> - <intercept-url pattern="/api/admin/**" access="ROLE_ADMIN"/> - - <form-login - authentication-success-handler-ref="mySuccessHandler" - authentication-failure-handler-ref="myFailureHandler" - /> - - <logout /> - </http> - - <beans:bean id="mySuccessHandler" - class="org.rest.security.MySavedRequestAwareAuthenticationSuccessHandler"/> - <beans:bean id="myFailureHandler" - class="org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler"/> - - <authentication-manager alias="authenticationManager"> - <authentication-provider> - <user-service> - <user name="temporary" password="temporary" authorities="ROLE_ADMIN"/> - <user name="user" password="user" authorities="ROLE_USER"/> - </user-service> - </authentication-provider> - </authentication-manager> - -</beans:beans> - Most of the configuration is done using the security namespace – for this to be enabled, the schema locations must be defined and pointed to the correct 3.1 or 3.2 XSD versions. The namespace is designed so that it expresses the common uses of Spring Security while still providing hooks raw beans to accommodate more advanced scenarios. >> Signup for my upcoming Video Course on Building a REST API with Spring 4 -
- <emphasis role="bold">3.1. The <http> element</emphasis> - The <http> element is the main container element for HTTP security configuration. In the current implementation, it only secured a single mapping: /api/admin/**. Note that the mapping is relative to the root context of the web application, not to the rest Servlet; this is because the entire security configuration lives in the root Spring context and not in the child context of the Servlet. -
-
- <emphasis role="bold">3.2. The Entry Point</emphasis> - In a standard web application, the authentication process may be automatically triggered when the client tries to access a secured resource without being authenticated – this is usually done by redirecting to a login page so that the user can enter credentials. However, for a REST Web Service this behavior doesn’t make much sense – Authentication should only be done by a request to the correct URI and all other requests should simply fail with a 401 UNAUTHORIZED status code if the user is not authenticated. - Spring Security handles this automatic triggering of the authentication process with the concept of an Entry Point – this is a required part of the configuration, and can be injected via the entry-point-ref attribute of the <http> element. Keeping in mind that this functionality doesn’t make sense in the context of the REST Service, the new custom entry point is defined to simply return 401 whenever it is triggered: - @Component( "restAuthenticationEntryPoint" ) -public class RestAuthenticationEntryPoint implements AuthenticationEntryPoint{ - - @Override - public void commence( HttpServletRequest request, HttpServletResponse response, - AuthenticationException authException ) throws IOException{ - response.sendError( HttpServletResponse.SC_UNAUTHORIZED, "Unauthorized" ); - } -} - A quick sidenote here is that the 401 is sent without the WWW-Authenticate header, as required by the HTTP Spec – we can of course set the value manually if we need to. -
-
- <emphasis role="bold">3.3. The Login Form for REST</emphasis> - There are multiple ways to do Authentication for a REST API – one of the default Spring Security provides is Form Login – which uses an authentication processing filter – org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter. - The <form-login> element will create this filter and will also allow us to set our custom authentication success handler on it. This can also be done manually by using the <custom-filter> element to register a filter at the position FORM_LOGIN_FILTER – but the namespace support is flexible enough. - Note that for a standard web application, the auto-config attribute of the <http> element is shorthand syntax for some useful security configuration. While this may be appropriate for some very simple configurations, it doesn’t fit and should not be used for a REST API. -
-
- <emphasis role="bold">3.4. Authentication should return 200 instead of 301</emphasis> - By default, form login will answer a successful authentication request with a 301 MOVED PERMANENTLY status code; this makes sense in the context of an actual login form which needs to redirect after login. For a RESTful web service however, the desired response for a successful authentication should be 200 OK. - This is done by injecting a custom authentication success handler in the form login filter, to replace the default one. The new handler implements the exact same login as the default org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler with one notable difference – the redirect logic is removed: - public class MySavedRequestAwareAuthenticationSuccessHandler - extends SimpleUrlAuthenticationSuccessHandler { - - private RequestCache requestCache = new HttpSessionRequestCache(); - - @Override - public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, - Authentication authentication) throws ServletException, IOException { - SavedRequest savedRequest = requestCache.getRequest(request, response); - - if (savedRequest == null) { - clearAuthenticationAttributes(request); - return; - } - String targetUrlParam = getTargetUrlParameter(); - if (isAlwaysUseDefaultTargetUrl() || - (targetUrlParam != null && - StringUtils.hasText(request.getParameter(targetUrlParam)))) { - requestCache.removeRequest(request, response); - clearAuthenticationAttributes(request); - return; - } - - clearAuthenticationAttributes(request); - } - - public void setRequestCache(RequestCache requestCache) { - this.requestCache = requestCache; - } -} -
-
- <emphasis role="bold">3.5. Failed Authentication should return 401 instead of 302</emphasis> - Similarly – we configured the authentication failure handler – same way we did with the success handler. - Luckily – in this case, we don’t need to actually define a new class for this handler – the standard implementation – SimpleUrlAuthenticationFailureHandler – does just fine. - The only difference is that – now that we’re defining this explicitly in our XML config – it’s not going to get a default defaultFailureUrl from Spring – and so it won’t redirect. -
-
- <emphasis role="bold">3.6. The Authentication Manager and Provider</emphasis> - The authentication process uses an in-memory provider to perform authentication – this is meant to simplify the configuration as a production implementation of these artifacts is outside the scope of this post. -
-
- <emphasis role="bold">3.7 Finally – Authentication against the running REST Service</emphasis> - Now let’s see how we can authenticate against the REST API – the URL for login is /j_spring_security_check – and a simple curl command performing login would be: - curl -i -X POST -d j_username=user -d j_password=userPass -http://localhost:8080/spring-security-rest/j_spring_security_check - This request will return the Cookie which will then be used by any subsequent request against the REST Service. - We can use curl to authentication and store the cookie it receives in a file: - curl -i -X POST -d j_username=user -d j_password=userPass -c /opt/cookies.txt -http://localhost:8080/spring-security-rest/j_spring_security_check - Then we can use the cookie from the file to do further authenticated requests: - curl -i --header "Accept:application/json" -X GET -b /opt/cookies.txt -http://localhost:8080/spring-security-rest/api/foos - This authenticated request will correctly result in a 200 OK: - HTTP/1.1 200 OK -Server: Apache-Coyote/1.1 -Content-Type: application/json;charset=UTF-8 -Transfer-Encoding: chunked -Date: Wed, 24 Jul 2013 20:31:13 GMT - -[{"id":0,"name":"JbidXc"}] -
-
-
- <anchor xml:id="dbdoclet.4_Maven_and_other_trouble"/><emphasis role="bold">4. Maven and other trouble</emphasis> - The Spring core dependencies necessary for a web application and for the REST Service have been discussed in detail. For security, we’ll need to add: spring-security-web and spring-security-config – all of these have also been covered in the Maven for Spring Security tutorial. - It’s worth paying close attention to the way Maven will resolve the older Spring dependencies – the resolution strategy will start causing problems once the security artifacts are added to the pom. To address this problem, some of the core dependencies will need to be overridden in order to keep them at the right version. -
-
- <anchor xml:id="dbdoclet.5_Conclusion"/><emphasis role="bold">5. Conclusion</emphasis> - This post covered the basic security configuration and implementation for a RESTful Service using Spring Security 3.1, discussing the web.xml, the security configuration, the HTTP status codes for the authentication process and the Maven resolution of the security artifacts. - The implementation of this Spring Security REST Tutorial can be downloaded as a working sample project.This is an Eclipse based project, so it should be easy to import and run as it is. - - - - - - - - - - REST, security, Spring - - - - - - - - - - - © 2014 Baeldung. All Rights Reserved. - - - - - - - - - -
-
-
- -
- - Spring Security Basic Authentication - - - - - - Return to Content - - - - - - Contents - - - 1. Overview - - - 2. The Spring Security Configuration - - - 3. Consuming The Secured Application - - - 4. Further Configuration – The Entry Point - - - 5. The Maven Dependencies - - - 6. Conclusion - - - If you're new here, you may want to get my "REST APIs with Spring" eBook. Thanks for visiting! - - - -
- <anchor xml:id="dbdoclet.1_Overview"/><emphasis role="bold">1. Overview</emphasis> - This tutorial shows how to set up, configure and customize Basic Authentication with Spring. We’re going to built on top of the simple Spring MVC example, and secure the UI of the MVC application with the Basic Auth mechanism provided by Spring Security. -
- <anchor xml:id="dbdoclet.2_The_Spring_Security_Configuration"/><emphasis role="bold">2. The Spring Security Configuration</emphasis> - The Configuration for Spring Security is still XML: - <?xml version="1.0" encoding="UTF-8"?> -<beans:beans xmlns="http://www.springframework.org/schema/security" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xmlns:beans="http://www.springframework.org/schema/beans" - xsi:schemaLocation=" - http://www.springframework.org/schema/security - http://www.springframework.org/schema/security/spring-security-3.1.xsd - http://www.springframework.org/schema/beans - http://www.springframework.org/schema/beans/spring-beans-3.2.xsd"> - - <http use-expressions="true"> - <intercept-url pattern="/**" access="isAuthenticated()" /> - - <http-basic /> - </http> - - <authentication-manager> - <authentication-provider> - <user-service> - <user name="user1" password="user1Pass" authorities="ROLE_USER" /> - </user-service> - </authentication-provider> - </authentication-manager> - -</beans:beans> - This is one of the last pieces of configuration in Spring that still need XML – Java Configuration for Spring Security is still a work in progress. - What is relevant here is the <http-basic> element inside the main <http> element of the configuration – this is enough to enable Basic Authentication for the entire application. The Authentication Manager is not the focus of this tutorial, so we are using an in memory manager with the user and password defined in plaintext. - The web.xml of the web application enabling Spring Security has already been discussed in the Spring Logout tutorial. -
-
- <anchor xml:id="dbdoclet.3_Consuming_The_Secured_Application"/><emphasis role="bold">3. Consuming The Secured Application</emphasis> - The curl command is our go to tool for consuming the secured application. - First, let’s try to request the /homepage.html without providing any security credentials: - curl -i http://localhost:8080/spring-security-mvc-basic-auth/homepage.html - We get back the expected 401 Unauthorized and the Authentication Challenge: - HTTP/1.1 401 Unauthorized -Server: Apache-Coyote/1.1 -Set-Cookie: JSESSIONID=E5A8D3C16B65A0A007CFAACAEEE6916B; Path=/spring-security-mvc-basic-auth/; HttpOnly -WWW-Authenticate: Basic realm="Spring Security Application" -Content-Type: text/html;charset=utf-8 -Content-Length: 1061 -Date: Wed, 29 May 2013 15:14:08 GMT - The browser would interpret this challenge and prompt us for credentials with a simple dialog, but since we’re using curl, this isn’t the case. - Now, let’s request the same resource – the homepage – but provide the credentials to access it as well: - curl -i --user user1:user1Pass http://localhost:8080/spring-security-mvc-basic-auth/homepage.html - Now, the response from the server is 200 OK along with a Cookie: - HTTP/1.1 200 OK -Server: Apache-Coyote/1.1 -Set-Cookie: JSESSIONID=301225C7AE7C74B0892887389996785D; Path=/spring-security-mvc-basic-auth/; HttpOnly -Content-Type: text/html;charset=ISO-8859-1 -Content-Language: en-US -Content-Length: 90 -Date: Wed, 29 May 2013 15:19:38 GMT - From the browser, the application can be consumed normally – the only difference is that a login page is no longer a hard requirement since all browsers support Basic Authentication and use a dialog to prompt the user for credentials. -
-
- <anchor xml:id="dbdoclet.4_Further_Configuration_8211_The_Entry_Point"/><emphasis role="bold">4. Further Configuration – </emphasis><emphasis role="bold">The Entry Point</emphasis> - By default, the BasicAuthenticationEntryPoint provisioned by Spring Security returns a full html page for a 401 Unauthorized response back to the client. This html representation of the error renders well in a browser, but it not well suited for other scenarios, such as a REST API where a json representation may be preferred. - The namespace is flexible enough for this new requirement as well – to address this – the entry point can be overridden: - <http-basic entry-point-ref="myBasicAuthenticationEntryPoint" /> - The new entry point is defined as a standard bean: - @Component -public class MyBasicAuthenticationEntryPoint extends BasicAuthenticationEntryPoint { - - @Override - public void commence - (HttpServletRequest request, HttpServletResponse response, AuthenticationException authEx) - throws IOException, ServletException { - response.addHeader("WWW-Authenticate", "Basic realm=\"" + getRealmName() + "\""); - response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); - PrintWriter writer = response.getWriter(); - writer.println("HTTP Status 401 - " + authEx.getMessage()); - } - - @Override - public void afterPropertiesSet() throws Exception { - setRealmName("Baeldung"); - super.afterPropertiesSet(); - } -} - By writing directly to the HTTP Response we now have full control over the format of the response body. -
-
- <anchor xml:id="dbdoclet.5_The_Maven_Dependencies"/><emphasis role="bold">5. The Maven Dependencies</emphasis> - The Maven dependencies for Spring Security have been discussed before in the Spring Security with Maven article – we will need both spring-security-web and spring-security-config available at runtime. -
-
- <anchor xml:id="dbdoclet.6_Conclusion"/><emphasis role="bold">6. Conclusion</emphasis> - In this example we secured an MVC application with Spring Security and Basic Authentication. We discussed the XML configuration and we consumed the application with simple curl commands. Finally took control of the exact error message format – moving from the standard HTML error page to a custom text or json format. - The implementation of this Spring tutorial can be found in the github project – this is an Eclipse based project, so it should be easy to import and run as it is. When the project runs locally, the sample html can be accessed at: - http://localhost:8080/spring-security-mvc-basic-auth/homepage.html - - - - - - - - - - security, Spring - - - - - - - - - - - © 2014 Baeldung. All Rights Reserved. - - - - - - - -
-
-
- -
- - Spring Security Digest Authentication - - - - - - Return to Content - - - - - - Contents - - - 1. Overview - - - 2. The Security XML Configuration - - - 3. Consuming the Secured Application - - - 4. The Maven Dependencies - - - 5. Conclusion - - - If you're new here, you may want to get my "REST APIs with Spring" eBook. Thanks for visiting! - - - -
- <anchor xml:id="dbdoclet.1_Overview"/><emphasis role="bold">1. Overview</emphasis> - This tutorial shows how to set up, configure and customize Digest Authentication with Spring. Similar to the previous article covering Basic Authentication, we’re going to built on top of the Spring MVC tutorial, and secure the application with the Digest Auth mechanism provided by Spring Security. -
- <anchor xml:id="dbdoclet.2_The_Security_XML_Configuration"/><emphasis role="bold">2. The Security XML Configuration</emphasis> - First thing to understand about the configuration is that, while Spring Security does have full out of the box support for the Digest authentication mechanism, this support is not as well integrated into the namespace as Basic Authentication was. - In this case, we need to manually define the raw beans that are going to make up the security configuration – the DigestAuthenticationFilter and the DigestAuthenticationEntryPoint: - <?xml version="1.0" encoding="UTF-8"?> -<beans:beans xmlns="http://www.springframework.org/schema/security" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xmlns:beans="http://www.springframework.org/schema/beans" - xsi:schemaLocation=" - http://www.springframework.org/schema/security - http://www.springframework.org/schema/security/spring-security-3.1.xsd - http://www.springframework.org/schema/beans - http://www.springframework.org/schema/beans/spring-beans-3.2.xsd"> - -    <beans:bean id="digestFilter" - class="org.springframework.security.web.authentication.www.DigestAuthenticationFilter"> -        <beans:property name="userDetailsService" ref="userService" /> -        <beans:property name="authenticationEntryPoint" ref="digestEntryPoint" /> -    </beans:bean> -    <beans:bean id="digestEntryPoint"  - class="org.springframework.security.web.authentication.www.DigestAuthenticationEntryPoint"> -        <beans:property name="realmName" value="Contacts Realm via Digest Authentication" /> -        <beans:property name="key" value="acegi" /> -    </beans:bean> - - <!-- the security namespace configuration --> - <http use-expressions="true" entry-point-ref="digestEntryPoint"> - <intercept-url pattern="/**" access="isAuthenticated()" /> - - <custom-filter ref="digestFilter" after="BASIC_AUTH_FILTER" /> - </http> - - <authentication-manager> - <authentication-provider> - <user-service id="userService"> - <user name="user1" password="user1Pass" authorities="ROLE_USER" /> - </user-service> - </authentication-provider> - </authentication-manager> - -</beans:beans> - Next, we need to integrate these beans into the overall security configuration – and in this case, the namespace is still flexible enough to allow us to do that. - The first part of this is pointing to the custom entry point bean, via the entry-point-ref attribute of the main <http> element. - The second part is adding the newly defined digest filter into the security filter chain. Since this filter is functionally equivalent to the BasicAuthenticationFilter, we are using the same relative position in the chain – this is specified by the BASIC_AUTH_FILTER alias in the overall Spring Security Standard Filters. - Finally, notice that the Digest Filter is configured to point to the user service bean – and here, the namespace is again very useful as it allows us to specify a bean name for the default user service created by the <user-service> element: - <user-service id="userService"> -
-
- <anchor xml:id="dbdoclet.3_Consuming_the_Secured_Application"/><emphasis role="bold">3. Consuming the Secured Application</emphasis> - We’re going to be using the curl command to consume the secured application and understand how a client can interact with it. - Let’s start by requesting the homepage – without providing security credentials in the request: - curl -i http://localhost/spring-security-mvc-digest-auth/homepage.html - As expected, we get back a response with a 401 Unauthorized status code: - HTTP/1.1 401 Unauthorized -Server: Apache-Coyote/1.1 -Set-Cookie: JSESSIONID=CF0233C...; Path=/spring-security-mvc-digest-auth/; HttpOnly -WWW-Authenticate: Digest realm="Contacts Realm via Digest Authentication", qop="auth", - nonce="MTM3MzYzODE2NTg3OTo3MmYxN2JkOWYxZTc4MzdmMzBiN2Q0YmY0ZTU0N2RkZg==" -Content-Type: text/html;charset=utf-8 -Content-Length: 1061 -Date: Fri, 12 Jul 2013 14:04:25 GMT - If this request were sent by the browser, the authentication challenge would prompt the user for credentials using a simple user/password dialog. - Let’s now provide the correct credentials and send the request again: - curl -i --digest --user - user1:user1Pass http://localhost/spring-security-mvc-digest-auth/homepage.html - Notice that we are enabling Digest Authentication for the curl command via the –digest flag. - The first response from the server will be the same – the 401 Unauthorized – but the challenge will now be interpreted and acted upon by a second request – which will succeed with a 200 OK: - HTTP/1.1 401 Unauthorized -Server: Apache-Coyote/1.1 -Set-Cookie: JSESSIONID=A961E0D...; Path=/spring-security-mvc-digest-auth/; HttpOnly -WWW-Authenticate: Digest realm="Contacts Realm via Digest Authentication", qop="auth", - nonce="MTM3MzYzODgyOTczMTo3YjM4OWQzMGU0YTgwZDg0YmYwZjRlZWJjMDQzZWZkOA==" -Content-Type: text/html;charset=utf-8 -Content-Length: 1061 -Date: Fri, 12 Jul 2013 14:15:29 GMT - -HTTP/1.1 200 OK -Server: Apache-Coyote/1.1 -Set-Cookie: JSESSIONID=55F996B...; Path=/spring-security-mvc-digest-auth/; HttpOnly -Content-Type: text/html;charset=ISO-8859-1 -Content-Language: en-US -Content-Length: 90 -Date: Fri, 12 Jul 2013 14:15:29 GMT - -<html> -<head></head> - -<body> - <h1>This is the homepage</h1> -</body> -</html> - A final note on this interaction is that a client can preemptively send the correct Authorization header with the first request, and thus entirely avoid the server security challenge and the second request. -
-
- <anchor xml:id="dbdoclet.4_The_Maven_Dependencies"/><emphasis role="bold">4. The Maven Dependencies</emphasis> - The security dependencies are discussed in depth in the Spring Security Maven tutorial. In short, we will need to define spring-security-web and spring-security-config as dependencies in our pom.xml. -
-
- <anchor xml:id="dbdoclet.5_Conclusion"/><emphasis role="bold">5. Conclusion</emphasis> - In this tutorial we introduce security into a simple Spring MVC project by leveraging the Digest Authentication support in the framework. - The implementation of these examples can be found in the github project – this is an Eclipse based project, so it should be easy to import and run as it is. - When the project runs locally, the homepage html can be accessed at (or, with minimal Tomcat configuration, on port 80): - http://localhost:8080/spring-security-mvc-digest-auth/homepage.html - Finally, there is no reason an application needs to choose between Basic and Digest authentication – both can be set up simultaneously on the same URI structure, in such a way that the client can pick between the two mechanisms when consuming the web application. - - - - - - - - - - security, Spring - - - - - - - - - - - © 2014 Baeldung. All Rights Reserved. - - - - - - - -
-
-
- -
- - Basic and Digest Authentication for a REST Service with Spring Security - - - - - - Return to Content - - - - - - Contents - - - Table of Contents - - - 1. Overview - - - 2. Configuration of Basic Authentication - - - 3. Configuration of Digest Authentication - - - 4. Supporting both authentication protocols in the same RESTful service - - - 5. Testing both scenarios - - - 6. Conclusion - - - If you're new here, you may want to get my "REST APIs with Spring" eBook. Thanks for visiting! - - - -
- <anchor xml:id="Table_of_Contents"/><emphasis role="bold">Table of Contents</emphasis> - - - 1. Overview - - - 2. Configuration of Basic Authentication - - -     2.1. Satisfying the stateless constraint – getting rid of sessions - - - 3. Configuration of Digest Authentication - - - 4. Supporting both authentication protocols in the same RESTful service - - -     4.1. Anonymous request - - -     4.2. Request with authentication credentials - - - 5. Testing both scenarios - - - 6. Conclusion - - -
- <anchor xml:id="dbdoclet.1_Overview"/><emphasis role="bold">1. Overview</emphasis> - This article discusses how to set up both Basic and Digest Authentication on the same URI structure of a REST API. In a previous article, we discussed another method of securing the REST Service – form based authentication, so Basic and Digest authentication is the natural alternative, as well as the more RESTful one. -
-
- <anchor xml:id="dbdoclet.2_Configuration_of_Basic_Authentication"/><emphasis role="bold">2. Configuration of Basic Authentication</emphasis> - The main reason that form based authentication is not ideal for a RESTful Service is that Spring Security will make use of Sessions – this is of course state on the server, so the statelessness constraints in REST is practically ignored. - We’ll start by setting up Basic Authentication – first we remove the old custom entry point and filter from the main <http> security element: - <http create-session="stateless"> - <intercept-url pattern="/api/admin/**" access="ROLE_ADMIN" /> - - <http-basic /> -</http> - Note how support for basic authentication has been added with a single configuration line – <http-basic /> – which handles the creation and wiring of both the BasicAuthenticationFilter and the BasicAuthenticationEntryPoint. -
- <emphasis role="bold">2.1. Satisfying the stateless constraint – getting rid of sessions</emphasis> - One of the main constraints of the RESTful architectural style is that the client-server communication is fully stateless, as the original dissertation reads: -
-     5.1.3 Stateless - We next add a constraint to the client-server interaction: communication must be stateless in nature, as in the client-stateless-server (CSS) style of Section 3.4.3 (Figure 5-3), such that each request from client to server must contain all of the information necessary to understand the request, and cannot take advantage of any stored context on the server. Session state is therefore kept entirely on the client. -
- The concept of Session on the server is one with a long history in Spring Security, and removing it entirely has been difficult until now, especially when configuration was done by using the namespace. However, Spring Security 3.1 augments the namespace configuration with a new stateless option for session creation, which effectively guarantees that no session will be created or used by Spring. What this new option does is completely removes all session related filters from the security filter chain, ensuring that authentication is performed for each request. -
-
-
- <anchor xml:id="dbdoclet.3_Configuration_of_Digest_Authentication"/><emphasis role="bold">3. Configuration of Digest Authentication</emphasis> - Starting with the previous configuration, the filter and entry point necessary to set up digest authentication will be defined as beans. Then, the digest entry point will override the one created by <http-basic> behind the scenes. Finally, the custom digest filter will be introduced in the security filter chain using the after semantics of the security namespace to position it directly after the basic authentication filter. - <http create-session="stateless" entry-point-ref="digestEntryPoint"> - <intercept-url pattern="/api/admin/**" access="ROLE_ADMIN" /> - - <http-basic /> - <custom-filter ref="digestFilter" after="BASIC_AUTH_FILTER" /> -</http> - -<beans:bean id="digestFilter" class= - "org.springframework.security.web.authentication.www.DigestAuthenticationFilter"> - <beans:property name="userDetailsService" ref="userService" /> - <beans:property name="authenticationEntryPoint" ref="digestEntryPoint" /> -</beans:bean> - -<beans:bean id="digestEntryPoint" class= - "org.springframework.security.web.authentication.www.DigestAuthenticationEntryPoint"> - <beans:property name="realmName" value="Contacts Realm via Digest Authentication"/> - <beans:property name="key" value="acegi" /> -</beans:bean> - -<authentication-manager> - <authentication-provider> - <user-service id="userService"> - <user name="eparaschiv" password="eparaschiv" authorities="ROLE_ADMIN" /> - <user name="user" password="user" authorities="ROLE_USER" /> - </user-service> - </authentication-provider> -</authentication-manager> - Unfortunately there is no support in the security namespace to automatically configure the digest authentication the way basic authentication can be configured with <http-basic>. Because of that, the necessary beans had to be defined and wired manually into the security configuration. -
-
- <anchor xml:id="dbdoclet.4_Supporting_both_authentication_protocols_in_the_same_RESTful_service"/><emphasis role="bold">4. Supporting both authentication protocols in the same RESTful service</emphasis> - Basic or Digest authentication alone can be easily implemented in Spring Security 3.x; it is supporting both of them for the same RESTful web service, on the same URI mappings that introduces a new level of complexity into the configuration and testing of the service. -
- <emphasis role="bold">4.1. Anonymous request</emphasis> - With both basic and digest filters in the security chain, the way a anonymous request – a request containing no authentication credentials (Authorization HTTP header) – is processed by Spring Security is – the two authentication filters will find no credentials and will continue execution of the filter chain. Then, seeing how the request wasn’t authenticated, an AccessDeniedException is thrown and caught in the ExceptionTranslationFilter, which commences the digest entry point, prompting the client for credentials. - The responsibilities of both the basic and digest filters are very narrow – they will continue to execute the security filter chain if they are unable to identify the type of authentication credentials in the request. It is because of this that Spring Security can have the flexibility to be configured with support for multiple authentication protocols on the same URI. - When a request is made containing the correct authentication credentials – either basic or digest – that protocol will be rightly used. However, for an anonymous request, the client will get prompted only for digest authentication credentials. This is because the digest entry point is configured as the main and single entry point of the Spring Security chain; as such digest authentication can be considered the default. -
-
- <emphasis role="bold">4.2. Request with authentication credentials</emphasis> - A request with credentials for Basic authentication will be identified by the Authorization header starting with the prefix “Basic”. When processing such a request, the credentials will be decoded in the basic authentication filter and the request will be authorized. Similarly, a request with credentials for Digest authentication will use the prefix “Digest”  for it’s Authorization header. -
-
-
- <anchor xml:id="dbdoclet.5_Testing_both_scenarios"/><emphasis role="bold">5. Testing both scenarios</emphasis> - The tests will consume the REST service by creating a new resource after authenticating with either basic or digest: - @Test -public void givenAuthenticatedByBasicAuth_whenAResourceIsCreated_then201IsReceived(){ - // Given - // When - Response response = given() - .auth().preemptive().basic( ADMIN_USERNAME, ADMIN_PASSWORD ) - .contentType( HttpConstants.MIME_JSON ).body( new Foo( randomAlphabetic( 6 ) ) ) - .post( paths.getFooURL() ); - - // Then - assertThat( response.getStatusCode(), is( 201 ) ); -} -@Test -public void givenAuthenticatedByDigestAuth_whenAResourceIsCreated_then201IsReceived(){ - // Given - // When - Response response = given() - .auth().digest( ADMIN_USERNAME, ADMIN_PASSWORD ) - .contentType( HttpConstants.MIME_JSON ).body( new Foo( randomAlphabetic( 6 ) ) ) - .post( paths.getFooURL() ); - - // Then - assertThat( response.getStatusCode(), is( 201 ) ); -} - Note that the test using basic authentication adds credentials to the request preemptively, regardless if the server has challenged for authentication or not. This is to ensure that the server doesn’t need to challenge the client for credentials, because if it did, the challenge would be for Digest credentials, since that is the default. -
-
- <anchor xml:id="dbdoclet.6_Conclusion"/><emphasis role="bold">6. Conclusion</emphasis> - This article covered the configuration and implementation of both Basic and Digest authentication for a RESTful service, using mostly Spring Security 3.0 namespace support as well as some new features added by Spring Security 3.1. - For the full implementation, check out the github project. - - - - - - - - - - REST, security, Spring - - - - - - - - - - - © 2014 Baeldung. All Rights Reserved. - - - - - - - -
-
-
diff --git a/apache-fop/src/test/resources/output_herold.pdf b/apache-fop/src/test/resources/output_herold.pdf deleted file mode 100644 index 1d23de7b616c734d4c3e85d71b628c6ef6600575..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34733 zcmdSBWmsHI7Bz~y26uONcXto&G!opM;O_1OcPF?z!QCB#2MsQlWL}y1X72aQ{debA z_t{moYagjzYp;E($rMG!>6qwQVaUqLD=J}F2^k4(jXuHf^1?8PH~jhs3W|gu0S=B9wl;)J^h{JR42ll6CeFry|67;ePTog|8ae?8DMh)N8JSp_n3y@4 zxR{t(nQ0iADHs_ks9^Z{VE{HJzh-9pI|4#N26;jjnD-A^fQ^}xIUy6%d!zC%gSds2 z)BC&(;#Ti|MFGaPCV*c)9G%`{wuW)b%u06EP&vRK+H{n^H6SIjg7OS56a8a!3CF;%{0jR)Nwu%wsBd{Q4d??9t2Ue~9CEO{HFEGA=FCP%DjZLGvh6ZCS z%~Z$#=HO2n!!pI5}aSjvTq1|DABwYvdQt3~G5~u9&0t@I*Ebd!n zQlY`@J&PmL>^bgneUXG|3!IcosL#rj+8Ksw%sc?{B`Ngj8PTr^)F)IT9hmq=j|!_i zOA6;$1>UzY5HtX_bzpWy_Q4c0B%=rU8uOIakX=F*s#|shpfeJP?qjv|a|?=cV{^phF!<-@$bOt3gj7#pJun z-7AcTDYWZ&@;H;Wm6h)Y2dhx`IyhoNpBLYp?r|P>JlVs~d>9b>LUMZJOrkEv;ZP-Ib%^2T!``eE^QH(e4C!*=REGVpUvg$9$PiYk8wR+;j~ZMUBxB zIzHfZ5hV?vK|2_)psFGh1O-uqVEqDp4$Rx)@gtb1s+F;KntN03lS&? zch$pOgN+)XTmyazH2(#G)!%dq1|dM+4lWbopqtDNd=2Q%7cSDb*x*Au$Se|=ArZ4^ z5G#@QFj$>GE+INA##NAiE)*q#w7)VDGHFnDu6b})K>j=m&2P%oq(z6yOQTR1gvJ}?SI zKt#k&{XmAqw1H89#FvsV#Nre?@B?%nhcc+FKFPO~Bns6F>LO|@wCHazN!UsG)J>{Is-gV(3Vdg%~MVF5p zLais_OHLM~Oe4mmXE7(V@||Y+BH)gtks^%wSh<6Md?=)y2~oQl=0#E1l5G^2wso<FL2)zqv-HvNC-~#)PlaOv!xE-;%(O^paR%cV!6CwK!B2{|j0TL> z=BAi{=E0ir3qRzZP(Y$l!+Ob(`HaRUXTMvTeZ-|MN;~u@>9|R;RL+Q{3d=0!?9ZaC zB4bl*Q$JIgF|Dy5842TjV~%4uW7XOQv>NDG=xwxB8okNU$rj0M$tjfvG!!&`^YrCH zmJMGcz7DtcJfbJ`-xz&o(oPj&cgirxU}Mi>pR|gy-nDL8xn1^YaBLWDuxw~EQ>e`` z>l*A_eN~5)fvggV>iem=r|DDwapE}rr&r^=)$8ecy)BP2o(S$D&n>5qorB8=5V^yV10DM|E0IvcIrEz&xOZLd3nPNQ}_TkPyZRtTTvcQXxL zMO>pjJKC)1jcsPu_#6TF5cs$;5HS+j;@P~Di00eX||XYB(UXB*YaRj2!> zD*T}_T?%27z6=8#-FC4NL##2}^Ttl3g4a5d4~>!7@*v`|%OaBvcKa=bag%t^h%)U2>Ry;_p7*RuC- zu5z>Ta`IAno)g{-;z5rlsE~79-EtW0SI!QN^Zq$B!IgW)2;RDCMa7%O)P7hC1{8Vd^)vCv}vMW)-i7QS0efYz&Ko6=(D_bXsbx?GvAMWongc zo9`DqntnRtDB^(OK(J4&XnegihOXW-D%G_RJ9?5^lf&q$dn>ytSIAIdM@-~OI@|DH zCSGxHEFW5U*)Q9d`4-X?WOcGMv7}e`vLD@#he2(sK6gfXn)oA84MN>T4NKj+)I&e( zqj&ybTT$i5Vi)7H6Ww-Qbyv?HHkGrLG?kuB5;X@d9iP1=0xU!Z^u{*YJ7RG1ah^I& zz1P1Xf-1w0O1bT5YOUeVy|t*<&&or(d?k<~fh4 zUB&n2mCHJmKol_w{wy5_hhx>-(y-am;*j@Ws4 zZ2gqs_`ZqRj^%uPTN$Wbx7xmH?8M#@W+aA2{HH|55bj`f)Kiqcd)>vz@a$>vEXsgD`K!*; z*z>Y$m)q-%02U9|mCp0?Y;}g7dFRrd!|iBxX-#QJbzpUoeoFhaSN$8^iS=e%s%!r2 z!+GsFjev&N;Vb6Nvj4$4wHc&DM1&0;0VagMh^Vse zpR|@nbrl!0CZtrZ`65vE= z1TeF(;Uhk8>mnw!FySLsXOm-;vl9WBTS$6108~8WRgFC?jk!#S1^8iLc-^?&tnIAd zCnR*Uwz6^LcH<*9eCNvm?)UG%%nZc*FuV>XrrgS+;(v5`KjI@ccXG1hW?*o2b)|P@ zp|^D~V_@Rq;$mQAW?*Kfd+$N#=x*a==tgJbNb;u#QGlbdgN2>bFP{I8$xMv@a%AW1 zVD;OLi7^Af3SbSeadKpM&juKX34hIQXk_c`#7F$gm5DL8sjY*xp%cHMot>41vEeU= z40a}_ybOOg{qAOEXk+GVXa?X1*!*t$>-cx;`xOT8|4JL^n3(98IaQgsxS5!_f9DR| zjEuhr{O$t7%kV3Le~SK(EAmg4KhEbph`&zA#*zN_g`_vOwf+^|`^m8U`^mgFaQ~U@ z@c-w0i1*j%zdOP3{yr2H|08AMe^0Xh=<>Ji|3l30xBoxK>}F{99y8;=$NWBm`;Qz> z)z;SP|26FYv)}u}_CE5@hx=FJ_J6zl|JL^(!+%c<_-_XPQ_uf+Iey>O_ow>(ZZiC} z3f>R?T1f9pn2*@u_cHnSh0VnH*TVffjb!lo?O0QAa*%eS>YUcTM4ElQW)c*aBN60U*k;o7=5RkrtqZGO{-Jin;kJFb^Y0F zOx#p-V|K-j2rL>Sk6h@Bs%8Zj7m*n)>9urBt_vMiL}AI*h8Ds!5=P!cTM$5#to?`S zc-&6o_j$t>-m6j$KwLD(jtvm-DRpR$UXTcx4nv(+r0yn`#kFwQ>hyHIu!JpKIF1%7 zG;tDHHhT=sI`j*_LnMjGV)LN zN$N%|0x%67m)>!}zYo(Dpn(;&a1fD?Vg9Ybf&P4pu_XlhQq0YUR&1ug3V< zm+p)CmhXnZq>`eHbWnbbjc*EaTN1XhakQo(5RMJo$(Doy4*WVSrIR41!&ad4!HKTW z2_b!u#wMzTIaCnm6q!4E$3x9jvqhwlA`q`XSm|Sxs6*Lctp}P{%Gtc)a*#T&+BG^9 z=9y^n*P&5y_#bXE-{~zSX8gm$utW0-Rao;n=+)f0?SK~2alegETRVe$fBr&vn2`8D zz6-BVIWewFo5Cu3@3~=<07b2M*v)M{E==bj#Ba_!lGlC^0|pmZfTG3!y?^QsEiNWg zQs?SE8>Jg&94$fXi;k!|)EG?vbeZ|MXD5Y$PAwRsZ&2A<)q+VA`UrLw7!l;z+|N!2 zgMCVD^Y3oiSDc3*xaV;d>E)7UkGQ4LM#wPpm-CC)t!S<+)2>dHzP@xDAw#sueZ5)U zxCr6sR%Qpa*D+@qRF{~Mb#P%60T&$3_wz&AmX7e!=0L)1j~k{(w8>EgdDiHk9PHc+ zjN9h|{@BRw&ea!tW!*=m*cPw3@$LY(HTJN`^-)jruwJSL7vlvjRgj%LQr$etENi!&nTc}4m30cq%k**neMGQ7xFK?K%Kke(E-5SqeYd_7M#K$ zw07`&gSnhhNI?!U-0z^*n;W9a@m7vGuD2CPY1@ta~U;XZAp z6o!f~Qu(IQ+*3JHPSNOHP-jnZ2hO0n$I=NM->zO5!iMj~k^>Ts8K0NZRIDpJ3T?h0 z^H^uAuq=n-7Ax*XCp4a0oAsHt>L&Ar6w=XpG)WUGAF;ab7tq!<aSyxD3 znj{)@nXZEFy^4hS)2HrGd=)A6Q&i7m23`jS33`AM?RZ8Xg#bResgHIuh>uc^;G$pX zZfrPFZ_9`~B4-7!IycX~)lu^n>HGG)Jq_;S6rAA0$=R~JA>=9(564`XJAL0LNYVhw z3dNft&35bz+JsVv8v6yfG+5{Lb@k_J#K6ySONVH`Yf#bs7~`^RK2?lT{w{fViLBh# ztHV+HW_|v{a8M(vV$pT5e7yNHZc6i`EMQHjOVln=8KpW@e9h>SRgN~A6@ z0FC1jtM14LxPjipIO7!Jz}_g5S-$7#Ff5tvHu21ueWsjf>5OhZDi>nV0!`QCRUg|e zaHbsn0mJbdj?&5Pey?|#I@{XB-tL!ISCvvI<_vOHdP#Yhy?$bQ5t329j6;FukWk;q zEn|V<#pM*SCtAeKaA2q`CthI_Ic(79JjcHJ3=)Wegpk{V=I2qnNf>(abn!6-(Zk9~ z@2c4567RC1oDYNb=m#_Ku9oZ-#J2Wj<5vQb*Ne$x9w?T*7Xxwl@A<4tZCkHLQZFT> znq75oISyJQM&7hMS)Oo;B=c@vRRT+E0*a3uTCcfXRPsQFXAe{*Mich7RwnlJGCB zSH#xF=@-o;{Eg+xzjWR|S@~~4_?K$T%*Mt1m+=?p{$=E3|J(NKjDFdeI9S>L>iD0DF}* zSa%(`QsN>u!=Q#J$81EFqHD6#D<}nddb``F2yrB=kE31z@AY2%ZU5Q1F1tf_Onzgv ze`;i>lPzxhQ?m8LMQ;DB?D6QfkxVD9UOn4n1TCdodMsHX0v9aoD<*0r*dFLAfj3!% z08hbIb2LGQqPO5NE!-?K)$noJSQBu}NS8@ZuUu~*A-S1mPhaYO{D#*wORB}xTaQ6b zAe{1Va!^I?ReIOkc=MVOox^r=M*XavPPJ$tb~UJOzmGYu0z(|4Oz@C7Ct^E4)uwfW zcb>wWbIY~3U?+F&L2o4A`xar%?vL!wv2rhBO^XORBrb<5Q6^lbP`lkSnC-&r=@X)K zjRWk8IEp!VZR+gK`Sx_Y^Jry%dD(Y$I8IpN%MFnb@IDdDRSfO!U8b1eGk>UK5ut%H zxF3N@`*a;Dj%ym6d#<0d4}u@vSDg#GHc5JSWprA7{J779yjEty8P|lSQm7`wpoyi$ zE9qz$QhH!gP!)*~4(-tKf>NWJe#&%+D2)`HAj+%jS4f+cC$6LUKQOys*f&rSB&kF5 z_6O_2y{O~$9jO-3rP8UMBi`V6lPU+q?c+y~6<<&o`^Q zF7hZ$dH;}AO9E^HGFd^y4**iByJ}13GB|mvd9T@P@6`&2`y+SklvS`R@tT1#@9u&S zJlYska;D0jOK!`m8CKJ+ocSXTJc^LxZqVf@zZ{jJIl^JD&7WlvN+ht1R=UDJ%j(ME z32);aRVL@*7O(l*KEN?08JwwjITV0mxejR#JAm+irFP7&;ia%|{ceaSO9r7bSv%!8 zWvEAEgS$TKH98GH8m|LyT{AL0l;L9rEwZx3(*uiOoSJ^%zg=P(W3d)?!if5Teg-mG z7JKM|F=wmNTFaQb*AlyfDd~(b#_x&}k0JQ@%S2ICOK>U9T;*(n@WFOb2KythV+qEI zWR1R3P&cxfo?;iOyP@6GdL9BUTRjq?3bNmZSd_r8n9A5O8;k~#q=ZLVcC<2uV`s5sFMqb? zYfMjP@YU9c7QtwXOiokKKM&u4fdgk^E{YF~2q#N%T0sc$4L`VG)NfNObov=fqJ(3N z6hKp%=!NQ_?bYuPKCft%Z5-{`5* zEG(rTNr9mo?Yjkz)-qKq%F0dxM~%daKpoGkLUd68PNYJ>aT-2O_h!fiZijQ>sX4Br zUde6d>9Kq*u&fC%21)599~f-qC;z@OKa>$v2Gvl?wnfnmH3Gn{y{8TP!P#IR4>?*> zQz_lLzg@bfEZ9&fZFP;Hh)>Bja-@rNE!n_)4zy8*>$_bm3^a=cMVK+%q%()PSmzz9 z+t2hc_AyDXhBSM~BpX2GWFyN<{^)86MOfEtT`rOwMnF;n7?=;sUUvx|CQi!`-V^aX zVDBRUrtYa30+$;DMe6?r*793O{1?{p zr`pKG$;I^-8Tp%w{Y^%={#!C4)On(A;1zF*n+_(#`-oj$xk{eEDp$Z7LJ1k{ zPb*KUOhiSM#s1a->l-ilL3IaTc?G}yE@<5ro$Ks##(Q*hs2$a_80< z%P^yxHeT6{ya$vBRNT9H45Cw4Nx6iArF}M!JB-%Vev9B&A;+|eYt}FpR=N|`5fi}S z`nWa(EaWY%M)pKe;eX>;v;np4~r|E?Kc?j+%;;rkGHrES8{{b}Iy7sKto~ zu!saoKNwP!ue7E7oCN`qp&yJGVGD0sRR=Vt(vol9N(C(ml_mbH8jFj+(yUEfX4QX9 z`_^aVrFIrC`f+|#yuIAg>1(+YP6pIl3w@>+)X~L*$?e+nhvO%-Jb-E_^^}s`=1{|B z%v2wKy7ee)m&A(nVH2mmX`N_H(h)mjKAn5Psv}RVa3FrZEYx5q5x2e!tDjhoze;2R zarG#%3hQKo1pwY9$>=lwPzxKULlIwWRP#Yd?;WV{6SHj7Dx96-h|i)!x{w@Wp@AGd z=bcneHkp#HMnGBg=!%}z5kI9D6qUb(-)X0J9UTI9Uqxm|cV3C12_4P*GAXs{|xXpuV-(m|It`QE4C9ziKX@kCy-z0qt z*HWGa42EJWGN2oak{{<2a8Tx;FDlxc&@tr*4^~bAcg3uUH+E|5?29Z5Pjo|lT6Q%3 zy7f$k4nBp`BM*Y?eQFdSZuq*9rFOp*BZo^H7eVY{!x<~n&2B(gbg17U&}rDJpHf3} zH=x6<7ma1k&$fD~kgrTTFr+8jG3F6B5-$khlD^=jXA};!q!KIEgg%Hax5|1O-jq-F zo-v#kzt>X`P{v;#lIsnn86zIs3*AEN@|7N;W!DD$EVJbalg3j`5)IVPJ)z_W6A&Iz z;kQB{ux*%UD2r((llE;wf8r#jAc`@ufs4gg_Cq)WP<(2g-Q0j)49608>>Y`MHg8>gUGCA#57^~mYRW6Cp z`hDggYJ`5_lA>(Uny7l!gMpm>I%o;N|5L54k`}{QY)N-Mgg(EtTCX^%xPI*}VC6%~ zSNV`A5Ie7_HN``HVgpqOkN{VF=9CTrE_R2MAl#?GQG5;#s82gySSd1Kw&W$Q)CG$5 z%-%yJgXdb`XUW!xi1rM6!D5<0UANdAf!&0YI^ZvEMtHHS^8E$ffV98o&I^=w9}5v8 zKpjjAIS7`opu->##x17!B1H_7#P$Tnh(PAPK?Q=@(MC2?r>4W%mrtNS9O+ncbSrtf z!v5585h`YG3340SKc^pl37{!}{-UW3wjbIws|&Bj(SD0Z!ReaGX|!kz&d8$qV^-9E z^LPPSQR&NRKN#rUJ#!;6c{GYd<0Rp1|DD6fQ|YZXru=UMsTU#45Eq!H&!ihelUr$Q z0k~jI^<2)n?JY7vs|Ocww6le~aj4M8M%G>?`UNtod+QBN&3moia|CVdLOx9QoPx!V z+!@_49PN+B|3at#1AYIs688Ul&EOZT z{;Ov23siqg0qo42f1)q*FSX&9k(c)`^kx2CyZdj-1e(9l*JrVMX*z*d&HRFV_LCNe z{jAdtd)WSWqA^f0A#|K@RmtJ#;_=VtAX~u7UzpFFboP;IfI2(;biLD41urI1UiU-L zN!vz>(@p(t{m$k|7ePmvXfa$AV|0h@Qn+i8t#<{GOn( zdc*n_6F6W#cM9WY3HYs!#EgzSDA1>ZC1*^C7TI!Eq3jI#ch^)ZBBb!R33$rb&W0y3 z$wc51k6vvN8y@M7QTAWZbO<~Fjq0OP^2*;2fk(i7p^q=%+=KgwXx9=k3-{_zCfDem z-jAh|NGr#zCDlF(m^5g#ctM2lBr%EobjetEQEeNlaZJ~Ya8ylczc9l?{ptv(Jrhgp zeqC6B5c#P64unhgB+f()XF4I99L@|~SgXo&loj~1q^xCj{(@LO-b*3*x z^eEdUZz;@NPDXgL-PRkO@5Xc{R#T$A5o^RmCtd;K&PBte8-%+l!C`umg%51Sy`*D* zYm58C8s)B+?&*DOK2}9+hWHn2OEB!h78#UJ{U<-q8)P|B<9IhyGSygjdnd{C=_+l$BSuP|coZ9!_Z=gqGm2*1(wCZvbxMt9rOL83>)By* zC{1i8rX4p%yx>#m=-opU9gx*kwk*g-(X9eDVO8jgnk6DxnZfk!uMoyjH}O1Bhftp*#%*=7B>#p)2Qo*VNGFZTfE>JZSw zv(J(m6c+x1g$5WUPKO5-i2+0p2t_#4kr1WN6Xg!o4nA*;hzgKM8hhR_iYj4=aoz1X zjV`?&J-83Tx6x7GvJwJs(*(Fpv$zi8PPpsOdPO}bZmYAR%p3~oWG!}@vwMhKFJ`db zF>c~-;q3DSYLLdRel8-*>cgsn%-!yev@T_~tZ66uC>c4009C6i0jjksH9oIYD!a*= ziIgj=5>PN)mv5zAf!6Dt4)}&D5?SPWlXGHZ7@ltG3&Pnc9=PeC7GnlJ2`kRv{uq^! zt|5-}MY$iEEw-$O327AbyfOO2-JCEPs|{iwuu1faF=Gm%8)}~bXD-7|yl;w4XC?5? z`FwM|q(L)!_E$N5$Hx7v?-_X$3CWFA5xPx&xECzV@!;lwN(WTm+E;Js$2{-z+e$q9m!}`YvA2<(bul?^aM$NDnVYB^__Iy zKW6k?(e?@Ph3<2Hc*$zOaA3nJ9TV>~LUTdDm(aYpJ9l2cf|zcvwAxKxe@?BVnxl8h^ZfBAf{0^vSXXIbG@r1ObX}HAw zK&n3}n$u#qfsTfa`5gKa=qY_PlvgAzL^Bz%P6v|qe&G6!L4Tpav5I=hhHRBERRfwG zu1D#9Gx;sK@pDSk4=j^u^CakM##n4Brw+ey8ru{BGoKg2bD3q4u04*Eue4nm%sT2V z*GA2d7kvYMXm^;!mg6>hJGaYtA5)1)Jj7YDP^Xu3uub%uZ)4q|d$Ww^hH8{6B+_TM zr{L0e2DZN%>(4hagH-Rl=&^DzgQBm%;L2>bl4}S$%8$Xr9Usc}P2#3EvVZKtJ6u<+ zcXd(=5Xr)KY^Gjd4ZwRNV5l(WUznn*1F~vB!C+3lCAKbJGAwz)muK6s!_DG|=H_hX z$!n0`>F_Vw=b1ij5g~BMK7zp4J9wm7$w+!0> zUB#BuPyCKaa-=26H1E+z;DNUiV^x^0?KLHP6!qcI8#c5T0f3+~rZP4k$j7HYV3}=Q zr!uzl{E;sZsQCl;8aik|Nb?myt_0B{x>6LSZIvy_uz|M%5DVs^8KGM9XuZ6DW$Oh z()R?LBhllKH~C1Hlq-BnrjySnrt0l97Q{*08#B)(X3iZKBSR-|89}!qk5%ODizPmV zJGKNCHv<6MOh@&Gz6ufUJJREOf}NC{t1J_Q9HdWhqQULft@CstMKN)Ea7OjqvQ#>; zRj^Zu4{$b^+e{*yubU};#Gmi8nXhTn!iCsy1@PlL^7kFXK|&JkM76&0tXge}4|rC~ zEiDehtL`ush8?Jt5#B@TZ4@#M5x4HD5nsknZgyXePm8|@ytbqW2ukip6)O*u&=tmy z%BAH~eJLi3*$+!X8)Y2|(*bmuD0T8?C z+QYD!Ze&`iq&Z2ljf%@wGmtxjo(2(;IIrh+f4*kc6(Uhg}X*63`jJxSiS(mw4Lc1c<-Nva# zlJnv$o3Sp2zPhV^FuR;+ALR(tmge`p;IUI>0c9G2flEKt>^#5X7RO{0W6{++1+xP@ z*yRdzax@k~4(WT15_X$4Gzt2#UrkK?{O(aJWjZC#CyOpo`8=3alLSp#JK=>_fA~rS z&~O^KV%aol(=L!<`Y4Ihbkcp()=89s1p=1+K}$$jB<@qivS+4f5g9?1#x=X>Eo2Vy-Gd}Z-PG*o)e`MiRN5$fV0l-n5^jD>22aE-= z(ZG~q&#*-YeRPFc)Pv}Z=P@Thnb@D}kG+*E#rmdd`aCl5f=xgFP^xAPzckV9vyf_P zWl*Wfw3$Z8S1jGteI%I}OCjJ@*71PVjD%7&371+w1BQJMF*R&u;tU>8xEidVu_($0 z7oy6xPi-up-iwLhNSG5-7w2(QYx$~m;^eB_?7nK-tq)r)SG(aI5ZKHjcz{vhm74&F#gWL(3K5${g-z0>JanWq$R@dH)FP-(b5`g*HnPqI{MSAp zdTvlGO4s_x$)Q5uws{2ANB1$`4VW59_k~NDhFD#mA?O&}6VEPgDU4vwD}Q`%>+ekS zyy4zj9G)U`)#tZRPF%U#uAU;olwn{yYEr8lsL|M07GIhPrt0EQnBlS{p{mL$Ffj73 zTYh+?hjrjT%+vVl zykJburn>Pw2uL*DDNBbU!YMhN!asXbx55WZ7l6<8|(}k%=l62ssIXUrsF`_I*mJW`x+<+Ka z7IwwZ&;6m}oPX1Uzjckj>A`RD;J=^;8rHV&3c%|ReS3I_ zIbbcda|T@%!tphFk+`p65!NLU!g1yqCA2Lc@Hh@1H(g1|G?S&+R$JvQ0P!Er_uYTE z74S#XGG3k&y+IS>#LpiZ^O*`61ne$~WFt0OF5y>vvGI)E)?N=@Z@7@?42&XsX8$HZ z-j3Pf9fGLBXy5B%ayt+Lcn29qx%8lUg3o7s?iQ^*87_@o6{k3BHh zSfY+gw`cW|Ompg81;`geU|GH0W;MJaHw80lCS2WhWqc_lfho>-zUpT8%#(kY;P>FF zYz^zeEg(MkCX$Y3lG{TRljTc^Q&ZV8uY-=&p1uLsEcQYip(B#uynzRY7Ir{pTmBF@ z>euAy#2I+2+8$=Yjca|#|0M&cV-si05ImIs>|1Lwbm>?^Y(Fp4A#n6FyI>+&gN+lE zd2<~+^%bvb`$>N6xf@Kp=8gZ*N#?C-Tg8&zoe`cWfE;|OC-kwO>Rh00|BhELZuveu ziB%tH8;gktqLDVj8hrdZ!k=%bK#C&gLmfKTeM^dc$x5wf8F2MU-mqjQ=*aF#WPu$> z#ab)@qFLLI?o*BLr($sm{FN45q(j$`d!(F6dy#{h&KR0LZWI}M=p!LSOollq^ub9@ z)JP;~q0c+2-NBpk{gY&x7-#@7cgr!0Z2mU1h-E7smJ-H3W;LYihzUdX!UJw zavy`W-!+dyRFcoMEvKHS=AE9H@1#(pe8-$9Yp(Yv>YU2NNk<|f!!i_&@3vMYK}G<6 z<0~2R;Fo*>X51tNv67J}BL=b39$M=HlMF=gP%OSb)qsx8H)}(_psu2xqs*H$7#KB@ z`BvXdtd&-keVa@Je)Y}ywx=h)RP~5tQV%sKd-tc>t(4VTYd@N1^PI&A6uec?Jwt3i zt)@}>4{BVc;$pm3>?hH2R9yYM1Sc^q&1UNIs4%Z2rtq0h!5tVUDX7}mN?|0mNATVZ zvDL=FLpmYGZijg&+$rdjm#O6z9p9AdhM?V8Tq?$c;>qk2&#>7TP$TRs%7L%Wxu zH4%?|WK^Qq^C;f$QrBJR=wM&+Aa>V8<9 z9pvsp=30ms<;Q-GP0$j-qy5lHa4~MnXm!XNfsth+rm=XM_e9PhDQ;%aT98Cs##dZy zEmIFy%vFS>IWr*KpM5%HU2ad#$tj$kY}ob@^+D(h(&wMYSI;{GPvs-a8Kc)n1n2tM zdUBfzJ^~r->Dg}{xd+U`rTo%jZm7!I_2!-Rx;2!mnze_#nkiz!W#7ypIoYj48f1d4 zSKAC*c+?3GJ^74ncC18vKgK*zEzbligqm67XEmNs2ZnZ-I?BItRc%=cnTS;(6A3Dr zgTuJ5p^6xK9}>{2Xm@(JX@D>?Nv@8CX`q`(1g2Y6g(ptfuG-X6eZ|+-P}d>&3cj`v zI$jCalU!?3E=zz&9t^|~9(@EKrZohcSJ$d#lx03d_EJZ(*jBV|54T%t+yYFF>UX zBB_>HG>m+wJOspGWaC?-*;uLQ1-XTXagrWph`uHCpa>GoXJ_Tu?Umsbu6`2fYq=EM z3A2^W*PB(i-yAKxWqc;whgk8kYuH6?fuM9I(Ri*v`DHvDlpC2cn~jpWW73qO6Tulh z_6T_BI^A}m4Ps!9f1~Uix@vVZnokOU*Tyd{JPY^b!X3}Jkkv$XEg@uxK|%p-$W!6# zxv=I)9VK;M`t}LC7N=!fKc}@7rrtsnH`o30ZKuXEqpY%4SjRW-ueE-k^cTt$j^IhL zYzh^kcOnzv`d@N^gsA9G&o{of^2N194@H&omMU`oaK<@_8r;b*R=_{&s+>AZdz54S zU29+rWOd;9~o z_R1`59a-5}GIjm53clJa)8K25pDEG`#QX^--zpy6Iark~qHlTMf@^RMUhjyj8ql?- zCv4Vz!?VW?hDw}m&woJfKMT+QBgp*=lK&OC|16R-v2*^V-Lw2HSNw(CEWh6#{4bDO zUHcumQGM>JIS&&8oZ%RV$pE@aO>*I=0}G@-9u@C|k`6^v>007HP%OP8H{~~uFb7_P z;l!dMs_dA9EANo8J7Cao0f7uefjy*2$juBc2!6=ibgEKc&p??}5td}eKDAZQPVDUv z-M|2xd){FP)D8GfuYnY3MOF<2bDS#nPHY{kGuw?Rip`wfpIblO?7YbRlrR-IsEqh8 z3ov&2hzR{dTsX7)Qnm{_|n$A~$V?a=F-Iz~r?R z^EoGM>tQ%VKJ%Bh zG+YaNINgn-PcB?%Xg>c8t#RZuzGJU8g=b1vI0?mDaXU4$#dSh~SdTVJaZ_k@7dY^e z8pDNlq5N=@{1)c8K$XAji6^%dJqR0VR}dyjh4U?9_ntJXvjG?{2Rfe_{|oa{G#NON zlwi^baD8%oH)R;QTDq=?bN+Tdz4Y9d2_txdJV@ONMjk0K4iiaC6hllm_!Tqwv;}BY zuCZ&5|WY-Jx&Hv=^FiGrzCdzl9lnCZI(n|q*QT- znu@YHJf1M-r)Z1(B z0SE7d?R(_f&_?&8Xkxs94Fuf=LT>dSR&mRuM*K?Z4cpNC!Y;Eb7i@sYeCT;9JzRPh zVb1cDXMBmvzqkBT=6+PEi_n}4=-vs*Al-E2B*cRkOHWN~-Q&boqRUAM{s}>XEixN! z{LRiXSYC8PelEtFbvwJi4+fTAErk48Fx`pil}@e|>Z?b!lYPpMY5MdJBTpTNC7T1Z zRj56dz<{v>zOfaT!2$RmkaSQgVneO5+zazRX^%&1=`ZlDIyo?Ov`?FsphXt#`Pn$OCEC+IZ!@MEH@8;t0sr8l*T=Tri9skda$)tUID__&a@<@@z5iBU!g4i*tHSF?-6Nj1WE^=k^S5p^CzWq+4Unzh=tR^( z#uMZXnddB1N9^k1dph5@Zez(ukHx@hDq+NZR5&yBPI7eT#^M*LMU&KV?9v8@8f|D5 z8ZGf(VXz7W-)KCK5u&$D4xwyDw^q=up+zA0MoBH?An3(Zdzj;<8K}9l1Wh;L` zR9ByA;g(P*@XB!O59;E0WQ(DaYD}<=nj~?Qey*_xC(0em1zwIHM36+Ne1x#3b4wF9 zuo^y)VzM8pPGHc_WhSF{a?5NMX>Pq<-z&n?%-y}O3c^cR|a~9-Hq5YU8y0K;m z9I>5C>fnWq<5)|kU({rjr6%o=lmxD+j2%BJ3V^Hv+uqA}%Y1(geA82LYJFZou!P6A zRW{y1pVHwosk(Od{vJUc(n!(phwKEI(mGO%q@FgdOsMakH=mJCi|_+-3ui-n-_}YU zj|zwleptvcOjdMV_r`E_UiuC7FQ~aEV2-cC^`{2MxW`=C@nGBJ3|Q=Re7d;I%z%u( z<(ifX@6Vro`<9+1mmh7t+%LjTI|EBGCEGitNHktw9q2@zTg9ST8skNitYU-S%TVUD zK!G;8>~OnlAO_r^CzY$Gnj2#Ld5hEOfI#T>h-LWmMVSXJfLrv(Gs$oyUx1D+u*lLN zmp@kEq`^iqmmOU{3DbgY&o$(TduYe?HEz0{5UA(k`CIfuQcVdNmqxe z&p^m<=>DjNj<@ITJd*=~D^m3X8!6oZ7^3F7Rh@nE?U@@?X=s+aS`)*YP(>W%b2*G_ z=>qPH2X)`VZ(eGVyMV zOa`uDqL_yYM2NeoLRg=VW`!iv3PFyx40kur&aY{iu0bBEH(i2(skM8yOJX*}9tdG{ zRHcWSZ_TtVd{?&B|w6D&A6ceH9$F7%AiW^ zklP;tW&}sVfi%3uM}!PpgW5xyo^O(qK-r5aK%}%~RPp%Xl2zU2 z{$~q3E!DjeusYrOEjW`MjLccWA#i*4}DDP%gT-!X3SMp9jn>S8m(V{4+HC9MlntGI2U_`if9OFdNtzVaM z_Dwb5}#*KA`ug*vY9Jj(pa_!S$&x}XZhR^n3|Mf)K<6p_LU@IwXqhbz_5Ox`8` zGz#N|i$VEs!XwO+Cra60D<1Hz?Gw}%g3t05)3~`894#u@)%py}lm+a}$F|CV6DNi? z_VwXO5b_R}tO#wN`oc8^G#KK9> z{9eQSH-CR-Kfhj5`oo`%jjhvrcz^!;fUJd$CCvLqE@LM`?f<8_E02oec>Ynp@j%7I z8)I}6je>IQ&g?OZAn`CIW6gscd-T+0nn4$l}xF-TAWK}7;#38El~BBJ6E0x?(8GN5T0Dv33WDZb)TfDsnX(Zsmi zepV0Pj&<0pITa(~G2LmsZkU`jp9t>U-!wYi10!$|RrOYJYEC_j0mV+1nXy2qN zGr1f}%3P)XOfR{WelT8tmGKWq8oJ!*bOAh=fpvfF+q{0YHlf~ddI~5&l1cqTEB3F6Y1BEIs7X}tu zA162ly38CLPQ;-~0lCT(D_ai4{G-BBVr6qQ=^TuPU>K$$IEPJ=iinj>1_5LhmOW5( zf>{wjKHkd-#$jr57=y#f0MUs7Q$sop2T|a#xL~j-k+5)*R74~n)igQK^pAbRrbN=q z2}W=px)>h8hA5VgTfFI5Z6BlB7cI`UpmG28vNkLX!!A7{H+uxeA`wm)=sHbu=Q`q4sWAXWRbzODbJqG26Arnf!9@erwo^X{Aw|3(rzsPQR?H ztT)DEg5RT4*oGqkA&r{~k~{QnsHiwZ6yZI=0o*noqwViaHClfi<#?xS-oB`-xA|RQ z#@;pcQ+74!be>dhJW$fEmsTn$)6y!odRg|ap!C5J)3@&*`?Gn!-3zswmhzilYDs6* z&en6`jDyG3)ZDb=63exBcvprtYwc?C%(_3eF}hP!bz9l?$&2&`0-}~%A0Ok(0b}6B6?+X?x zchB_?Wx0#i9~qTxml06daI#j|{-=Jr)uBe7e`>;S;iiSnM)~=FmT?|{bW2XM_l1-I@vkh*R z&fn+ehD~>{wR$p+E%Nt0Uwqk5`|;;VCJ%#Kdd{0X^tZkqnq9px@A_=DC_5{*Z~C<- zr{8si?=N(UJ07+3X3hluy~r5nhO`3=`+UMVG6(wdp^hE*Gj>JqL^*z-kU z-Icn}ucbSC->4fYTASQ(Sm-E>NL8|!lswN^gj?QTt!vS4%%Y1ftsZ8v&zOaYeqTMo z!o--x5M5o3Ta*~HW?8013PlDY*Cf}m=IJ3bCoUJ3(=6R0h1muo8_Dlk9u~R?6H+%N zPdn`Top5Wae)6;!*A2qR)H%tqhh5hTV^W=yV<9bqsbwYF>l|4YlylJ2C?jQhwA;FXR(#fiX`&?UX?c$u`1_wZ zPg~h|DE8Wy;UgyBR<-ZcQ*E}^IUe-<{juCrgat4yPrAi&q?K=XJ`k#bTljaRi-Lp)%K2mt9>cBt#HJ_h6Eye$p zisc+zuE;sPX!&iskT%~ZWt|?WDc;q$QY-zf^Mm|@-o5O!tmknSlvX8i8a;mapxWX~QSs6Jz@PE=6ZH<7t6-bq!i zhO;A9+iHxus$uQ{|GQk6e(-;F5vkfpo#>W4;T2NLNp&Aab;$3lXCZY*T287vE`kmb zdwFp6lE^>sg>bg?7pwQ@>Y0R z_u?_Y3hOgfb`bh0P07ovM_qI4*mHH~wOM;AnkVgEFnOGMg4uC3C_&3DJb$;(;GtDg|B`F2%z0~qNJHE&-Xf6&tWs_U;UUA%Ae z0w4BxZJz$7Q|Qq1CaKahq-~SVmYHGiJVUtCv;X$KFzZ3qu7+&e2_Cn8Rg)F8*jupHZmmvY(DT}3xsKil+7O~iT8XnzCAGX~?4DVo zs)Db)x36}4KO7|1RC|mtPw)O>q6;9dj4p~c<;E>8UHP=`cJswwUQAi98+Xh%mOo`> zUAEP%6wa_$=~fmC^&Oi;>YjmJ%D0FOwQ4G1?@rgc?`k^fps{~==-J$toRnzpi3I|4 z>)ee9rmVm9}f80FTRP}-8s-fPzmLKbyhJN#z z3s}TX==X*g0PL-)&`W)-0>EA`+>HP`#uc?HCu;_nR<-pwFsi2CMu0^Gln+B@=AsLl zLpDlgJoy*IgD-5q8tJ;AaY!9lnbh}j67c*f@b3pGuC{7OY|A42q3ZdB_K~HJf4&gM zKjbVN+S3+WeyX7U=o&5i46CBXyrwoTkv#p%4>rN7n-9jA=|ns{V_n(l9YZU-b2{j|mc4ZnA|Qt5ywva4v54=UqGc9jwg(&F%SiGnXo0=_It46@g-&8DZqcXxl$|4EAB#C}WNNsj(x z*C(VNJTdI3W9gjHzfLdjdKFWp&eyxAzQ5(o+rU4U)u)UbB?zoxJUMYCuiK*5^k}Q@ zd%stkMo;zVaQIfxl(6|omzn<=^+$zK_Q_2mt*GD^SAP!1yyt{vSO3}5{-lWKpJ(mh z+1Zq{x!_rbUQN1Y-jmL!PabbfKe(mncOPr+y~z9p>rOk3DthyIi1pcpFOKrw-)=Y2 zQ=2q1A$Xw&-8w19EzONqd`+)lX;j1BrbM+U<-5gu-8{G6GCT4(vrNBkYNyC1?7(Z^ zb1|Qq-Wa`*Pq%*Mci~|ak)$3HmbyQ?z&#qKES}ku(6KMV(_+D*T^T-ZESIZvNRv1_k*?4WknxQUgni$Gz@)dfq`} zCFfygye_fQ*7$749nm(Um7lsyd;iC+bu~>V%i{!l6V!(7E<5*osPh^8i!E9sPFNqZ ze7JA#@tf!3V&~0VWon_P9@yB?t#93N$i_W7hTXp4oMv>o*_)Z?3u_K9d0~{noqP0+ zW9a6*REPN?)mksvh0SG!Wf|e6XJSM3WA99=YCUJ4bD!U{!Y%0B{g9}7*Cp+@(-NZM zB3l3C9W~!<=6}<)L+$wF2;Vzvy1G*$pO;OU8D+V~LN$Jpi_!A3lry!dc4MmpY_!Vr z?r2{BvWRyn^Y5?5rseghW?ihF-ko{gPA_;fXGXK*0^bme&34~cavuK?eI#c8y}X@! z9lMw>PAV5P8ICJ>=`n6ePPg+jJ>L@Z%D67~>mzoW)c-|K=ve;f!qhc|ZyIjyn0Ya= zCiI+2PIYUuU)&g{q7dz^)yEy)xP}~W7|Fh|B6xwl2P^aw-2!EcrhP90mG0dQ`>o@3 zeul5jjoONFX`Q^aW3+xKG5I3Ms{BrrnqEQn&!ORmy4PsOmtPEPfBN@}l-8F8TbLW2 zQ5Gg`yPcoznKh#PToQPy0TJ=F8<@jY%aZd>Aph7Z?0zcFXq{AO5>ID|% z1A)~q`6L-LP$Hd~=1Qa&5PryTjS{#g(IafC1~&Bqn|gutESM{ii*fj&Ug$rNpNzs& zCwBZl-i5RXInm%eRjNhkpwzy@OgU7`#SSwi*VCv)IFr?%od#Z-53UGtcbH!w-w&?9 zBAwX28{x=QxsD8Rr;{RaThisq1~)SJWEi+6cu-M*hozVogX%q*kS#G#4-v%#MkPUD zT+#){Mkxf46QPJZm;BfD)R(g@}@d=&*AVXM%?qbdLooPT)>d$oz2#2;Py6k%JA84D!Ju72pM9vLLpG@^mO(U>MTm5QrWGUc_-qL4msq z;D#I|XgwYoCf9`mxL!uC*u}v|fu^FkH->>__BNFTqZ|XKCIf0JH6xM148YR?iJirO zkS5BG>*EEYGH^%F;P5g){Gw6@nGm~1$_PP5O*-fzoujxeeoQFh@YNeYfE)mr{3#GX zSYskMVenc0>-k1iD|`&{^fsQ~oTS?7Ja>UjN$JY*D|`)tFWq5mq|>)}EUTJX@M+MT z+{-sL8pqxBv&v7jFAzT6bz@6iM`FHe;a62bddj|ICXV=gdh&)(YUbKq8LsR&O2uaE zh`;McYUO{fJpS#|Co^{Hwo@ zRM4j5KdRNOsC~F=`c9K%V1QJG27AF7CMI zFih1irD^%l6y-9VJ$pPJTxw8R=y`>?J&eaYG28S6ef#&KBs1s68808z{fPEweS6=d zV@!xm`d*@E;`1|pXJ{dtE?{>mGu|Dt{<~{wn=f(ihUcNo?R4deo<*I!qo!fHF(X0@ zw<~86lON;_*GuPqPT~|JA>wIYe089ky)f9(!ZPjnT0~_jr8z zCUO3`n&!sh9Mdw*)$GjYrB`zHo<8PQHxVD|_UMzDe;B>aoL3&5?v|#G=AsHc&+lx{t}ZU38>!d){d!W3F)>$IGJTlow-I=KtU>U~d8au0n`&3a zzuTsL_{w*q&K@2Tx5Z95sr1VjJoU%6khY1LXM4;)8D4e&Lh4_Y?8p1Gc{ZOp4mEmr z{K3L%uZjf2z?|ZQb(vFt*^$$pdU$G{y$iqX%kj4UqVYSw-+=!%_Nw>%ZS&QcCT4o` zras!str*f``P~^aANL25Mq}TPeXbd&uY>poIaS5J#1x5+1+RJT9RE-)@FE& zsrR~kx@jJ<;`L>dwc|YX%lLI}vww1953#$N)3dOaZD_`?z<=8D?wQJ4*DJoC{qba< z+M-_jQ;o^mnk4$23d%aUDQCExlW75erOZiTFwUY1qgs+*ZKQ+MV`W*bL zl*$SE6H1+|zKY7jyfku3qSJS1T~RTLt)gS^o}I-|x!_l`>HUxz*K%jsg(#c3Vt;P!o( zMh&dWC2*Sx-^phHjr%Z38dyyRPVNCtesIU0#sH=HVcImX3Mox77kKbI6>na@R`w|g zx>v>*_8|!T(S0v;C9M_w4Zi&wEU4K*Z}v2U)O;FwG@Uujk`V&XFw(qfkTZ{{-n>cD z#?5K##1i`Cb>I@XxDn=)hwVgox8BL!mqr1Q zm^DiFA8Az74jFwmjkHSAob@3`gftq8f?WtO$wG(*U)SdXMPVPJAen17axJ61>7ZRs|DA%!zK+65a{CG-z6YrryxJ-dLDthz{dhEo^+z2#n)0NXP&>i zpZW5|G)jW#b7IZ-fFE!JyT1o?37vdz6-||)hU5yuLf-)zqiC#;#wi-_qnQ-V?4wx} z&FZ7s6wU6VITX$5qX~*8`e-gibNgt>jzSEPz1@d@K|W5-N_3DFONrk9hsI_>{xr>* zMwQ_V0=X{HADU->85emOCCf0hB9bfviU9+X#B)%D+@z9akjO0kJvv4p@2KQ+EH>J! zDp7`G7;^ndl+kg5F2f6pK&Kr_J_qgxnR;0Sa=A)A$01Ovt7I9AK)w*kGJ=lMt0l|0 z99jM#-&Lj#E*JT6CEjH)IA~y&D1!wM8ptKe7?2e#%^&QILVi-o=iqiwnL3zs*l{BD z9E(7HYRPw*blE!CbhI%-@;MGuMg|Pz~}@DJV-tV=qsm8#?C>? zur*BjU0lX~F>qtb@XTPLtUjrFIq1SN=`u9ql`7++;ZCv)gdnZ=7%(WU&*1QsZ7<|` zO6wmuKTrfkst&e{{Q?Zh=skuJGB$%@Tp4@AaDZUxI&e(3-@qv?(_RRI$g~Y-$*~U> z+SM=74%pm}@|-2gpc%65;IPr`LgG1`PM|oKL>VBloHALQ#5i0TJjDpQ4A!AxLAqXy z0AWejOE6{YB>==^o@1i`lO)ds2dy8Z$^c-b%eZuzF$Lo?P>@gZT`qLGOc{>WXHw6x zWOb6umKl36E+J!sI0JUNNPQ2=Wa`Bk@V3lzOxSE8$qUY4$>0GFUOw4(IVkSg*A71) z9yoY?;3@z##WEKN{AhqQ)bz~I(^)`+zU!r6H?Ynk7?zhnQZ>$9wwSSG5w?iUVlQLp wFJ&)U25fRU3u*uU2suf!;BRswCoM3a@%7{R_>uD%uopI=^vyTRO!bxi59F|WJOBUy diff --git a/apache-fop/src/test/resources/output_html2fo.pdf b/apache-fop/src/test/resources/output_html2fo.pdf deleted file mode 100644 index 7c2b4a0c51550a3033d6489ea16e79f32b11584d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14642 zcmbumbwHF|6E{qEC@2Qu(k06VEZreUBi*%xEDJ14cY_EhN+^v=ihv*`2&jaBgn*Q! zq##n#;Jb@;-|G8(-tWgh%bA^X&iv-g%r$3cE_O|MMLsZ4fQ-Gc=wUIL000DVwz^6t zE>6ZThk{$8olyWT85c`ydpJN*Lld9}N4YsTBLQF_n464W6Xk54<;RJy=xyd9Y$>2yE?9PHeB>({U)d5g4%!eu*X@|B4 zK*5+VwXp<62Lu|kFTWxJv#vbc+SvwPdu^!Z)D|20=SjGv$WwHp8 zz+pflEA~Gn00Q z|CQbl=d7wqmnP`CcBw&tw1^{@uzN(Y)P84aUWm8sNsX?XsIECuZ?cudjR7}Tw~L?qi}mf_+q>{yqRQj-fo?p#`bJvYSYP$v&$DPVV87B8dbY86}0-3 znE4;ys*kxv+t<``6eD{$*xbOa;B2>`urr?_vw0+i2%JqGz`=36Y?jIwIFwL?vtU9T z)G{W8Xz|6-OxiAfzkX)7=k!Jb$4#53BO`P3^P?m?CiDt2frDSrJM??gzOZW_1Nf<5 zL}os}X?ywXwOZG5Ncnv$MIwf*c+1rwZc1 z@;BJ6NaVj1M1KJ-Yuvr#Sd$-n0hh0rDBmO(cV<2yD2E0&q15;p-r;zag`a@tySlT7 zy?1K9TwIv&4DUD@{6edlv-UKN(3z|B-z7qtN%n)|2UBwSRNL$sMsvV|wfIA&|-GZaRA z$hKWDUf@EXuf?I1^~_?nXV^RKL(B>y&26eJ#CduAuqR?#XPEc10jw%BOWBI9a(sJ^?2$Aq}FDa~ZOAQ`!yd_(T zqijZ%(jdTNaMc>q5k3Amee8N^ym%R;&sHV}4MmUrsnl;jlQO(g-g+7mCL@uqpK*w;?1 ziMvMaB*`-yCJfytNVr{bry?GG4IQ}|qRNq)An|I=hSVEcbH^{@;KqSsbfL|?Q~58i z7!~N;>(55(F5ZEd4a*O!c$cly%#zKrwkIcY>a6nQ@*qyfwUZ^DPrS!drIV{uP`Fi? zT_`)CR!FSFpC6}Hdg{tG{_soOIm-{yvMH{dEIgU0Hmg0TO$ojAL#}&O=AQ`*Oq||*sxtF@n`OQSZQlW3b#(+>^RiU|VU~zWw zR6)}qSFe3vb@rP2t?b33JJ~h5=`MF@^P2FQJ663lEGBijTbT;ee=5IUx@F2} z(5lTTYgf=^mL8DKZ7N|JIEEPG8H3i+`k*B=>e2NdeK&ok12LCwtqo@amS**Q>!No1);itt!UyTkYQ%ObEa9y5kzN zW=dN}+QIhPCQmu@mE#p?-`T#;x#_vqw&!hwZB;srI#*I}y_V>7>!j~2F}Ap9KzEMr z>BUC|&y(Vk9Fhc+l8Y^PIeCKzfJHKn6;EQGwAD84(cOBvX*CBnPLYG5Q!P>jVd=1L zM6A<$r>c>y;eZOaijE4$il=rOWtnyjEzd@e^odo7AIZhO_-r_17*MX)_2KSkzsdo` z(ehZivzRuc9K)d4mT-Uz%7aGiiD;}Cy%?v+py-5EuYu)5wTBx(`!mkTiNIEq@mkTE z%O=!MkEUDD9WG*%Fjy;sDp37>nx&_lXPj^SQv}c&`R1L38=Q%Vi6NdS{!)fwhIlte zw-!Hn3A!ZIth?@GUGwV!}JAO^@>)=}(Y4d!UgY@!bMkjO_H@Su&1`O{Q@gh6Phv`s(&tCcU z9&~A*IDfX5Z&N14&_I1?dn#qMboK6P>&dN?9V~lvnrGO6!ljeC_dRV4XX?2&xEype zDo|)ywA<#=+02ynvxX0yme+?=T#Z~qsvmhF{Lp?^4*F#$!o}#~*n~MwalSLLsm!b%=|*B{j8AypVPHk68#Qcsi;4us4v;x4)`mOy2pTX4Vj>#q>B(_zZb@3CCtlIu@> zkgR({FvTg+G>xyr_4V*gC^r?2(5!4t4C*PHz;3rrL%&I_y69~op%RWyY60k@n|K3w zS~7vz@Tr#Pz3c%h&&;kFwVRHVcUla8fXj8%Ck>Va>9Lh87&=ruwx4a|`J%h8PpfD5 z@W?WD?C!cC|6t3*kH9y4M!EuZU4f=5W!h!cJ8yleKD*Ov(i6}V!Ma8ao~&7umdscc zm^vsd?yJ31JJay^OW}HvM(Pz9^=*;FkK-Z3EF&nlqSm*EvxT!N?U7aCh^3*fA+yJa zvvDsO&+ypl_kUztzP)l=mq_13_nf{{fsc8*p8vg;r@6&?c^=jumrUzS^*w!8ki~t) zyv4p%mrCb7>I3~Rg*wPJn{|%Y)yLD{qu+mK>p%AH{(#QNre&smCL-|V(YWpW+#J3r zal6qZokPb?Q&_0}v$fsaqQqgN2}NgK2?8o*YKdLg;%I7QDAhKDC8NV(*UZxqkE_1Q z#Qj=B;Nd%OxtFdjofjAVWUo+*1}dSvY}Z5XWrr)0Vb3iUx}t020s zATJUVl~>ZECEV(T>O3bAJ;NLG2VLol8z02H#}5z6$RC}FGqW*WuA4y@+?yzCI3#Yp zFhZP0BnlKWU#Xo&J@9qunv5=D($_HGsPS0wnf$CGG&ga!?wtF^R&ki|Ug`r0sLxkw55$D+7g?P zUU9cV9}^AKRR5W=LXI=mpQ)+1louwOc7&q=R&YB9qy)>SrwuFs2O9|%eL*#lnu{FV z-a*L+1;65>u4C=vXf0yHA|**iChjHb<>cao*%096gh0B9dP%TYV)A9UDCU1GnV&_H zOdMrnE2=H8_>BcKl3=k%qg_P#`8_>7fu2yHGs=!1EFvPp4}$PRAbc1OJ~wY9+R}>; z>Bjnf1$nreHOj#Sjm`7FZf0ZsV<8uJ6ykUp8*6?z0`3GyqTTp0w*h_@0CsmvD`$7K z1PgX48*5QpXOxpATGGsq#5cwKgYpd)MwTDA zkZ!l@2Y+JBH4 zV+DVf*~`)eBQxlCnK3g&zg^{YoShN>SFwNP!`K{V=64&%-rxS0`hVm7I{kQK_}@(a z2j?HvaeS&6fVtgX`O5k8Y6`|)Kfm6N0sLP>fD97pjK;8j_kL9eq$3%>HryHw zFa`+1fG`mVKuACYCZC=3)576O=JuGknZtYjeUK-L*$gSpfGgCYYs zmRp;QUkSjkO!kjkG8p;~QT_tYAL0DG?Ee)U7zhZ02m^$mLYPk&Kp2Y-GZcUUAwsaf zLxYw2PiTH#`u|E2A<$RFLIjT$D-PtNxcJ}MiIk-~+TIx@0S5h1 z#Xlb#e+BHD#lVCFfMA#aKo|mqV1U7dp+Et!z~8AD3*b*G7XEJr!!Lyi*b*Xt1SRs1 zrT)SVz%Y!3fCK>FQ9&^01j3I03oNYoe}Dz~uYN7%A^{VG{s|W3|INF>P!S*u2EhEH z1%!Yh0I+~CPz3x}M|CXwpDEEV4r|Xlf6T-e+UmaPp z;g_n5*lO&0t6XdK<;A0BzdH{$Y?{@t@uZi??|u#}U;31pZYs6kdZPlgUc(q^ewltg zO;@D}xn4&@$eXJ3d&Th&P<{6t7^S-z!&Mf*zKz`;AAOA6e}igflqB{ZP=B3a%x|L{kfG4iC<&v=ZXlOQ5I|6 zF7=IvG=>8s1pt4zNl-rv!G+} z#5-^8TdY-kYgDiCydvJt<_%}^2@FY0P3^9LImZMVam z$~TjXdoVwM2~Y97mQ;Rj@c~|ItNaQE(DMmoBXvxXsyWR8l%KS2!r7aA8%627KETtE z?2C(jxIT)O#HE3_Huz}95b`(NAehK2I^D5OrX>x*S0>`gA_w4Q)r8z}I0~hTkCK^m zTqIWocMql};_NgUlL=^wcTc(Ez&bo{yL$+WSxQy3)^ z#A&Ulr~%>GyXP(z`ZVeW;3)Vf^S|Wb?(oatAPJmAJr{o3&be%c(>ke*H*zsUf7fj% zbhKKD9DM02?$w11rF~VMZCRTNJ1(xB%cN|DvvT$-U(3weI46w>U!h|~|isCZ5eB^gcp*g^;p?~>hC zRi)z5pgON|%JBYa4}A}3r$@N+!xoXI^oW~|#6E6Kk1{UOX&;O}RZZ;-v+49P)&soD z(XQ5sSz%aa+*CHZUdBw}y%5$&&I!AObZqs8lK>sM1t6u8-uCW#|Y@yJ5+y7PV7{ z>o4tyd!A@YUaJyzGEF0q!xY~!tC1>Gx+$yIn=mKZr;p6KB9V}gcT)cuQK%;`M2l_i ziJZygB^*idiC*ANGT%cx$~T6PNFtPsoO~;br-AC6u4oVg^11rE`TkHeHF1ap-d6v} zPIZ{*8&BDYJ_C9Pf30(!Q z=#_!=cqyA{(Ma>YLmqCV!UF?Wd877dVpKQq%alj#wO#7ZB%bQfG6Yg{J<`Ct zI;^pnqd~AJIZn@-Sus1ssj1TY>C5@RSNl6!u{j=yQvE*vg(F7^tr|kgR>#Mq&heX0 zP{bQeNf_G^AZ_wZAj9WszE3xCML)O(uLzKb?w`2dUB$cOr)QqNBJ@TuMOzH8;B)KY zoK_S4L8Uy6dV&qo{ zXMMgUYaf-FHRS^xYxS+#8{b^ovO5@LBq*IlH)MPo+ue^Jw4;UAtF_81_6V1lykEG@ z7%D@KIC?pfMO=m$M~zQ6@*d%L$*;atYaa`!JGM_vx6xj(>ZP4Vm_QJzs0CFn%BX!q?{U=?q9vz|=! zL5P7v#_f>uDm>Mr?opcF0P5>OtHmVrR*1oBw{prY(-q$nGrMK5=lHyUJ7ILvDxWTP z>$Aw{$X8Kaa;cz|7ncvBSL7+0zr20#7Hv9c-HJ4Z{=J9I8jf{jk3QG69cgjtOGG&8 zmZoIqRc00tLMYoJCd}-ehjP%?Amcd6 z1BvyuAHdmI(M1$Q&N-c>qXpiP0U0}%UOn-~bFjq* zM8f69F-O`i_AU^xb19m5$%X2p1@xND1L(ZB-@C!=b@js$2iE>t;L`}zs5*7FP(G7-F>s1(s5LI0+>ld_?le#r=! z^e)=m$PwgAY|ktj9ac|jul=O6w|oh?nQrb^U8}gk#Y~~F$T>V6d5R%J-6D%okHfh( z@M5YCprxEoR6fMP-ZCCHI+y(MNC~($Sz_|NyvPe@ZS7r^MbQ0;l+p{$s#*le3!lQ$ zPb*N3YxQKFm-Is{Gr@J^+W6iN5P`WG2`}y%0G?^e<)r4G+L`~rQjny!zZs#n&Cbn0 zQJrQWx*w&!Da3b7jGOU6;c&>4b}G<=Wq=TSHE-54d`Iw%Jr!U?1YAX-z~2}UY9 z0-ftUX4Co=jYL9vmz^Vbffem3D?Hrfci!FHm%C6>=R3lFX{yj8pIWs>IjbXIVvB`I zSe;?_=HLv%=q)wkDVioI++!qVtE-`Ttc`+{ZqT!O7Qf_hOgUU8l{W2(qdj>UuCn4z zp@q!*Oo1~*ZFVURF8H5ZukJaii;DN~&MvE&P;WKOuo=>4AQGRlR%s?$k~=gPu~ zm|lfeXSX_uOGI64Zhv3&k!ZW@0L%>;dPO66ej}!+zU6gWUE5hgi+mY)d$!n0uDVUv zed|qXO3M4pc%8w4s+g3CP+>m*W6{29?R$;d%@iyDJNRBGRsPm+-;ad-o{r{&W?w!< z%c$A1U0-FO)BuOJHs_W&Alq2QL6xk7AZ_EeM%Z@zyN5TP(q*iKCQykxxALr~i1eiRQfl#H{`d)^r6E#nL^$inVeWom zF&KL37QL_k@bVKl{ykaGlb!Cau%n7wsVN^1y^ij7yudk78ZP5Wj;&=JNU~Jyx&ck( zNK_Q;B)Xa`d+LrZ=ZAa)Bh~viWD%^#U)iWPb3_XL`mUE7M!T6ozHxJGphhhIGEk@ob0bOS5=FBpas1K(7Y1}I%1{8Fvc zI!(rPE0QPk!-c3|+RA>CQ;t07B%y*rn`Z>%%IXCEZzwYqIhIGumqcfvwgwe;%d@w_ zAJgMsdVBuHT(%5oinZLZ(B{5}IV9DDthcbKG5b8a*T#ILt{j*8=_5jLPG2PJZTvoW zk+JlWWTGgk#EvY{Q>qrx-Q06P9(-z@(ikMY+Z|CYk#2HLp4GhDqz@36oM>|Q^-FVM zT2#cLqSM6^^rc=nUhF+u&8$a{XSZ)}L-;*vozGkBeJ+VD(jIJlzM#<%JDV4=h4Ks` zo5?0+s7VC`g=H{xeG?T>Wp4X;d8?h9PC z*BUXF+SG}A&B%$vvuwXmkk)cVi>g47#*~^$#XX;=D7i7RLsogVKIw#7dwWiEzO$?N z3Sk_4HyD-7|HY@XaK0sT5C{^$rhkc`?tfwpL|c>FrJ;S{gE| zOUOld=2VEx`v&$_FJyCX4dKiF-osBT-_OM$<<`1fdTVIbCB@>U$T?+~&;7(@44{mz~ zj%}eC=X#7VU2z|e$ccg}$G%pIO91Iq7AI`iUd9ttPo!NIz9^J*#w(+PuQPpQuk3Wm zqxb!%i8$3huNS;ENv!jZdDnaM<<8elT;qLZL4&f-K? zuLxd}cL$539L0$t@yE;ok6)NkOg_1w~~ zR;ox=0pp`EALEN>o?nx{oI(}x{Kf*K)3l?OOo~2_z(jZ8UgbNDi=k(!w8aE@2w8T! z;SW*@4YKSn=?k-2Q?W-?M{3-wE*qoNyV0Uj_Nt?zJ%)H>Vs6Qj)BYT#GXLue5toR`CT(rcNw3YXJQ%Ba;vb#Irov*$W%Ok{k)DK6<)z7d^&G@n3e06 zHxOpS%tly`$9WMz@Ch|klSidJF@I+ruSL(TI=I!fv?0C%(SrZ*bHQLf9$kuCjH%>W zs(`WIM%H7mbVS$t8_x(Sz^#O40h7Ce_LEVH_VIKHyCznh5)qeP@2HeLqU9Hqs(!3I zFT_E>EZSzdsdIaM=s>*aB_EaJc6OkffSk(SwJg`xN(w#OkrKV&+@oHS^Evd)yyOv= z)V|OtQZ5|2?R+L)WSWTWW9g5BSP_s_4&m9d@<((bY~eYy@5Y`fNJB zR_);q;}sqIlNq-=6%L2u+IQPxo2_3>l$GIc-HPrd`5;E((*L>HNS=mwUa^;zhV%iISNnCUGnDohAz@CMHt&y#m5SQTHT4S{7+lwv{( zrR-U4=4Z7|_;f}m$B-bUL~%YP;W-D^Ap4!6yR=1Ibd93ObMmd1d;@nAX-Z8vE;J-0 zeHLQm?lkXA_BOjlXP?#-Rw`fOU%?l^8$Z+!u04mjPUi{yC^j*?wvUvJxi zLNZ>|XmkV&=ACrP)x9O6LYEhN+CR()zf59eHG$6dAZ@(ve9Y_V8&7eQXm`jm_RglV zr`8HD%1SIG2A}pz6~E5Zzq7+8AZc(e($ds^0?Hyh_o}%@l3}%w^Q%e?4f$BWxLUfwWKc!!U+Z=S`)73KPieQ&?vS`ZYj@wMt(D$lI)aW z`$Wb2@(73ePPp^N>xY}GhVJyIxksAX)h`a=^`?(ZZBIYD;vsg?5c!-BFUBtA1dro8 z^w9Zo$vjPQMz(RsBW?Ex?wT=6r@np@#@<3v-)Z38?)y6PQ|VNcAC;yTX(o4f?w$jA zh*I~D-&VwXr}bowW##<~<)nc1J%jk30`aTVV?4r;wx&2pW;*!L%e^P1OKT`GT^!m-fMe&_(i997_yMHU!(R;o6jk+iw z-u^a-#~z{DEN$%Yl{B-+iq_`!nB4KH#?CA4ErEV-_&4A2Sw-yE1@s7V&ls2p?%G~=E@U~30`lmTqq>xol)Vud?-#u zAQKVkJrX}W{vi5M46obb>s1|)Lwng8x7^qRf1@Gqr&_f);^FUoz4{9aBCbg2>9n17 zo_B1#ac@1*B(A7j_@mIH&mB~ULvtCQWP2Vo^$mFFb;Y1zTVW`RVR16R9_ePlVErcR z@U(~%L6lWZPAlfN{f3H9V;S#`R+yn}Z-@ZW#L5PF z0#jFt@`hjH-F_H=+`jw_`Cj`%X8DEGGeJ)#;^&PR;uS0@ckZ6pz4kEgSr@1=+4Lw* za0ls3nT7OBk=|X|8#A8y+`J_8p{Dp2C7sP9X9s5cV6iZOc#yPdL&m=ukI8QeCM(sQnR(oFPuRWQ#E3!4$(nDGu`{^YL z@gUrJW7PO_!d(>SVQ}+WG4Xi)!5(qL(9n_r!_GSBt_o zM;m=*kUCF2>WjZman6)(iA9h;ug9HnAg|w5LXFN^{wqr{pv#)4j9n=X7D>eG%RXP| zK04Fd!Ws03evj`pRAaK^t_^K6O#K{N_5vTbb&-LwWjD+STa?l!J1+fVKEAdmK)$j- zzOrBnhgg;$jbJ~kWY{(@ZMd7WJIWgF2KYJ`L;6}})x`8OVHwomHV&4u&RzgxY}H9n zL=e*~AqWr_00V`EMNF|Aawun)|H&YWfWvM6Cx;Ho!Rdc8Xj-B$jaq;ouTLDet+-+8 zy2seCLO3JQ*j6sUadAu=+iCK>^X>Sh3v4+WA}9j+LHw>?VVKAd+V@&BOi=JA1Uu{T3^cJIVo$!V(pbnD;vzkahrmeFvlr(#_#J;a_6@ zEEWH^jg;UB4>%grpZ51#{VWFmKW@dRVTEvTbw9R{?_mBnx}Rm@|JN;Loe?&F4e|G0 z2&_T7VLFza-LZy5#;@XF;|4H3F0leku{F|fos{1V1M>#akMowpG)ZDA!&t)cGCvJb z71R0$;QG<`$BkwA-f{-`>VV%SsajgW5pIC5-uO@R#F+5cW(n-vW83+U zG9N4PyB57ra9c7E04hud`tgV9V-UoEumyajfuT?=BLw2Ky<_ds* zmqh@CX}09z_2?+is3rGMa`1^W7BEQpwg?_~W5(Hr% zKmV3R5QJ&m_>~61Hpu+K2NA-!*Do}I-}NUbh-s$!l@Eq#H2jr@>D>E`CX9I+{hJT- zavs)iuzx@83UlUv;QP~DkzaKRhGH!1*Y%)a(689QP{=>e7mc#Sw9TNfZz5uxQrp=X z4fyf2QbyW3128gToEGz)vOK_894s#@1Omwl3ChYVKok^&<>f^LF|CO*@^XUmP&pwP oNx=U%%duNuaqxj-{SM=iZfHvs`q&e}P$94g89Tdzh9cSj0h3>wx&QzG diff --git a/apache-fop/src/test/resources/output_jtidy.pdf b/apache-fop/src/test/resources/output_jtidy.pdf deleted file mode 100644 index 1d9456122cf14bda4aa8c1b8fb0a619bb8d86c07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25904 zcmdSBWk6Nk);3JHlyq*oVQ;#-yBm}S>27K129Xw|yE~=3yAkPB2W|+my{x~0)PNp!&eBrya-Gp4kiXpwhjPl zAv*&ja}$8Lf+9fO#KFA#1koTcDLU91I~$q&zpDIr$kQF722LgbYEf=xAcz$N zV&(*KftXo1>43~sKp+(j0zW^3iH-61H?#e+003Z;2e2SK{gE}XF>^8pFf%`0RQ_Hd zZeiv0^j;=$tEcCRni$y{n|yzUqtlbk)(CEC>2F;%Rd$H_)*R)pUXqho!Fj&P6$Fb# z%kxEA$VQC=14jptBV7xsR%93SD?`zQX;x^znGU5!4%=LPrVN#!U9$OcLNp`)^6F}J zY3YP`$17v)?yhy`A@bTC87#+FwhV}^4lYO?7eaR5id$*_1?dpX7o6y&FCQ3zjZK|~ zrY10kZaitEKat1JXQDV2Ou3~Tgz4$`s8FgUvpti$LwygR~i;`tk1nir!Xq)D5+-~um3 z=RRAd(O@EM-HW5qZ8>gny_ZC24jhws+U$p`OWOhSCCh!?Iq;$)@C87Lyk~Tf z5d%?qiX6$Y47zKzC#VN*eaGyK0^JlRIJFb)9OsbUfL%fru0wV-Q%q_4EeTUqd~108 z^Qq3>Z{flZb3N@eVzy?xVqbSMgf6}bSowTTngIi|l-5sW@R^S*2HVwz_3d2|u$ zQ+#_}`sob&W*qZ8jxyG`d2w-jXJ-lSt1iBnkk8zs(^vf4O;7f)qt{F*UBQ_jV@;)T z!kX->nX7XQ#ckMwhs=PFyxotSr{!Y?gq;c-;Wwo2qBUNFP}!>P&0@TMqA?VPaH5Ze zp^v~rg_LB=#)3#~v7rK`(<{`yxg7=D$R5ftW&t zG9Y0V4Pqtn?uV-KCjelvVxI;1XTeb;OZzL6ppgf?6|&4yE+8m+v!7+UtFue(gx3W2 zOxX23i8;Y7rUxt;5I(Q7se;A|vHB$wCtOq@c4wg-atjorKSx)h9i$iPv9Cf`(mH+x z(rW|-5-<`{r*1F`c{-gD{ejq zDlVZWxhC2v%qjT7UzRd8j&I1Qaz>3qqV|}8bnCMOZ-4vubQV?SaemCRU|wkR|KodR1l?9 zfuRz{6eK~DeVCh;g`|R3gqA4xS$R$wztF6Zj1_4l0!vaRKXI}x>)ANv4E3w(nd}*a z=~vTH#RI!=D+xrBV>w9^C{wnRYlR0zo`vT#97Xj-FVuWWvr0D#JLjk;%%>W%zR1UC z?G-0yHL6vsocm!(4=K~>(!H>(pVcabw@#@`W!GpHy{ov=Bh>6urV=(Q9Mw;Molc|2 zr{}X`wL-hX()8TJiBF-`srAT%>Z13u@YeAX`gZA3VPC+Y0Mvq$93d^vWHc$*2j~!d zrDzL$3A8ph#W88aTtHNT<0adCKfJMGkuxn$G1^$E#9)dO)7m! zM@8p1!&oe2SyLNc+uziAixuB}VYm&_c_+f|l=?E2jXj-x%qr6QlXd;#)xzr<$C{xU z%bI30h008`_TILoZyK;Nuw^2VU6)#0TCc0sNB2`Mz3OJHz8$Vq+wv$AiV)24Tyeg( zb8tcDspXF3!RMjkn&VzGoX|8Vkt;c8G{?40N@VQQU2WoSl-5OQ{|sHJE1 zXtjKy?C|rU3V%p+yF%!gFH;Z4VEy8CR%X_Vq8H(7Iqe@Fl^<2WcYWXcmV(zqI72r2 zjrhf%r|mFg&f$w9XrrnUUQo|7YZ5FILIe*ZE?_zMv<-Mo+>a`v;^8zgTnN3>(v+XS z-gtLfahh`4hjxWFM0$&*h)vGOS+TB`<7%w6)k=L%ZK0}A*&v3pTNWs{9r?k(4l1 z4>_Tv#~A!)R=d17$au?msz$40`D2v~Dq9}gw3AV$o#?!V{Dl07+@^dR8A63~$zsV= z)C%Ys|D8SXJ?Fi07Gahv6R*LD0juYmfl?nokcLr zjkRUeM^C0wxw7HwtVjK&Grl4|6g~|5=%Qxr7bE!cEyF@R3$eXBxn()*_NvFCvtor* z6?T*auEe8N{{_-T2gl;R*@w?XpJfJv>w~Ng=11rCs~$c_brWLKnrciRksl@;C#b<_ zxTxW3SQmP{NLTm%(A%6>s-Ev+babHCqNm~Nd2CZURZ3UtSuats}w}HrgkOU4U1o@o(Db`qvB83b#T~My($cyD$Ealipt07p?r?594)TvR^toj zJNKjMd*}N+?yC>?m5627QToPuhb>!9g&)=`+aF;2h!CIB#@0_E^7^;n-foX~A_qzbXyXsak4TGIC`;;cZWKb-i6Jy4$^@Kv5-9<(+n) zKmE`XZOu%z@P#BZ>zf23(F*=HvcLn)b^bM(SoA$5S?}qOeT-)8gO$y-haGmMi-%pjN>YKOCUprh4WfWEv2A2nx=e>11E#;gjB`Z(CJ5^rkw0Q87s>V#`=qz z@(Q>;v1v;aCxD@enS~7>=}B`tDZs**k5q$A4k%|QVq$I~>EU3a;vuhU`u}?|6DdCeuY<8Ex3Z}CUsaxd@sXN4 zIoWYDF}b?BGP<%b+B%pqfw;K1n1IYo%*+f=H5eS-ZJZ3;7;GHLem+6e#L>vX!p`YC z&;QrUjE(+&ke#!G)sM#*8!?$!nOK|HI5{#ssR1TZ!1uQs7}`2J@sWOil(7-FsjY*x zffK)hot>41k-_%|GT9lM@-qFp^rM=UfsL87ftd-v8-ufrrH!qt&5tU77yqdA)X*mU z-_-*H2*kk5sS4ua1~GI0kPzHJ;Ex-AR6*cn`fkWSocOC@{!#LmTTiz9?U#)s`Ha50SPgQ@$09gwg zO9Uom6C)>p4uFl75eQ&qXJ-Vm0a%z>7+INF0jwMxj373E-jm3Fs`1@6;P)TGwhqQm zs`eixLVzEZDk(l71*mrG1f-2eh|F_S%Yke#iK@o$a)8M}FT|Hya{2au5i z!~tLhu`_Z4IRPxJoQy1-T!5#xVFWRA{8^{`0Egdn$}gDsvrcifV=yqbws?w*4z{Ki zRwj&g=61hzlJg(E{Rce+VtyKLtWVByJ&nGnP67fMft;KGRv_CSkGt=#{BGQF{lk(! znMqGBTG>89-FMdn42-^`0N+!=6HffjQRaV6)IV^P8Td5(*#GvE?P-3oKMltJgP-61 z`Hi2<|D5JO*Pp)66XoBoJ^_9~yjxnXhMwaRJF3@Qd4q%*r8pQWx!<0XHb-RYUd~O$ z%r?m=q})gJzPN&z1ZBCU$5m*l&`fFO(#=o?xQ3ObRvyJnQ-98HdQC5~Vlm3iGELL4 zsx!B%&F1`(Mu->rNKfCHd5tC_NlEucZlvKyZ(H8l*&AV7C~Yexo8mXcGruoxkiAy2 zpvj)QVp;87uu++O@Y65(;3VcVwcI--hbKYTG&sbnzpyzVk@Cpx3Ce7RjK^yv-GPnL z4Nf^$iqA4${Mrk(tk_X=76IZeNVfhEl*?`B*&%5f2;{yHzk?>Wx@vftV#&yB&blnO z&;@LuLe+g`-ZdscytPYrJvFA(uOBzxn~W5b3oi#5H5YAr#XdIGjjU-G7X~c^7Tr>@ z(zdcvKKbrSD@8GZ+-IKG+ZTGY&i%@q!xg(7n?0ZKo2PWWNrnxUsyZ=mR=YTAhQYEB z+={`L{)dJd{^|Di{AWc55cR_D+9YdyH#Sh8J!RDfV7+tp=Ob54#k5Ut{4gh0SM^xU zRs8&8EU>9BMDh1BC)gP*D{Iv+>r98LEu#Ys(3>1U%y7=sn4Ea+{1`xw4C~FAGQsRV zFqPRsU);&%Xx3r zbz{}~Rcf&;sBZ5hu9p>)DxD?jPMqkO%TC4YowDT2n3D?&$0 zpWgAdF=5yv=t$-FFCh9B6z*7yp1Vm0=|o9?lmJaS01^ztM8A-+No-oFY%jbD3eYU< zK&g>M6jrestl_NydG#l+Q|lI{k~U<2;BnZE@|7;CTFT^{*EGED@Ha~B{-P-co0?gx z^VOdwDh52vogj8_7tNzr$!5jLo~Fr(NpC;1`X23>v7QiMK^oZ#hpGVcJiSe5>JD{} zWMrYGKHdljW!bqs0qb&Hr3w(J<97&O874j_8dip*Ag}Z&wGg3tw9L zin3>bEC^e%n4&f9@oMn%#nq0bYWoL=+DO9&hlg!zY@8@O*h3-90pZ-`Oor3FO36KE0>tF0WK>w2Q7~-QYU7q3&GKv3X+pMxMq@C zQ%r0z{E#_IaP>3K7g!^|6)JkAuQp!7XEbdWI=R7crHK-qTMOvL4>dKXKECi!6MQX> z%AYe6T)yX|_xW*V*pD;mdA6Nu1uM0J=uAV)3cbooL~*4mCMd)(BJj3hAlGEEM*hIN zbMZaq`SB8wV|jiiB=gq{W@smETkG`f2>}x)wt`xsah7ivw;FCmM!4Bjl(9>fjA!p` z?`ZD7+&161d#qfZUljRL`;rNwe64v+D`G2~e?Uu|e1nN4!2*4LcQ#EYV$cSh5PFLk z(J#264}@5o@e0^IavaASYizAtz^yj7kUL2gg%J0R4#f2%zr_nYfmK=0kGcxEtz`;A_34hoTgPVkZ-{?dq~`Q|e>9TGB*Cl-Y7(NZZz@A|IDvWG&#sb+v^}>-VwYJODJt6ynJAuRr>C2$ z^F~HoGU52TLgS4LH7370%;;@UfI1*d&AptvVXdcnr+Trw?ilMiFkTrv%zzt+B)QZj zN&pDQF{ZxcaG;RgLfw{n`(UZZdY$R$v@b#fG6^2qqw>IK7|#t?d$Wvf?4!5Yd25_% z=r{7JzEuqd#Tg{W7q_B7 zj7NMo0J-v;NYzlj+~Yj+g>{_guIulhnDL_DDNTNmQ&d`bp(#Yoo4~irzm3bV9x`x? zUT%i6Hku#(FoBPgH(_$yd4JSVJ2LT=ltD)U1dVn*elx@H06^x$;HS}MdcFU}C_$>S z%53H?d!J{?!!i8%F4#o*)TFxmVhjqBspn9|mozm_m7?KW7UHmVut)RI+Bz~-HwXKR zDa;h@(jAps>&6G`*EODUK13Xo93*u%lf0P<#K3j|o_1-|v4;{j+2Aw5PL8^RR0O!Y z{!0!6PkOo|sY1`RE=jk^&9I(hR&Y-KykrHx9bY%@r5fM*@u;~n%xVD}cHbxk$iowQ z=8Hugu7nURR4GyFPa`hf79`*? zOwKH8itVg5>$-)xB$xbr$a#&og8n)n9-S)mqn>8Z;3tzL{a~EXVqpxU@^RX$U4KH3 zSg{pBwKeY(7)&wGnkGoE5}dVDb@5}a<*SZ^CPs$0OX4@5<-KvQIPw} zEYpeWfCoVBE%OKQy6fK9#oMTCF<=u$q~<7koY%1ASV&Ij$z?(>biy<-TAAw5h90yr z&@R;}&dQ{Xq;`R1Yp4?a*T8aLXUg@&M1xp|d-XHXtrWDoi3*QkqH5!b7;!{U=s;X& z3wADH0jv|**l}6FNg@%E8D2#}Zv@vcEO&sLSf5Kq7{B~C=nB>9(C=~df38z9|B}f6 zC1~>tT>gck{{)wxYWe9rz%R`Br@s6PGg!VuB3C2>^mYYqDQEii=EA)eOY+|%BlhWhcYo4Z3TI5N}%Y!flLk=$6X)M(&_YR~uPe%rt zpkhbjE(emHkG`cU&!gJ0g$kc{s(eA_)#pGO?Kp@0&RT~zjB_WpE6?((Z=qH<&m?z~ zmcfC&+B#E@QtcL1Bd+JrwXvr!r{Fwn#oI{ZfOBMCz=}3rErZg&mr*T|GMPT}VIZ$P zT~|(l|6{zV*-_d~yd&Y<#|%rCbuD30r7if>8}(goH{#n!vs5=4Eh9G{kwAO`6ib4> zhE5Qc#9Qnp-39|=dea_5^JTPU1kPDU#)wP*=-%DNi?wL9N~eGedZsEr&Im)urR$e$ zA$Y}gY^Oqj+u8WZV^dxOMVOox3zA`8u|>`zsnabbCR*smOKK@4nkiITd`T3VhovKv z_ZikxuS{&Ln%|z>*-gWzL|Sy2F5KXI;=FyXt=lmIbQ3PgQvHjzy0R9J5i*nwG+L_%JC`G&3{;@kJVfXi)}1Q) zTMm4&q+(cjpik(zdmb9&yd{Oy9Y&K&+D1LNYMPQbmob;!6~>-tlOM;81JHa_nD~|) zj)cV8v?-3_Y88t89aL2Qk{M(FtIp$beo0ckvyG(`cjh(^@LPX=8cbJvFu!`Y&iYMBg8B6U`~PUHbO1%%ALlIhC5; zaJgig1?=+r4cAf7=S9z(-?Z*-rGtl_JQLp4=8c0RMS>yF*PT_X40=7XRo&=DdOFyG zU7Jn(*i(D2JXGa@ZOabkAvC9%S_N7ppz=AOL=e#wethU#!GqprF-+*AshWNjufEj>MsC%@Y4aFcy>lIz2a zK)~IVXvb1$qrh&IxzCa{BIZ=NMj^janTeJe=2iYsp!Zu>Yt^sPFQ^Ws3xyM9_Yv72 zmzKLeEUpj@M0>`#M*B%Y&`ac8935I+9p+k4*a;RzS9921tJ~1(WT07`0t4G^8DaiE9 zG9FpRsEs=&cVNoZF`Z1j;=Ym-z6=gRH-v^XOSX2lr5~(%B8%WTY9MIYnXi zsQM$Q75`0Eu6kp;&2 zJ^|dTuwBLmmXFW}uP&_ph_vFGC`;c+nVCkE!HH9ImQ+^BkE12bm3k_?O+J{1%x)9N z3O{T3EaATxWH%?iFe?ce6!@69uJb8%bdN>*R4>PKi`39{?Z(Lyo`8Gg25TpnM{#4k zFl(u|zvgRzh(R|44;WOS5KdqoAGg^MtvV*pDps>33`(m($m}3+5_3t1lu2MS`oIwG z%lnFs^WJ-{oN*CBXgZDbS+KgBfW%{Vw7*%LU}9v)pM;{MAVQrGtQ z)yY|lG@d43O9LC#SV8w1WBzF(=>4odrzL&u6SOXR+$F62*C9yVVUD>c&l3R-#l|`d zoHJ>;9t7Me=MX^wu&Nr3EQVkEaUD?wU}O0BcY$(MeM0N~ftv=h`yywVgVF14uL(X{ zQxR0=!UlSAup~stLr?GuW!Jm73KDy4PsP907rYbdo*2OvyO0A3@9=~S){8~!YVT9X1mbQBM+E}ri5gxU%)PU!^Zvt6 z1MLRr@fyEj3jcMw^cPe3*OKf%n8FVN@Lh(2I5;_fs!Nuidj0#t|4*jyLv{aWb(yZQ zbDZ(noK54TQl!YQa}S?ZXt8v{j0Gj7@<-ZTg_O}L1T$n! zqM@am&Bj(Y6rLkM`D7&5O9K1Z;}xDmM8{`p#NW^%K&Ycg;Nsn8FhK}&hWmn|;e_DO z_)FMN?+!nB(QB6~>rG>lM+8;$J5|cm24cKU%=`i>u1|b(*S_Hrk415hNS9n%Oe!Oz zNv&s`YgPWucP4e<=+zl`^2J*o2O;zR$bufKX-y2b1OyU@LBNIK@h2{1PgA*D>MU4( zS~%6G0rJIL#!u(tM?^z;>gXT}q{}X@28B>;v;?X^?Xv_Jrp>^)hA8=_P+D;{LNb}uFT3eaIkybT6-M5x-$kEictPDs~ zRYPvGwUmN%&=$fNe)}XYJ30gBwb(7}OBI!dd&&DM3Vmgp5dt)9~O%Ufe{{cA0Y5 zy5CW-L4&siS6*Hfsrwmjk#RQ|2XwH^Tb?<}`Nc!yM^q?svT9hue>(FDr_z#gj)gmK z#J2D5+IB&`pJHv8{)JpWk*@g=OnE82TD=|)zbX3sFOSJ%toShZ%5vxy!cgJ(I zlIu!Y&=qlr@I@^RCRnMx&Mr|DD!xrj)I>a&c;2FE<^0g7$Xt)<4^~X{@QJ>LYRZyD z@U8Mun5%ZbZQ#k_06t%|tVvMaaAH2bZ59Ru<=lU6lz=P7~OsKWm2HUqJawtg&wDkBeUa^SFn?j}>QRlaj8D7b5rSZj%kBa1PJnoR92upB| z98{dxjk?|vA#0r*FgrG3Pasy}&3-6*jKefsS!w;&qrzEm5Xptdsxa3&4!t{HOVRYO zP#>GLePgSPi6Szo(W~07Uhdf}ueq^EOV%rGDyH&&C!AMfp1Z4x&3^az=|C*_=cxP0 zmrF+vnaoom?0k)kZHLv1e6oZM^vAtu&xF@PQzI|#F1;j|vfEPtFTNt@IR=@cI8V~J zTei~p>@we2lc!Cxhwo5*oUbGKxT9p-z?yR^Y2?Up8I1z$>!W(kFJm z!lvt*!d(C~DZ&ofoTY}c;6N_umD#@k$WwoL6x1zd$`=$U_C?E=2Z(ZlSd*_QBNbi@{R_dG07Jfc)~Tn@8TT3M}4#@NmZg{@xwt-GwD zVH+16X1+BZr;2ylXY;l}`*r8ib>WwrsWAHe57iAmgb$9V24}>isfjNC9-Uc!?JoVd z>9`+Z_kS!Bviw{R1c6xo)^RMql@q#;GIaRT9RP)O;EBtGAxjRvGa21+jjMn@>Q4HyGC*KdzgTW{mwU!t?c?ONNW-wx z>-bmDG%bq6r=Viw+&2e04U4(%;67c#CQHm?lMsxS>1IK%Mjr!vnBt3jwlF;=wb@6Z zNw_%d82BAVq9L~3rQ)D6P)NdaJMK8G_?GhVp-VUKpy3%&!3W_C7~tqP0--CnG9sSK z;1peIHlA{Za}GKlYn>6f_Tot1@{PTEW-;B)*>e4bB)j|aiY6?nxk50hR7rPdvb?VPNql^?SH5dEHsdc)^NMg}QDn`MIaN>Z}+^M{h?;NICghvQ; zsd(G-=`9to8%iKaaqBaWcKHM(nRiEs7I9TaMrU?l8CtwZcg7@T3!|^C~tI=$B>~o;K1-{C$ zIrc#a$UM9YP+8dvRk^i-{Pi#j{&<^kAoh#*%5k(ppxvXB&K2z>?4?hG_&0wZ?;(~Xl%ex>tDgCjsA9xZ((DQw%;CGs zs5kgg%BRr`&mFo}Iit9fPhQk7duJS9hfJN7Fobc*GQEn}=Es4s;lFHKI zEMAPDCD)B;;G1LS8>78f&V?ZGIoMJl4bNgA$Dp9)G2Yp|yJz%TK5VPWiUvJXEYZy% zC&(E{+CC0ZJ{;}nUI;x%$gO-J4?WWPa}tSiOoSN(PsjLkvU+{hlsxEGIks5% zd?tcu`&Ig;yDQS2SpKk&$FkyVWW{QG%F4_u`V}ek zrUQ)}sc&lH%l;Ky6^`N{_Zzo)dQv|#)wr6=1u5qC-IkPl#6bmS%-=xj&mE|z+@=4H zjkv!B&kwBppOE@<=M2Qg!Sc7@`6cOoLFx~!^q(O${qOBGA-97V2z-h-bc$U0aVHsH zWSL6#<12#&SgmXZwyLc#CxQtD%Ivlrwdz=9Ln22b@gf0_KcyCByLzf*Q4h@xuK{J|Aw%;}34O_}nH* zIYw`Ed0e-&-8S)_dC5v*i1BBId>S`8_376cWB(%ke)d#|1Oj?H0LkbL1Vh#@vKY+$$eAX=z{OT5s$3ffq*=u@tp&41hkT+)zv1O@|U81Y;&C* z>?zs8k;YG6VZ=uC^%U|&wdYbc>l&Ey$}@&x?6sQP3fNP|Vfwnr1g>b8z#W3gK?umK zxdaHO=na=AiCZj3N1)9HJ5qxb$O1H6}VjAZ#-g z)8~JWG~e)UH16D5?|omxyzonT2IJb&=OpQ3YBVeG?3}T3?^RU8A<%QK>^`!POi%m6 z*4hmk1mruYg$y0!%jt(ZZP!HSRh@u4uG3%No~FlExN(xdQp)uVf7$O#ecJcozCSZU z_w{40%%%ny3DyX81*pD&A^%yG0X%mdOG{!lObUv1-Nvk8;u$!8!CgwN*;Wf87=;?b zn{YQ0gqD(hHpU_~{ngLKXP-dH;5ko_fc)lbW(k@q zpxf?0Azx#R9fVSz37}Te&69L|)BRlW%II85IkBiL3}Q8?4;|Sh5iV9*(N81~FBz+^ zF{=w^xCM0*+B^MA2gEnD3J<*x?$sS#~0w>B3+{&id z_W9wdk!wiS!s*{AV#)N|O#$p|13PKDRRiKX;Y=b7qzythRzlB#P0}iaitX>6Ji}Lw zULOYposD;X%Nq-piYrG+L)qJSZF%9Ur>-2;3&kynat?^8Sjzl{Q4lCSEoq;^ZZ1PT z{VIQhIC@_AHii;lhMP|Wgl4zs8##K-%G2EkMDYU@z>6qooG}S^#!;S#KD?uXKuCCv z*vAqf)VBeys<{r6SG!3~2gwJ+wh2>FC&Z4_`idYL`rTe`7|YmnxXRIEYU{V+{9|*h z0tFzVAd8*I6p}V#qS~H&`Ejb$1)PA~CdwM067cj@%e&?(CrF!DYrQDI{dzXm3VIt) zrKxrY>eH);4?({C42mQPlg_c9E%lJ8nJSf@5h21-J>1gh+rA|9lMjp?E=soo8n3qS z=+gpO3(MUFNdp(=>cjyu_w>0gkqdBPd1U&>SN23<`@nW|1|X5CegL2+5Kp>iF$3cZD1f`HX&(pL`|Tkz=;8rXHt zZ8x{B3x`N4V_>>AgN!?{eOzr9eIYwlQJi|0HRuqkFcrWUC7b-k?)_szYj>uc%myksfUcLXkHMljAXb}ZDQ zx~~sRu_f2c=(B|SKs5WcpIqeIiwBSO?Ox?KYPM(IBaRoSMgImEe{Qq=7XstIj@fA3y4-Dr$MFda1TNq% zKNfJ{6l%?J=0m|k^*$H&{6u4ayX(1qk`=u^R2C16cuDC6#1c*I*=SNKim?xklg_J} zcGsOwDk4~8aQq6EPO4YBHAWZ+1wuh25fmW0kn4$5eYu?|y((ZBB=HW1j&&J4r`YqN zl4E*jzIwjLC8u$9wn~`Jk*C&H!=Z3rw|Jju?2Osl-ZsFbiRoxbh&TYw&KwCgjlU*s zY}~26(kpCG4ZNDLL3q{<@6Br0-gZ%rz8VEBiI*B%-(}U{&`n7gwnJ&rb;H|%qQOf( zc~y!^E!sr9m$UP3Y%6Obp27XA#<*)3%zTG$5QJjw;3is;?t)Q{9Sg_Qxm7B>7!UT^ z{M?jYad8|>?)kZ2HfASqL$S=|f79F!Fa*B!92Po!{)ut)!2Z*M(^|>ydXjKN!zE~r zeX_S(K zJ_nl6XLV_`cxO@!y>!9cR@l}8TBEYW1~0kLbkk=E;Vr`nseyS zk$}N`q>m49Hk0Q&{46mS)+Ru0uhBkRNY~#so0V=>|5jEMnL!|nd{zo3)zK@dKex1d zvXKTC>b=g3bhTI3pIaeN&V%l)5R@yPOJlIZCsYxtJj84!_(3V!dpF_k;B>V{mC8VS z`$4HzvRg=)RTW~oM@r|`FD5gw7ri@4p^wRKkUi2sgm=nMT`%4EWV-huspN%mBesk0 zYtQ%f+n#J`(BpV^yQ;jMgmhWXWh~)tsDONuH!dN9&13{v9zwiuJw|z?uu3?nNhGXv zn_M|+D;iR#c_E_TD8JUciend#N1A`JBL-ebn<*mfzg;f2?u@30TowZeds)p{qTk-u z)NucKw=09- zu)hI#`O+T-*%KzbtCD&j=ukKtY|daX)fEL!gH1bPb}d<2v_YN2fAI)mb)(BEtLONBH^Hxz+rh_CJhhugCJ7V^D*{l~+y2Cnto zLWA6A3nT7hikx*V>Gdsp8>rj9F*axNK5{`}8=||<=XXf5?C_k2?@1TdjRbj=T;m8* zX~`_To35w&Opx}7I6$X4T*6+9o~zOI<1^F&h2$zlZ=>KR6lIX&XK_VM!q>lGgmBnf zk8&ui*$f({%+*oyI}2S})OQ@$rBhkF4v&M-E}m*_h)EQ``ZmnGUe%kzpK|NpJjO^R zx4>)Tm+}m%F6+jk@)Op{>UsQ!;17g|9&&30qR6KbzN?@f;(ZT=D7-2{M~JBhgpd9) zkDA_#SQO!MG?fc0r7F~~-^;H*Tp!f<-LWyl@B0+X`ZwY&_L-m)5x*V43UxkSeEreY zx#Tf<*_ThcEOqhiOe!beS_TMapjH5@754#g{s8OY-yxCpSC+wln^ydRb^k*v{y@4P zn`3Oizt3YnW#s%y5Bh6!jP*y>%72E$bd5EIB}vrRV=q9_V*3ntQ>&j9#TNZV)zY<7 zu85*M?T+Ls7%NqlpvG4oPSR_i*|(&2=m~yAW?A!MIUgx`F#71bImUFXV8xkJJP-{Z z)U$PD<>1xX(P7nAYY+?gNG(kf?dK>QnU#PCUX6MGWq*+Itf?@Lk_oY4o7dlBaVs^a zGN!}!>FDLuS)KX%9b{U0oEQ9K$8a8pSO%rcJ9W7XMr-d2s$qWFQM355{+#gTIF(p3 zj`w-41z$ALdLuw#_8}o}AM=YO^lNcoH%pvzwoNXv0%E;RXjpr zcb`%eCx1(6^F!70O9o%T7?fy{2YU`BO=9p0pYB*&V0vf6-&ZV z7u_N&S0#B`+a9e|BXY?z@?P? z#y+um(TDfof90{$KdrPm{RG~@%T!g5a&&oF%p^C%cyM*Rt3iwbZ9q`q!Oe!^%U%1T z{s7u$#RN{VSSj%v9{{yp!KKR<`r`{qRN~Ecgl-A*zT5Cp_8Y$})5=wwQ?T#}Z5-2) zl?L&KmJxo6XSh%`07b;tOI|FP(J33li{I3aM6yaxZ^l-xqkZ)p*FLGsHZh%^-NIoD zsjbeebZy-5-OlV>7wYl2e?>s$7Ea%U)Ge8&-u=j)9_XQE)60!WBh8H4@2s+oJ3Y{= ze;GP|2)&=698o_&rXFXKaR_T(zR{=@S1`Cz_C^9e92IW*!`&misB!}I;-YEnLay~8 zB5l??Jhjd7w9UpKG%{N1=srhUefE6*ZWc0Wdr`H_oRj-Fc(GOK=o-hmPpqtwJ=CHC z346?imN=uIroc4?IP#_Yz+2PhY*Wt|B?df@(T?8oPC1>bSClo)v0+=;<)|toz4jqP z(>@F)m0>#`1Ds{WmoBuT*oB$^3ahmeF`VPL`;EEWE^m2n;5~1~jeiree{M4U_o{A%QGRBv*S{>4N^Wb~asM-UTA zuMY5Zm4Dr6;?NSMKHARPb`as4Un0Zteiab2#lDT6c1iyMzBm(WuDC}cBIkM;no14M z237ltl=bakpmJ$#4w7mdeAIRFKG{-oX%Nv@R-sQ&j1zCp2cY;sv!TOKS)^0Xjm+7N z?Bu25&}*myx2eUxwhp5?;!=j1k{d{qY8FM0esO!)c$rQ&=YjzZPKln2@v3_& z{>H{fClUI7RvWf#YM48LikBF3Fll20cFlJW_LRLH!e=KXxNh$FmSxnkTmai;Ztvl` zn_~_hzRiLij*Z|m%vr8C%s>(q)xhj6GXINhjg5$P>5Pylh)Z;K0=+;*qtYJ#;iPhP z*I6xU9pI&k&8gxoPnrdLC3N74lv<}54&2Ttz|=w4=Q$CV%BIO~ zp%*9Js>LA@8@sH_!R;r_C0&lE9GBuW>9J(83fc#2iDj23Bdvsp%x-97fy|+C0CsHp zsE6uMk<4DRn97h%CjpX2!^NvC`vcIKg%^w#LJqN!I%y;sanBubm~!IC?nR*clnxpwy@(8o>=^-osLK6reVT}dHr0M0ns=97M$=k1ESButX-p+X`~ad?)6xJn@4 zaM;9@z5@~A^CG0JFVACmJ*ZS|a7ep&Se1U^9Erq={FD0|jKp}WH}@shCatZ3*ge~~ zpL~;vY%=gEg!5Gcb8!XwBBizHN8mVCG%osjd{%E1YJL;hey;WZ7e=-p$vpo|7<$S% z{ul4$Vg>#TY;3>S_Mc@%|1L3@?VoEre~=jbBki8!DGwOP1pqyzcmtoZte!HyL0o^7 z;Qhno-(&@|{X(HXa^<(4{F9phsVD4QKt^^h0OwO$H;@&;0R%B}{Glg5PQ?9tsyf?G z2>Qdcc@7pvW&rzBvOn`vdp{> zEWmHu_MaH~2W`v#G%%hVVdH%IbOs2(#mUJ2lqLU^>c;q#0r)3hXJGqrqUASk{hS8h zTlY`0ZBWv2d_5vN8X3iIt6w@&D-3zt&v;?duHe|D45tDN6S5 zlkyJ|GZHnIqLxKbz1Pak;o+fUk1j^)PlW};!Qe^z!B7HW%k$0hYKc4zJzc8&qjwUR zs_T|mV#o(qn~D_Dxt;eO?8uTk)^u)BDZ)(dQc*bkt!>-1R$6Z5s{%{e$IOfi8s#BK zBEsG&>yn3}l1^CFn)$SSow3ndQMLFq=-;YAYiwK9%a<2vLUXr}acZJY6#iyKpt9L} z-{A^HXTeINfqrBmwa8w}=78y&VKK4ou{uXPn3Ss{A|o99GMqNAUtYGaOftC?029&O zij_aQ3weQLMSGU(HM``?_mF85i!3p#8-cKuXp`NcuJ0048yy*-qoGC-NxXLqLA@R0 z?d;;WRr`=LFViL9ACjRWSl%3j2uI28eBHU2u-3U9!(LbIFfyj@4W@qSk55?f|5bDC z@lb7h{6wyjZl&@nY{@HRX3sk*nK7Q_{V0!8#v{W_Ly}UFPAN_4q=(Z>-K0~=qZC5A zqCAR-p)R2u@8jfp9Fn{C9z!$xe(pWz+`sPpGk#ycwSH^;)?UB0ervD!mS}&& zy`|nT|M>9eK5YxC;a-SjE3agv;C1cO?#a@D$3yr1_7snNYUX<-AJSEbE3>2fLXK(m z!M_aOJ@j;s+Dfm)U>ff8Zvh%f4&8TNO(A)ARgflRy7xeYPb??USnOOm1zt*g#{Z1wU! z&0W4B5N8Y-H`qHs!T1n?2vn$_qP@SpIat464I*%NOoVUi8mPCTaE#M=ah@ z@+(3T*Xf?(t6q|eJRMlB@=-muQrl;(%jr;MXCr1)QD9o$U>DS3PG5CQVDg0=T)xi} ze{(B*BnKuW%^I_;zC6Ni99Qz=89cxD#^AP3&%i_C)-yUS2U|%iUb5svNrzc38BWBm@f+bfzIdp&YHx+?p#-(G0-;Hl-vWE&R#9Gk5F-54pQ_+g$>{>R?F z8~4;Nn|eF)&m_ybY>VlBnA4P-eA9bmyGnP-QcKV5&mNgsf^$nMKD>@Rsp+QYuBY@O z`t=XV)Lj2E#oVC3UmAOx7^Ut}xWnyT`TTnk*2nei?X>KaJq$1GC=K;$?N)ml`8Lg^ zWbxrR9Xg3@QZbyKK6k9RvGR?>4USv;cMDuEHs&Wc9s>R-n zuOaz!u0?AaEpzXC$5CJOWI>Z&`pX{_3znA(Rx2$1UU{R-k&MsY+)345a8c!KseIeT z%xbN^LcxwTsUP;fCbMLCuSWG#%j=J3dDPz0PfRub$xhcQz)Yp&+=mULIr%kZs?U$f zy8Zf0E+R3}>YA*1^_HL(X@}%>`lQskwv_qXZ=X`pJ`h%U%LU3aL<+nD-|6WQiU7 ze9_;EdKSEM%(B;Ly5y|r?-F6NAdbyS9Z2)zXw8fChwKQf7E%4J)2L)X3g zT1kSs1SyUVzx2t*puCKbWeH)owaNF*77%^a3pU?3vF6+Ct2w;nfvZB5&K52?bzjLa ziy>zq<-gd};F-+9-oNhLdBw_ygYP)7s$sY(hZSg5HWA$Ue)uoapB_aLT~&QN4o26W z$Q<>gJZJJ3eu&lb&xeM~@-|pBrB+RJcyU#94Et@izNQ%8RWGQQPKlJd6%R*wtmvq4 zd%~4#buS<~-e&DOBCqc{E?8`1ymxGpt+$9v=RaHN#hu;P!0M-1>`@UJVu>G?!mqV^d*)n$^Lk={WW~!E{)qyXS#*(6Qxg*V^7KTMzr0 zho?aC3B8twd}2RdR)rc*$#%x1YSi=96hB9~Gz+#aJHN@DAM7!pzM$=jU|2Cb?zzbj z-8s9AShmhldPAYkmG5Pw*Q5<>%`MYwX?o_?C8Z%{Z%Uds;6C1Z?8R{BHj?u_t&{OA z-8-dm!x6hWBd#i}XGCmb1=qYX=fypVNvkU|og1JzG&q>GzrEjG5q6nZf3>=ZG;w7f zYuoj0#WmGMVMkjx&2rYTn6pQtR#9VPb%RpNqSzyKCv+b0jqWF8JLqPsj^_P%RDF+T zb55;6p-+uZhlYIn=J2EKrevqPHv@N6wkJ%Ojv2KWQzoTOEZH)S%?ZE)F5)6UH@;4C zBxKhJzR)vVIg)VWO+s(~%y1D9XZ8yJC+FHzWCUn`QFemqOHt^4L+sQ9-EE);-Bft` z-7i_>DPi^`-19L3qXFW8X+|yt#v=&A?T7pqGPYu|BUs^pmkxm~LIH(zP-p-IF8hUU z2n`Do0pI2}#LwCLebRGh}DO4h&xfY;8LnWcUH^K}x#WMNt9#uLZkOXvCNbAvN%zZ<-TPA5js}@j=4*KUK)icRPz61_^_~x0fYAJCOMzoEqq3KlLXbLg$T;OC98O z!Xyz?$0R_2KWmC9gb7kSVZ1^9LxRY{YzMJ`SmtqdI0GU}Ph-F#57_BKfEUfDzUg3k zup+~Sq$V6Thvy7fFIfP}5hh5s1xJLjHi&?$4^x%|j&>yLBO~jict3~~WUZ0FsDS@Z0waUN4GcyBe1VdB z6eKW+*GI);eL$ul;Y31@fKUsGVR#(iIF-O~R00xbB=m?lOj$e`oW@}E0H>h@hNmL0 zB*g0@kPx;baSTsIroT8wpkVxrClQdSD5-}8MR5$w0!*7Jc;x-Hq#kD6@Du_O(+?^c z<13&?mK+Z}m5TKhjfzBTal2G1##ewj5joNn(}Q6e=9vU~7`tF3G2;fxBDcN8>%+km zN&mq(0%k11ksC#_&4B+9^GpH^^X$SnY&-xM4bwL~4q4j7+ed&AvM5Om`Pr8QM!<|Y zOaLcP7(EhMaxB5jr+)Kng!6m>8zygR<#OV1!XaewMAs|pP=5|Iy+&CxAkVb~29AKI z;}~Qdg+{oX@&y0@ From f69f3de06ea8473f0a79b339c60559d7efab57f6 Mon Sep 17 00:00:00 2001 From: Josh Cummings Date: Sat, 26 Oct 2019 09:32:05 -0600 Subject: [PATCH 215/265] Reconcile changes that were moved to core-java-io --- core-java-modules/core-java/pom.xml | 70 +++-------------------------- 1 file changed, 5 insertions(+), 65 deletions(-) diff --git a/core-java-modules/core-java/pom.xml b/core-java-modules/core-java/pom.xml index 7f2694b346..9d4bee081e 100644 --- a/core-java-modules/core-java/pom.xml +++ b/core-java-modules/core-java/pom.xml @@ -48,51 +48,6 @@ ${lombok.version} provided - - org.javamoney - moneta - ${javamoney.moneta.version} - - - com.sun.messaging.mq - fscontext - ${fscontext.version} - - - com.codepoetics - protonpack - ${protonpack.version} - - - one.util - streamex - ${streamex.version} - - - io.vavr - vavr - ${vavr.version} - - - org.openjdk.jmh - jmh-core - ${jmh-core.version} - - - org.openjdk.jmh - jmh-generator-annprocess - ${jmh-generator-annprocess.version} - - - com.h2database - h2 - ${h2.version} - - - org.owasp.esapi - esapi - ${esapi.version} - org.assertj @@ -100,18 +55,10 @@ ${assertj-core.version} test - - org.javassist - javassist - ${javaassist.version} - - - com.sun - tools - ${sun.tools.version} - system - ${java.home}/../lib/tools.jar + org.javamoney + moneta + ${javamoney.moneta.version} @@ -437,24 +384,17 @@ 0.4 1.8.7 - 1.1 - 1.19 - 2.1.0.1 - 61.1 - 3.10.0 + 1.1 + 3.0.0-M1 3.0.2 1.4.4 3.1.1 2.0.3.RELEASE 1.6.0 - - - 3.21.0-GA - 1.8.0 From d6b68dec07255d393977b5a3fa288972e5daf48a Mon Sep 17 00:00:00 2001 From: amit2103 Date: Sun, 27 Oct 2019 01:07:52 +0530 Subject: [PATCH 216/265] [BAEL-18428] - Check modules that don't use our standard parents --- micronaut/pom.xml | 268 +++++++++--------- ...va => ConcreteGreetingClientUnitTest.java} | 2 +- ...tTest.java => GreetingClientUnitTest.java} | 2 +- persistence-modules/jnosql/pom.xml | 7 + quarkus/pom.xml | 220 +++++++------- 5 files changed, 259 insertions(+), 240 deletions(-) rename micronaut/src/test/java/com/baeldung/micronaut/helloworld/client/{ConcreteGreetingClientTest.java => ConcreteGreetingClientUnitTest.java} (95%) rename micronaut/src/test/java/com/baeldung/micronaut/helloworld/client/{GreetingClientTest.java => GreetingClientUnitTest.java} (94%) diff --git a/micronaut/pom.xml b/micronaut/pom.xml index 2a8d135483..02ac36218d 100644 --- a/micronaut/pom.xml +++ b/micronaut/pom.xml @@ -1,136 +1,142 @@ - 4.0.0 - com.baeldung.micronaut - micronaut - 0.1 - micronaut + 4.0.0 + com.baeldung.micronaut + micronaut + 0.1 + micronaut - - - - io.micronaut - bom - ${micronaut.version} - pom - import - - - - - - io.micronaut - http-client - compile - - - io.micronaut - http-server-netty - compile - - - io.micronaut - inject - compile - - - io.micronaut - runtime - compile - - - javax.annotation - javax.annotation-api - 1.3.2 - compile - - - io.micronaut - inject-java - provided - - - ch.qos.logback - logback-classic - 1.2.3 - runtime - - - junit - junit - 4.12 - test - - - io.projectreactor - reactor-core - 3.1.6.RELEASE - - - - - - org.apache.maven.plugins - maven-shade-plugin - 3.1.0 - - - package - - shade - - - - - ${exec.mainClass} - - - - - - - - - org.codehaus.mojo - exec-maven-plugin - 1.6.0 - - java - - -classpath - - ${exec.mainClass} - - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.7.0 - - ${jdk.version} - ${jdk.version} - - -parameters - - - + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + + + + io.micronaut - inject-java + bom ${micronaut.version} - - - - - - - - - - com.baeldung.micronaut.helloworld.server.ServerApplication - 1.0.0.RC2 - 1.8 - + pom + import + + + + + + io.micronaut + http-client + compile + + + io.micronaut + http-server-netty + compile + + + io.micronaut + inject + compile + + + io.micronaut + runtime + compile + + + javax.annotation + javax.annotation-api + 1.3.2 + compile + + + io.micronaut + inject-java + provided + + + ch.qos.logback + logback-classic + 1.2.3 + runtime + + + junit + junit + 4.12 + test + + + io.projectreactor + reactor-core + 3.1.6.RELEASE + + + + + + org.apache.maven.plugins + maven-shade-plugin + 3.1.0 + + + package + + shade + + + + + ${exec.mainClass} + + + + + + + + + org.codehaus.mojo + exec-maven-plugin + 1.6.0 + + java + + -classpath + + ${exec.mainClass} + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.7.0 + + ${jdk.version} + ${jdk.version} + + -parameters + + + + io.micronaut + inject-java + ${micronaut.version} + + + + + + + + + + com.baeldung.micronaut.helloworld.server.ServerApplication + 1.0.0.RC2 + 1.8 + diff --git a/micronaut/src/test/java/com/baeldung/micronaut/helloworld/client/ConcreteGreetingClientTest.java b/micronaut/src/test/java/com/baeldung/micronaut/helloworld/client/ConcreteGreetingClientUnitTest.java similarity index 95% rename from micronaut/src/test/java/com/baeldung/micronaut/helloworld/client/ConcreteGreetingClientTest.java rename to micronaut/src/test/java/com/baeldung/micronaut/helloworld/client/ConcreteGreetingClientUnitTest.java index c8c1d6b12a..336374d5a6 100644 --- a/micronaut/src/test/java/com/baeldung/micronaut/helloworld/client/ConcreteGreetingClientTest.java +++ b/micronaut/src/test/java/com/baeldung/micronaut/helloworld/client/ConcreteGreetingClientUnitTest.java @@ -8,7 +8,7 @@ import org.junit.Test; import static junit.framework.TestCase.assertEquals; -public class ConcreteGreetingClientTest +public class ConcreteGreetingClientUnitTest { private EmbeddedServer server; private ConcreteGreetingClient client; diff --git a/micronaut/src/test/java/com/baeldung/micronaut/helloworld/client/GreetingClientTest.java b/micronaut/src/test/java/com/baeldung/micronaut/helloworld/client/GreetingClientUnitTest.java similarity index 94% rename from micronaut/src/test/java/com/baeldung/micronaut/helloworld/client/GreetingClientTest.java rename to micronaut/src/test/java/com/baeldung/micronaut/helloworld/client/GreetingClientUnitTest.java index 0f2ca460ac..c47fb3a31d 100644 --- a/micronaut/src/test/java/com/baeldung/micronaut/helloworld/client/GreetingClientTest.java +++ b/micronaut/src/test/java/com/baeldung/micronaut/helloworld/client/GreetingClientUnitTest.java @@ -8,7 +8,7 @@ import org.junit.Test; import static junit.framework.TestCase.assertEquals; -public class GreetingClientTest { +public class GreetingClientUnitTest { private EmbeddedServer server; private GreetingClient client; diff --git a/persistence-modules/jnosql/pom.xml b/persistence-modules/jnosql/pom.xml index 513a447b91..91ceddaadd 100644 --- a/persistence-modules/jnosql/pom.xml +++ b/persistence-modules/jnosql/pom.xml @@ -9,6 +9,13 @@ jnosql pom + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + ../../ + + jnosql-diana jnosql-artemis diff --git a/quarkus/pom.xml b/quarkus/pom.xml index 5190d0932a..31e3c8f8a0 100644 --- a/quarkus/pom.xml +++ b/quarkus/pom.xml @@ -1,115 +1,121 @@ - 4.0.0 - com.baeldung.quarkus - quarkus - 1.0-SNAPSHOT - quarkus - - - 2.22.0 - 0.15.0 - 1.8 - UTF-8 - 1.8 - - + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + 4.0.0 + com.baeldung.quarkus + quarkus + 1.0-SNAPSHOT + quarkus + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + + + 2.22.0 + 0.15.0 + 1.8 + UTF-8 + 1.8 + + + + + io.quarkus + quarkus-bom + ${quarkus.version} + pom + import + + + - - io.quarkus - quarkus-bom - ${quarkus.version} - pom - import - - - - - - io.quarkus - quarkus-resteasy - - - io.quarkus - quarkus-junit5 - test - - - io.rest-assured - rest-assured - test - - - - - - io.quarkus - quarkus-maven-plugin - ${quarkus.version} - - - - build - - - - - - maven-surefire-plugin - ${surefire-plugin.version} - - - org.jboss.logmanager.LogManager - - - - - - - - native - - - native - - - - - + io.quarkus - quarkus-maven-plugin - ${quarkus.version} - - - - native-image - + quarkus-resteasy + + + io.quarkus + quarkus-junit5 + test + + + io.rest-assured + rest-assured + test + + + + + + io.quarkus + quarkus-maven-plugin + ${quarkus.version} + + + + build + + + + + + maven-surefire-plugin + ${surefire-plugin.version} - true + + org.jboss.logmanager.LogManager + - - - - - maven-failsafe-plugin - ${surefire-plugin.version} - - - - integration-test - verify - - - - ${project.build.directory}/${project.build.finalName}-runner - - - - - + - - - + + + + native + + + native + + + + + + io.quarkus + quarkus-maven-plugin + ${quarkus.version} + + + + native-image + + + true + + + + + + maven-failsafe-plugin + ${surefire-plugin.version} + + + + integration-test + verify + + + + ${project.build.directory}/${project.build.finalName}-runner + + + + + + + + + From f22fddfdb38300388b89f974658ed0f36205d3eb Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Sun, 27 Oct 2019 09:59:48 +0100 Subject: [PATCH 217/265] #BAEL-10229 Fix the build (specify the Spring version in the ethereum module and restore Spring Boot version 2.1.7 in the spring-boot-persistence module) --- ethereum/pom.xml | 1 + persistence-modules/spring-boot-persistence/pom.xml | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/ethereum/pom.xml b/ethereum/pom.xml index e0666e49d8..f340c311a8 100644 --- a/ethereum/pom.xml +++ b/ethereum/pom.xml @@ -32,6 +32,7 @@ org.springframework spring-core + ${spring.version} org.springframework diff --git a/persistence-modules/spring-boot-persistence/pom.xml b/persistence-modules/spring-boot-persistence/pom.xml index c7cda07a1a..3ad925f16b 100644 --- a/persistence-modules/spring-boot-persistence/pom.xml +++ b/persistence-modules/spring-boot-persistence/pom.xml @@ -17,14 +17,17 @@ org.springframework.boot spring-boot-starter-web + ${spring-boot.version} org.springframework.boot spring-boot-starter-thymeleaf + ${spring-boot.version} org.springframework.boot spring-boot-starter-data-jpa + ${spring-boot.version} com.zaxxer @@ -35,6 +38,7 @@ org.springframework.boot spring-boot-starter-test + ${spring-boot.version} org.mockito @@ -99,6 +103,7 @@ 2.0.1.Final 10.13.1.1 2.3.4 + 2.1.7.RELEASE From 72a602c9d86af0f43ae4d9c28c05889a549c42d0 Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Sun, 27 Oct 2019 10:08:55 +0100 Subject: [PATCH 218/265] #BAEL-10229 Fix the build (restore the Ethereum module as it was because it's mixing different Spring and Spring Boot versions) --- parent-boot-1/pom.xml | 233 +++++++++++++++++++++++++++++++++++------- 1 file changed, 195 insertions(+), 38 deletions(-) diff --git a/parent-boot-1/pom.xml b/parent-boot-1/pom.xml index 8f1af24466..df4703f1db 100644 --- a/parent-boot-1/pom.xml +++ b/parent-boot-1/pom.xml @@ -1,61 +1,218 @@ + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - parent-boot-1 - 0.0.1-SNAPSHOT - parent-boot-1 - pom - Parent for all Spring Boot 1.x modules + com.baeldung.ethereum + ethereum + ethereum + parent-spring-5 com.baeldung - parent-modules - 1.0.0-SNAPSHOT + 0.0.1-SNAPSHOT + ../parent-spring-5 - - - - org.springframework.boot - spring-boot-dependencies - ${spring-boot.version} - pom - import - - - + + - io.rest-assured - rest-assured - ${rest-assured.version} + org.springframework.boot + spring-boot-starter + ${spring.boot.version} + + + org.springframework.boot + spring-boot-starter-web + ${spring.boot.version} + + + org.springframework.boot + spring-boot-starter-tomcat + ${spring.boot.version} + + + + + org.springframework + spring-core + ${spring.version} + + + org.springframework + spring-web + ${spring.version} + + + org.springframework + spring-webmvc + ${spring.version} + + + + + org.ethereum + ethereumj-core + ${ethereumj-core.version} + + + org.web3j + core + ${web3j.core.version} + + + + + com.fasterxml.jackson.core + jackson-core + ${jackson.version} + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + + + com.fasterxml.jackson.core + jackson-annotations + ${jackson.version} + + + + + javax.servlet + jstl + ${jstl.version} + + + javax.servlet + javax.servlet-api + ${javax.servlet-api.version} + + + javax.servlet.jsp.jstl + jstl-api + ${jstl.version} + + + javax.servlet.jsp + javax.servlet.jsp-api + ${javax.servlet.jsp-api.version} + + + + + org.slf4j + jcl-over-slf4j + ${slf4j.version} + + + ch.qos.logback + logback-classic + ${logback.version} + + + org.springframework.boot spring-boot-starter-test test + ${spring.boot.version} + + + org.springframework + spring-context + ${spring.version} + + + org.springframework + spring-test + ${spring.version} + test + + + + + org.mockito + mockito-core + ${mockito.version} + + + org.hamcrest + hamcrest-core + + + test + + + junit + junit + ${junit.version} + test + + + org.hamcrest + hamcrest-core + + + + + org.hamcrest + hamcrest-library + ${org.hamcrest.version} + test + + + com.jayway.jsonpath + json-path + ${jsonpath.version} - - - - org.springframework.boot - spring-boot-maven-plugin - ${spring-boot.version} - - ${start-class} - - - - - + ethereum + + + maven-compiler-plugin + 3.1 + + 1.8 + 1.8 + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot-maven-plugin.version} + + + org.apache.maven.plugins + maven-war-plugin + 3.0.0 + + src/main/webapp + false + + + + + + Ethereum + Ethereum + https://dl.bintray.com/ethereum/maven/ + + + - 3.1.0 - 1.5.22.RELEASE + 1.5.0-RELEASE + 3.3.1 + 1.5.6.RELEASE + 2.21.0 + 2.4.0 + 1.2.3 + 1.7.25 + 2.0.4.RELEASE - From 62089a7abb94026c2ceaaf46979bf84edfbf498a Mon Sep 17 00:00:00 2001 From: catalin-burcea Date: Sun, 27 Oct 2019 11:09:34 +0200 Subject: [PATCH 219/265] Split or move java-streams module --- .../core-java-9-streams/README.md | 6 + core-java-modules/core-java-9-streams/pom.xml | 31 ++ .../streams}/breakforeach/CustomForEach.java | 2 +- .../breakforeach/CustomSpliterator.java | 2 +- .../breakforeach/CustomTakeWhile.java | 2 +- .../breakforeach/TakeWhileExample.java | 2 +- .../BreakFromStreamForEachUnitTest.java | 2 +- .../core-java-streams-2/README.md | 16 ++ .../core-java-streams-2}/pom.xml | 100 +++---- .../reduce/application/Application.java | 78 ++--- .../benchmarks/JMHStreamReduceBenchMark.java | 104 +++---- .../com/baeldung/reduce/entities/User.java | 50 ++-- .../reduce/utilities/NumberUtils.java | 104 +++---- .../streams}/MyImmutableListCollector.java | 2 +- .../src/main/resources/logback.xml | 0 .../IntStreamsConversionsUnitTest.java | 0 .../reduce}/StreamReduceUnitTest.java | 159 +++++----- .../java/com/baeldung/streams}/Detail.java | 2 +- .../Java8FindAnyFindFirstUnitTest.java | 2 +- .../streams/Java8StreamApiUnitTest.java | 3 +- .../streams}/Java8StreamsUnitTest.java | 3 +- .../com/baeldung/streams}/PeekUnitTest.java | 8 +- .../java/com/baeldung/streams}/Product.java | 2 +- .../baeldung/streams}/StreamAddUnitTest.java | 2 +- .../baeldung/streams}/StreamMapUnitTest.java | 5 +- .../streams}/StreamToImmutableUnitTest.java | 20 +- .../StreamOperateAndRemoveUnitTest.java | 12 +- .../core-java-streams-3/README.md | 11 + core-java-modules/core-java-streams-3/pom.xml | 53 ++++ .../streams}/forEach/ReverseList.java | 2 +- .../primitivestreams}/PrimitiveStreams.java | 2 +- .../src/main/resources/logback.xml | 13 + .../collectors/Java8CollectorsUnitTest.java | 2 +- .../StreamForEachIfElseUnitTest.java | 2 +- .../PrimitiveStreamsUnitTest.java | 8 +- .../core-java-streams}/.gitignore | 0 core-java-modules/core-java-streams/README.md | 19 +- core-java-modules/core-java-streams/pom.xml | 83 +++++- .../com/baeldung/stream/InfiniteStreams.java | 0 .../java/com/baeldung/stream/StreamApi.java | 0 .../com/baeldung/stream/StreamIndices.java | 0 .../com/baeldung/stream/filter/Customer.java | 0 .../baeldung/stream/sum/ArithmeticUtils.java | 16 +- .../java/com/baeldung/stream/sum/Item.java | 62 ++-- .../stream/sum/StreamSumCalculator.java | 118 ++++---- .../sum/StreamSumCalculatorWithObject.java | 76 ++--- .../IterableStreamConversionUnitTest.java | 2 +- .../protonpack/ProtonpackUnitTest.java | 0 .../stream/InfiniteStreamUnitTest.java | 0 .../baeldung/stream/StreamApiUnitTest.java | 0 .../stream/StreamIndicesUnitTest.java | 0 .../stream/SupplierStreamUnitTest.java | 68 ++--- .../stream/filter/StreamCountUnitTest.java | 0 .../stream/filter/StreamFilterUnitTest.java | 0 .../stream/sum/StreamSumUnitTest.java | 272 +++++++++--------- .../streamordering/BenchmarkManualTest.java | 0 .../StreamsOrderingUnitTest.java | 0 .../src/test/resources/.gitignore | 0 core-java-modules/core-java/README.md | 2 +- java-streams-2/README.md | 9 - .../com/baeldung/reduce/entities/User.java | 25 -- java-streams/README.md | 21 -- java-streams/pom.xml | 121 -------- .../reduce/application/Application.java | 70 ----- .../reduce/utilities/NumberUtils.java | 52 ---- .../reduce/tests/StreamReduceUnitTest.java | 79 ----- pom.xml | 20 +- 67 files changed, 881 insertions(+), 1046 deletions(-) create mode 100644 core-java-modules/core-java-9-streams/README.md create mode 100644 core-java-modules/core-java-9-streams/pom.xml rename {java-streams-2/src/main/java/com/baeldung => core-java-modules/core-java-9-streams/src/main/java/com/baeldung/streams}/breakforeach/CustomForEach.java (94%) rename {java-streams-2/src/main/java/com/baeldung => core-java-modules/core-java-9-streams/src/main/java/com/baeldung/streams}/breakforeach/CustomSpliterator.java (95%) rename {java-streams-2/src/main/java/com/baeldung => core-java-modules/core-java-9-streams/src/main/java/com/baeldung/streams}/breakforeach/CustomTakeWhile.java (90%) rename {java-streams-2/src/main/java/com/baeldung => core-java-modules/core-java-9-streams/src/main/java/com/baeldung/streams}/breakforeach/TakeWhileExample.java (94%) rename {java-streams-2/src/test/java/com/baeldung => core-java-modules/core-java-9-streams/src/test/java/com/baeldung/streams}/breakforeach/BreakFromStreamForEachUnitTest.java (96%) create mode 100644 core-java-modules/core-java-streams-2/README.md rename {java-streams-2 => core-java-modules/core-java-streams-2}/pom.xml (84%) rename {java-streams-2 => core-java-modules/core-java-streams-2}/src/main/java/com/baeldung/reduce/application/Application.java (97%) rename {java-streams-2 => core-java-modules/core-java-streams-2}/src/main/java/com/baeldung/reduce/benchmarks/JMHStreamReduceBenchMark.java (97%) rename {java-streams => core-java-modules/core-java-streams-2}/src/main/java/com/baeldung/reduce/entities/User.java (94%) rename {java-streams-2 => core-java-modules/core-java-streams-2}/src/main/java/com/baeldung/reduce/utilities/NumberUtils.java (97%) rename {java-streams/src/test/java/com/baeldung/stream/mycollectors => core-java-modules/core-java-streams-2/src/main/java/com/baeldung/streams}/MyImmutableListCollector.java (93%) rename {java-streams => core-java-modules/core-java-streams-2}/src/main/resources/logback.xml (100%) rename {java-streams-2 => core-java-modules/core-java-streams-2}/src/test/java/com/baeldung/convert/intstreams/IntStreamsConversionsUnitTest.java (100%) rename {java-streams-2/src/test/java/com/baeldung/reduce/tests => core-java-modules/core-java-streams-2/src/test/java/com/baeldung/reduce}/StreamReduceUnitTest.java (95%) rename {java-streams/src/main/java/com/baeldung/java_8_features => core-java-modules/core-java-streams-2/src/test/java/com/baeldung/streams}/Detail.java (85%) rename {java-streams/src/test/java/com/baeldung/java8 => core-java-modules/core-java-streams-2/src/test/java/com/baeldung}/streams/Java8FindAnyFindFirstUnitTest.java (97%) rename {java-streams/src/test/java/com/baeldung/java8 => core-java-modules/core-java-streams-2/src/test/java/com/baeldung}/streams/Java8StreamApiUnitTest.java (99%) rename {java-streams/src/test/java/com/baeldung/java8 => core-java-modules/core-java-streams-2/src/test/java/com/baeldung/streams}/Java8StreamsUnitTest.java (97%) rename {java-streams/src/test/java/com/baeldung/stream => core-java-modules/core-java-streams-2/src/test/java/com/baeldung/streams}/PeekUnitTest.java (98%) rename {java-streams/src/main/java/com/baeldung/stream => core-java-modules/core-java-streams-2/src/test/java/com/baeldung/streams}/Product.java (96%) rename {java-streams/src/test/java/com/baeldung/stream => core-java-modules/core-java-streams-2/src/test/java/com/baeldung/streams}/StreamAddUnitTest.java (97%) rename {java-streams/src/test/java/com/baeldung/stream => core-java-modules/core-java-streams-2/src/test/java/com/baeldung/streams}/StreamMapUnitTest.java (96%) rename {java-streams/src/test/java/com/baeldung/stream => core-java-modules/core-java-streams-2/src/test/java/com/baeldung/streams}/StreamToImmutableUnitTest.java (81%) rename {java-streams/src/test/java/com/baeldung/stream => core-java-modules/core-java-streams-2/src/test/java/com/baeldung/streams/removeitem}/StreamOperateAndRemoveUnitTest.java (98%) create mode 100644 core-java-modules/core-java-streams-3/README.md create mode 100644 core-java-modules/core-java-streams-3/pom.xml rename core-java-modules/{core-java-streams/src/main/java/com/baeldung => core-java-streams-3/src/main/java/com/baeldung/streams}/forEach/ReverseList.java (98%) rename {java-streams/src/main/java/com/baeldung/stream => core-java-modules/core-java-streams-3/src/main/java/com/baeldung/streams/primitivestreams}/PrimitiveStreams.java (90%) create mode 100644 core-java-modules/core-java-streams-3/src/main/resources/logback.xml rename core-java-modules/{core-java-streams/src/test/java/com/baeldung => core-java-streams-3/src/test/java/com/baeldung/streams}/collectors/Java8CollectorsUnitTest.java (99%) rename core-java-modules/{core-java-streams/src/test/java/com/baeldung/stream => core-java-streams-3/src/test/java/com/baeldung/streams}/conditional/StreamForEachIfElseUnitTest.java (96%) rename {java-streams/src/test/java/com/baeldung/stream => core-java-modules/core-java-streams-3/src/test/java/com/baeldung/streams/primitivestreams}/PrimitiveStreamsUnitTest.java (98%) rename {java-streams => core-java-modules/core-java-streams}/.gitignore (100%) rename {java-streams => core-java-modules/core-java-streams}/src/main/java/com/baeldung/stream/InfiniteStreams.java (100%) rename {java-streams => core-java-modules/core-java-streams}/src/main/java/com/baeldung/stream/StreamApi.java (100%) rename {java-streams => core-java-modules/core-java-streams}/src/main/java/com/baeldung/stream/StreamIndices.java (100%) rename {java-streams => core-java-modules/core-java-streams}/src/main/java/com/baeldung/stream/filter/Customer.java (100%) rename {java-streams => core-java-modules/core-java-streams}/src/main/java/com/baeldung/stream/sum/ArithmeticUtils.java (94%) rename {java-streams => core-java-modules/core-java-streams}/src/main/java/com/baeldung/stream/sum/Item.java (94%) rename {java-streams => core-java-modules/core-java-streams}/src/main/java/com/baeldung/stream/sum/StreamSumCalculator.java (96%) rename {java-streams => core-java-modules/core-java-streams}/src/main/java/com/baeldung/stream/sum/StreamSumCalculatorWithObject.java (96%) rename {java-streams/src/test/java/com/baeldung/java => core-java-modules/core-java-streams/src/test/java/com/baeldung}/conversion/IterableStreamConversionUnitTest.java (96%) rename {java-streams => core-java-modules/core-java-streams}/src/test/java/com/baeldung/protonpack/ProtonpackUnitTest.java (100%) rename {java-streams => core-java-modules/core-java-streams}/src/test/java/com/baeldung/stream/InfiniteStreamUnitTest.java (100%) rename {java-streams => core-java-modules/core-java-streams}/src/test/java/com/baeldung/stream/StreamApiUnitTest.java (100%) rename {java-streams => core-java-modules/core-java-streams}/src/test/java/com/baeldung/stream/StreamIndicesUnitTest.java (100%) rename {java-streams => core-java-modules/core-java-streams}/src/test/java/com/baeldung/stream/SupplierStreamUnitTest.java (97%) rename {java-streams => core-java-modules/core-java-streams}/src/test/java/com/baeldung/stream/filter/StreamCountUnitTest.java (100%) rename {java-streams => core-java-modules/core-java-streams}/src/test/java/com/baeldung/stream/filter/StreamFilterUnitTest.java (100%) rename {java-streams => core-java-modules/core-java-streams}/src/test/java/com/baeldung/stream/sum/StreamSumUnitTest.java (97%) rename {java-streams => core-java-modules/core-java-streams}/src/test/java/com/baeldung/streamordering/BenchmarkManualTest.java (100%) rename {java-streams => core-java-modules/core-java-streams}/src/test/java/com/baeldung/streamordering/StreamsOrderingUnitTest.java (100%) rename {java-streams => core-java-modules/core-java-streams}/src/test/resources/.gitignore (100%) delete mode 100644 java-streams-2/README.md delete mode 100644 java-streams-2/src/main/java/com/baeldung/reduce/entities/User.java delete mode 100644 java-streams/README.md delete mode 100644 java-streams/pom.xml delete mode 100644 java-streams/src/main/java/com/baeldung/reduce/application/Application.java delete mode 100644 java-streams/src/main/java/com/baeldung/reduce/utilities/NumberUtils.java delete mode 100644 java-streams/src/test/java/com/baeldung/reduce/tests/StreamReduceUnitTest.java diff --git a/core-java-modules/core-java-9-streams/README.md b/core-java-modules/core-java-9-streams/README.md new file mode 100644 index 0000000000..0ad8500689 --- /dev/null +++ b/core-java-modules/core-java-9-streams/README.md @@ -0,0 +1,6 @@ +## Core Java 9 streams + +This module contains articles about Java 9 streams + +### Relevant Articles: +- [How to Break from Java Stream forEach](https://www.baeldung.com/java-break-stream-foreach) diff --git a/core-java-modules/core-java-9-streams/pom.xml b/core-java-modules/core-java-9-streams/pom.xml new file mode 100644 index 0000000000..6e167caf9c --- /dev/null +++ b/core-java-modules/core-java-9-streams/pom.xml @@ -0,0 +1,31 @@ + + 4.0.0 + core-java-9-streams + 0.1.0-SNAPSHOT + core-java-9-streams + jar + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../../parent-java + + + + + + + core-java-9-streams + + + src/main/resources + true + + + + + + + diff --git a/java-streams-2/src/main/java/com/baeldung/breakforeach/CustomForEach.java b/core-java-modules/core-java-9-streams/src/main/java/com/baeldung/streams/breakforeach/CustomForEach.java similarity index 94% rename from java-streams-2/src/main/java/com/baeldung/breakforeach/CustomForEach.java rename to core-java-modules/core-java-9-streams/src/main/java/com/baeldung/streams/breakforeach/CustomForEach.java index 1f8866b16c..357571f092 100644 --- a/java-streams-2/src/main/java/com/baeldung/breakforeach/CustomForEach.java +++ b/core-java-modules/core-java-9-streams/src/main/java/com/baeldung/streams/breakforeach/CustomForEach.java @@ -1,4 +1,4 @@ -package com.baeldung.breakforeach; +package com.baeldung.streams.breakforeach; import java.util.Spliterator; import java.util.function.BiConsumer; diff --git a/java-streams-2/src/main/java/com/baeldung/breakforeach/CustomSpliterator.java b/core-java-modules/core-java-9-streams/src/main/java/com/baeldung/streams/breakforeach/CustomSpliterator.java similarity index 95% rename from java-streams-2/src/main/java/com/baeldung/breakforeach/CustomSpliterator.java rename to core-java-modules/core-java-9-streams/src/main/java/com/baeldung/streams/breakforeach/CustomSpliterator.java index cfe4bedac3..1844a3dc37 100644 --- a/java-streams-2/src/main/java/com/baeldung/breakforeach/CustomSpliterator.java +++ b/core-java-modules/core-java-9-streams/src/main/java/com/baeldung/streams/breakforeach/CustomSpliterator.java @@ -1,4 +1,4 @@ -package com.baeldung.breakforeach; +package com.baeldung.streams.breakforeach; import java.util.Spliterator; import java.util.Spliterators; diff --git a/java-streams-2/src/main/java/com/baeldung/breakforeach/CustomTakeWhile.java b/core-java-modules/core-java-9-streams/src/main/java/com/baeldung/streams/breakforeach/CustomTakeWhile.java similarity index 90% rename from java-streams-2/src/main/java/com/baeldung/breakforeach/CustomTakeWhile.java rename to core-java-modules/core-java-9-streams/src/main/java/com/baeldung/streams/breakforeach/CustomTakeWhile.java index 05574f9ae6..1852df3d9c 100644 --- a/java-streams-2/src/main/java/com/baeldung/breakforeach/CustomTakeWhile.java +++ b/core-java-modules/core-java-9-streams/src/main/java/com/baeldung/streams/breakforeach/CustomTakeWhile.java @@ -1,4 +1,4 @@ -package com.baeldung.breakforeach; +package com.baeldung.streams.breakforeach; import java.util.function.Predicate; import java.util.stream.Stream; diff --git a/java-streams-2/src/main/java/com/baeldung/breakforeach/TakeWhileExample.java b/core-java-modules/core-java-9-streams/src/main/java/com/baeldung/streams/breakforeach/TakeWhileExample.java similarity index 94% rename from java-streams-2/src/main/java/com/baeldung/breakforeach/TakeWhileExample.java rename to core-java-modules/core-java-9-streams/src/main/java/com/baeldung/streams/breakforeach/TakeWhileExample.java index 1838ae5fb7..3a16c9d691 100644 --- a/java-streams-2/src/main/java/com/baeldung/breakforeach/TakeWhileExample.java +++ b/core-java-modules/core-java-9-streams/src/main/java/com/baeldung/streams/breakforeach/TakeWhileExample.java @@ -1,4 +1,4 @@ -package com.baeldung.breakforeach; +package com.baeldung.streams.breakforeach; import java.util.List; import java.util.stream.Stream; diff --git a/java-streams-2/src/test/java/com/baeldung/breakforeach/BreakFromStreamForEachUnitTest.java b/core-java-modules/core-java-9-streams/src/test/java/com/baeldung/streams/breakforeach/BreakFromStreamForEachUnitTest.java similarity index 96% rename from java-streams-2/src/test/java/com/baeldung/breakforeach/BreakFromStreamForEachUnitTest.java rename to core-java-modules/core-java-9-streams/src/test/java/com/baeldung/streams/breakforeach/BreakFromStreamForEachUnitTest.java index 23653c0a39..66d293b3fa 100644 --- a/java-streams-2/src/test/java/com/baeldung/breakforeach/BreakFromStreamForEachUnitTest.java +++ b/core-java-modules/core-java-9-streams/src/test/java/com/baeldung/streams/breakforeach/BreakFromStreamForEachUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.breakforeach; +package com.baeldung.streams.breakforeach; import org.junit.Test; diff --git a/core-java-modules/core-java-streams-2/README.md b/core-java-modules/core-java-streams-2/README.md new file mode 100644 index 0000000000..2ff95045c3 --- /dev/null +++ b/core-java-modules/core-java-streams-2/README.md @@ -0,0 +1,16 @@ +## Core Java streams + +This module contains articles about the Stream API in Java. + +### Relevant Articles: +- [The Java 8 Stream API Tutorial](https://www.baeldung.com/java-8-streams) +- [Introduction to Java 8 Streams](https://www.baeldung.com/java-8-streams-introduction) +- [Java 8 Stream findFirst() vs. findAny()](https://www.baeldung.com/java-stream-findfirst-vs-findany) +- [Guide to Stream.reduce()](https://www.baeldung.com/java-stream-reduce) +- [Java IntStream Conversions](https://www.baeldung.com/java-intstream-convert) +- [Java 8 Streams peek() API](https://www.baeldung.com/java-streams-peek-api) +- [Working With Maps Using Streams](https://www.baeldung.com/java-maps-streams) +- [Collect a Java Stream to an Immutable Collection](https://www.baeldung.com/java-stream-immutable-collection) +- [How to Add a Single Element to a Stream](https://www.baeldung.com/java-stream-append-prepend) +- [Operating on and Removing an Item from Stream](https://www.baeldung.com/java-use-remove-item-stream) +- More articles: [[<-- prev>]](/../core-java-streams) [[next -->]](/../core-java-streams-3) diff --git a/java-streams-2/pom.xml b/core-java-modules/core-java-streams-2/pom.xml similarity index 84% rename from java-streams-2/pom.xml rename to core-java-modules/core-java-streams-2/pom.xml index 4cebd44427..20c028edaa 100644 --- a/java-streams-2/pom.xml +++ b/core-java-modules/core-java-streams-2/pom.xml @@ -1,49 +1,53 @@ - - - 4.0.0 - com.baeldung.javastreams2 - java-streams-2 - 1.0 - java-streams-2 - jar - - - com.baeldung - parent-java - 0.0.1-SNAPSHOT - ../parent-java - - - - - org.openjdk.jmh - jmh-core - ${jmh-core.version} - - - org.openjdk.jmh - jmh-generator-annprocess - ${jmh-generator.version} - - - junit - junit - ${junit.version} - test - jar - - - org.assertj - assertj-core - ${assertj.version} - test - - - - - UTF-8 - 1.9 - 1.9 - 3.11.1 - + + + 4.0.0 + core-java-streams-2 + 1.0 + core-java-streams-2 + jar + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../../parent-java + + + + + org.openjdk.jmh + jmh-core + ${jmh-core.version} + + + org.openjdk.jmh + jmh-generator-annprocess + ${jmh-generator.version} + + + log4j + log4j + ${log4j.version} + + + junit + junit + ${junit.version} + test + jar + + + org.assertj + assertj-core + ${assertj.version} + test + + + + + UTF-8 + 1.9 + 1.9 + 3.11.1 + \ No newline at end of file diff --git a/java-streams-2/src/main/java/com/baeldung/reduce/application/Application.java b/core-java-modules/core-java-streams-2/src/main/java/com/baeldung/reduce/application/Application.java similarity index 97% rename from java-streams-2/src/main/java/com/baeldung/reduce/application/Application.java rename to core-java-modules/core-java-streams-2/src/main/java/com/baeldung/reduce/application/Application.java index 79c557524d..62d080c32c 100644 --- a/java-streams-2/src/main/java/com/baeldung/reduce/application/Application.java +++ b/core-java-modules/core-java-streams-2/src/main/java/com/baeldung/reduce/application/Application.java @@ -1,39 +1,39 @@ -package com.baeldung.reduce.application; - -import com.baeldung.reduce.entities.User; -import com.baeldung.reduce.utilities.NumberUtils; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -public class Application { - - public static void main(String[] args) { - List numbers = Arrays.asList(1, 2, 3, 4, 5, 6); - int result1 = numbers.stream().reduce(0, (subtotal, element) -> subtotal + element); - System.out.println(result1); - - int result2 = numbers.stream().reduce(0, Integer::sum); - System.out.println(result2); - - List letters = Arrays.asList("a", "b", "c", "d", "e"); - String result3 = letters.stream().reduce("", (partialString, element) -> partialString + element); - System.out.println(result3); - - String result4 = letters.stream().reduce("", String::concat); - System.out.println(result4); - - String result5 = letters.stream().reduce("", (partialString, element) -> partialString.toUpperCase() + element.toUpperCase()); - System.out.println(result5); - - List users = Arrays.asList(new User("John", 30), new User("Julie", 35)); - int result6 = users.stream().reduce(0, (partialAgeResult, user) -> partialAgeResult + user.getAge(), Integer::sum); - System.out.println(result6); - - String result7 = letters.parallelStream().reduce("", String::concat); - System.out.println(result7); - - int result8 = users.parallelStream().reduce(0, (partialAgeResult, user) -> partialAgeResult + user.getAge(), Integer::sum); - System.out.println(result8); - } -} +package com.baeldung.reduce.application; + +import com.baeldung.reduce.entities.User; +import com.baeldung.reduce.utilities.NumberUtils; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class Application { + + public static void main(String[] args) { + List numbers = Arrays.asList(1, 2, 3, 4, 5, 6); + int result1 = numbers.stream().reduce(0, (subtotal, element) -> subtotal + element); + System.out.println(result1); + + int result2 = numbers.stream().reduce(0, Integer::sum); + System.out.println(result2); + + List letters = Arrays.asList("a", "b", "c", "d", "e"); + String result3 = letters.stream().reduce("", (partialString, element) -> partialString + element); + System.out.println(result3); + + String result4 = letters.stream().reduce("", String::concat); + System.out.println(result4); + + String result5 = letters.stream().reduce("", (partialString, element) -> partialString.toUpperCase() + element.toUpperCase()); + System.out.println(result5); + + List users = Arrays.asList(new User("John", 30), new User("Julie", 35)); + int result6 = users.stream().reduce(0, (partialAgeResult, user) -> partialAgeResult + user.getAge(), Integer::sum); + System.out.println(result6); + + String result7 = letters.parallelStream().reduce("", String::concat); + System.out.println(result7); + + int result8 = users.parallelStream().reduce(0, (partialAgeResult, user) -> partialAgeResult + user.getAge(), Integer::sum); + System.out.println(result8); + } +} diff --git a/java-streams-2/src/main/java/com/baeldung/reduce/benchmarks/JMHStreamReduceBenchMark.java b/core-java-modules/core-java-streams-2/src/main/java/com/baeldung/reduce/benchmarks/JMHStreamReduceBenchMark.java similarity index 97% rename from java-streams-2/src/main/java/com/baeldung/reduce/benchmarks/JMHStreamReduceBenchMark.java rename to core-java-modules/core-java-streams-2/src/main/java/com/baeldung/reduce/benchmarks/JMHStreamReduceBenchMark.java index af4a9276a9..ecb0347e96 100644 --- a/java-streams-2/src/main/java/com/baeldung/reduce/benchmarks/JMHStreamReduceBenchMark.java +++ b/core-java-modules/core-java-streams-2/src/main/java/com/baeldung/reduce/benchmarks/JMHStreamReduceBenchMark.java @@ -1,52 +1,52 @@ -package com.baeldung.reduce.benchmarks; - -import com.baeldung.reduce.entities.User; -import java.util.ArrayList; -import java.util.List; -import org.openjdk.jmh.annotations.Benchmark; -import org.openjdk.jmh.annotations.BenchmarkMode; -import org.openjdk.jmh.annotations.Mode; -import org.openjdk.jmh.annotations.Scope; -import org.openjdk.jmh.annotations.State; -import org.openjdk.jmh.runner.Runner; -import org.openjdk.jmh.runner.RunnerException; -import org.openjdk.jmh.runner.options.Options; -import org.openjdk.jmh.runner.options.OptionsBuilder; - -@State(Scope.Thread) -@BenchmarkMode(Mode.AverageTime) -public class JMHStreamReduceBenchMark { - - private final List userList = createUsers(); - - public static void main(String[] args) throws RunnerException { - - Options options = new OptionsBuilder() - .include(JMHStreamReduceBenchMark.class.getSimpleName()).threads(1) - .forks(1).shouldFailOnError(true).shouldDoGC(true) - .jvmArgs("-server").build(); - new Runner(options).run(); - } - - private List createUsers() { - List users = new ArrayList<>(); - for (int i = 0; i <= 1000000; i++) { - users.add(new User("John" + i, i)); - } - return users; - } - - @Benchmark - public Integer executeReduceOnParallelizedStream() { - return this.userList - .parallelStream() - .reduce(0, (partialAgeResult, user) -> partialAgeResult + user.getAge(), Integer::sum); - } - - @Benchmark - public Integer executeReduceOnSequentialStream() { - return this.userList - .stream() - .reduce(0, (partialAgeResult, user) -> partialAgeResult + user.getAge(), Integer::sum); - } -} +package com.baeldung.reduce.benchmarks; + +import com.baeldung.reduce.entities.User; +import java.util.ArrayList; +import java.util.List; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.RunnerException; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; + +@State(Scope.Thread) +@BenchmarkMode(Mode.AverageTime) +public class JMHStreamReduceBenchMark { + + private final List userList = createUsers(); + + public static void main(String[] args) throws RunnerException { + + Options options = new OptionsBuilder() + .include(JMHStreamReduceBenchMark.class.getSimpleName()).threads(1) + .forks(1).shouldFailOnError(true).shouldDoGC(true) + .jvmArgs("-server").build(); + new Runner(options).run(); + } + + private List createUsers() { + List users = new ArrayList<>(); + for (int i = 0; i <= 1000000; i++) { + users.add(new User("John" + i, i)); + } + return users; + } + + @Benchmark + public Integer executeReduceOnParallelizedStream() { + return this.userList + .parallelStream() + .reduce(0, (partialAgeResult, user) -> partialAgeResult + user.getAge(), Integer::sum); + } + + @Benchmark + public Integer executeReduceOnSequentialStream() { + return this.userList + .stream() + .reduce(0, (partialAgeResult, user) -> partialAgeResult + user.getAge(), Integer::sum); + } +} diff --git a/java-streams/src/main/java/com/baeldung/reduce/entities/User.java b/core-java-modules/core-java-streams-2/src/main/java/com/baeldung/reduce/entities/User.java similarity index 94% rename from java-streams/src/main/java/com/baeldung/reduce/entities/User.java rename to core-java-modules/core-java-streams-2/src/main/java/com/baeldung/reduce/entities/User.java index a17c6a02b6..6e0a529de6 100644 --- a/java-streams/src/main/java/com/baeldung/reduce/entities/User.java +++ b/core-java-modules/core-java-streams-2/src/main/java/com/baeldung/reduce/entities/User.java @@ -1,25 +1,25 @@ -package com.baeldung.reduce.entities; - -public class User { - - private final String name; - private final int age; - - public User(String name, int age) { - this.name = name; - this.age = age; - } - - public String getName() { - return name; - } - - public int getAge() { - return age; - } - - @Override - public String toString() { - return "User{" + "name=" + name + ", age=" + age + '}'; - } -} +package com.baeldung.reduce.entities; + +public class User { + + private final String name; + private final int age; + + public User(String name, int age) { + this.name = name; + this.age = age; + } + + public String getName() { + return name; + } + + public int getAge() { + return age; + } + + @Override + public String toString() { + return "User{" + "name=" + name + ", age=" + age + '}'; + } +} diff --git a/java-streams-2/src/main/java/com/baeldung/reduce/utilities/NumberUtils.java b/core-java-modules/core-java-streams-2/src/main/java/com/baeldung/reduce/utilities/NumberUtils.java similarity index 97% rename from java-streams-2/src/main/java/com/baeldung/reduce/utilities/NumberUtils.java rename to core-java-modules/core-java-streams-2/src/main/java/com/baeldung/reduce/utilities/NumberUtils.java index a7a4b8df29..38d5b50120 100644 --- a/java-streams-2/src/main/java/com/baeldung/reduce/utilities/NumberUtils.java +++ b/core-java-modules/core-java-streams-2/src/main/java/com/baeldung/reduce/utilities/NumberUtils.java @@ -1,52 +1,52 @@ -package com.baeldung.reduce.utilities; - -import java.util.List; -import java.util.function.BiFunction; -import java.util.logging.Level; -import java.util.logging.Logger; - -public abstract class NumberUtils { - - private static final Logger LOGGER = Logger.getLogger(NumberUtils.class.getName()); - - public static int divideListElements(List values, Integer divider) { - return values.stream() - .reduce(0, (a, b) -> { - try { - return a / divider + b / divider; - } catch (ArithmeticException e) { - LOGGER.log(Level.INFO, "Arithmetic Exception: Division by Zero"); - } - return 0; - }); - } - - public static int divideListElementsWithExtractedTryCatchBlock(List values, int divider) { - return values.stream().reduce(0, (a, b) -> divide(a, divider) + divide(b, divider)); - } - - public static int divideListElementsWithApplyFunctionMethod(List values, int divider) { - BiFunction division = (a, b) -> a / b; - return values.stream().reduce(0, (a, b) -> applyFunction(division, a, divider) + applyFunction(division, b, divider)); - } - - private static int divide(int value, int factor) { - int result = 0; - try { - result = value / factor; - } catch (ArithmeticException e) { - LOGGER.log(Level.INFO, "Arithmetic Exception: Division by Zero"); - } - return result; - } - - private static int applyFunction(BiFunction function, int a, int b) { - try { - return function.apply(a, b); - } - catch(Exception e) { - LOGGER.log(Level.INFO, "Exception thrown!"); - } - return 0; - } -} +package com.baeldung.reduce.utilities; + +import java.util.List; +import java.util.function.BiFunction; +import java.util.logging.Level; +import java.util.logging.Logger; + +public abstract class NumberUtils { + + private static final Logger LOGGER = Logger.getLogger(NumberUtils.class.getName()); + + public static int divideListElements(List values, Integer divider) { + return values.stream() + .reduce(0, (a, b) -> { + try { + return a / divider + b / divider; + } catch (ArithmeticException e) { + LOGGER.log(Level.INFO, "Arithmetic Exception: Division by Zero"); + } + return 0; + }); + } + + public static int divideListElementsWithExtractedTryCatchBlock(List values, int divider) { + return values.stream().reduce(0, (a, b) -> divide(a, divider) + divide(b, divider)); + } + + public static int divideListElementsWithApplyFunctionMethod(List values, int divider) { + BiFunction division = (a, b) -> a / b; + return values.stream().reduce(0, (a, b) -> applyFunction(division, a, divider) + applyFunction(division, b, divider)); + } + + private static int divide(int value, int factor) { + int result = 0; + try { + result = value / factor; + } catch (ArithmeticException e) { + LOGGER.log(Level.INFO, "Arithmetic Exception: Division by Zero"); + } + return result; + } + + private static int applyFunction(BiFunction function, int a, int b) { + try { + return function.apply(a, b); + } + catch(Exception e) { + LOGGER.log(Level.INFO, "Exception thrown!"); + } + return 0; + } +} diff --git a/java-streams/src/test/java/com/baeldung/stream/mycollectors/MyImmutableListCollector.java b/core-java-modules/core-java-streams-2/src/main/java/com/baeldung/streams/MyImmutableListCollector.java similarity index 93% rename from java-streams/src/test/java/com/baeldung/stream/mycollectors/MyImmutableListCollector.java rename to core-java-modules/core-java-streams-2/src/main/java/com/baeldung/streams/MyImmutableListCollector.java index cf6b3601c3..6d515bfb46 100644 --- a/java-streams/src/test/java/com/baeldung/stream/mycollectors/MyImmutableListCollector.java +++ b/core-java-modules/core-java-streams-2/src/main/java/com/baeldung/streams/MyImmutableListCollector.java @@ -1,4 +1,4 @@ -package com.baeldung.stream.mycollectors; +package com.baeldung.streams; import java.util.ArrayList; import java.util.Collections; diff --git a/java-streams/src/main/resources/logback.xml b/core-java-modules/core-java-streams-2/src/main/resources/logback.xml similarity index 100% rename from java-streams/src/main/resources/logback.xml rename to core-java-modules/core-java-streams-2/src/main/resources/logback.xml diff --git a/java-streams-2/src/test/java/com/baeldung/convert/intstreams/IntStreamsConversionsUnitTest.java b/core-java-modules/core-java-streams-2/src/test/java/com/baeldung/convert/intstreams/IntStreamsConversionsUnitTest.java similarity index 100% rename from java-streams-2/src/test/java/com/baeldung/convert/intstreams/IntStreamsConversionsUnitTest.java rename to core-java-modules/core-java-streams-2/src/test/java/com/baeldung/convert/intstreams/IntStreamsConversionsUnitTest.java diff --git a/java-streams-2/src/test/java/com/baeldung/reduce/tests/StreamReduceUnitTest.java b/core-java-modules/core-java-streams-2/src/test/java/com/baeldung/reduce/StreamReduceUnitTest.java similarity index 95% rename from java-streams-2/src/test/java/com/baeldung/reduce/tests/StreamReduceUnitTest.java rename to core-java-modules/core-java-streams-2/src/test/java/com/baeldung/reduce/StreamReduceUnitTest.java index 564d614017..21eedf953e 100644 --- a/java-streams-2/src/test/java/com/baeldung/reduce/tests/StreamReduceUnitTest.java +++ b/core-java-modules/core-java-streams-2/src/test/java/com/baeldung/reduce/StreamReduceUnitTest.java @@ -1,79 +1,80 @@ -package com.baeldung.reduce.tests; - -import com.baeldung.reduce.entities.User; -import com.baeldung.reduce.utilities.NumberUtils; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import static org.assertj.core.api.Assertions.assertThat; -import org.junit.Test; - -public class StreamReduceUnitTest { - - @Test - public void givenIntegerList_whenReduceWithSumAccumulatorLambda_thenCorrect() { - List numbers = Arrays.asList(1, 2, 3, 4, 5, 6); - int result = numbers.stream().reduce(0, (subtotal, element) -> subtotal + element); - assertThat(result).isEqualTo(21); - } - - @Test - public void givenIntegerList_whenReduceWithSumAccumulatorMethodReference_thenCorrect() { - List numbers = Arrays.asList(1, 2, 3, 4, 5, 6); - int result = numbers.stream().reduce(0, Integer::sum); - assertThat(result).isEqualTo(21); - } - - @Test - public void givenStringList_whenReduceWithConcatenatorAccumulatorLambda_thenCorrect() { - List letters = Arrays.asList("a", "b", "c", "d", "e"); - String result = letters.stream().reduce("", (partialString, element) -> partialString + element); - assertThat(result).isEqualTo("abcde"); - } - - @Test - public void givenStringList_whenReduceWithConcatenatorAccumulatorMethodReference_thenCorrect() { - List letters = Arrays.asList("a", "b", "c", "d", "e"); - String result = letters.stream().reduce("", String::concat); - assertThat(result).isEqualTo("abcde"); - } - - @Test - public void givenStringList_whenReduceWithUppercaseConcatenatorAccumulator_thenCorrect() { - List letters = Arrays.asList("a", "b", "c", "d", "e"); - String result = letters.stream().reduce("", (partialString, element) -> partialString.toUpperCase() + element.toUpperCase()); - assertThat(result).isEqualTo("ABCDE"); - } - - @Test - public void givenUserList_whenReduceWithAgeAccumulatorAndSumCombiner_thenCorrect() { - List users = Arrays.asList(new User("John", 30), new User("Julie", 35)); - int result = users.stream().reduce(0, (partialAgeResult, user) -> partialAgeResult + user.getAge(), Integer::sum); - assertThat(result).isEqualTo(65); - } - - @Test - public void givenStringList_whenReduceWithParallelStream_thenCorrect() { - List letters = Arrays.asList("a", "b", "c", "d", "e"); - String result = letters.parallelStream().reduce("", String::concat); - assertThat(result).isEqualTo("abcde"); - } - - @Test - public void givenNumberUtilsClass_whenCalledDivideListElements_thenCorrect() { - List numbers = Arrays.asList(1, 2, 3, 4, 5, 6); - assertThat(NumberUtils.divideListElements(numbers, 1)).isEqualTo(21); - } - - @Test - public void givenNumberUtilsClass_whenCalledDivideListElementsWithExtractedTryCatchBlock_thenCorrect() { - List numbers = Arrays.asList(1, 2, 3, 4, 5, 6); - assertThat(NumberUtils.divideListElementsWithExtractedTryCatchBlock(numbers, 1)).isEqualTo(21); - } - - @Test - public void givenStream_whneCalleddivideListElementsWithApplyFunctionMethod_thenCorrect() { - List numbers = Arrays.asList(1, 2, 3, 4, 5, 6); - assertThat(NumberUtils.divideListElementsWithApplyFunctionMethod(numbers, 1)).isEqualTo(21); - } -} +package com.baeldung.reduce; + +import com.baeldung.reduce.entities.User; +import com.baeldung.reduce.utilities.NumberUtils; +import org.junit.Test; + +import java.util.Arrays; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +public class StreamReduceUnitTest { + + @Test + public void givenIntegerList_whenReduceWithSumAccumulatorLambda_thenCorrect() { + List numbers = Arrays.asList(1, 2, 3, 4, 5, 6); + int result = numbers.stream().reduce(0, (subtotal, element) -> subtotal + element); + assertThat(result).isEqualTo(21); + } + + @Test + public void givenIntegerList_whenReduceWithSumAccumulatorMethodReference_thenCorrect() { + List numbers = Arrays.asList(1, 2, 3, 4, 5, 6); + int result = numbers.stream().reduce(0, Integer::sum); + assertThat(result).isEqualTo(21); + } + + @Test + public void givenStringList_whenReduceWithConcatenatorAccumulatorLambda_thenCorrect() { + List letters = Arrays.asList("a", "b", "c", "d", "e"); + String result = letters.stream().reduce("", (partialString, element) -> partialString + element); + assertThat(result).isEqualTo("abcde"); + } + + @Test + public void givenStringList_whenReduceWithConcatenatorAccumulatorMethodReference_thenCorrect() { + List letters = Arrays.asList("a", "b", "c", "d", "e"); + String result = letters.stream().reduce("", String::concat); + assertThat(result).isEqualTo("abcde"); + } + + @Test + public void givenStringList_whenReduceWithUppercaseConcatenatorAccumulator_thenCorrect() { + List letters = Arrays.asList("a", "b", "c", "d", "e"); + String result = letters.stream().reduce("", (partialString, element) -> partialString.toUpperCase() + element.toUpperCase()); + assertThat(result).isEqualTo("ABCDE"); + } + + @Test + public void givenUserList_whenReduceWithAgeAccumulatorAndSumCombiner_thenCorrect() { + List users = Arrays.asList(new User("John", 30), new User("Julie", 35)); + int result = users.stream().reduce(0, (partialAgeResult, user) -> partialAgeResult + user.getAge(), Integer::sum); + assertThat(result).isEqualTo(65); + } + + @Test + public void givenStringList_whenReduceWithParallelStream_thenCorrect() { + List letters = Arrays.asList("a", "b", "c", "d", "e"); + String result = letters.parallelStream().reduce("", String::concat); + assertThat(result).isEqualTo("abcde"); + } + + @Test + public void givenNumberUtilsClass_whenCalledDivideListElements_thenCorrect() { + List numbers = Arrays.asList(1, 2, 3, 4, 5, 6); + assertThat(NumberUtils.divideListElements(numbers, 1)).isEqualTo(21); + } + + @Test + public void givenNumberUtilsClass_whenCalledDivideListElementsWithExtractedTryCatchBlock_thenCorrect() { + List numbers = Arrays.asList(1, 2, 3, 4, 5, 6); + assertThat(NumberUtils.divideListElementsWithExtractedTryCatchBlock(numbers, 1)).isEqualTo(21); + } + + @Test + public void givenStream_whneCalleddivideListElementsWithApplyFunctionMethod_thenCorrect() { + List numbers = Arrays.asList(1, 2, 3, 4, 5, 6); + assertThat(NumberUtils.divideListElementsWithApplyFunctionMethod(numbers, 1)).isEqualTo(21); + } +} diff --git a/java-streams/src/main/java/com/baeldung/java_8_features/Detail.java b/core-java-modules/core-java-streams-2/src/test/java/com/baeldung/streams/Detail.java similarity index 85% rename from java-streams/src/main/java/com/baeldung/java_8_features/Detail.java rename to core-java-modules/core-java-streams-2/src/test/java/com/baeldung/streams/Detail.java index 811937dba7..d2f5774b24 100644 --- a/java-streams/src/main/java/com/baeldung/java_8_features/Detail.java +++ b/core-java-modules/core-java-streams-2/src/test/java/com/baeldung/streams/Detail.java @@ -1,4 +1,4 @@ -package com.baeldung.java_8_features; +package com.baeldung.streams; import java.util.Arrays; import java.util.List; diff --git a/java-streams/src/test/java/com/baeldung/java8/streams/Java8FindAnyFindFirstUnitTest.java b/core-java-modules/core-java-streams-2/src/test/java/com/baeldung/streams/Java8FindAnyFindFirstUnitTest.java similarity index 97% rename from java-streams/src/test/java/com/baeldung/java8/streams/Java8FindAnyFindFirstUnitTest.java rename to core-java-modules/core-java-streams-2/src/test/java/com/baeldung/streams/Java8FindAnyFindFirstUnitTest.java index 5f52fe375e..934d7b3542 100644 --- a/java-streams/src/test/java/com/baeldung/java8/streams/Java8FindAnyFindFirstUnitTest.java +++ b/core-java-modules/core-java-streams-2/src/test/java/com/baeldung/streams/Java8FindAnyFindFirstUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.java8.streams; +package com.baeldung.streams; import org.junit.Test; diff --git a/java-streams/src/test/java/com/baeldung/java8/streams/Java8StreamApiUnitTest.java b/core-java-modules/core-java-streams-2/src/test/java/com/baeldung/streams/Java8StreamApiUnitTest.java similarity index 99% rename from java-streams/src/test/java/com/baeldung/java8/streams/Java8StreamApiUnitTest.java rename to core-java-modules/core-java-streams-2/src/test/java/com/baeldung/streams/Java8StreamApiUnitTest.java index 75cfbc049f..c4e1f2b3cb 100644 --- a/java-streams/src/test/java/com/baeldung/java8/streams/Java8StreamApiUnitTest.java +++ b/core-java-modules/core-java-streams-2/src/test/java/com/baeldung/streams/Java8StreamApiUnitTest.java @@ -1,6 +1,5 @@ -package com.baeldung.java8.streams; +package com.baeldung.streams; -import com.baeldung.stream.Product; import org.junit.Before; import org.junit.Test; import org.slf4j.Logger; diff --git a/java-streams/src/test/java/com/baeldung/java8/Java8StreamsUnitTest.java b/core-java-modules/core-java-streams-2/src/test/java/com/baeldung/streams/Java8StreamsUnitTest.java similarity index 97% rename from java-streams/src/test/java/com/baeldung/java8/Java8StreamsUnitTest.java rename to core-java-modules/core-java-streams-2/src/test/java/com/baeldung/streams/Java8StreamsUnitTest.java index e40f9f9506..f46fa79b08 100644 --- a/java-streams/src/test/java/com/baeldung/java8/Java8StreamsUnitTest.java +++ b/core-java-modules/core-java-streams-2/src/test/java/com/baeldung/streams/Java8StreamsUnitTest.java @@ -1,6 +1,5 @@ -package com.baeldung.java8; +package com.baeldung.streams; -import com.baeldung.java_8_features.Detail; import org.junit.Before; import org.junit.Test; diff --git a/java-streams/src/test/java/com/baeldung/stream/PeekUnitTest.java b/core-java-modules/core-java-streams-2/src/test/java/com/baeldung/streams/PeekUnitTest.java similarity index 98% rename from java-streams/src/test/java/com/baeldung/stream/PeekUnitTest.java rename to core-java-modules/core-java-streams-2/src/test/java/com/baeldung/streams/PeekUnitTest.java index a3a2816e9c..97af4149d3 100644 --- a/java-streams/src/test/java/com/baeldung/stream/PeekUnitTest.java +++ b/core-java-modules/core-java-streams-2/src/test/java/com/baeldung/streams/PeekUnitTest.java @@ -1,13 +1,13 @@ -package com.baeldung.stream; +package com.baeldung.streams; -import static org.assertj.core.api.Assertions.assertThat; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import java.io.StringWriter; import java.util.stream.Collectors; import java.util.stream.Stream; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; +import static org.assertj.core.api.Assertions.assertThat; public class PeekUnitTest { diff --git a/java-streams/src/main/java/com/baeldung/stream/Product.java b/core-java-modules/core-java-streams-2/src/test/java/com/baeldung/streams/Product.java similarity index 96% rename from java-streams/src/main/java/com/baeldung/stream/Product.java rename to core-java-modules/core-java-streams-2/src/test/java/com/baeldung/streams/Product.java index e99a969b81..7883f055a1 100644 --- a/java-streams/src/main/java/com/baeldung/stream/Product.java +++ b/core-java-modules/core-java-streams-2/src/test/java/com/baeldung/streams/Product.java @@ -1,4 +1,4 @@ -package com.baeldung.stream; +package com.baeldung.streams; import java.util.List; import java.util.stream.Stream; diff --git a/java-streams/src/test/java/com/baeldung/stream/StreamAddUnitTest.java b/core-java-modules/core-java-streams-2/src/test/java/com/baeldung/streams/StreamAddUnitTest.java similarity index 97% rename from java-streams/src/test/java/com/baeldung/stream/StreamAddUnitTest.java rename to core-java-modules/core-java-streams-2/src/test/java/com/baeldung/streams/StreamAddUnitTest.java index d0745b8bc9..1fada26de5 100644 --- a/java-streams/src/test/java/com/baeldung/stream/StreamAddUnitTest.java +++ b/core-java-modules/core-java-streams-2/src/test/java/com/baeldung/streams/StreamAddUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.stream; +package com.baeldung.streams; import org.junit.Test; diff --git a/java-streams/src/test/java/com/baeldung/stream/StreamMapUnitTest.java b/core-java-modules/core-java-streams-2/src/test/java/com/baeldung/streams/StreamMapUnitTest.java similarity index 96% rename from java-streams/src/test/java/com/baeldung/stream/StreamMapUnitTest.java rename to core-java-modules/core-java-streams-2/src/test/java/com/baeldung/streams/StreamMapUnitTest.java index 5cb2a274d1..509a3a3569 100644 --- a/java-streams/src/test/java/com/baeldung/stream/StreamMapUnitTest.java +++ b/core-java-modules/core-java-streams-2/src/test/java/com/baeldung/streams/StreamMapUnitTest.java @@ -1,16 +1,13 @@ -package com.baeldung.stream; +package com.baeldung.streams; import org.junit.Before; import org.junit.Test; -import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; -import java.util.Set; import java.util.stream.Collectors; -import java.util.stream.Stream; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; diff --git a/java-streams/src/test/java/com/baeldung/stream/StreamToImmutableUnitTest.java b/core-java-modules/core-java-streams-2/src/test/java/com/baeldung/streams/StreamToImmutableUnitTest.java similarity index 81% rename from java-streams/src/test/java/com/baeldung/stream/StreamToImmutableUnitTest.java rename to core-java-modules/core-java-streams-2/src/test/java/com/baeldung/streams/StreamToImmutableUnitTest.java index bd540201d2..e5339d8327 100644 --- a/java-streams/src/test/java/com/baeldung/stream/StreamToImmutableUnitTest.java +++ b/core-java-modules/core-java-streams-2/src/test/java/com/baeldung/streams/StreamToImmutableUnitTest.java @@ -1,20 +1,12 @@ -package com.baeldung.stream; - -import static java.util.stream.Collectors.collectingAndThen; -import static java.util.stream.Collectors.toList; -import static java.util.stream.Collectors.toSet; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.LinkedList; -import java.util.List; -import java.util.stream.IntStream; +package com.baeldung.streams; +import com.google.common.collect.ImmutableList; import org.junit.Test; -import com.baeldung.stream.mycollectors.MyImmutableListCollector; -import com.google.common.collect.ImmutableList; +import java.util.*; +import java.util.stream.IntStream; + +import static java.util.stream.Collectors.*; public class StreamToImmutableUnitTest { diff --git a/java-streams/src/test/java/com/baeldung/stream/StreamOperateAndRemoveUnitTest.java b/core-java-modules/core-java-streams-2/src/test/java/com/baeldung/streams/removeitem/StreamOperateAndRemoveUnitTest.java similarity index 98% rename from java-streams/src/test/java/com/baeldung/stream/StreamOperateAndRemoveUnitTest.java rename to core-java-modules/core-java-streams-2/src/test/java/com/baeldung/streams/removeitem/StreamOperateAndRemoveUnitTest.java index c5aa9a1651..194d0bd4d6 100644 --- a/java-streams/src/test/java/com/baeldung/stream/StreamOperateAndRemoveUnitTest.java +++ b/core-java-modules/core-java-streams-2/src/test/java/com/baeldung/streams/removeitem/StreamOperateAndRemoveUnitTest.java @@ -1,9 +1,4 @@ -package com.baeldung.stream; - -import java.util.ArrayList; -import java.util.List; -import java.util.function.Predicate; -import java.util.stream.Collectors; +package com.baeldung.streams.removeitem; import org.junit.Assert; import org.junit.Before; @@ -11,6 +6,11 @@ import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.ArrayList; +import java.util.List; +import java.util.function.Predicate; +import java.util.stream.Collectors; + public class StreamOperateAndRemoveUnitTest { private List itemList; diff --git a/core-java-modules/core-java-streams-3/README.md b/core-java-modules/core-java-streams-3/README.md new file mode 100644 index 0000000000..4b2c9ed94c --- /dev/null +++ b/core-java-modules/core-java-streams-3/README.md @@ -0,0 +1,11 @@ +## Core Java streams + +This module contains articles about the Stream API in Java. + +### Relevant Articles: +- [The Difference Between map() and flatMap()](https://www.baeldung.com/java-difference-map-and-flatmap) +- [How to Use if/else Logic in Java 8 Streams](https://www.baeldung.com/java-8-streams-if-else-logic) +- [The Difference Between Collection.stream().forEach() and Collection.forEach()](https://www.baeldung.com/java-collection-stream-foreach) +- [Guide to Java 8’s Collectors](https://www.baeldung.com/java-8-collectors) +- [Primitive Type Streams in Java 8](https://www.baeldung.com/java-8-primitive-streams) +- More articles: [[<-- prev>]](/../core-java-streams-2) \ No newline at end of file diff --git a/core-java-modules/core-java-streams-3/pom.xml b/core-java-modules/core-java-streams-3/pom.xml new file mode 100644 index 0000000000..b5b21a4368 --- /dev/null +++ b/core-java-modules/core-java-streams-3/pom.xml @@ -0,0 +1,53 @@ + + 4.0.0 + core-java-streams-3 + 0.1.0-SNAPSHOT + core-java-streams-3 + jar + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../../parent-java + + + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + org.projectlombok + lombok + ${lombok.version} + provided + + + + org.assertj + assertj-core + ${assertj.version} + test + + + + + core-java-streams-3 + + + src/main/resources + true + + + + + + + 3.6.1 + + 2.22.1 + + diff --git a/core-java-modules/core-java-streams/src/main/java/com/baeldung/forEach/ReverseList.java b/core-java-modules/core-java-streams-3/src/main/java/com/baeldung/streams/forEach/ReverseList.java similarity index 98% rename from core-java-modules/core-java-streams/src/main/java/com/baeldung/forEach/ReverseList.java rename to core-java-modules/core-java-streams-3/src/main/java/com/baeldung/streams/forEach/ReverseList.java index b2ce77a9f6..c4128d9b72 100644 --- a/core-java-modules/core-java-streams/src/main/java/com/baeldung/forEach/ReverseList.java +++ b/core-java-modules/core-java-streams-3/src/main/java/com/baeldung/streams/forEach/ReverseList.java @@ -1,4 +1,4 @@ -package com.baeldung.forEach; +package com.baeldung.streams.forEach; import java.util.ArrayList; import java.util.Arrays; diff --git a/java-streams/src/main/java/com/baeldung/stream/PrimitiveStreams.java b/core-java-modules/core-java-streams-3/src/main/java/com/baeldung/streams/primitivestreams/PrimitiveStreams.java similarity index 90% rename from java-streams/src/main/java/com/baeldung/stream/PrimitiveStreams.java rename to core-java-modules/core-java-streams-3/src/main/java/com/baeldung/streams/primitivestreams/PrimitiveStreams.java index b0afb65a35..fb2001f10f 100644 --- a/java-streams/src/main/java/com/baeldung/stream/PrimitiveStreams.java +++ b/core-java-modules/core-java-streams-3/src/main/java/com/baeldung/streams/primitivestreams/PrimitiveStreams.java @@ -1,4 +1,4 @@ -package com.baeldung.stream; +package com.baeldung.streams.primitivestreams; import java.util.Arrays; import java.util.stream.IntStream; diff --git a/core-java-modules/core-java-streams-3/src/main/resources/logback.xml b/core-java-modules/core-java-streams-3/src/main/resources/logback.xml new file mode 100644 index 0000000000..7d900d8ea8 --- /dev/null +++ b/core-java-modules/core-java-streams-3/src/main/resources/logback.xml @@ -0,0 +1,13 @@ + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + \ No newline at end of file diff --git a/core-java-modules/core-java-streams/src/test/java/com/baeldung/collectors/Java8CollectorsUnitTest.java b/core-java-modules/core-java-streams-3/src/test/java/com/baeldung/streams/collectors/Java8CollectorsUnitTest.java similarity index 99% rename from core-java-modules/core-java-streams/src/test/java/com/baeldung/collectors/Java8CollectorsUnitTest.java rename to core-java-modules/core-java-streams-3/src/test/java/com/baeldung/streams/collectors/Java8CollectorsUnitTest.java index e742635758..6afc9f4182 100644 --- a/core-java-modules/core-java-streams/src/test/java/com/baeldung/collectors/Java8CollectorsUnitTest.java +++ b/core-java-modules/core-java-streams-3/src/test/java/com/baeldung/streams/collectors/Java8CollectorsUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.collectors; +package com.baeldung.streams.collectors; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; diff --git a/core-java-modules/core-java-streams/src/test/java/com/baeldung/stream/conditional/StreamForEachIfElseUnitTest.java b/core-java-modules/core-java-streams-3/src/test/java/com/baeldung/streams/conditional/StreamForEachIfElseUnitTest.java similarity index 96% rename from core-java-modules/core-java-streams/src/test/java/com/baeldung/stream/conditional/StreamForEachIfElseUnitTest.java rename to core-java-modules/core-java-streams-3/src/test/java/com/baeldung/streams/conditional/StreamForEachIfElseUnitTest.java index b5d26eb6a8..a49a092864 100644 --- a/core-java-modules/core-java-streams/src/test/java/com/baeldung/stream/conditional/StreamForEachIfElseUnitTest.java +++ b/core-java-modules/core-java-streams-3/src/test/java/com/baeldung/streams/conditional/StreamForEachIfElseUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.stream.conditional; +package com.baeldung.streams.conditional; import java.util.Arrays; import java.util.List; diff --git a/java-streams/src/test/java/com/baeldung/stream/PrimitiveStreamsUnitTest.java b/core-java-modules/core-java-streams-3/src/test/java/com/baeldung/streams/primitivestreams/PrimitiveStreamsUnitTest.java similarity index 98% rename from java-streams/src/test/java/com/baeldung/stream/PrimitiveStreamsUnitTest.java rename to core-java-modules/core-java-streams-3/src/test/java/com/baeldung/streams/primitivestreams/PrimitiveStreamsUnitTest.java index 67954f0bba..18966425e4 100644 --- a/java-streams/src/test/java/com/baeldung/stream/PrimitiveStreamsUnitTest.java +++ b/core-java-modules/core-java-streams-3/src/test/java/com/baeldung/streams/primitivestreams/PrimitiveStreamsUnitTest.java @@ -1,14 +1,14 @@ -package com.baeldung.stream; +package com.baeldung.streams.primitivestreams; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import org.junit.Test; import java.util.List; import java.util.stream.Collectors; import java.util.stream.IntStream; import java.util.stream.Stream; -import org.junit.Test; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; public class PrimitiveStreamsUnitTest { diff --git a/java-streams/.gitignore b/core-java-modules/core-java-streams/.gitignore similarity index 100% rename from java-streams/.gitignore rename to core-java-modules/core-java-streams/.gitignore diff --git a/core-java-modules/core-java-streams/README.md b/core-java-modules/core-java-streams/README.md index e97641c221..e556c231fe 100644 --- a/core-java-modules/core-java-streams/README.md +++ b/core-java-modules/core-java-streams/README.md @@ -1,9 +1,16 @@ -========= +## Core Java streams -## Core Java 8 Cookbooks and Examples +This module contains articles about the Stream API in Java. ### Relevant Articles: -- [The Difference Between map() and flatMap()](https://www.baeldung.com/java-difference-map-and-flatmap) -- [How to Use if/else Logic in Java 8 Streams](https://www.baeldung.com/java-8-streams-if-else-logic) -- [The Difference Between Collection.stream().forEach() and Collection.forEach()](https://www.baeldung.com/java-collection-stream-foreach) -- [Guide to Java 8’s Collectors](https://www.baeldung.com/java-8-collectors) \ No newline at end of file +- [Java 8 and Infinite Streams](https://www.baeldung.com/java-inifinite-streams) +- [How to Get the Last Element of a Stream in Java?](https://www.baeldung.com/java-stream-last-element) +- [“Stream has already been operated upon or closed” Exception in Java](https://www.baeldung.com/java-stream-operated-upon-or-closed-exception) +- [Iterable to Stream in Java](https://www.baeldung.com/java-iterable-to-stream) +- [How to Iterate Over a Stream With Indices](https://www.baeldung.com/java-stream-indices) +- [Stream Ordering in Java](https://www.baeldung.com/java-stream-ordering) +- [Introduction to Protonpack](https://www.baeldung.com/java-protonpack) +- [Java Stream Filter with Lambda Expression](https://www.baeldung.com/java-stream-filter-lambda) +- [Counting Matches on a Stream Filter](https://www.baeldung.com/java-stream-filter-count) +- [Summing Numbers with Java Streams](https://www.baeldung.com/java-stream-sum) +- More articles: [[next -->]](/../core-java-streams-2) \ No newline at end of file diff --git a/core-java-modules/core-java-streams/pom.xml b/core-java-modules/core-java-streams/pom.xml index 96d97f3759..9b68c8dded 100644 --- a/core-java-modules/core-java-streams/pom.xml +++ b/core-java-modules/core-java-streams/pom.xml @@ -14,6 +14,34 @@ + + + org.openjdk.jmh + jmh-core + ${jmh-core.version} + + + org.openjdk.jmh + jmh-generator-annprocess + ${jmh-generator.version} + provided + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + log4j + log4j + ${log4j.version} + + + org.projectlombok + lombok + ${lombok.version} + provided + org.assertj @@ -21,6 +49,36 @@ ${assertj.version} test + + com.codepoetics + protonpack + ${protonpack.version} + + + io.vavr + vavr + ${vavr.version} + + + one.util + streamex + ${streamex.version} + + + org.aspectj + aspectjrt + ${asspectj.version} + + + org.aspectj + aspectjweaver + ${asspectj.version} + + + pl.touk + throwing-function + ${throwing-function.version} + @@ -31,10 +89,33 @@ true + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + ${maven.compiler.source} + ${maven.compiler.target} + -parameters + + + + + 0.9.0 + 1.15 + 0.6.5 + 2.10 + 1.3 - 3.6.1 + 3.11.1 + 1.8.9 + 3.1 + 1.8 + 1.8 diff --git a/java-streams/src/main/java/com/baeldung/stream/InfiniteStreams.java b/core-java-modules/core-java-streams/src/main/java/com/baeldung/stream/InfiniteStreams.java similarity index 100% rename from java-streams/src/main/java/com/baeldung/stream/InfiniteStreams.java rename to core-java-modules/core-java-streams/src/main/java/com/baeldung/stream/InfiniteStreams.java diff --git a/java-streams/src/main/java/com/baeldung/stream/StreamApi.java b/core-java-modules/core-java-streams/src/main/java/com/baeldung/stream/StreamApi.java similarity index 100% rename from java-streams/src/main/java/com/baeldung/stream/StreamApi.java rename to core-java-modules/core-java-streams/src/main/java/com/baeldung/stream/StreamApi.java diff --git a/java-streams/src/main/java/com/baeldung/stream/StreamIndices.java b/core-java-modules/core-java-streams/src/main/java/com/baeldung/stream/StreamIndices.java similarity index 100% rename from java-streams/src/main/java/com/baeldung/stream/StreamIndices.java rename to core-java-modules/core-java-streams/src/main/java/com/baeldung/stream/StreamIndices.java diff --git a/java-streams/src/main/java/com/baeldung/stream/filter/Customer.java b/core-java-modules/core-java-streams/src/main/java/com/baeldung/stream/filter/Customer.java similarity index 100% rename from java-streams/src/main/java/com/baeldung/stream/filter/Customer.java rename to core-java-modules/core-java-streams/src/main/java/com/baeldung/stream/filter/Customer.java diff --git a/java-streams/src/main/java/com/baeldung/stream/sum/ArithmeticUtils.java b/core-java-modules/core-java-streams/src/main/java/com/baeldung/stream/sum/ArithmeticUtils.java similarity index 94% rename from java-streams/src/main/java/com/baeldung/stream/sum/ArithmeticUtils.java rename to core-java-modules/core-java-streams/src/main/java/com/baeldung/stream/sum/ArithmeticUtils.java index 3170b1fb31..c44aaf8005 100644 --- a/java-streams/src/main/java/com/baeldung/stream/sum/ArithmeticUtils.java +++ b/core-java-modules/core-java-streams/src/main/java/com/baeldung/stream/sum/ArithmeticUtils.java @@ -1,8 +1,8 @@ -package com.baeldung.stream.sum; - -public class ArithmeticUtils { - - public static int add(int a, int b) { - return a + b; - } -} +package com.baeldung.stream.sum; + +public class ArithmeticUtils { + + public static int add(int a, int b) { + return a + b; + } +} diff --git a/java-streams/src/main/java/com/baeldung/stream/sum/Item.java b/core-java-modules/core-java-streams/src/main/java/com/baeldung/stream/sum/Item.java similarity index 94% rename from java-streams/src/main/java/com/baeldung/stream/sum/Item.java rename to core-java-modules/core-java-streams/src/main/java/com/baeldung/stream/sum/Item.java index 2f162d6eda..28a1737db8 100644 --- a/java-streams/src/main/java/com/baeldung/stream/sum/Item.java +++ b/core-java-modules/core-java-streams/src/main/java/com/baeldung/stream/sum/Item.java @@ -1,31 +1,31 @@ -package com.baeldung.stream.sum; - -public class Item { - - private int id; - private Integer price; - - public Item(int id, Integer price) { - super(); - this.id = id; - this.price = price; - } - - // Standard getters and setters - public long getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public Integer getPrice() { - return price; - } - - public void setPrice(Integer price) { - this.price = price; - } - -} +package com.baeldung.stream.sum; + +public class Item { + + private int id; + private Integer price; + + public Item(int id, Integer price) { + super(); + this.id = id; + this.price = price; + } + + // Standard getters and setters + public long getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public Integer getPrice() { + return price; + } + + public void setPrice(Integer price) { + this.price = price; + } + +} diff --git a/java-streams/src/main/java/com/baeldung/stream/sum/StreamSumCalculator.java b/core-java-modules/core-java-streams/src/main/java/com/baeldung/stream/sum/StreamSumCalculator.java similarity index 96% rename from java-streams/src/main/java/com/baeldung/stream/sum/StreamSumCalculator.java rename to core-java-modules/core-java-streams/src/main/java/com/baeldung/stream/sum/StreamSumCalculator.java index 2f63cf8629..ea6459d360 100644 --- a/java-streams/src/main/java/com/baeldung/stream/sum/StreamSumCalculator.java +++ b/core-java-modules/core-java-streams/src/main/java/com/baeldung/stream/sum/StreamSumCalculator.java @@ -1,59 +1,59 @@ -package com.baeldung.stream.sum; - -import java.util.Arrays; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -public class StreamSumCalculator { - - public static Integer getSumUsingCustomizedAccumulator(List integers) { - return integers.stream() - .reduce(0, ArithmeticUtils::add); - - } - - public static Integer getSumUsingJavaAccumulator(List integers) { - return integers.stream() - .reduce(0, Integer::sum); - - } - - public static Integer getSumUsingReduce(List integers) { - return integers.stream() - .reduce(0, (a, b) -> a + b); - - } - - public static Integer getSumUsingCollect(List integers) { - - return integers.stream() - .collect(Collectors.summingInt(Integer::intValue)); - - } - - public static Integer getSumUsingSum(List integers) { - - return integers.stream() - .mapToInt(Integer::intValue) - .sum(); - } - - public static Integer getSumOfMapValues(Map map) { - - return map.values() - .stream() - .mapToInt(Integer::valueOf) - .sum(); - } - - public static Integer getSumIntegersFromString(String str) { - - Integer sum = Arrays.stream(str.split(" ")) - .filter((s) -> s.matches("\\d+")) - .mapToInt(Integer::valueOf) - .sum(); - - return sum; - } -} +package com.baeldung.stream.sum; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +public class StreamSumCalculator { + + public static Integer getSumUsingCustomizedAccumulator(List integers) { + return integers.stream() + .reduce(0, ArithmeticUtils::add); + + } + + public static Integer getSumUsingJavaAccumulator(List integers) { + return integers.stream() + .reduce(0, Integer::sum); + + } + + public static Integer getSumUsingReduce(List integers) { + return integers.stream() + .reduce(0, (a, b) -> a + b); + + } + + public static Integer getSumUsingCollect(List integers) { + + return integers.stream() + .collect(Collectors.summingInt(Integer::intValue)); + + } + + public static Integer getSumUsingSum(List integers) { + + return integers.stream() + .mapToInt(Integer::intValue) + .sum(); + } + + public static Integer getSumOfMapValues(Map map) { + + return map.values() + .stream() + .mapToInt(Integer::valueOf) + .sum(); + } + + public static Integer getSumIntegersFromString(String str) { + + Integer sum = Arrays.stream(str.split(" ")) + .filter((s) -> s.matches("\\d+")) + .mapToInt(Integer::valueOf) + .sum(); + + return sum; + } +} diff --git a/java-streams/src/main/java/com/baeldung/stream/sum/StreamSumCalculatorWithObject.java b/core-java-modules/core-java-streams/src/main/java/com/baeldung/stream/sum/StreamSumCalculatorWithObject.java similarity index 96% rename from java-streams/src/main/java/com/baeldung/stream/sum/StreamSumCalculatorWithObject.java rename to core-java-modules/core-java-streams/src/main/java/com/baeldung/stream/sum/StreamSumCalculatorWithObject.java index b83616928e..8a162429d2 100644 --- a/java-streams/src/main/java/com/baeldung/stream/sum/StreamSumCalculatorWithObject.java +++ b/core-java-modules/core-java-streams/src/main/java/com/baeldung/stream/sum/StreamSumCalculatorWithObject.java @@ -1,38 +1,38 @@ -package com.baeldung.stream.sum; - -import java.util.List; -import java.util.stream.Collectors; - -public class StreamSumCalculatorWithObject { - - public static Integer getSumUsingCustomizedAccumulator(List items) { - return items.stream() - .map(x -> x.getPrice()) - .reduce(0, ArithmeticUtils::add); - } - - public static Integer getSumUsingJavaAccumulator(List items) { - return items.stream() - .map(x -> x.getPrice()) - .reduce(0, Integer::sum); - } - - public static Integer getSumUsingReduce(List items) { - return items.stream() - .map(item -> item.getPrice()) - .reduce(0, (a, b) -> a + b); - } - - public static Integer getSumUsingCollect(List items) { - return items.stream() - .map(x -> x.getPrice()) - .collect(Collectors.summingInt(Integer::intValue)); - } - - public static Integer getSumUsingSum(List items) { - return items.stream() - .mapToInt(x -> x.getPrice()) - .sum(); - } - -} +package com.baeldung.stream.sum; + +import java.util.List; +import java.util.stream.Collectors; + +public class StreamSumCalculatorWithObject { + + public static Integer getSumUsingCustomizedAccumulator(List items) { + return items.stream() + .map(x -> x.getPrice()) + .reduce(0, ArithmeticUtils::add); + } + + public static Integer getSumUsingJavaAccumulator(List items) { + return items.stream() + .map(x -> x.getPrice()) + .reduce(0, Integer::sum); + } + + public static Integer getSumUsingReduce(List items) { + return items.stream() + .map(item -> item.getPrice()) + .reduce(0, (a, b) -> a + b); + } + + public static Integer getSumUsingCollect(List items) { + return items.stream() + .map(x -> x.getPrice()) + .collect(Collectors.summingInt(Integer::intValue)); + } + + public static Integer getSumUsingSum(List items) { + return items.stream() + .mapToInt(x -> x.getPrice()) + .sum(); + } + +} diff --git a/java-streams/src/test/java/com/baeldung/java/conversion/IterableStreamConversionUnitTest.java b/core-java-modules/core-java-streams/src/test/java/com/baeldung/conversion/IterableStreamConversionUnitTest.java similarity index 96% rename from java-streams/src/test/java/com/baeldung/java/conversion/IterableStreamConversionUnitTest.java rename to core-java-modules/core-java-streams/src/test/java/com/baeldung/conversion/IterableStreamConversionUnitTest.java index 99e8088054..f65f91a768 100644 --- a/java-streams/src/test/java/com/baeldung/java/conversion/IterableStreamConversionUnitTest.java +++ b/core-java-modules/core-java-streams/src/test/java/com/baeldung/conversion/IterableStreamConversionUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.java.conversion; +package com.baeldung.conversion; import org.junit.Assert; import org.junit.Test; diff --git a/java-streams/src/test/java/com/baeldung/protonpack/ProtonpackUnitTest.java b/core-java-modules/core-java-streams/src/test/java/com/baeldung/protonpack/ProtonpackUnitTest.java similarity index 100% rename from java-streams/src/test/java/com/baeldung/protonpack/ProtonpackUnitTest.java rename to core-java-modules/core-java-streams/src/test/java/com/baeldung/protonpack/ProtonpackUnitTest.java diff --git a/java-streams/src/test/java/com/baeldung/stream/InfiniteStreamUnitTest.java b/core-java-modules/core-java-streams/src/test/java/com/baeldung/stream/InfiniteStreamUnitTest.java similarity index 100% rename from java-streams/src/test/java/com/baeldung/stream/InfiniteStreamUnitTest.java rename to core-java-modules/core-java-streams/src/test/java/com/baeldung/stream/InfiniteStreamUnitTest.java diff --git a/java-streams/src/test/java/com/baeldung/stream/StreamApiUnitTest.java b/core-java-modules/core-java-streams/src/test/java/com/baeldung/stream/StreamApiUnitTest.java similarity index 100% rename from java-streams/src/test/java/com/baeldung/stream/StreamApiUnitTest.java rename to core-java-modules/core-java-streams/src/test/java/com/baeldung/stream/StreamApiUnitTest.java diff --git a/java-streams/src/test/java/com/baeldung/stream/StreamIndicesUnitTest.java b/core-java-modules/core-java-streams/src/test/java/com/baeldung/stream/StreamIndicesUnitTest.java similarity index 100% rename from java-streams/src/test/java/com/baeldung/stream/StreamIndicesUnitTest.java rename to core-java-modules/core-java-streams/src/test/java/com/baeldung/stream/StreamIndicesUnitTest.java diff --git a/java-streams/src/test/java/com/baeldung/stream/SupplierStreamUnitTest.java b/core-java-modules/core-java-streams/src/test/java/com/baeldung/stream/SupplierStreamUnitTest.java similarity index 97% rename from java-streams/src/test/java/com/baeldung/stream/SupplierStreamUnitTest.java rename to core-java-modules/core-java-streams/src/test/java/com/baeldung/stream/SupplierStreamUnitTest.java index a496e18b2d..69edc4f535 100644 --- a/java-streams/src/test/java/com/baeldung/stream/SupplierStreamUnitTest.java +++ b/core-java-modules/core-java-streams/src/test/java/com/baeldung/stream/SupplierStreamUnitTest.java @@ -1,35 +1,35 @@ -package com.baeldung.stream; - -import static org.junit.Assert.fail; - -import java.util.Optional; -import java.util.function.Supplier; -import java.util.stream.Stream; - -import org.junit.Test; - -public class SupplierStreamUnitTest { - - @Test(expected = IllegalStateException.class) - public void givenStream_whenStreamUsedTwice_thenThrowException() { - Stream stringStream = Stream.of("A", "B", "C", "D"); - Optional result1 = stringStream.findAny(); - System.out.println(result1.get()); - Optional result2 = stringStream.findFirst(); - System.out.println(result2.get()); - } - - @Test - public void givenStream_whenUsingSupplier_thenNoExceptionIsThrown() { - try { - Supplier> streamSupplier = () -> Stream.of("A", "B", "C", "D"); - Optional result1 = streamSupplier.get().findAny(); - System.out.println(result1.get()); - Optional result2 = streamSupplier.get().findFirst(); - System.out.println(result2.get()); - } catch (IllegalStateException e) { - fail(); - } - } - +package com.baeldung.stream; + +import static org.junit.Assert.fail; + +import java.util.Optional; +import java.util.function.Supplier; +import java.util.stream.Stream; + +import org.junit.Test; + +public class SupplierStreamUnitTest { + + @Test(expected = IllegalStateException.class) + public void givenStream_whenStreamUsedTwice_thenThrowException() { + Stream stringStream = Stream.of("A", "B", "C", "D"); + Optional result1 = stringStream.findAny(); + System.out.println(result1.get()); + Optional result2 = stringStream.findFirst(); + System.out.println(result2.get()); + } + + @Test + public void givenStream_whenUsingSupplier_thenNoExceptionIsThrown() { + try { + Supplier> streamSupplier = () -> Stream.of("A", "B", "C", "D"); + Optional result1 = streamSupplier.get().findAny(); + System.out.println(result1.get()); + Optional result2 = streamSupplier.get().findFirst(); + System.out.println(result2.get()); + } catch (IllegalStateException e) { + fail(); + } + } + } \ No newline at end of file diff --git a/java-streams/src/test/java/com/baeldung/stream/filter/StreamCountUnitTest.java b/core-java-modules/core-java-streams/src/test/java/com/baeldung/stream/filter/StreamCountUnitTest.java similarity index 100% rename from java-streams/src/test/java/com/baeldung/stream/filter/StreamCountUnitTest.java rename to core-java-modules/core-java-streams/src/test/java/com/baeldung/stream/filter/StreamCountUnitTest.java diff --git a/java-streams/src/test/java/com/baeldung/stream/filter/StreamFilterUnitTest.java b/core-java-modules/core-java-streams/src/test/java/com/baeldung/stream/filter/StreamFilterUnitTest.java similarity index 100% rename from java-streams/src/test/java/com/baeldung/stream/filter/StreamFilterUnitTest.java rename to core-java-modules/core-java-streams/src/test/java/com/baeldung/stream/filter/StreamFilterUnitTest.java diff --git a/java-streams/src/test/java/com/baeldung/stream/sum/StreamSumUnitTest.java b/core-java-modules/core-java-streams/src/test/java/com/baeldung/stream/sum/StreamSumUnitTest.java similarity index 97% rename from java-streams/src/test/java/com/baeldung/stream/sum/StreamSumUnitTest.java rename to core-java-modules/core-java-streams/src/test/java/com/baeldung/stream/sum/StreamSumUnitTest.java index 46e1af9a4a..f03703154a 100644 --- a/java-streams/src/test/java/com/baeldung/stream/sum/StreamSumUnitTest.java +++ b/core-java-modules/core-java-streams/src/test/java/com/baeldung/stream/sum/StreamSumUnitTest.java @@ -1,136 +1,136 @@ -package com.baeldung.stream.sum; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.junit.jupiter.api.Test; - -public class StreamSumUnitTest { - - @Test - public void givenListOfIntegersWhenSummingUsingCustomizedAccumulatorThenCorrectValueReturned() { - List integers = Arrays.asList(1, 2, 3, 4, 5); - Integer sum = StreamSumCalculator.getSumUsingCustomizedAccumulator(integers); - assertEquals(15, sum.intValue()); - - } - - @Test - public void givenListOfIntegersWhenSummingUsingJavaAccumulatorThenCorrectValueReturned() { - List integers = Arrays.asList(1, 2, 3, 4, 5); - Integer sum = StreamSumCalculator.getSumUsingJavaAccumulator(integers); - assertEquals(15, sum.intValue()); - } - - @Test - public void givenListOfIntegersWhenSummingUsingReduceThenCorrectValueReturned() { - List integers = Arrays.asList(1, 2, 3, 4, 5); - Integer sum = StreamSumCalculator.getSumUsingReduce(integers); - assertEquals(15, sum.intValue()); - } - - @Test - public void givenListOfIntegersWhenSummingUsingCollectThenCorrectValueReturned() { - List integers = Arrays.asList(1, 2, 3, 4, 5); - Integer sum = StreamSumCalculator.getSumUsingCollect(integers); - assertEquals(15, sum.intValue()); - } - - @Test - public void givenListOfIntegersWhenSummingUsingSumThenCorrectValueReturned() { - List integers = Arrays.asList(1, 2, 3, 4, 5); - Integer sum = StreamSumCalculator.getSumUsingSum(integers); - assertEquals(15, sum.intValue()); - } - - @Test - public void givenListOfItemsWhenSummingUsingCustomizedAccumulatorThenCorrectValueReturned() { - Item item1 = new Item(1, 10); - Item item2 = new Item(2, 15); - Item item3 = new Item(3, 25); - Item item4 = new Item(4, 40); - - List items = Arrays.asList(item1, item2, item3, item4); - - Integer sum = StreamSumCalculatorWithObject.getSumUsingCustomizedAccumulator(items); - assertEquals(90, sum.intValue()); - - } - - @Test - public void givenListOfItemsWhenSummingUsingJavaAccumulatorThenCorrectValueReturned() { - Item item1 = new Item(1, 10); - Item item2 = new Item(2, 15); - Item item3 = new Item(3, 25); - Item item4 = new Item(4, 40); - - List items = Arrays.asList(item1, item2, item3, item4); - - Integer sum = StreamSumCalculatorWithObject.getSumUsingJavaAccumulator(items); - assertEquals(90, sum.intValue()); - } - - @Test - public void givenListOfItemsWhenSummingUsingReduceThenCorrectValueReturned() { - Item item1 = new Item(1, 10); - Item item2 = new Item(2, 15); - Item item3 = new Item(3, 25); - Item item4 = new Item(4, 40); - - List items = Arrays.asList(item1, item2, item3, item4); - - Integer sum = StreamSumCalculatorWithObject.getSumUsingReduce(items); - assertEquals(90, sum.intValue()); - } - - @Test - public void givenListOfItemsWhenSummingUsingCollectThenCorrectValueReturned() { - Item item1 = new Item(1, 10); - Item item2 = new Item(2, 15); - Item item3 = new Item(3, 25); - Item item4 = new Item(4, 40); - - List items = Arrays.asList(item1, item2, item3, item4); - - Integer sum = StreamSumCalculatorWithObject.getSumUsingCollect(items); - assertEquals(90, sum.intValue()); - } - - @Test - public void givenListOfItemsWhenSummingUsingSumThenCorrectValueReturned() { - Item item1 = new Item(1, 10); - Item item2 = new Item(2, 15); - Item item3 = new Item(3, 25); - Item item4 = new Item(4, 40); - - List items = Arrays.asList(item1, item2, item3, item4); - - Integer sum = StreamSumCalculatorWithObject.getSumUsingSum(items); - assertEquals(90, sum.intValue()); - } - - @Test - public void givenMapWhenSummingThenCorrectValueReturned() { - Map map = new HashMap(); - map.put(1, 10); - map.put(2, 15); - map.put(3, 25); - map.put(4, 40); - - Integer sum = StreamSumCalculator.getSumOfMapValues(map); - assertEquals(90, sum.intValue()); - } - - @Test - public void givenStringWhenSummingThenCorrectValueReturned() { - String string = "Item1 10 Item2 25 Item3 30 Item4 45"; - - Integer sum = StreamSumCalculator.getSumIntegersFromString(string); - assertEquals(110, sum.intValue()); - } - -} +package com.baeldung.stream.sum; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.junit.jupiter.api.Test; + +public class StreamSumUnitTest { + + @Test + public void givenListOfIntegersWhenSummingUsingCustomizedAccumulatorThenCorrectValueReturned() { + List integers = Arrays.asList(1, 2, 3, 4, 5); + Integer sum = StreamSumCalculator.getSumUsingCustomizedAccumulator(integers); + assertEquals(15, sum.intValue()); + + } + + @Test + public void givenListOfIntegersWhenSummingUsingJavaAccumulatorThenCorrectValueReturned() { + List integers = Arrays.asList(1, 2, 3, 4, 5); + Integer sum = StreamSumCalculator.getSumUsingJavaAccumulator(integers); + assertEquals(15, sum.intValue()); + } + + @Test + public void givenListOfIntegersWhenSummingUsingReduceThenCorrectValueReturned() { + List integers = Arrays.asList(1, 2, 3, 4, 5); + Integer sum = StreamSumCalculator.getSumUsingReduce(integers); + assertEquals(15, sum.intValue()); + } + + @Test + public void givenListOfIntegersWhenSummingUsingCollectThenCorrectValueReturned() { + List integers = Arrays.asList(1, 2, 3, 4, 5); + Integer sum = StreamSumCalculator.getSumUsingCollect(integers); + assertEquals(15, sum.intValue()); + } + + @Test + public void givenListOfIntegersWhenSummingUsingSumThenCorrectValueReturned() { + List integers = Arrays.asList(1, 2, 3, 4, 5); + Integer sum = StreamSumCalculator.getSumUsingSum(integers); + assertEquals(15, sum.intValue()); + } + + @Test + public void givenListOfItemsWhenSummingUsingCustomizedAccumulatorThenCorrectValueReturned() { + Item item1 = new Item(1, 10); + Item item2 = new Item(2, 15); + Item item3 = new Item(3, 25); + Item item4 = new Item(4, 40); + + List items = Arrays.asList(item1, item2, item3, item4); + + Integer sum = StreamSumCalculatorWithObject.getSumUsingCustomizedAccumulator(items); + assertEquals(90, sum.intValue()); + + } + + @Test + public void givenListOfItemsWhenSummingUsingJavaAccumulatorThenCorrectValueReturned() { + Item item1 = new Item(1, 10); + Item item2 = new Item(2, 15); + Item item3 = new Item(3, 25); + Item item4 = new Item(4, 40); + + List items = Arrays.asList(item1, item2, item3, item4); + + Integer sum = StreamSumCalculatorWithObject.getSumUsingJavaAccumulator(items); + assertEquals(90, sum.intValue()); + } + + @Test + public void givenListOfItemsWhenSummingUsingReduceThenCorrectValueReturned() { + Item item1 = new Item(1, 10); + Item item2 = new Item(2, 15); + Item item3 = new Item(3, 25); + Item item4 = new Item(4, 40); + + List items = Arrays.asList(item1, item2, item3, item4); + + Integer sum = StreamSumCalculatorWithObject.getSumUsingReduce(items); + assertEquals(90, sum.intValue()); + } + + @Test + public void givenListOfItemsWhenSummingUsingCollectThenCorrectValueReturned() { + Item item1 = new Item(1, 10); + Item item2 = new Item(2, 15); + Item item3 = new Item(3, 25); + Item item4 = new Item(4, 40); + + List items = Arrays.asList(item1, item2, item3, item4); + + Integer sum = StreamSumCalculatorWithObject.getSumUsingCollect(items); + assertEquals(90, sum.intValue()); + } + + @Test + public void givenListOfItemsWhenSummingUsingSumThenCorrectValueReturned() { + Item item1 = new Item(1, 10); + Item item2 = new Item(2, 15); + Item item3 = new Item(3, 25); + Item item4 = new Item(4, 40); + + List items = Arrays.asList(item1, item2, item3, item4); + + Integer sum = StreamSumCalculatorWithObject.getSumUsingSum(items); + assertEquals(90, sum.intValue()); + } + + @Test + public void givenMapWhenSummingThenCorrectValueReturned() { + Map map = new HashMap(); + map.put(1, 10); + map.put(2, 15); + map.put(3, 25); + map.put(4, 40); + + Integer sum = StreamSumCalculator.getSumOfMapValues(map); + assertEquals(90, sum.intValue()); + } + + @Test + public void givenStringWhenSummingThenCorrectValueReturned() { + String string = "Item1 10 Item2 25 Item3 30 Item4 45"; + + Integer sum = StreamSumCalculator.getSumIntegersFromString(string); + assertEquals(110, sum.intValue()); + } + +} diff --git a/java-streams/src/test/java/com/baeldung/streamordering/BenchmarkManualTest.java b/core-java-modules/core-java-streams/src/test/java/com/baeldung/streamordering/BenchmarkManualTest.java similarity index 100% rename from java-streams/src/test/java/com/baeldung/streamordering/BenchmarkManualTest.java rename to core-java-modules/core-java-streams/src/test/java/com/baeldung/streamordering/BenchmarkManualTest.java diff --git a/java-streams/src/test/java/com/baeldung/streamordering/StreamsOrderingUnitTest.java b/core-java-modules/core-java-streams/src/test/java/com/baeldung/streamordering/StreamsOrderingUnitTest.java similarity index 100% rename from java-streams/src/test/java/com/baeldung/streamordering/StreamsOrderingUnitTest.java rename to core-java-modules/core-java-streams/src/test/java/com/baeldung/streamordering/StreamsOrderingUnitTest.java diff --git a/java-streams/src/test/resources/.gitignore b/core-java-modules/core-java-streams/src/test/resources/.gitignore similarity index 100% rename from java-streams/src/test/resources/.gitignore rename to core-java-modules/core-java-streams/src/test/resources/.gitignore diff --git a/core-java-modules/core-java/README.md b/core-java-modules/core-java/README.md index 41275f6367..54110d9362 100644 --- a/core-java-modules/core-java/README.md +++ b/core-java-modules/core-java/README.md @@ -7,7 +7,7 @@ - [How to Create an Executable JAR with Maven](http://www.baeldung.com/executable-jar-with-maven) - [Introduction to Nashorn](http://www.baeldung.com/java-nashorn) - [Java Money and the Currency API](http://www.baeldung.com/java-money-and-currency) -- [How to Add a Single Element to a Stream](http://www.baeldung.com/java-stream-append-prepend) +- [JVM Log Forging](http://www.baeldung.com/jvm-log-forging) - [How to Find all Getters Returning Null](http://www.baeldung.com/java-getters-returning-null) - [How to Get a Name of a Method Being Executed?](http://www.baeldung.com/java-name-of-executing-method) - [Introduction to Java Serialization](http://www.baeldung.com/java-serialization) diff --git a/java-streams-2/README.md b/java-streams-2/README.md deleted file mode 100644 index 66fbe69ed4..0000000000 --- a/java-streams-2/README.md +++ /dev/null @@ -1,9 +0,0 @@ -## Java Streams Cookbooks and Examples - -This module contains articles about the Stream API in Java. - -### Relevant Articles: -- [Guide to Stream.reduce()](https://www.baeldung.com/java-stream-reduce) -- [How to Break from Java Stream forEach](https://www.baeldung.com/java-break-stream-foreach) -- [Java IntStream Conversions](https://www.baeldung.com/java-intstream-convert) -- More articles: [[<-- prev]](/java-streams) diff --git a/java-streams-2/src/main/java/com/baeldung/reduce/entities/User.java b/java-streams-2/src/main/java/com/baeldung/reduce/entities/User.java deleted file mode 100644 index a17c6a02b6..0000000000 --- a/java-streams-2/src/main/java/com/baeldung/reduce/entities/User.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.baeldung.reduce.entities; - -public class User { - - private final String name; - private final int age; - - public User(String name, int age) { - this.name = name; - this.age = age; - } - - public String getName() { - return name; - } - - public int getAge() { - return age; - } - - @Override - public String toString() { - return "User{" + "name=" + name + ", age=" + age + '}'; - } -} diff --git a/java-streams/README.md b/java-streams/README.md deleted file mode 100644 index a57fdec7fa..0000000000 --- a/java-streams/README.md +++ /dev/null @@ -1,21 +0,0 @@ -## Java Streams Cookbooks and Examples - -This module contains articles about the Stream API in Java. - -### Relevant Articles: -- [The Java 8 Stream API Tutorial](https://www.baeldung.com/java-8-streams) -- [Introduction to Java 8 Streams](https://www.baeldung.com/java-8-streams-introduction) -- [Java 8 and Infinite Streams](https://www.baeldung.com/java-inifinite-streams) -- [Java 8 Stream findFirst() vs. findAny()](https://www.baeldung.com/java-stream-findfirst-vs-findany) -- [How to Get the Last Element of a Stream in Java?](https://www.baeldung.com/java-stream-last-element) -- [“Stream has already been operated upon or closed” Exception in Java](https://www.baeldung.com/java-stream-operated-upon-or-closed-exception) -- [Iterable to Stream in Java](https://www.baeldung.com/java-iterable-to-stream) -- [How to Iterate Over a Stream With Indices](https://www.baeldung.com/java-stream-indices) -- [Primitive Type Streams in Java 8](https://www.baeldung.com/java-8-primitive-streams) -- [Stream Ordering in Java](https://www.baeldung.com/java-stream-ordering) -- [Introduction to Protonpack](https://www.baeldung.com/java-protonpack) -- [Java Stream Filter with Lambda Expression](https://www.baeldung.com/java-stream-filter-lambda) -- [Counting Matches on a Stream Filter](https://www.baeldung.com/java-stream-filter-count) -- [Java 8 Streams peek() API](https://www.baeldung.com/java-streams-peek-api) -- [Working With Maps Using Streams](https://www.baeldung.com/java-maps-streams) -- More articles: [[next -->]](/java-streams-2) diff --git a/java-streams/pom.xml b/java-streams/pom.xml deleted file mode 100644 index bd0123e01d..0000000000 --- a/java-streams/pom.xml +++ /dev/null @@ -1,121 +0,0 @@ - - 4.0.0 - java-streams - 0.1.0-SNAPSHOT - java-streams - jar - - - com.baeldung - parent-java - 0.0.1-SNAPSHOT - ../parent-java - - - - - - org.openjdk.jmh - jmh-core - ${jmh-core.version} - - - org.openjdk.jmh - jmh-generator-annprocess - ${jmh-generator.version} - provided - - - org.apache.commons - commons-lang3 - ${commons-lang3.version} - - - log4j - log4j - ${log4j.version} - - - org.projectlombok - lombok - ${lombok.version} - provided - - - - org.assertj - assertj-core - ${assertj.version} - test - - - com.codepoetics - protonpack - ${protonpack.version} - - - io.vavr - vavr - ${vavr.version} - - - one.util - streamex - ${streamex.version} - - - org.aspectj - aspectjrt - ${asspectj.version} - - - org.aspectj - aspectjweaver - ${asspectj.version} - - - pl.touk - throwing-function - ${throwing-function.version} - - - - - java-streams - - - src/main/resources - true - - - - - - org.apache.maven.plugins - maven-compiler-plugin - ${maven-compiler-plugin.version} - - ${maven.compiler.source} - ${maven.compiler.target} - -parameters - - - - - - - - 0.9.0 - 1.15 - 0.6.5 - 2.10 - 1.3 - - 3.11.1 - 1.8.9 - 3.1 - 1.8 - 1.8 - - diff --git a/java-streams/src/main/java/com/baeldung/reduce/application/Application.java b/java-streams/src/main/java/com/baeldung/reduce/application/Application.java deleted file mode 100644 index b101c86780..0000000000 --- a/java-streams/src/main/java/com/baeldung/reduce/application/Application.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.baeldung.reduce.application; - -import com.baeldung.reduce.entities.User; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import org.openjdk.jmh.annotations.Benchmark; -import org.openjdk.jmh.annotations.BenchmarkMode; -import org.openjdk.jmh.annotations.Fork; -import org.openjdk.jmh.annotations.Mode; -import org.openjdk.jmh.annotations.Warmup; - -public class Application { - - public static void main(String[] args) throws Exception { - List numbers = Arrays.asList(1, 2, 3, 4, 5, 6); - int result1 = numbers.stream().reduce(0, (subtotal, element) -> subtotal + element); - System.out.println(result1); - - int result2 = numbers.stream().reduce(0, Integer::sum); - System.out.println(result2); - - List letters = Arrays.asList("a", "b", "c", "d", "e"); - String result3 = letters.stream().reduce("", (partialString, element) -> partialString + element); - System.out.println(result3); - - String result4 = letters.stream().reduce("", String::concat); - System.out.println(result4); - - String result5 = letters.stream().reduce("", (partialString, element) -> partialString.toUpperCase() + element.toUpperCase()); - System.out.println(result5); - - List users = Arrays.asList(new User("John", 30), new User("Julie", 35)); - int result6 = users.stream().reduce(0, (partialAgeResult, user) -> partialAgeResult + user.getAge(), Integer::sum); - System.out.println(result6); - - String result7 = letters.parallelStream().reduce("", String::concat); - System.out.println(result7); - - int result8 = users.parallelStream().reduce(0, (partialAgeResult, user) -> partialAgeResult + user.getAge(), Integer::sum); - System.out.println(result8); - - org.openjdk.jmh.Main.main(args); - - } - - @Benchmark - @Fork(value = 1, warmups = 2) - @Warmup(iterations = 2) - @BenchmarkMode(Mode.AverageTime) - public void executeReduceOnParallelizedStream() { - List userList = new ArrayList<>(); - for (int i = 0; i <= 1000000; i++) { - userList.add(new User("John" + i, i)); - } - userList.parallelStream().reduce(0, (partialAgeResult, user) -> partialAgeResult + user.getAge(), Integer::sum); - } - - @Benchmark - @Fork(value = 1, warmups = 2) - @Warmup(iterations = 2) - @BenchmarkMode(Mode.AverageTime) - public void executeReduceOnSequentialStream() { - List userList = new ArrayList<>(); - for (int i = 0; i <= 1000000; i++) { - userList.add(new User("John" + i, i)); - } - userList.stream().reduce(0, (partialAgeResult, user) -> partialAgeResult + user.getAge(), Integer::sum); - } -} diff --git a/java-streams/src/main/java/com/baeldung/reduce/utilities/NumberUtils.java b/java-streams/src/main/java/com/baeldung/reduce/utilities/NumberUtils.java deleted file mode 100644 index 8b4af2cbe2..0000000000 --- a/java-streams/src/main/java/com/baeldung/reduce/utilities/NumberUtils.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.baeldung.reduce.utilities; - -import java.util.List; -import java.util.function.BiFunction; -import java.util.logging.Level; -import java.util.logging.Logger; - -public abstract class NumberUtils { - - private static final Logger LOGGER = Logger.getLogger(NumberUtils.class.getName()); - - public static int divideListElements(List values, Integer divider) { - return values.stream() - .reduce(0, (a, b) -> { - try { - return a / divider + b / divider; - } catch (ArithmeticException e) { - LOGGER.log(Level.INFO, "Arithmetic Exception: Division by Zero"); - } - return 0; - }); - } - - public static int divideListElementsWithExtractedTryCatchBlock(List values, int divider) { - return values.stream().reduce(0, (a, b) -> divide(a, divider) + divide(b, divider)); - } - - public static int divideListElementsWithApplyFunctionMethod(List values, int divider) { - BiFunction division = (a, b) -> a / b; - return values.stream().reduce(0, (a, b) -> applyFunction(division, a, divider) + applyFunction(division, b, divider)); - } - - private static int divide(int value, int factor) { - int result = 0; - try { - result = value / factor; - } catch (ArithmeticException e) { - LOGGER.log(Level.INFO, "Arithmetic Exception: Division by Zero"); - } - return result; - } - - private static int applyFunction(BiFunction function, int a, int b) { - try { - return function.apply(a, b); - } - catch(Exception e) { - LOGGER.log(Level.INFO, "Exception occurred!"); - } - return 0; - } -} diff --git a/java-streams/src/test/java/com/baeldung/reduce/tests/StreamReduceUnitTest.java b/java-streams/src/test/java/com/baeldung/reduce/tests/StreamReduceUnitTest.java deleted file mode 100644 index 8e2ff7bf22..0000000000 --- a/java-streams/src/test/java/com/baeldung/reduce/tests/StreamReduceUnitTest.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.baeldung.reduce.tests; - -import com.baeldung.reduce.entities.User; -import com.baeldung.reduce.utilities.NumberUtils; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import static org.assertj.core.api.Assertions.assertThat; -import org.junit.Test; - -public class StreamReduceUnitTest { - - @Test - public void givenIntegerList_whenReduceWithSumAccumulatorLambda_thenCorrect() { - List numbers = Arrays.asList(1, 2, 3, 4, 5, 6); - int result = numbers.stream().reduce(0, (a, b) -> a + b); - assertThat(result).isEqualTo(21); - } - - @Test - public void givenIntegerList_whenReduceWithSumAccumulatorMethodReference_thenCorrect() { - List numbers = Arrays.asList(1, 2, 3, 4, 5, 6); - int result = numbers.stream().reduce(0, Integer::sum); - assertThat(result).isEqualTo(21); - } - - @Test - public void givenStringList_whenReduceWithConcatenatorAccumulatorLambda_thenCorrect() { - List letters = Arrays.asList("a", "b", "c", "d", "e"); - String result = letters.stream().reduce("", (a, b) -> a + b); - assertThat(result).isEqualTo("abcde"); - } - - @Test - public void givenStringList_whenReduceWithConcatenatorAccumulatorMethodReference_thenCorrect() { - List letters = Arrays.asList("a", "b", "c", "d", "e"); - String result = letters.stream().reduce("", String::concat); - assertThat(result).isEqualTo("abcde"); - } - - @Test - public void givenStringList_whenReduceWithUppercaseConcatenatorAccumulator_thenCorrect() { - List letters = Arrays.asList("a", "b", "c", "d", "e"); - String result = letters.stream().reduce("", (a, b) -> a.toUpperCase() + b.toUpperCase()); - assertThat(result).isEqualTo("ABCDE"); - } - - @Test - public void givenUserList_whenReduceWithAgeAccumulatorAndSumCombiner_thenCorrect() { - List users = Arrays.asList(new User("John", 30), new User("Julie", 35)); - int result = users.stream().reduce(0, (partialAgeResult, user) -> partialAgeResult + user.getAge(), Integer::sum); - assertThat(result).isEqualTo(65); - } - - @Test - public void givenStringList_whenReduceWithParallelStream_thenCorrect() { - List letters = Arrays.asList("a", "b", "c", "d", "e"); - String result = letters.parallelStream().reduce("", String::concat); - assertThat(result).isEqualTo("abcde"); - } - - @Test - public void givenNumberUtilsClass_whenCalledDivideListElements_thenCorrect() { - List numbers = Arrays.asList(1, 2, 3, 4, 5, 6); - assertThat(NumberUtils.divideListElements(numbers, 1)).isEqualTo(21); - } - - @Test - public void givenNumberUtilsClass_whenCalledDivideListElementsWithExtractedTryCatchBlock_thenCorrect() { - List numbers = Arrays.asList(1, 2, 3, 4, 5, 6); - assertThat(NumberUtils.divideListElementsWithExtractedTryCatchBlock(numbers, 1)).isEqualTo(21); - } - - @Test - public void givenStream_whneCalleddivideListElementsWithApplyFunctionMethod_thenCorrect() { - List numbers = Arrays.asList(1, 2, 3, 4, 5, 6); - assertThat(NumberUtils.divideListElementsWithApplyFunctionMethod(numbers, 1)).isEqualTo(21); - } -} diff --git a/pom.xml b/pom.xml index f9e45f5c93..8ec64309ee 100644 --- a/pom.xml +++ b/pom.xml @@ -381,7 +381,7 @@ cloud-foundry-uaa/cf-uaa-oauth2-client cloud-foundry-uaa/cf-uaa-oauth2-resource-server code-generation - core-groovy + core-groovy core-groovy-2 core-groovy-collections @@ -391,6 +391,9 @@ core-java-modules/core-java-8-2 core-java-modules/core-java-annotations core-java-modules/core-java-streams + core-java-modules/core-java-streams-2 + core-java-modules/core-java-streams-3 + core-java-modules/core-java-function core-java-modules/core-java-lang-math @@ -500,8 +503,6 @@ java-numbers-2 java-rmi java-spi - java-streams - java-strings java-strings-2 java-strings-3 @@ -1152,7 +1153,7 @@ cloud-foundry-uaa/cf-uaa-oauth2-client cloud-foundry-uaa/cf-uaa-oauth2-resource-server code-generation - core-groovy + core-groovy core-groovy-2 core-groovy-collections @@ -1161,6 +1162,9 @@ core-java-modules/core-java-8-2 core-java-modules/core-java-annotations core-java-modules/core-java-streams + core-java-modules/core-java-streams-2 + core-java-modules/core-java-streams-3 + core-java-modules/core-java-function core-java-modules/core-java-lang-math @@ -1204,9 +1208,9 @@ core-java-modules/core-java-perf core-java-modules/core-java-sun core-java-modules/core-java-string-conversions - core-java-modules/core-java-string-conversions-2 - core-java-modules/core-java-string-apis - core-scala + core-java-modules/core-java-string-conversions-2 + core-java-modules/core-java-string-apis + core-scala couchbase custom-pmd @@ -1266,8 +1270,6 @@ java-numbers-2 java-rmi java-spi - java-streams - java-strings java-strings-2 java-strings-3 From 9872d61b55e7d011c5e76ec09669d2387248edd5 Mon Sep 17 00:00:00 2001 From: catalin-burcea Date: Fri, 18 Oct 2019 17:53:04 +0300 Subject: [PATCH 220/265] Move articles out of java-strings part3 --- .../core-java-string-algorithms-2/README.md | 16 ++++ .../core-java-string-algorithms-2/pom.xml | 67 +++++++++++++++++ .../addchar}/AppendCharAtPositionX.java | 2 +- .../baeldung}/padding/StringPaddingUtil.java | 2 +- .../removelastchar}/StringHelper.java | 2 +- .../RemoveLeadingAndTrailingZeroes.java | 5 +- .../ReplaceCharacterInString.java | 2 +- .../com/baeldung}/wordcount/WordCounter.java | 2 +- .../AppendCharAtPositionXUnitTest.java | 2 +- .../StringContainingCharactersUnitTest.java | 2 +- .../StringFromPrimitiveArrayUnitTest.java | 2 +- .../padding/StringPaddingUtilUnitTest.java | 2 +- .../RemoveLastCharUnitTest.java | 10 +-- ...emoveLeadingAndTrailingZeroesUnitTest.java | 10 +-- .../ReplaceCharInStringUnitTest.java | 3 +- .../StringReplaceAndRemoveUnitTest.java | 4 +- .../StringDiffBenchmarkUnitTest.java | 0 .../stringdiff/StringDiffUnitTest.java | 0 .../wordcount/WordCountUnitTest.java | 2 +- .../core-java-string-algorithms/README.md | 16 ++++ .../core-java-string-algorithms/pom.xml | 73 +++++++++++++++++++ .../com/baeldung/matchwords}/MatchWords.java | 10 +-- .../com/baeldung/palindrom}/Palindrome.java | 2 +- .../java/com/baeldung/pangram}/Pangram.java | 2 +- .../RemoveDuplicateFromString.java | 2 +- .../repetition/SubstringRepetition.java | 2 +- .../reverse/ReverseStringExamples.java | 2 +- .../com/baeldung}/searching/WordIndexer.java | 2 +- ...emovingStopwordsPerformanceComparison.java | 13 +--- .../src/main/resources/english_stopwords.txt | 0 .../src/main/resources/shakespeare-hamlet.txt | 0 .../CountCharsExampleUnitTest.java | 2 +- .../matchwords}/MatchWordsUnitTest.java | 2 +- .../palindrom}/PalindromeUnitTest.java | 2 +- .../baeldung/pangram}/PangramUnitTest.java | 5 +- .../RemoveDuplicateFromStringUnitTest.java | 2 +- .../RemovingEmojiFromStringUnitTest.java | 9 +-- .../SubstringRepetitionUnitTest.java | 8 +- .../ReverseStringExamplesUnitTest.java | 2 +- .../searching/WordIndexerUnitTest.java | 2 +- .../stopwords}/RemoveStopwordsUnitTest.java | 8 +- java-strings-2/README.md | 10 --- java-strings-3/README.md | 2 - java-strings-ops/README.md | 4 - java-strings-ops/pom.xml | 2 +- java-strings/README.md | 4 - pom.xml | 4 + 47 files changed, 237 insertions(+), 90 deletions(-) create mode 100644 core-java-modules/core-java-string-algorithms-2/README.md create mode 100644 core-java-modules/core-java-string-algorithms-2/pom.xml rename {java-strings-ops/src/main/java/com/baeldung/string => core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung/addchar}/AppendCharAtPositionX.java (97%) rename {java-strings-2/src/main/java/com/baeldung/string => core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung}/padding/StringPaddingUtil.java (96%) rename {java-strings-ops/src/main/java/com/baeldung/string => core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung/removelastchar}/StringHelper.java (95%) rename {java-strings-2/src/main/java/com/baeldung/string => core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung}/removeleadingtrailingchar/RemoveLeadingAndTrailingZeroes.java (97%) rename {java-strings/src/main/java/com/baeldung/string => core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung/replacechar}/ReplaceCharacterInString.java (96%) rename {java-strings-3/src/main/java/com/baeldung/string => core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung}/wordcount/WordCounter.java (97%) rename {java-strings-ops/src/test/java/com/baeldung/string => core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/addchar}/AppendCharAtPositionXUnitTest.java (99%) rename {java-strings/src/test/java/com/baeldung/string => core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/containchar}/StringContainingCharactersUnitTest.java (99%) rename {java-strings-2/src/test/java/com/baeldung/string => core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/join}/StringFromPrimitiveArrayUnitTest.java (99%) rename {java-strings-2/src/test/java/com/baeldung/string => core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung}/padding/StringPaddingUtilUnitTest.java (98%) rename java-strings-ops/src/test/java/com/baeldung/string/StringHelperUnitTest.java => core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/removelastchar/RemoveLastCharUnitTest.java (98%) rename {java-strings-2/src/test/java/com/baeldung/string => core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung}/removeleadingtrailingchar/RemoveLeadingAndTrailingZeroesUnitTest.java (99%) rename {java-strings/src/test/java/com/baeldung/string => core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/replacechar}/ReplaceCharInStringUnitTest.java (92%) rename {java-strings/src/test/java/com/baeldung/string => core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/replaceremove}/StringReplaceAndRemoveUnitTest.java (98%) rename {java-strings-3 => core-java-modules/core-java-string-algorithms-2}/src/test/java/com/baeldung/stringdiff/StringDiffBenchmarkUnitTest.java (100%) rename {java-strings-3 => core-java-modules/core-java-string-algorithms-2}/src/test/java/com/baeldung/stringdiff/StringDiffUnitTest.java (100%) rename {java-strings-3/src/test/java/com/baeldung/string => core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung}/wordcount/WordCountUnitTest.java (97%) create mode 100644 core-java-modules/core-java-string-algorithms/README.md create mode 100644 core-java-modules/core-java-string-algorithms/pom.xml rename {java-strings-2/src/main/java/com/baeldung/string => core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/matchwords}/MatchWords.java (92%) rename {java-strings-ops/src/main/java/com/baeldung/string => core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/palindrom}/Palindrome.java (98%) rename {java-strings-2/src/main/java/com/baeldung/string => core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/pangram}/Pangram.java (98%) rename {java-strings-2/src/main/java/com/baeldung/stringduplicates => core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/removeduplicates}/RemoveDuplicateFromString.java (98%) rename {java-strings-2/src/main/java/com/baeldung/string => core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung}/repetition/SubstringRepetition.java (94%) rename {java-strings-2/src/main/java/com/baeldung/string => core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung}/reverse/ReverseStringExamples.java (97%) rename {java-strings/src/main/java/com/baeldung/string => core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung}/searching/WordIndexer.java (96%) rename {java-strings-2/src/main/java/com/baeldung/string/performance => core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/stopwords}/RemovingStopwordsPerformanceComparison.java (82%) rename {java-strings-2 => core-java-modules/core-java-string-algorithms}/src/main/resources/english_stopwords.txt (100%) rename {java-strings-2 => core-java-modules/core-java-string-algorithms}/src/main/resources/shakespeare-hamlet.txt (100%) rename {java-strings-ops/src/test/java/com/baeldung/java/countingChars => core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/countingchars}/CountCharsExampleUnitTest.java (98%) rename {java-strings-2/src/test/java/com/baeldung/string => core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/matchwords}/MatchWordsUnitTest.java (98%) rename {java-strings-ops/src/test/java/com/baeldung/string => core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/palindrom}/PalindromeUnitTest.java (98%) rename {java-strings-2/src/test/java/com/baeldung/string => core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/pangram}/PangramUnitTest.java (97%) rename {java-strings-2/src/test/java/com/baeldung/stringduplicates => core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/removeduplicates}/RemoveDuplicateFromStringUnitTest.java (98%) rename {java-strings-2/src/test/java/com/baeldung/string => core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/removeemojis}/RemovingEmojiFromStringUnitTest.java (98%) rename {java-strings-2/src/test/java/com/baeldung/string => core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung}/repetition/SubstringRepetitionUnitTest.java (93%) rename {java-strings-2/src/test/java/com/baeldung/string => core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung}/reverse/ReverseStringExamplesUnitTest.java (98%) rename {java-strings/src/test/java/com/baeldung/string => core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung}/searching/WordIndexerUnitTest.java (98%) rename {java-strings-2/src/test/java/com/baeldung/string => core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/stopwords}/RemoveStopwordsUnitTest.java (98%) diff --git a/core-java-modules/core-java-string-algorithms-2/README.md b/core-java-modules/core-java-string-algorithms-2/README.md new file mode 100644 index 0000000000..2cd64e1920 --- /dev/null +++ b/core-java-modules/core-java-string-algorithms-2/README.md @@ -0,0 +1,16 @@ +## Java String Algorithms + +This module contains articles about string-related algorithms. + +### Relevant Articles: +- [How to Remove the Last Character of a String?](https://www.baeldung.com/java-remove-last-character-of-string) +- [Add a Character to a String at a Given Position](https://www.baeldung.com/java-add-character-to-string) +- [Java Check a String for Lowercase/Uppercase Letter, Special Character and Digit](https://www.baeldung.com/java-lowercase-uppercase-special-character-digit-regex) +- [Remove or Replace Part of a String in Java](https://www.baeldung.com/java-remove-replace-string-part) +- [Replace a Character at a Specific Index in a String in Java](https://www.baeldung.com/java-replace-character-at-index) +- [Join Array of Primitives with Separator in Java](https://www.baeldung.com/java-join-primitive-array) +- [Pad a String with Zeros or Spaces in Java](https://www.baeldung.com/java-pad-string) +- [Remove Leading and Trailing Characters from a String](https://www.baeldung.com/java-remove-trailing-characters) +- [Counting Words in a String](https://www.baeldung.com/java-word-counting) +- [Finding the Difference Between Two Strings](https://www.baeldung.com/java-difference-between-two-strings) +- More articles: [[<-- prev]](../core-java-string-algorithms) diff --git a/core-java-modules/core-java-string-algorithms-2/pom.xml b/core-java-modules/core-java-string-algorithms-2/pom.xml new file mode 100644 index 0000000000..5b0e710bb8 --- /dev/null +++ b/core-java-modules/core-java-string-algorithms-2/pom.xml @@ -0,0 +1,67 @@ + + 4.0.0 + core-java-string-algorithms-2 + 0.1.0-SNAPSHOT + jar + core-java-string-algorithms-2 + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../../parent-java + + + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + com.google.guava + guava + ${guava.version} + + + org.openjdk.jmh + jmh-core + ${jmh-core.version} + + + org.openjdk.jmh + jmh-generator-annprocess + ${jmh-core.version} + + + org.assertj + assertj-core + ${assertj.version} + test + + + org.bitbucket.cowwoc + diff-match-patch + ${diff-match-path.version} + test + + + + + core-java-string-algorithms-2 + + + src/main/resources + true + + + + + + 3.8.1 + 3.6.1 + 1.2 + + + diff --git a/java-strings-ops/src/main/java/com/baeldung/string/AppendCharAtPositionX.java b/core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung/addchar/AppendCharAtPositionX.java similarity index 97% rename from java-strings-ops/src/main/java/com/baeldung/string/AppendCharAtPositionX.java rename to core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung/addchar/AppendCharAtPositionX.java index ad203ab348..92bb9a9832 100644 --- a/java-strings-ops/src/main/java/com/baeldung/string/AppendCharAtPositionX.java +++ b/core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung/addchar/AppendCharAtPositionX.java @@ -1,7 +1,7 @@ /** * */ -package com.baeldung.string; +package com.baeldung.addchar; /** * @author swpraman diff --git a/java-strings-2/src/main/java/com/baeldung/string/padding/StringPaddingUtil.java b/core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung/padding/StringPaddingUtil.java similarity index 96% rename from java-strings-2/src/main/java/com/baeldung/string/padding/StringPaddingUtil.java rename to core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung/padding/StringPaddingUtil.java index 80d05bb42a..1de82620c0 100644 --- a/java-strings-2/src/main/java/com/baeldung/string/padding/StringPaddingUtil.java +++ b/core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung/padding/StringPaddingUtil.java @@ -1,4 +1,4 @@ -package com.baeldung.string.padding; +package com.baeldung.padding; public class StringPaddingUtil { diff --git a/java-strings-ops/src/main/java/com/baeldung/string/StringHelper.java b/core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung/removelastchar/StringHelper.java similarity index 95% rename from java-strings-ops/src/main/java/com/baeldung/string/StringHelper.java rename to core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung/removelastchar/StringHelper.java index dac0d1272e..ebcc283851 100644 --- a/java-strings-ops/src/main/java/com/baeldung/string/StringHelper.java +++ b/core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung/removelastchar/StringHelper.java @@ -1,4 +1,4 @@ -package com.baeldung.string; +package com.baeldung.removelastchar; import java.util.Optional; diff --git a/java-strings-2/src/main/java/com/baeldung/string/removeleadingtrailingchar/RemoveLeadingAndTrailingZeroes.java b/core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung/removeleadingtrailingchar/RemoveLeadingAndTrailingZeroes.java similarity index 97% rename from java-strings-2/src/main/java/com/baeldung/string/removeleadingtrailingchar/RemoveLeadingAndTrailingZeroes.java rename to core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung/removeleadingtrailingchar/RemoveLeadingAndTrailingZeroes.java index c9d748e897..386d34e0ac 100644 --- a/java-strings-2/src/main/java/com/baeldung/string/removeleadingtrailingchar/RemoveLeadingAndTrailingZeroes.java +++ b/core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung/removeleadingtrailingchar/RemoveLeadingAndTrailingZeroes.java @@ -1,9 +1,8 @@ -package com.baeldung.string.removeleadingtrailingchar; +package com.baeldung.removeleadingtrailingchar; -import org.apache.commons.lang3.StringUtils; - import com.google.common.base.CharMatcher; +import org.apache.commons.lang3.StringUtils; public class RemoveLeadingAndTrailingZeroes { diff --git a/java-strings/src/main/java/com/baeldung/string/ReplaceCharacterInString.java b/core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung/replacechar/ReplaceCharacterInString.java similarity index 96% rename from java-strings/src/main/java/com/baeldung/string/ReplaceCharacterInString.java rename to core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung/replacechar/ReplaceCharacterInString.java index 2cc67f0b51..29fb28a85b 100644 --- a/java-strings/src/main/java/com/baeldung/string/ReplaceCharacterInString.java +++ b/core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung/replacechar/ReplaceCharacterInString.java @@ -1,4 +1,4 @@ -package com.baeldung.string; +package com.baeldung.replacechar; public class ReplaceCharacterInString { diff --git a/java-strings-3/src/main/java/com/baeldung/string/wordcount/WordCounter.java b/core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung/wordcount/WordCounter.java similarity index 97% rename from java-strings-3/src/main/java/com/baeldung/string/wordcount/WordCounter.java rename to core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung/wordcount/WordCounter.java index 30275773a6..9963c3486b 100644 --- a/java-strings-3/src/main/java/com/baeldung/string/wordcount/WordCounter.java +++ b/core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung/wordcount/WordCounter.java @@ -1,4 +1,4 @@ -package com.baeldung.string.wordcount; +package com.baeldung.wordcount; import java.util.StringTokenizer; diff --git a/java-strings-ops/src/test/java/com/baeldung/string/AppendCharAtPositionXUnitTest.java b/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/addchar/AppendCharAtPositionXUnitTest.java similarity index 99% rename from java-strings-ops/src/test/java/com/baeldung/string/AppendCharAtPositionXUnitTest.java rename to core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/addchar/AppendCharAtPositionXUnitTest.java index 7c5409fe29..e850cf1954 100644 --- a/java-strings-ops/src/test/java/com/baeldung/string/AppendCharAtPositionXUnitTest.java +++ b/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/addchar/AppendCharAtPositionXUnitTest.java @@ -1,7 +1,7 @@ /** * */ -package com.baeldung.string; +package com.baeldung.addchar; import static org.junit.Assert.assertEquals; diff --git a/java-strings/src/test/java/com/baeldung/string/StringContainingCharactersUnitTest.java b/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/containchar/StringContainingCharactersUnitTest.java similarity index 99% rename from java-strings/src/test/java/com/baeldung/string/StringContainingCharactersUnitTest.java rename to core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/containchar/StringContainingCharactersUnitTest.java index be79103e6b..3b0e545584 100644 --- a/java-strings/src/test/java/com/baeldung/string/StringContainingCharactersUnitTest.java +++ b/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/containchar/StringContainingCharactersUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.string; +package com.baeldung.containchar; import org.junit.Test; diff --git a/java-strings-2/src/test/java/com/baeldung/string/StringFromPrimitiveArrayUnitTest.java b/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/join/StringFromPrimitiveArrayUnitTest.java similarity index 99% rename from java-strings-2/src/test/java/com/baeldung/string/StringFromPrimitiveArrayUnitTest.java rename to core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/join/StringFromPrimitiveArrayUnitTest.java index c93089e543..f6c9141c3f 100644 --- a/java-strings-2/src/test/java/com/baeldung/string/StringFromPrimitiveArrayUnitTest.java +++ b/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/join/StringFromPrimitiveArrayUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.string; +package com.baeldung.join; import com.google.common.base.Joiner; import com.google.common.primitives.Chars; diff --git a/java-strings-2/src/test/java/com/baeldung/string/padding/StringPaddingUtilUnitTest.java b/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/padding/StringPaddingUtilUnitTest.java similarity index 98% rename from java-strings-2/src/test/java/com/baeldung/string/padding/StringPaddingUtilUnitTest.java rename to core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/padding/StringPaddingUtilUnitTest.java index f6a077a88e..d8ef500b30 100644 --- a/java-strings-2/src/test/java/com/baeldung/string/padding/StringPaddingUtilUnitTest.java +++ b/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/padding/StringPaddingUtilUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.string.padding; +package com.baeldung.padding; import com.google.common.base.Strings; import org.apache.commons.lang3.StringUtils; diff --git a/java-strings-ops/src/test/java/com/baeldung/string/StringHelperUnitTest.java b/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/removelastchar/RemoveLastCharUnitTest.java similarity index 98% rename from java-strings-ops/src/test/java/com/baeldung/string/StringHelperUnitTest.java rename to core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/removelastchar/RemoveLastCharUnitTest.java index eb86e84905..e88158deb9 100644 --- a/java-strings-ops/src/test/java/com/baeldung/string/StringHelperUnitTest.java +++ b/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/removelastchar/RemoveLastCharUnitTest.java @@ -1,12 +1,12 @@ -package com.baeldung.string; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotEquals; +package com.baeldung.removelastchar; import org.apache.commons.lang3.StringUtils; import org.junit.Test; -public class StringHelperUnitTest { +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; + +public class RemoveLastCharUnitTest { public static final String TEST_STRING = "abcdef"; public static final String NULL_STRING = null; diff --git a/java-strings-2/src/test/java/com/baeldung/string/removeleadingtrailingchar/RemoveLeadingAndTrailingZeroesUnitTest.java b/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/removeleadingtrailingchar/RemoveLeadingAndTrailingZeroesUnitTest.java similarity index 99% rename from java-strings-2/src/test/java/com/baeldung/string/removeleadingtrailingchar/RemoveLeadingAndTrailingZeroesUnitTest.java rename to core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/removeleadingtrailingchar/RemoveLeadingAndTrailingZeroesUnitTest.java index 55f932fea1..5dec58eea9 100644 --- a/java-strings-2/src/test/java/com/baeldung/string/removeleadingtrailingchar/RemoveLeadingAndTrailingZeroesUnitTest.java +++ b/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/removeleadingtrailingchar/RemoveLeadingAndTrailingZeroesUnitTest.java @@ -1,13 +1,13 @@ -package com.baeldung.string.removeleadingtrailingchar; - -import static org.assertj.core.api.Assertions.assertThat; - -import java.util.stream.Stream; +package com.baeldung.removeleadingtrailingchar; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; +import java.util.stream.Stream; + +import static org.assertj.core.api.Assertions.assertThat; + public class RemoveLeadingAndTrailingZeroesUnitTest { public static Stream leadingZeroTestProvider() { diff --git a/java-strings/src/test/java/com/baeldung/string/ReplaceCharInStringUnitTest.java b/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/replacechar/ReplaceCharInStringUnitTest.java similarity index 92% rename from java-strings/src/test/java/com/baeldung/string/ReplaceCharInStringUnitTest.java rename to core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/replacechar/ReplaceCharInStringUnitTest.java index c234c6953c..1e33a7f09d 100644 --- a/java-strings/src/test/java/com/baeldung/string/ReplaceCharInStringUnitTest.java +++ b/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/replacechar/ReplaceCharInStringUnitTest.java @@ -1,8 +1,9 @@ -package com.baeldung.string; +package com.baeldung.replacechar; import org.junit.Test; import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; public class ReplaceCharInStringUnitTest { private ReplaceCharacterInString characterInString = new ReplaceCharacterInString(); diff --git a/java-strings/src/test/java/com/baeldung/string/StringReplaceAndRemoveUnitTest.java b/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/replaceremove/StringReplaceAndRemoveUnitTest.java similarity index 98% rename from java-strings/src/test/java/com/baeldung/string/StringReplaceAndRemoveUnitTest.java rename to core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/replaceremove/StringReplaceAndRemoveUnitTest.java index 4d2b54241b..fe71aa6974 100644 --- a/java-strings/src/test/java/com/baeldung/string/StringReplaceAndRemoveUnitTest.java +++ b/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/replaceremove/StringReplaceAndRemoveUnitTest.java @@ -1,7 +1,7 @@ -package com.baeldung.string; +package com.baeldung.replaceremove; -import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.RegExUtils; +import org.apache.commons.lang3.StringUtils; import org.junit.Test; import static org.junit.Assert.assertFalse; diff --git a/java-strings-3/src/test/java/com/baeldung/stringdiff/StringDiffBenchmarkUnitTest.java b/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/stringdiff/StringDiffBenchmarkUnitTest.java similarity index 100% rename from java-strings-3/src/test/java/com/baeldung/stringdiff/StringDiffBenchmarkUnitTest.java rename to core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/stringdiff/StringDiffBenchmarkUnitTest.java diff --git a/java-strings-3/src/test/java/com/baeldung/stringdiff/StringDiffUnitTest.java b/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/stringdiff/StringDiffUnitTest.java similarity index 100% rename from java-strings-3/src/test/java/com/baeldung/stringdiff/StringDiffUnitTest.java rename to core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/stringdiff/StringDiffUnitTest.java diff --git a/java-strings-3/src/test/java/com/baeldung/string/wordcount/WordCountUnitTest.java b/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/wordcount/WordCountUnitTest.java similarity index 97% rename from java-strings-3/src/test/java/com/baeldung/string/wordcount/WordCountUnitTest.java rename to core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/wordcount/WordCountUnitTest.java index fdd045978f..bdfee61d5a 100644 --- a/java-strings-3/src/test/java/com/baeldung/string/wordcount/WordCountUnitTest.java +++ b/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/wordcount/WordCountUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.string.wordcount; +package com.baeldung.wordcount; import static org.junit.Assert.assertEquals; diff --git a/core-java-modules/core-java-string-algorithms/README.md b/core-java-modules/core-java-string-algorithms/README.md new file mode 100644 index 0000000000..70a4b5ffaf --- /dev/null +++ b/core-java-modules/core-java-string-algorithms/README.md @@ -0,0 +1,16 @@ +## Java String Algorithms + +This module contains articles about string-related algorithms. + +### Relevant Articles: +- [Check If a String Is a Palindrome](https://www.baeldung.com/java-palindrome) +- [Count Occurrences of a Char in a String](https://www.baeldung.com/java-count-chars) +- [Using indexOf to Find All Occurrences of a Word in a String](https://www.baeldung.com/java-indexOf-find-string-occurrences) +- [Removing Stopwords from a String in Java](https://www.baeldung.com/java-string-remove-stopwords) +- [Removing Repeated Characters from a String](https://www.baeldung.com/java-remove-repeated-char) +- [How to Reverse a String in Java](https://www.baeldung.com/java-reverse-string) +- [Check If a String Is a Pangram in Java](https://www.baeldung.com/java-string-pangram) +- [Check If a String Contains Multiple Keywords](https://www.baeldung.com/string-contains-multiple-words) +- [Checking If a String Is a Repeated Substring](https://www.baeldung.com/java-repeated-substring) +- [Remove Emojis from a Java String](https://www.baeldung.com/java-string-remove-emojis) +- More articles: [[next -->]](../core-java-string-algorithms-2) diff --git a/core-java-modules/core-java-string-algorithms/pom.xml b/core-java-modules/core-java-string-algorithms/pom.xml new file mode 100644 index 0000000000..f1b7499b6d --- /dev/null +++ b/core-java-modules/core-java-string-algorithms/pom.xml @@ -0,0 +1,73 @@ + + 4.0.0 + core-java-string-algorithms + 0.1.0-SNAPSHOT + jar + core-java-string-algorithms + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../../parent-java + + + + + com.google.guava + guava + ${guava.version} + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + org.ahocorasick + ahocorasick + ${ahocorasick.version} + + + org.openjdk.jmh + jmh-core + ${jmh-core.version} + + + org.openjdk.jmh + jmh-generator-annprocess + ${jmh-core.version} + + + com.vdurmont + emoji-java + ${emoji-java.version} + + + org.assertj + assertj-core + ${assertj.version} + test + + + + + core-java-string-algorithms + + + src/main/resources + true + + + + + + 3.8.1 + 27.0.1-jre + 0.4.0 + 3.6.1 + 4.0.0 + + + diff --git a/java-strings-2/src/main/java/com/baeldung/string/MatchWords.java b/core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/matchwords/MatchWords.java similarity index 92% rename from java-strings-2/src/main/java/com/baeldung/string/MatchWords.java rename to core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/matchwords/MatchWords.java index 0cad52c320..b5b7e92d8e 100644 --- a/java-strings-2/src/main/java/com/baeldung/string/MatchWords.java +++ b/core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/matchwords/MatchWords.java @@ -1,14 +1,12 @@ -package com.baeldung.string; +package com.baeldung.matchwords; import org.ahocorasick.trie.Emit; -import org.ahocorasick.trie.Token; import org.ahocorasick.trie.Trie; -import java.util.*; -import java.util.function.Function; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; import java.util.regex.Pattern; -import java.util.stream.Collectors; -import java.util.stream.Stream; public class MatchWords { diff --git a/java-strings-ops/src/main/java/com/baeldung/string/Palindrome.java b/core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/palindrom/Palindrome.java similarity index 98% rename from java-strings-ops/src/main/java/com/baeldung/string/Palindrome.java rename to core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/palindrom/Palindrome.java index 97d4d36d07..4a98e6583a 100644 --- a/java-strings-ops/src/main/java/com/baeldung/string/Palindrome.java +++ b/core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/palindrom/Palindrome.java @@ -1,4 +1,4 @@ -package com.baeldung.string; +package com.baeldung.palindrom; import java.util.stream.IntStream; diff --git a/java-strings-2/src/main/java/com/baeldung/string/Pangram.java b/core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/pangram/Pangram.java similarity index 98% rename from java-strings-2/src/main/java/com/baeldung/string/Pangram.java rename to core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/pangram/Pangram.java index c09b0c1d29..ca2a44280c 100644 --- a/java-strings-2/src/main/java/com/baeldung/string/Pangram.java +++ b/core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/pangram/Pangram.java @@ -1,4 +1,4 @@ -package com.baeldung.string; +package com.baeldung.pangram; import java.util.Arrays; import java.util.Map; diff --git a/java-strings-2/src/main/java/com/baeldung/stringduplicates/RemoveDuplicateFromString.java b/core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/removeduplicates/RemoveDuplicateFromString.java similarity index 98% rename from java-strings-2/src/main/java/com/baeldung/stringduplicates/RemoveDuplicateFromString.java rename to core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/removeduplicates/RemoveDuplicateFromString.java index d8fd9c4b14..a000f4dbd6 100644 --- a/java-strings-2/src/main/java/com/baeldung/stringduplicates/RemoveDuplicateFromString.java +++ b/core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/removeduplicates/RemoveDuplicateFromString.java @@ -1,4 +1,4 @@ -package com.baeldung.stringduplicates; +package com.baeldung.removeduplicates; import java.util.Arrays; import java.util.HashSet; diff --git a/java-strings-2/src/main/java/com/baeldung/string/repetition/SubstringRepetition.java b/core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/repetition/SubstringRepetition.java similarity index 94% rename from java-strings-2/src/main/java/com/baeldung/string/repetition/SubstringRepetition.java rename to core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/repetition/SubstringRepetition.java index 466ce9146b..6715367a19 100644 --- a/java-strings-2/src/main/java/com/baeldung/string/repetition/SubstringRepetition.java +++ b/core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/repetition/SubstringRepetition.java @@ -1,4 +1,4 @@ -package com.baeldung.string.repetition; +package com.baeldung.repetition; public class SubstringRepetition { diff --git a/java-strings-2/src/main/java/com/baeldung/string/reverse/ReverseStringExamples.java b/core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/reverse/ReverseStringExamples.java similarity index 97% rename from java-strings-2/src/main/java/com/baeldung/string/reverse/ReverseStringExamples.java rename to core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/reverse/ReverseStringExamples.java index 1a58d09598..5236f14ccd 100644 --- a/java-strings-2/src/main/java/com/baeldung/string/reverse/ReverseStringExamples.java +++ b/core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/reverse/ReverseStringExamples.java @@ -1,4 +1,4 @@ -package com.baeldung.string.reverse; +package com.baeldung.reverse; import org.apache.commons.lang3.StringUtils; diff --git a/java-strings/src/main/java/com/baeldung/string/searching/WordIndexer.java b/core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/searching/WordIndexer.java similarity index 96% rename from java-strings/src/main/java/com/baeldung/string/searching/WordIndexer.java rename to core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/searching/WordIndexer.java index 1bcad6dd32..c7550f8e16 100644 --- a/java-strings/src/main/java/com/baeldung/string/searching/WordIndexer.java +++ b/core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/searching/WordIndexer.java @@ -1,4 +1,4 @@ -package com.baeldung.string.searching; +package com.baeldung.searching; import java.util.ArrayList; import java.util.List; diff --git a/java-strings-2/src/main/java/com/baeldung/string/performance/RemovingStopwordsPerformanceComparison.java b/core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/stopwords/RemovingStopwordsPerformanceComparison.java similarity index 82% rename from java-strings-2/src/main/java/com/baeldung/string/performance/RemovingStopwordsPerformanceComparison.java rename to core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/stopwords/RemovingStopwordsPerformanceComparison.java index 5b455459cd..7df64de3f1 100644 --- a/java-strings-2/src/main/java/com/baeldung/string/performance/RemovingStopwordsPerformanceComparison.java +++ b/core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/stopwords/RemovingStopwordsPerformanceComparison.java @@ -1,4 +1,6 @@ -package com.baeldung.string.performance; +package com.baeldung.stopwords; + +import org.openjdk.jmh.annotations.*; import java.io.IOException; import java.nio.file.Files; @@ -9,15 +11,6 @@ import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import java.util.stream.Stream; -import org.openjdk.jmh.annotations.Benchmark; -import org.openjdk.jmh.annotations.BenchmarkMode; -import org.openjdk.jmh.annotations.Fork; -import org.openjdk.jmh.annotations.Mode; -import org.openjdk.jmh.annotations.OutputTimeUnit; -import org.openjdk.jmh.annotations.Scope; -import org.openjdk.jmh.annotations.Setup; -import org.openjdk.jmh.annotations.State; - @Fork(value = 3, warmups = 1) @State(Scope.Benchmark) diff --git a/java-strings-2/src/main/resources/english_stopwords.txt b/core-java-modules/core-java-string-algorithms/src/main/resources/english_stopwords.txt similarity index 100% rename from java-strings-2/src/main/resources/english_stopwords.txt rename to core-java-modules/core-java-string-algorithms/src/main/resources/english_stopwords.txt diff --git a/java-strings-2/src/main/resources/shakespeare-hamlet.txt b/core-java-modules/core-java-string-algorithms/src/main/resources/shakespeare-hamlet.txt similarity index 100% rename from java-strings-2/src/main/resources/shakespeare-hamlet.txt rename to core-java-modules/core-java-string-algorithms/src/main/resources/shakespeare-hamlet.txt diff --git a/java-strings-ops/src/test/java/com/baeldung/java/countingChars/CountCharsExampleUnitTest.java b/core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/countingchars/CountCharsExampleUnitTest.java similarity index 98% rename from java-strings-ops/src/test/java/com/baeldung/java/countingChars/CountCharsExampleUnitTest.java rename to core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/countingchars/CountCharsExampleUnitTest.java index d58684445b..8a5f1181b5 100644 --- a/java-strings-ops/src/test/java/com/baeldung/java/countingChars/CountCharsExampleUnitTest.java +++ b/core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/countingchars/CountCharsExampleUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.java.countingChars; +package com.baeldung.countingchars; import static org.junit.Assert.assertEquals; diff --git a/java-strings-2/src/test/java/com/baeldung/string/MatchWordsUnitTest.java b/core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/matchwords/MatchWordsUnitTest.java similarity index 98% rename from java-strings-2/src/test/java/com/baeldung/string/MatchWordsUnitTest.java rename to core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/matchwords/MatchWordsUnitTest.java index 385aadaa5d..9ff1066a12 100644 --- a/java-strings-2/src/test/java/com/baeldung/string/MatchWordsUnitTest.java +++ b/core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/matchwords/MatchWordsUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.string; +package com.baeldung.matchwords; import org.junit.Test; diff --git a/java-strings-ops/src/test/java/com/baeldung/string/PalindromeUnitTest.java b/core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/palindrom/PalindromeUnitTest.java similarity index 98% rename from java-strings-ops/src/test/java/com/baeldung/string/PalindromeUnitTest.java rename to core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/palindrom/PalindromeUnitTest.java index 8dea72d8ca..43334ad0fd 100644 --- a/java-strings-ops/src/test/java/com/baeldung/string/PalindromeUnitTest.java +++ b/core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/palindrom/PalindromeUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.string; +package com.baeldung.palindrom; import static org.junit.Assert.assertTrue; diff --git a/java-strings-2/src/test/java/com/baeldung/string/PangramUnitTest.java b/core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/pangram/PangramUnitTest.java similarity index 97% rename from java-strings-2/src/test/java/com/baeldung/string/PangramUnitTest.java rename to core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/pangram/PangramUnitTest.java index 36e603b535..b081a425e2 100644 --- a/java-strings-2/src/test/java/com/baeldung/string/PangramUnitTest.java +++ b/core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/pangram/PangramUnitTest.java @@ -1,8 +1,9 @@ -package com.baeldung.string; +package com.baeldung.pangram; + +import org.junit.Test; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; -import org.junit.Test; public class PangramUnitTest { diff --git a/java-strings-2/src/test/java/com/baeldung/stringduplicates/RemoveDuplicateFromStringUnitTest.java b/core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/removeduplicates/RemoveDuplicateFromStringUnitTest.java similarity index 98% rename from java-strings-2/src/test/java/com/baeldung/stringduplicates/RemoveDuplicateFromStringUnitTest.java rename to core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/removeduplicates/RemoveDuplicateFromStringUnitTest.java index 895ecc4a3b..2372a5e569 100644 --- a/java-strings-2/src/test/java/com/baeldung/stringduplicates/RemoveDuplicateFromStringUnitTest.java +++ b/core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/removeduplicates/RemoveDuplicateFromStringUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.stringduplicates; +package com.baeldung.removeduplicates; import org.junit.Assert; import org.junit.Before; diff --git a/java-strings-2/src/test/java/com/baeldung/string/RemovingEmojiFromStringUnitTest.java b/core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/removeemojis/RemovingEmojiFromStringUnitTest.java similarity index 98% rename from java-strings-2/src/test/java/com/baeldung/string/RemovingEmojiFromStringUnitTest.java rename to core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/removeemojis/RemovingEmojiFromStringUnitTest.java index 8688f9dcf5..2c5f83400e 100644 --- a/java-strings-2/src/test/java/com/baeldung/string/RemovingEmojiFromStringUnitTest.java +++ b/core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/removeemojis/RemovingEmojiFromStringUnitTest.java @@ -1,13 +1,12 @@ -package com.baeldung.string; +package com.baeldung.removeemojis; -import static org.junit.Assert.assertEquals; +import com.vdurmont.emoji.EmojiParser; +import org.junit.Test; import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.junit.Test; - -import com.vdurmont.emoji.EmojiParser; +import static org.junit.Assert.assertEquals; public class RemovingEmojiFromStringUnitTest { String text = "la conférence, commencera à 10 heures 😅"; diff --git a/java-strings-2/src/test/java/com/baeldung/string/repetition/SubstringRepetitionUnitTest.java b/core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/repetition/SubstringRepetitionUnitTest.java similarity index 93% rename from java-strings-2/src/test/java/com/baeldung/string/repetition/SubstringRepetitionUnitTest.java rename to core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/repetition/SubstringRepetitionUnitTest.java index f382a24a7f..5ecb7315c2 100644 --- a/java-strings-2/src/test/java/com/baeldung/string/repetition/SubstringRepetitionUnitTest.java +++ b/core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/repetition/SubstringRepetitionUnitTest.java @@ -1,10 +1,10 @@ -package com.baeldung.string.repetition; - -import static com.baeldung.string.repetition.SubstringRepetition.*; -import static org.junit.Assert.*; +package com.baeldung.repetition; import org.junit.Test; +import static com.baeldung.repetition.SubstringRepetition.*; +import static org.junit.Assert.*; + public class SubstringRepetitionUnitTest { private String validString = "aa"; diff --git a/java-strings-2/src/test/java/com/baeldung/string/reverse/ReverseStringExamplesUnitTest.java b/core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/reverse/ReverseStringExamplesUnitTest.java similarity index 98% rename from java-strings-2/src/test/java/com/baeldung/string/reverse/ReverseStringExamplesUnitTest.java rename to core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/reverse/ReverseStringExamplesUnitTest.java index 020ead02db..c122163174 100644 --- a/java-strings-2/src/test/java/com/baeldung/string/reverse/ReverseStringExamplesUnitTest.java +++ b/core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/reverse/ReverseStringExamplesUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.string.reverse; +package com.baeldung.reverse; import org.apache.commons.lang3.StringUtils; import org.junit.Test; diff --git a/java-strings/src/test/java/com/baeldung/string/searching/WordIndexerUnitTest.java b/core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/searching/WordIndexerUnitTest.java similarity index 98% rename from java-strings/src/test/java/com/baeldung/string/searching/WordIndexerUnitTest.java rename to core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/searching/WordIndexerUnitTest.java index f3f76db01f..774d5a2121 100644 --- a/java-strings/src/test/java/com/baeldung/string/searching/WordIndexerUnitTest.java +++ b/core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/searching/WordIndexerUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.string.searching; +package com.baeldung.searching; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; diff --git a/java-strings-2/src/test/java/com/baeldung/string/RemoveStopwordsUnitTest.java b/core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/stopwords/RemoveStopwordsUnitTest.java similarity index 98% rename from java-strings-2/src/test/java/com/baeldung/string/RemoveStopwordsUnitTest.java rename to core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/stopwords/RemoveStopwordsUnitTest.java index edda2ec9d7..d90a70a9f5 100644 --- a/java-strings-2/src/test/java/com/baeldung/string/RemoveStopwordsUnitTest.java +++ b/core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/stopwords/RemoveStopwordsUnitTest.java @@ -1,6 +1,7 @@ -package com.baeldung.string; +package com.baeldung.stopwords; -import static org.junit.Assert.assertEquals; +import org.junit.BeforeClass; +import org.junit.Test; import java.io.IOException; import java.nio.file.Files; @@ -10,8 +11,7 @@ import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; -import org.junit.BeforeClass; -import org.junit.Test; +import static org.junit.Assert.assertEquals; public class RemoveStopwordsUnitTest { final String original = "The quick brown fox jumps over the lazy dog"; diff --git a/java-strings-2/README.md b/java-strings-2/README.md index ced813163d..b97df7c969 100644 --- a/java-strings-2/README.md +++ b/java-strings-2/README.md @@ -6,22 +6,12 @@ This module contains articles about strings in Java. - [Java Localization – Formatting Messages](https://www.baeldung.com/java-localization-messages-formatting) - [Check If a String Contains a Substring](https://www.baeldung.com/java-string-contains-substring) -- [Removing Stopwords from a String in Java](https://www.baeldung.com/java-string-remove-stopwords) - [Java – Generate Random String](https://www.baeldung.com/java-random-string) - [Java Base64 Encoding and Decoding](https://www.baeldung.com/java-base64-encode-and-decode) -- [Removing Repeated Characters from a String](https://www.baeldung.com/java-remove-repeated-char) -- [Join Array of Primitives with Separator in Java](https://www.baeldung.com/java-join-primitive-array) -- [Pad a String with Zeros or Spaces in Java](https://www.baeldung.com/java-pad-string) -- [Remove Emojis from a Java String](https://www.baeldung.com/java-string-remove-emojis) -- [Remove Leading and Trailing Characters from a String](https://www.baeldung.com/java-remove-trailing-characters) - [Concatenating Strings In Java](https://www.baeldung.com/java-strings-concatenation) - [Java String Interview Questions and Answers](https://www.baeldung.com/java-string-interview-questions) -- [Check if a String is a Pangram in Java](https://www.baeldung.com/java-string-pangram) -- [Check If a String Contains Multiple Keywords](https://www.baeldung.com/string-contains-multiple-words) - [Checking for Empty or Blank Strings in Java](https://www.baeldung.com/java-blank-empty-strings) - [String Initialization in Java](https://www.baeldung.com/java-string-initialization) - [Java Multi-line String](https://www.baeldung.com/java-multiline-string) -- [Checking If a String Is a Repeated Substring](https://www.baeldung.com/java-repeated-substring) -- [How to Reverse a String in Java](https://www.baeldung.com/java-reverse-string) - [String toLowerCase and toUpperCase Methods in Java](https://www.baeldung.com/java-string-convert-case) - More articles: [[<-- prev>]](/java-strings) [[next -->]](/java-strings-3) diff --git a/java-strings-3/README.md b/java-strings-3/README.md index 6276dfc621..721ea5523b 100644 --- a/java-strings-3/README.md +++ b/java-strings-3/README.md @@ -4,6 +4,4 @@ This module contains articles about strings in Java. ### Relevant Articles: - [Java String equalsIgnoreCase()](https://www.baeldung.com/java-string-equalsignorecase) -- [Finding the Difference Between Two Strings](https://www.baeldung.com/java-difference-between-two-strings) -- [Counting Words in a String](https://www.baeldung.com/java-word-counting) - More articles: [[<-- prev>]](/java-strings-2) diff --git a/java-strings-ops/README.md b/java-strings-ops/README.md index 1300cf028e..e35a3808f0 100644 --- a/java-strings-ops/README.md +++ b/java-strings-ops/README.md @@ -3,13 +3,9 @@ This module contains articles about operations on strings in Java. ### Relevant Articles: -- [Check If a String Is a Palindrome](https://www.baeldung.com/java-palindrome) - [Comparing Strings in Java](https://www.baeldung.com/java-compare-strings) - [Check If a String Is Numeric in Java](https://www.baeldung.com/java-check-string-number) - [Get Substring from String in Java](https://www.baeldung.com/java-substring) -- [How to Remove the Last Character of a String?](https://www.baeldung.com/java-remove-last-character-of-string) -- [Add a Character to a String at a Given Position](https://www.baeldung.com/java-add-character-to-string) -- [Count Occurrences of a Char in a String](https://www.baeldung.com/java-count-chars) - [Guide to Java String Pool](https://www.baeldung.com/java-string-pool) - [Split a String in Java](https://www.baeldung.com/java-split-string) - [Common String Operations in Java](https://www.baeldung.com/java-string-operations) diff --git a/java-strings-ops/pom.xml b/java-strings-ops/pom.xml index b6a7ea2728..ebed216c2b 100644 --- a/java-strings-ops/pom.xml +++ b/java-strings-ops/pom.xml @@ -90,9 +90,9 @@ 3.8.1 + 27.0.1-jre 3.6.1 - 27.0.1-jre 5.3.1 diff --git a/java-strings/README.md b/java-strings/README.md index 17b74231a4..e2ffbe6453 100644 --- a/java-strings/README.md +++ b/java-strings/README.md @@ -6,11 +6,7 @@ This module contains articles about strings in Java. - [String Operations with Java Streams](https://www.baeldung.com/java-stream-operations-on-strings) - [Use char[] Array Over a String for Manipulating Passwords in Java?](https://www.baeldung.com/java-storing-passwords) - [Compact Strings in Java 9](https://www.baeldung.com/java-9-compact-string) -- [Java Check a String for Lowercase/Uppercase Letter, Special Character and Digit](https://www.baeldung.com/java-lowercase-uppercase-special-character-digit-regex) - [String Not Empty Test Assertions in Java](https://www.baeldung.com/java-assert-string-not-empty) - [String Performance Hints](https://www.baeldung.com/java-string-performance) -- [Using indexOf to Find All Occurrences of a Word in a String](https://www.baeldung.com/java-indexOf-find-string-occurrences) - [Adding a Newline Character to a String in Java](https://www.baeldung.com/java-string-newline) -- [Remove or Replace Part of a String in Java](https://www.baeldung.com/java-remove-replace-string-part) -- [Replace a Character at a Specific Index in a String in Java](https://www.baeldung.com/java-replace-character-at-index) - More articles: [[next -->]](/java-strings-2) diff --git a/pom.xml b/pom.xml index f9e45f5c93..58a6d8bee0 100644 --- a/pom.xml +++ b/pom.xml @@ -437,6 +437,8 @@ core-java-modules/core-java-sun core-java-modules/core-java-string-conversions core-java-modules/core-java-string-conversions-2 + core-java-modules/core-java-string-algorithms + core-java-modules/core-java-string-algorithms-2 core-java-modules/core-java-string-apis core-java-modules/core-java core-java-modules/core-java-jvm @@ -1205,6 +1207,8 @@ core-java-modules/core-java-sun core-java-modules/core-java-string-conversions core-java-modules/core-java-string-conversions-2 + core-java-modules/core-java-string-algorithms + core-java-modules/core-java-string-algorithms-2 core-java-modules/core-java-string-apis core-scala couchbase From 5d45197cbaab6fe64734e4050bcf78e525d019d1 Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Sun, 27 Oct 2019 10:17:16 +0100 Subject: [PATCH 221/265] Revert "#BAEL-10229 Fix the build (restore the Ethereum module as it was because it's mixing different Spring and Spring Boot versions)" This reverts commit 72a602c9 --- parent-boot-1/pom.xml | 233 +++++++----------------------------------- 1 file changed, 38 insertions(+), 195 deletions(-) diff --git a/parent-boot-1/pom.xml b/parent-boot-1/pom.xml index df4703f1db..8f1af24466 100644 --- a/parent-boot-1/pom.xml +++ b/parent-boot-1/pom.xml @@ -1,218 +1,61 @@ + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - com.baeldung.ethereum - ethereum - ethereum + parent-boot-1 + 0.0.1-SNAPSHOT + parent-boot-1 + pom + Parent for all Spring Boot 1.x modules - parent-spring-5 com.baeldung - 0.0.1-SNAPSHOT - ../parent-spring-5 + parent-modules + 1.0.0-SNAPSHOT + + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot.version} + pom + import + + + - - - org.springframework.boot - spring-boot-starter - ${spring.boot.version} + io.rest-assured + rest-assured + ${rest-assured.version} - - - org.springframework.boot - spring-boot-starter-web - ${spring.boot.version} - - - org.springframework.boot - spring-boot-starter-tomcat - ${spring.boot.version} - - - - - org.springframework - spring-core - ${spring.version} - - - org.springframework - spring-web - ${spring.version} - - - org.springframework - spring-webmvc - ${spring.version} - - - - - org.ethereum - ethereumj-core - ${ethereumj-core.version} - - - org.web3j - core - ${web3j.core.version} - - - - - com.fasterxml.jackson.core - jackson-core - ${jackson.version} - - - com.fasterxml.jackson.core - jackson-databind - ${jackson.version} - - - com.fasterxml.jackson.core - jackson-annotations - ${jackson.version} - - - - - javax.servlet - jstl - ${jstl.version} - - - javax.servlet - javax.servlet-api - ${javax.servlet-api.version} - - - javax.servlet.jsp.jstl - jstl-api - ${jstl.version} - - - javax.servlet.jsp - javax.servlet.jsp-api - ${javax.servlet.jsp-api.version} - - - - - org.slf4j - jcl-over-slf4j - ${slf4j.version} - - - ch.qos.logback - logback-classic - ${logback.version} - - - org.springframework.boot spring-boot-starter-test test - ${spring.boot.version} - - - org.springframework - spring-context - ${spring.version} - - - org.springframework - spring-test - ${spring.version} - test - - - - - org.mockito - mockito-core - ${mockito.version} - - - org.hamcrest - hamcrest-core - - - test - - - junit - junit - ${junit.version} - test - - - org.hamcrest - hamcrest-core - - - - - org.hamcrest - hamcrest-library - ${org.hamcrest.version} - test - - - com.jayway.jsonpath - json-path - ${jsonpath.version} - ethereum - - - maven-compiler-plugin - 3.1 - - 1.8 - 1.8 - - - - org.springframework.boot - spring-boot-maven-plugin - ${spring-boot-maven-plugin.version} - - - org.apache.maven.plugins - maven-war-plugin - 3.0.0 - - src/main/webapp - false - - - + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot.version} + + ${start-class} + + + + + - - - Ethereum - Ethereum - https://dl.bintray.com/ethereum/maven/ - - - - 1.5.0-RELEASE - 3.3.1 - 1.5.6.RELEASE - 2.21.0 - 2.4.0 - 1.2.3 - 1.7.25 - 2.0.4.RELEASE + 3.1.0 + 1.5.22.RELEASE + From 5227348692bfef0ea6eef2223a80e343e583aea4 Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Sun, 27 Oct 2019 10:17:53 +0100 Subject: [PATCH 222/265] #BAEL-10229 Fix the build (restore the Ethereum module as it was because it's mixing different Spring and Spring Boot versions) --- ethereum/pom.xml | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/ethereum/pom.xml b/ethereum/pom.xml index f340c311a8..148909e787 100644 --- a/ethereum/pom.xml +++ b/ethereum/pom.xml @@ -1,31 +1,35 @@ + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 com.baeldung.ethereum ethereum ethereum - parent-boot-1 + parent-spring-5 com.baeldung 0.0.1-SNAPSHOT - ../parent-boot-1 + ../parent-spring-5 + org.springframework.boot spring-boot-starter + ${spring.boot.version} org.springframework.boot spring-boot-starter-web + ${spring.boot.version} org.springframework.boot spring-boot-starter-tomcat + ${spring.boot.version} @@ -109,6 +113,12 @@ + + org.springframework.boot + spring-boot-starter-test + test + ${spring.boot.version} + org.springframework spring-context @@ -198,12 +208,11 @@ 1.5.0-RELEASE 3.3.1 - 5.1.9.RELEASE + 1.5.6.RELEASE 2.21.0 2.4.0 1.2.3 1.7.25 2.0.4.RELEASE - From a3bc4d2820dcc6e828144d9e370cf77e79f31732 Mon Sep 17 00:00:00 2001 From: Mona Mohamadinia Date: Sun, 27 Oct 2019 20:39:48 +0330 Subject: [PATCH 223/265] Added the sample codes --- .../random/LegacyRandomDateTimes.java | 19 ++++++++++ .../com/baeldung/random/RandomDateTimes.java | 27 ++++++++++++++ .../java/com/baeldung/random/RandomDates.java | 20 +++++++++++ .../java/com/baeldung/random/RandomTimes.java | 19 ++++++++++ .../random/LegacyRandomDateTimesUnitTest.java | 36 +++++++++++++++++++ .../random/RandomDateTimesUnitTest.java | 27 ++++++++++++++ .../baeldung/random/RandomDatesUnitTest.java | 27 ++++++++++++++ .../baeldung/random/RandomTimesUnitTest.java | 20 +++++++++++ 8 files changed, 195 insertions(+) create mode 100644 core-java-modules/core-java-datetime-java8/src/main/java/com/baeldung/random/LegacyRandomDateTimes.java create mode 100644 core-java-modules/core-java-datetime-java8/src/main/java/com/baeldung/random/RandomDateTimes.java create mode 100644 core-java-modules/core-java-datetime-java8/src/main/java/com/baeldung/random/RandomDates.java create mode 100644 core-java-modules/core-java-datetime-java8/src/main/java/com/baeldung/random/RandomTimes.java create mode 100644 core-java-modules/core-java-datetime-java8/src/test/java/com/baeldung/random/LegacyRandomDateTimesUnitTest.java create mode 100644 core-java-modules/core-java-datetime-java8/src/test/java/com/baeldung/random/RandomDateTimesUnitTest.java create mode 100644 core-java-modules/core-java-datetime-java8/src/test/java/com/baeldung/random/RandomDatesUnitTest.java create mode 100644 core-java-modules/core-java-datetime-java8/src/test/java/com/baeldung/random/RandomTimesUnitTest.java diff --git a/core-java-modules/core-java-datetime-java8/src/main/java/com/baeldung/random/LegacyRandomDateTimes.java b/core-java-modules/core-java-datetime-java8/src/main/java/com/baeldung/random/LegacyRandomDateTimes.java new file mode 100644 index 0000000000..3f965dbac7 --- /dev/null +++ b/core-java-modules/core-java-datetime-java8/src/main/java/com/baeldung/random/LegacyRandomDateTimes.java @@ -0,0 +1,19 @@ +package com.baeldung.random; + +import java.util.Date; +import java.util.concurrent.ThreadLocalRandom; + +public class LegacyRandomDateTimes { + + public static Date between(Date startInclusive, Date endExclusive) { + long startMillis = startInclusive.getTime(); + long endMillis = endExclusive.getTime(); + long randomMillisSinceEpoch = ThreadLocalRandom.current().nextLong(startMillis, endMillis); + + return new Date(randomMillisSinceEpoch); + } + + public static Date timestamp() { + return new Date(ThreadLocalRandom.current().nextInt() * 1000L); + } +} diff --git a/core-java-modules/core-java-datetime-java8/src/main/java/com/baeldung/random/RandomDateTimes.java b/core-java-modules/core-java-datetime-java8/src/main/java/com/baeldung/random/RandomDateTimes.java new file mode 100644 index 0000000000..a40299e515 --- /dev/null +++ b/core-java-modules/core-java-datetime-java8/src/main/java/com/baeldung/random/RandomDateTimes.java @@ -0,0 +1,27 @@ +package com.baeldung.random; + +import java.time.Instant; +import java.util.concurrent.ThreadLocalRandom; + +public class RandomDateTimes { + + public static Instant timestamp() { + return Instant.ofEpochSecond(ThreadLocalRandom.current().nextInt()); + } + + public static Instant between(Instant startInclusive, Instant endExclusive) { + long startSeconds = startInclusive.getEpochSecond(); + long endSeconds = endExclusive.getEpochSecond(); + long random = ThreadLocalRandom.current().nextLong(startSeconds, endSeconds); + + return Instant.ofEpochSecond(random); + } + + public static Instant after(Instant startInclusive) { + return between(startInclusive, Instant.MAX); + } + + public static Instant before(Instant upperExclusive) { + return between(Instant.MIN, upperExclusive); + } +} diff --git a/core-java-modules/core-java-datetime-java8/src/main/java/com/baeldung/random/RandomDates.java b/core-java-modules/core-java-datetime-java8/src/main/java/com/baeldung/random/RandomDates.java new file mode 100644 index 0000000000..f0b76873f9 --- /dev/null +++ b/core-java-modules/core-java-datetime-java8/src/main/java/com/baeldung/random/RandomDates.java @@ -0,0 +1,20 @@ +package com.baeldung.random; + +import java.time.LocalDate; +import java.util.concurrent.ThreadLocalRandom; + +public class RandomDates { + + public static LocalDate between(LocalDate startInclusive, LocalDate endExclusive) { + long startEpochDay = startInclusive.toEpochDay(); + long endEpochDay = endExclusive.toEpochDay(); + long randomDay = ThreadLocalRandom.current().nextLong(startEpochDay, endEpochDay); + + return LocalDate.ofEpochDay(randomDay); + } + + public static LocalDate date() { + int hundredYears = 100 * 365; + return LocalDate.ofEpochDay(ThreadLocalRandom.current().nextInt(-hundredYears, hundredYears)); + } +} diff --git a/core-java-modules/core-java-datetime-java8/src/main/java/com/baeldung/random/RandomTimes.java b/core-java-modules/core-java-datetime-java8/src/main/java/com/baeldung/random/RandomTimes.java new file mode 100644 index 0000000000..92818b2390 --- /dev/null +++ b/core-java-modules/core-java-datetime-java8/src/main/java/com/baeldung/random/RandomTimes.java @@ -0,0 +1,19 @@ +package com.baeldung.random; + +import java.time.LocalTime; +import java.util.concurrent.ThreadLocalRandom; + +public class RandomTimes { + + public static LocalTime between(LocalTime startTime, LocalTime endTime) { + int startSeconds = startTime.toSecondOfDay(); + int endSeconds = endTime.toSecondOfDay(); + int randomTime = ThreadLocalRandom.current().nextInt(startSeconds, endSeconds); + + return LocalTime.ofSecondOfDay(randomTime); + } + + public static LocalTime time() { + return between(LocalTime.MIN, LocalTime.MAX); + } +} diff --git a/core-java-modules/core-java-datetime-java8/src/test/java/com/baeldung/random/LegacyRandomDateTimesUnitTest.java b/core-java-modules/core-java-datetime-java8/src/test/java/com/baeldung/random/LegacyRandomDateTimesUnitTest.java new file mode 100644 index 0000000000..26fcaa942f --- /dev/null +++ b/core-java-modules/core-java-datetime-java8/src/test/java/com/baeldung/random/LegacyRandomDateTimesUnitTest.java @@ -0,0 +1,36 @@ +package com.baeldung.random; + +import org.junit.jupiter.api.RepeatedTest; + +import java.util.Date; +import java.util.concurrent.TimeUnit; + +import static org.assertj.core.api.Assertions.assertThat; + +class LegacyRandomDateTimesUnitTest { + + private static final Date MIN_DATE = new Date(Long.MIN_VALUE); + private static final Date MAX_DATE = new Date(Long.MAX_VALUE); + + @RepeatedTest(100) + void givenARange_WhenGenTimestamp_ShouldBeInRange() { + long aDay = TimeUnit.DAYS.toMillis(1); + long now = new Date().getTime(); + + Date hundredYearsAgo = new Date(now - aDay * 365 * 100); + Date tenDaysAgo = new Date(now - aDay * 10); + + Date random = LegacyRandomDateTimes.between(hundredYearsAgo, tenDaysAgo); + assertThat(random).isBetween(hundredYearsAgo, tenDaysAgo); + } + + @RepeatedTest(100) + void givenNoRange_WhenGenTimestamp_ShouldGenerateRandomTimestamps() { + Date random = LegacyRandomDateTimes.timestamp(); + + assertThat(random) + .isNotNull() + .isBetween(MIN_DATE, MAX_DATE); + } + +} \ No newline at end of file diff --git a/core-java-modules/core-java-datetime-java8/src/test/java/com/baeldung/random/RandomDateTimesUnitTest.java b/core-java-modules/core-java-datetime-java8/src/test/java/com/baeldung/random/RandomDateTimesUnitTest.java new file mode 100644 index 0000000000..c801afa4e2 --- /dev/null +++ b/core-java-modules/core-java-datetime-java8/src/test/java/com/baeldung/random/RandomDateTimesUnitTest.java @@ -0,0 +1,27 @@ +package com.baeldung.random; + +import org.junit.jupiter.api.RepeatedTest; + +import java.time.Duration; +import java.time.Instant; + +import static org.assertj.core.api.Assertions.assertThat; + +class RandomDateTimesUnitTest { + + @RepeatedTest(100) + void givenNoRange_WhenGenTimestamp_ShouldGenerateRandomTimestamps() { + Instant random = RandomDateTimes.timestamp(); + + assertThat(random).isBetween(Instant.MIN, Instant.MAX); + } + + @RepeatedTest(100) + void givenARange_WhenGenTimestamp_ShouldBeInRange() { + Instant hundredYearsAgo = Instant.now().minus(Duration.ofDays(100 * 365)); + Instant tenDaysAgo = Instant.now().minus(Duration.ofDays(10)); + + Instant random = RandomDateTimes.between(hundredYearsAgo, tenDaysAgo); + assertThat(random).isBetween(hundredYearsAgo, tenDaysAgo); + } +} diff --git a/core-java-modules/core-java-datetime-java8/src/test/java/com/baeldung/random/RandomDatesUnitTest.java b/core-java-modules/core-java-datetime-java8/src/test/java/com/baeldung/random/RandomDatesUnitTest.java new file mode 100644 index 0000000000..6005cf93c2 --- /dev/null +++ b/core-java-modules/core-java-datetime-java8/src/test/java/com/baeldung/random/RandomDatesUnitTest.java @@ -0,0 +1,27 @@ +package com.baeldung.random; + +import org.junit.jupiter.api.RepeatedTest; + +import java.time.LocalDate; +import java.time.Month; + +import static org.assertj.core.api.Assertions.assertThat; + +class RandomDatesUnitTest { + + @RepeatedTest(100) + void givenNoRange_WhenGenDate_ShouldGenerateRandomDates() { + LocalDate randomDay = RandomDates.date(); + + assertThat(randomDay).isAfter(LocalDate.MIN).isBefore(LocalDate.MAX); + } + + @RepeatedTest(100) + void givenARange_WhenGenDate_ShouldBeInRange() { + LocalDate start = LocalDate.of(1989, Month.OCTOBER, 14); + LocalDate end = LocalDate.now(); + + LocalDate random = RandomDates.between(start, end); + assertThat(random).isAfter(start).isBefore(end); + } +} diff --git a/core-java-modules/core-java-datetime-java8/src/test/java/com/baeldung/random/RandomTimesUnitTest.java b/core-java-modules/core-java-datetime-java8/src/test/java/com/baeldung/random/RandomTimesUnitTest.java new file mode 100644 index 0000000000..a346d0df20 --- /dev/null +++ b/core-java-modules/core-java-datetime-java8/src/test/java/com/baeldung/random/RandomTimesUnitTest.java @@ -0,0 +1,20 @@ +package com.baeldung.random; + +import org.junit.jupiter.api.RepeatedTest; + +import java.time.LocalTime; + +import static org.assertj.core.api.Assertions.assertThat; + +class RandomTimesUnitTest { + + @RepeatedTest(100) + void givenARange_WhenGenTime_ShouldBeInRange() { + LocalTime morning = LocalTime.of(8, 30); + LocalTime randomTime = RandomTimes.between(LocalTime.MIDNIGHT, morning); + + assertThat(randomTime) + .isAfter(LocalTime.MIDNIGHT).isBefore(morning) + .isAfter(LocalTime.MIN).isBefore(LocalTime.MAX); + } +} From 0d0b9735cec6c4ef95f2cc0f09e65f144e2108c8 Mon Sep 17 00:00:00 2001 From: Ali Dehghani Date: Mon, 28 Oct 2019 00:23:41 +0330 Subject: [PATCH 224/265] Shouldn't drop a non-existent table! --- .../java/com/baeldung/hibernate/CustomClassIntegrationTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/persistence-modules/hibernate5/src/test/java/com/baeldung/hibernate/CustomClassIntegrationTest.java b/persistence-modules/hibernate5/src/test/java/com/baeldung/hibernate/CustomClassIntegrationTest.java index e64e836924..699890c457 100644 --- a/persistence-modules/hibernate5/src/test/java/com/baeldung/hibernate/CustomClassIntegrationTest.java +++ b/persistence-modules/hibernate5/src/test/java/com/baeldung/hibernate/CustomClassIntegrationTest.java @@ -26,7 +26,6 @@ public class CustomClassIntegrationTest { public void setUp() throws IOException { session = HibernateUtil.getSessionFactory().openSession(); transaction = session.beginTransaction(); - session.createNativeQuery("delete from manager").executeUpdate(); session.createNativeQuery("delete from department").executeUpdate(); Department department = new Department("Sales"); DeptEmployee employee = new DeptEmployee("John Smith", "001", department); From 34ec8097350b8edd3f77be5465aedb00c426f1ac Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Sun, 27 Oct 2019 22:12:26 +0100 Subject: [PATCH 225/265] #BAEL-10229 Restore Spring Boot version to 2.1.x in parent-boot-2 --- parent-boot-2/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parent-boot-2/pom.xml b/parent-boot-2/pom.xml index 3d727a7467..fe272b56a3 100644 --- a/parent-boot-2/pom.xml +++ b/parent-boot-2/pom.xml @@ -78,6 +78,6 @@ 3.3.0 1.0.22.RELEASE - 2.2.0.RELEASE + 2.1.9.RELEASE From 55a5731992f7bdbf03c13ae09f036081b8e306a9 Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Sun, 27 Oct 2019 22:38:49 +0100 Subject: [PATCH 226/265] #BAEL-10229 Fix Boot version of spring-5-webflux --- spring-5-webflux/pom.xml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/spring-5-webflux/pom.xml b/spring-5-webflux/pom.xml index 485fd8f3bf..91272593d3 100644 --- a/spring-5-webflux/pom.xml +++ b/spring-5-webflux/pom.xml @@ -16,6 +16,18 @@ ../parent-boot-2 + + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot.version} + pom + import + + + + org.springframework.boot @@ -85,4 +97,8 @@ https://repo.spring.io/milestone
+ + + 2.2.0.RELEASE + From 5ec76df699f369a950cd3d24db1f580b7bba3996 Mon Sep 17 00:00:00 2001 From: Ali Dehghani Date: Mon, 28 Oct 2019 01:11:36 +0330 Subject: [PATCH 227/265] Asserting the Received Messages --- .../logback/MapAppenderIntegrationTest.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/logging-modules/logback/src/test/java/com/baeldung/logback/MapAppenderIntegrationTest.java b/logging-modules/logback/src/test/java/com/baeldung/logback/MapAppenderIntegrationTest.java index 20366a229d..a86bad4c3e 100644 --- a/logging-modules/logback/src/test/java/com/baeldung/logback/MapAppenderIntegrationTest.java +++ b/logging-modules/logback/src/test/java/com/baeldung/logback/MapAppenderIntegrationTest.java @@ -1,33 +1,40 @@ package com.baeldung.logback; import ch.qos.logback.classic.Logger; +import ch.qos.logback.classic.spi.ILoggingEvent; import org.junit.Before; import org.junit.Test; import org.slf4j.LoggerFactory; +import java.util.List; + +import static java.util.stream.Collectors.toList; +import static org.hamcrest.Matchers.hasItems; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThat; public class MapAppenderIntegrationTest { private Logger rootLogger; @Before - public void setUp() throws Exception { + public void setUp() { rootLogger = (Logger) LoggerFactory.getLogger("ROOT"); } @Test - public void whenLoggerEmitsLoggingEvent_thenAppenderReceivesEvent() throws Exception { + public void whenLoggerEmitsLoggingEvent_thenAppenderReceivesEvent() { rootLogger.info("Test from {}", this.getClass().getSimpleName()); MapAppender appender = (MapAppender) rootLogger.getAppender("map"); - assertEquals(appender.getEventMap().size(), 1); + + List messages = appender.getEventMap().values().stream().map(ILoggingEvent::getMessage).collect(toList()); + assertThat(messages, hasItems("Test from {}")); } @Test - public void givenNoPrefixSet_whenLoggerEmitsEvent_thenAppenderReceivesNoEvent() throws Exception { + public void givenNoPrefixSet_whenLoggerEmitsEvent_thenAppenderReceivesNoEvent() { rootLogger.info("Test from {}", this.getClass().getSimpleName()); MapAppender appender = (MapAppender) rootLogger.getAppender("badMap"); assertEquals(appender.getEventMap().size(), 0); } - } From 961cc0e02bab203acaf674a6cc817c60a7ad51e5 Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Sun, 27 Oct 2019 22:57:15 +0100 Subject: [PATCH 228/265] #BAEL-10229 Fix spring-5-webflux usage of RSocketRequester --- .../com/baeldung/spring/rsocket/client/ClientConfiguration.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-5-webflux/src/main/java/com/baeldung/spring/rsocket/client/ClientConfiguration.java b/spring-5-webflux/src/main/java/com/baeldung/spring/rsocket/client/ClientConfiguration.java index 7dd3591cd6..abfe2e7807 100644 --- a/spring-5-webflux/src/main/java/com/baeldung/spring/rsocket/client/ClientConfiguration.java +++ b/spring-5-webflux/src/main/java/com/baeldung/spring/rsocket/client/ClientConfiguration.java @@ -25,6 +25,6 @@ public class ClientConfiguration { @Bean RSocketRequester rSocketRequester(RSocketStrategies rSocketStrategies) { - return RSocketRequester.wrap(rSocket(), MimeTypeUtils.APPLICATION_JSON, rSocketStrategies); + return RSocketRequester.wrap(rSocket(), MimeTypeUtils.APPLICATION_JSON, MimeTypeUtils.APPLICATION_JSON, rSocketStrategies); } } From 6b8f82198997c270c3f2ddedf5f05595d7354790 Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Sun, 27 Oct 2019 23:22:42 +0100 Subject: [PATCH 229/265] #BAEL-10229 Fix spring-5-webflux usage of RSocketRequester --- ...MarketDataRestControllerIntegrationTest.java | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/spring-5-webflux/src/test/java/com/baeldung/spring/rsocket/client/MarketDataRestControllerIntegrationTest.java b/spring-5-webflux/src/test/java/com/baeldung/spring/rsocket/client/MarketDataRestControllerIntegrationTest.java index ff00d5ec24..538d74dc92 100644 --- a/spring-5-webflux/src/test/java/com/baeldung/spring/rsocket/client/MarketDataRestControllerIntegrationTest.java +++ b/spring-5-webflux/src/test/java/com/baeldung/spring/rsocket/client/MarketDataRestControllerIntegrationTest.java @@ -34,15 +34,12 @@ public class MarketDataRestControllerIntegrationTest { @Mock private RequestSpec requestSpec; - @Mock - private ResponseSpec responseSpec; - @Test public void whenInitiatesRequest_ThenGetsResponse() throws Exception { when(rSocketRequester.route("currentMarketData")).thenReturn(requestSpec); - when(requestSpec.data(any())).thenReturn(responseSpec); + when(requestSpec.data(any())).thenReturn(requestSpec); MarketData marketData = new MarketData("X", 1); - when(responseSpec.retrieveMono(MarketData.class)).thenReturn(Mono.just(marketData)); + when(requestSpec.retrieveMono(MarketData.class)).thenReturn(Mono.just(marketData)); testClient.get() .uri("/current/{stock}", "X") @@ -56,8 +53,8 @@ public class MarketDataRestControllerIntegrationTest { @Test public void whenInitiatesFireAndForget_ThenGetsNoResponse() throws Exception { when(rSocketRequester.route("collectMarketData")).thenReturn(requestSpec); - when(requestSpec.data(any())).thenReturn(responseSpec); - when(responseSpec.send()).thenReturn(Mono.empty()); + when(requestSpec.data(any())).thenReturn(requestSpec); + when(requestSpec.send()).thenReturn(Mono.empty()); testClient.get() .uri("/collect") @@ -70,10 +67,10 @@ public class MarketDataRestControllerIntegrationTest { @Test public void whenInitiatesRequest_ThenGetsStream() throws Exception { when(rSocketRequester.route("feedMarketData")).thenReturn(requestSpec); - when(requestSpec.data(any())).thenReturn(responseSpec); + when(requestSpec.data(any())).thenReturn(requestSpec); MarketData firstMarketData = new MarketData("X", 1); MarketData secondMarketData = new MarketData("X", 2); - when(responseSpec.retrieveFlux(MarketData.class)).thenReturn(Flux.just(firstMarketData, secondMarketData)); + when(requestSpec.retrieveFlux(MarketData.class)).thenReturn(Flux.just(firstMarketData, secondMarketData)); FluxExchangeResult result = testClient.get() .uri("/feed/{stock}", "X") @@ -89,4 +86,4 @@ public class MarketDataRestControllerIntegrationTest { .thenCancel() .verify(); } -} \ No newline at end of file +} From c65ae953066cc4afa23381173d6c45f6280c55f8 Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Sun, 27 Oct 2019 23:23:05 +0100 Subject: [PATCH 230/265] #BAEL-10229 Fix spring-5-webflux usage of RSocketRequester --- .../rsocket/client/MarketDataRestControllerIntegrationTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/spring-5-webflux/src/test/java/com/baeldung/spring/rsocket/client/MarketDataRestControllerIntegrationTest.java b/spring-5-webflux/src/test/java/com/baeldung/spring/rsocket/client/MarketDataRestControllerIntegrationTest.java index 538d74dc92..d22832b0fb 100644 --- a/spring-5-webflux/src/test/java/com/baeldung/spring/rsocket/client/MarketDataRestControllerIntegrationTest.java +++ b/spring-5-webflux/src/test/java/com/baeldung/spring/rsocket/client/MarketDataRestControllerIntegrationTest.java @@ -13,7 +13,6 @@ import org.springframework.boot.test.autoconfigure.web.reactive.WebFluxTest; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.messaging.rsocket.RSocketRequester; import org.springframework.messaging.rsocket.RSocketRequester.RequestSpec; -import org.springframework.messaging.rsocket.RSocketRequester.ResponseSpec; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.web.reactive.server.FluxExchangeResult; import org.springframework.test.web.reactive.server.WebTestClient; From 995d208d7389692d84c41f79d8ceed74f4cbb46a Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Sun, 27 Oct 2019 23:30:05 +0100 Subject: [PATCH 231/265] #BAEL-10229 Fix spring-5-webflux usage of RSocketRequester --- .../rsocket/server/MarketDataRSocketControllerLiveTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spring-5-webflux/src/test/java/com/baeldung/spring/rsocket/server/MarketDataRSocketControllerLiveTest.java b/spring-5-webflux/src/test/java/com/baeldung/spring/rsocket/server/MarketDataRSocketControllerLiveTest.java index dcf3b82730..40ddc732ac 100644 --- a/spring-5-webflux/src/test/java/com/baeldung/spring/rsocket/server/MarketDataRSocketControllerLiveTest.java +++ b/spring-5-webflux/src/test/java/com/baeldung/spring/rsocket/server/MarketDataRSocketControllerLiveTest.java @@ -92,7 +92,7 @@ public class MarketDataRSocketControllerLiveTest { @Bean @Lazy RSocketRequester rSocketRequester(RSocketStrategies rSocketStrategies) { - return RSocketRequester.wrap(rSocket(), MimeTypeUtils.APPLICATION_JSON, rSocketStrategies); + return RSocketRequester.wrap(rSocket(), MimeTypeUtils.APPLICATION_JSON, MimeTypeUtils.APPLICATION_JSON, rSocketStrategies); } } -} \ No newline at end of file +} From e6a3c4c631f18161eddb3cb83843eabd16d10c3d Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Mon, 28 Oct 2019 00:01:49 +0100 Subject: [PATCH 232/265] #BAEL-10229 Fix the build (spring-batch) --- spring-batch/pom.xml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/spring-batch/pom.xml b/spring-batch/pom.xml index c28d7d6c89..e6d7cee6f2 100644 --- a/spring-batch/pom.xml +++ b/spring-batch/pom.xml @@ -12,6 +12,7 @@ com.baeldung parent-boot-2 0.0.1-SNAPSHOT + ../parent-boot-2 @@ -75,12 +76,23 @@ ${opencsv.version} + + org.springframework.boot + spring-boot-starter-batch + + org.hsqldb hsqldb runtime - + + + org.awaitility + awaitility + ${awaitility.version} + test + @@ -89,6 +101,7 @@ 3.15.1 4.1 2.3.1 + 3.1.1 From 3b8a395136e8ede2fa2e6296916249f01bf2bddf Mon Sep 17 00:00:00 2001 From: Mike Baranski Date: Sun, 27 Oct 2019 23:28:57 -0400 Subject: [PATCH 233/265] Bael 3058 - Remove hibernate parameters directory (#8071) * [BAEL-3058] Demonstrate named query * [BAEL-3058] Demonstrate the wrong way to do it, change to Junit 4 style test with annotations * Fix tab -> space and indentation * Moved hibernate-parameters to persistence-modules directory per request * Update persistence-modules/hibernate-parameters/pom.xml Co-Authored-By: KevinGilmore * Update persistence-modules/hibernate-parameters/pom.xml Co-Authored-By: KevinGilmore * Update persistence-modules/hibernate-parameters/src/test/java/com/baeldung/hibernate_parameters/NamedParameterUnitTest.java Co-Authored-By: KevinGilmore * Update persistence-modules/hibernate-parameters/src/test/java/com/baeldung/hibernate_parameters/NamedParameterUnitTest.java Co-Authored-By: KevinGilmore * Set version and add jar packaging * [BAEL-3058] Refactor package location * [BAEL-3058] Fixed based on PR 8011 comments - rename module, update deps and move resources/sources * Fix module name * [BAEL-3058] Remove hibernate-parameters directory --- .../hibernate-parameters/pom.xml | 52 -------------- .../hibernate_parameters/Event.hbm.xml | 15 ---- .../baeldung/hibernate_parameters/Event.java | 30 -------- .../NamedParameterUnitTest.java | 72 ------------------- .../src/test/resources/hibernate.cfg.xml | 28 -------- 5 files changed, 197 deletions(-) delete mode 100644 persistence-modules/hibernate-parameters/pom.xml delete mode 100644 persistence-modules/hibernate-parameters/src/test/java/com/baeldung/hibernate_parameters/Event.hbm.xml delete mode 100644 persistence-modules/hibernate-parameters/src/test/java/com/baeldung/hibernate_parameters/Event.java delete mode 100644 persistence-modules/hibernate-parameters/src/test/java/com/baeldung/hibernate_parameters/NamedParameterUnitTest.java delete mode 100644 persistence-modules/hibernate-parameters/src/test/resources/hibernate.cfg.xml diff --git a/persistence-modules/hibernate-parameters/pom.xml b/persistence-modules/hibernate-parameters/pom.xml deleted file mode 100644 index b744e181da..0000000000 --- a/persistence-modules/hibernate-parameters/pom.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - 4.0.0 - com.baeldung - hibernate-parameters - 0.1-SNAPSHOT - hibernate-parameters - jar - Hibernate tutorial illustrating the use of named parameters - - - com.baeldung - parent-modules - 1.0.0-SNAPSHOT - ../../ - - - - - org.hibernate - hibernate-core - 5.4.4.Final - - - - com.h2database - h2 - 1.4.196 - - - - - - - false - src/test/java - - **/*.xml - - - - src/test/resources - - - - - - true - - - diff --git a/persistence-modules/hibernate-parameters/src/test/java/com/baeldung/hibernate_parameters/Event.hbm.xml b/persistence-modules/hibernate-parameters/src/test/java/com/baeldung/hibernate_parameters/Event.hbm.xml deleted file mode 100644 index 4055718776..0000000000 --- a/persistence-modules/hibernate-parameters/src/test/java/com/baeldung/hibernate_parameters/Event.hbm.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - diff --git a/persistence-modules/hibernate-parameters/src/test/java/com/baeldung/hibernate_parameters/Event.java b/persistence-modules/hibernate-parameters/src/test/java/com/baeldung/hibernate_parameters/Event.java deleted file mode 100644 index f44b1bfd8a..0000000000 --- a/persistence-modules/hibernate-parameters/src/test/java/com/baeldung/hibernate_parameters/Event.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.baeldung.hibernate_parameters; - -public class Event { - private Long id; - - private String title; - - public Event() { - } - - public Event(String title) { - this.title = title; - } - - public Long getId() { - return id; - } - - private void setId(Long id) { - this.id = id; - } - - public String getTitle() { - return title; - } - - public void setTitle(String title) { - this.title = title; - } -} \ No newline at end of file diff --git a/persistence-modules/hibernate-parameters/src/test/java/com/baeldung/hibernate_parameters/NamedParameterUnitTest.java b/persistence-modules/hibernate-parameters/src/test/java/com/baeldung/hibernate_parameters/NamedParameterUnitTest.java deleted file mode 100644 index 23854dc393..0000000000 --- a/persistence-modules/hibernate-parameters/src/test/java/com/baeldung/hibernate_parameters/NamedParameterUnitTest.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.baeldung.hibernate_parameters; - -import org.hibernate.Session; -import org.hibernate.SessionFactory; -import org.hibernate.boot.MetadataSources; -import org.hibernate.boot.registry.StandardServiceRegistry; -import org.hibernate.boot.registry.StandardServiceRegistryBuilder; -import org.hibernate.query.Query; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import static org.junit.Assert.assertEquals; -import static org.junit.jupiter.api.Assertions.fail; - -public class NamedParameterUnitTest { - private SessionFactory sessionFactory; - - @Before - public void setUp() throws Exception { - final StandardServiceRegistry registry = new StandardServiceRegistryBuilder() - .configure() - .build(); - try { - sessionFactory = new MetadataSources(registry).buildMetadata().buildSessionFactory(); - Session session = sessionFactory.openSession(); - session.beginTransaction(); - session.save(new Event("Event 1")); - session.save(new Event("Event 2")); - session.getTransaction().commit(); - session.close(); - } catch (Exception e) { - StandardServiceRegistryBuilder.destroy(registry); - } - } - - @After - public void tearDown() throws Exception { - if (sessionFactory != null) { - sessionFactory.close(); - } - } - - @Test - public void whenNamedParameterProvided_thenCorrect() { - Session session = sessionFactory.openSession(); - session.beginTransaction(); - Query query = session.createQuery("from Event E WHERE E.title = :eventTitle", Event.class); - - // This binds the value "Event1" to the parameter :eventTitle - query.setParameter("eventTitle", "Event 1"); - - assertEquals(1, query.list().size()); - session.getTransaction().commit(); - session.close(); - } - - @Test(expected = org.hibernate.QueryException.class) - public void whenNamedParameterMissing_thenThrowsQueryException() { - Session session = sessionFactory.openSession(); - session.beginTransaction(); - Query query = session.createQuery("from Event E WHERE E.title = :eventTitle", Event.class); - - try { - query.list(); - fail("We are expecting an exception!"); - } finally { - session.getTransaction().commit(); - session.close(); - } - } -} diff --git a/persistence-modules/hibernate-parameters/src/test/resources/hibernate.cfg.xml b/persistence-modules/hibernate-parameters/src/test/resources/hibernate.cfg.xml deleted file mode 100644 index 480baae4c1..0000000000 --- a/persistence-modules/hibernate-parameters/src/test/resources/hibernate.cfg.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - org.h2.Driver - jdbc:h2:mem:db1;DB_CLOSE_DELAY=-1;MVCC=TRUE - sa - - - 1 - - org.hibernate.dialect.H2Dialect - - org.hibernate.cache.internal.NoCacheProvider - - true - - create - - - - - - \ No newline at end of file From ffe54857cb310aec6a170babfe4cd98c5f92e750 Mon Sep 17 00:00:00 2001 From: Johnathan Gilday Date: Sun, 25 Aug 2019 21:44:14 -0400 Subject: [PATCH 234/265] :arrow_up: BAEL-3237 Upgrade AutoValue --- code-generation/pom.xml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/code-generation/pom.xml b/code-generation/pom.xml index b52e558b53..91ce0a4639 100644 --- a/code-generation/pom.xml +++ b/code-generation/pom.xml @@ -12,10 +12,16 @@ + + com.google.auto.value + auto-value-annotations + ${auto-value.version} + com.google.auto.value auto-value ${auto-value.version} + provided com.google.auto.factory @@ -43,9 +49,9 @@ - 1.3 - 1.0-beta5 - 1.0-rc5 + 1.6.6 + 1.0-beta6 + 1.0-rc6 4.2.0 From 9059f4a2c29c439875d1564ddc01ee8db3722674 Mon Sep 17 00:00:00 2001 From: Johnathan Gilday Date: Sat, 7 Sep 2019 14:40:24 -0400 Subject: [PATCH 235/265] :sparkles: BAEL-3237 AutoValue Builder with defensive copies --- .../java/com/baeldung/autovalue/Person.java | 38 +++++++++++++++++++ .../baeldung/autovalue/PersonUnitTest.java | 37 ++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 code-generation/src/main/java/com/baeldung/autovalue/Person.java create mode 100644 code-generation/src/test/java/com/baeldung/autovalue/PersonUnitTest.java diff --git a/code-generation/src/main/java/com/baeldung/autovalue/Person.java b/code-generation/src/main/java/com/baeldung/autovalue/Person.java new file mode 100644 index 0000000000..a5fb684596 --- /dev/null +++ b/code-generation/src/main/java/com/baeldung/autovalue/Person.java @@ -0,0 +1,38 @@ +package com.baeldung.autovalue; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import com.google.auto.value.AutoValue; + +@AutoValue +public abstract class Person { + + public abstract String name(); + + public abstract List favoriteMovies(); + + public static Builder builder() { + return new AutoValue_Person.Builder(); + } + + @AutoValue.Builder + public static abstract class Builder { + + public abstract Builder name(String value); + + public abstract Builder favoriteMovies(List value); + + abstract List favoriteMovies(); + + abstract Person autoBuild(); + + public Person build() { + List favoriteMovies = favoriteMovies(); + List copy = Collections.unmodifiableList(new ArrayList<>(favoriteMovies)); + favoriteMovies(copy); + return autoBuild(); + } + } +} diff --git a/code-generation/src/test/java/com/baeldung/autovalue/PersonUnitTest.java b/code-generation/src/test/java/com/baeldung/autovalue/PersonUnitTest.java new file mode 100644 index 0000000000..fce12edafe --- /dev/null +++ b/code-generation/src/test/java/com/baeldung/autovalue/PersonUnitTest.java @@ -0,0 +1,37 @@ +package com.baeldung.autovalue; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; + +import java.util.ArrayList; +import java.util.List; + +import org.junit.Test; + +/** + * Unit Test which verifies that the {@link Person} value object creates defensive copies of its favoriteMovies list. + */ +public class PersonUnitTest { + + @Test + public void givenNewPerson_whenModifyOriginalList_thenValueObjectIsNotAlsoModified() { + // GIVEN new Person + List originalFavoriteMoviesList = new ArrayList(); + originalFavoriteMoviesList.add("Training Day"); + originalFavoriteMoviesList.add("Fast and the Furious"); + Person person = Person.builder() + .name("Dan") + .favoriteMovies(originalFavoriteMoviesList) + .build(); + + // WHEN modify original list + originalFavoriteMoviesList.add("Friday"); + + // THEN Person remains unaffected + assertFalse(person.favoriteMovies() + .contains("Friday")); + assertEquals(2, person.favoriteMovies() + .size()); + } + +} From d009d17347d354d18702656f8dbe66c7fed56135 Mon Sep 17 00:00:00 2001 From: Ali Dehghani Date: Mon, 28 Oct 2019 09:53:40 +0330 Subject: [PATCH 236/265] Fixed the Concurrent Modifications By introducing a new logger for the broken test. --- .../baeldung/logback/MapAppenderIntegrationTest.java | 12 ++++++------ .../logback/src/test/resources/logback-test.xml | 5 +++++ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/logging-modules/logback/src/test/java/com/baeldung/logback/MapAppenderIntegrationTest.java b/logging-modules/logback/src/test/java/com/baeldung/logback/MapAppenderIntegrationTest.java index a86bad4c3e..ae0eec727f 100644 --- a/logging-modules/logback/src/test/java/com/baeldung/logback/MapAppenderIntegrationTest.java +++ b/logging-modules/logback/src/test/java/com/baeldung/logback/MapAppenderIntegrationTest.java @@ -15,17 +15,17 @@ import static org.junit.Assert.assertThat; public class MapAppenderIntegrationTest { - private Logger rootLogger; + private Logger logger; @Before public void setUp() { - rootLogger = (Logger) LoggerFactory.getLogger("ROOT"); + logger = (Logger) LoggerFactory.getLogger(MapAppenderIntegrationTest.class); } @Test public void whenLoggerEmitsLoggingEvent_thenAppenderReceivesEvent() { - rootLogger.info("Test from {}", this.getClass().getSimpleName()); - MapAppender appender = (MapAppender) rootLogger.getAppender("map"); + logger.info("Test from {}", this.getClass().getSimpleName()); + MapAppender appender = (MapAppender) logger.getAppender("map"); List messages = appender.getEventMap().values().stream().map(ILoggingEvent::getMessage).collect(toList()); assertThat(messages, hasItems("Test from {}")); @@ -33,8 +33,8 @@ public class MapAppenderIntegrationTest { @Test public void givenNoPrefixSet_whenLoggerEmitsEvent_thenAppenderReceivesNoEvent() { - rootLogger.info("Test from {}", this.getClass().getSimpleName()); - MapAppender appender = (MapAppender) rootLogger.getAppender("badMap"); + logger.info("Test from {}", this.getClass().getSimpleName()); + MapAppender appender = (MapAppender) logger.getAppender("badMap"); assertEquals(appender.getEventMap().size(), 0); } } diff --git a/logging-modules/logback/src/test/resources/logback-test.xml b/logging-modules/logback/src/test/resources/logback-test.xml index df81f18cc2..89c0124738 100644 --- a/logging-modules/logback/src/test/resources/logback-test.xml +++ b/logging-modules/logback/src/test/resources/logback-test.xml @@ -28,4 +28,9 @@ + + + + + \ No newline at end of file From 43cf1cb4f9d53b235385f8ce4164595960e2ba6c Mon Sep 17 00:00:00 2001 From: Kaushik Bagchi Date: Mon, 28 Oct 2019 10:39:09 +0100 Subject: [PATCH 237/265] changes for using arrays --- .../lists/client/EmployeeClient.java | 82 ++++++++++++++----- 1 file changed, 61 insertions(+), 21 deletions(-) diff --git a/spring-rest/src/main/java/com/baeldung/resttemplate/lists/client/EmployeeClient.java b/spring-rest/src/main/java/com/baeldung/resttemplate/lists/client/EmployeeClient.java index 191719b084..a01aedb7d7 100644 --- a/spring-rest/src/main/java/com/baeldung/resttemplate/lists/client/EmployeeClient.java +++ b/spring-rest/src/main/java/com/baeldung/resttemplate/lists/client/EmployeeClient.java @@ -1,24 +1,30 @@ package com.baeldung.resttemplate.lists.client; -import org.springframework.core.ParameterizedTypeReference; -import org.springframework.http.*; -import org.springframework.web.client.RestTemplate; - import com.baeldung.resttemplate.lists.dto.Employee; import com.baeldung.resttemplate.lists.dto.EmployeeList; +import org.springframework.core.ParameterizedTypeReference; +import org.springframework.http.HttpMethod; +import org.springframework.http.ResponseEntity; +import org.springframework.web.client.RestTemplate; import java.util.ArrayList; import java.util.List; +import static java.util.Arrays.asList; + /** * Application that shows how to use Lists with RestTemplate. */ -public class EmployeeClient -{ - public static void main(String[] args) - { +public class EmployeeClient { + public static void main(String[] args) { EmployeeClient employeeClient = new EmployeeClient(); + System.out.println("Calling GET using arrays"); + employeeClient.getAllEmployeesAsArray(); + + System.out.println("Calling GET for entity using arrays"); + employeeClient.getForEntityEmployeesAsArray(); + System.out.println("Calling GET using ParameterizedTypeReference"); employeeClient.getAllEmployeesUsingParameterizedTypeReference(); @@ -32,13 +38,48 @@ public class EmployeeClient employeeClient.createEmployeesUsingWrapperClass(); } - public EmployeeClient() - { + public EmployeeClient() { } - public List getAllEmployeesUsingParameterizedTypeReference() - { + public Employee[] getForEntityEmployeesAsArray() { + + RestTemplate restTemplate = new RestTemplate(); + + ResponseEntity response = + restTemplate.getForEntity( + "http://localhost:8082/spring-rest/employees/", + Employee[].class); + + Employee[] employees = response.getBody(); + + assert employees != null; + asList(employees).forEach(System.out::println); + + return employees; + + } + + public Employee[] getAllEmployeesAsArray() { + + RestTemplate restTemplate = new RestTemplate(); + + ResponseEntity response = + restTemplate.exchange( + "http://localhost:8082/spring-rest/employees/", + HttpMethod.GET, + null, Employee[].class); + + Employee[] employees = response.getBody(); + + assert employees != null; + asList(employees).forEach(System.out::println); + + return employees; + + } + + public List getAllEmployeesUsingParameterizedTypeReference() { RestTemplate restTemplate = new RestTemplate(); ResponseEntity> response = @@ -46,17 +87,18 @@ public class EmployeeClient "http://localhost:8082/spring-rest/employees/", HttpMethod.GET, null, - new ParameterizedTypeReference>(){}); + new ParameterizedTypeReference>() { + }); List employees = response.getBody(); - employees.forEach(e -> System.out.println(e)); + assert employees != null; + employees.forEach(System.out::println); return employees; } - public List getAllEmployeesUsingWrapperClass() - { + public List getAllEmployeesUsingWrapperClass() { RestTemplate restTemplate = new RestTemplate(); EmployeeList response = @@ -66,13 +108,12 @@ public class EmployeeClient List employees = response.getEmployees(); - employees.forEach(e -> System.out.println(e)); + employees.forEach(System.out::println); return employees; } - public void createEmployeesUsingLists() - { + public void createEmployeesUsingLists() { RestTemplate restTemplate = new RestTemplate(); List newEmployees = new ArrayList<>(); @@ -85,8 +126,7 @@ public class EmployeeClient ResponseEntity.class); } - public void createEmployeesUsingWrapperClass() - { + public void createEmployeesUsingWrapperClass() { RestTemplate restTemplate = new RestTemplate(); List newEmployees = new ArrayList<>(); From 98d4f930a533a32a22a7901617a6a31402cba8ba Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Mon, 28 Oct 2019 11:00:25 +0100 Subject: [PATCH 238/265] #BAEL-10229 Restore the spring-ejb pom as it's using a version of Spring Boot that is too different from the one in parent-boot-2. --- spring-ejb/pom.xml | 6 +++--- spring-ejb/spring-ejb-client/pom.xml | 20 ++++++++++++++++++-- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/spring-ejb/pom.xml b/spring-ejb/pom.xml index 12c1d029ff..4422223c6f 100755 --- a/spring-ejb/pom.xml +++ b/spring-ejb/pom.xml @@ -11,9 +11,9 @@ com.baeldung - parent-boot-2 - 0.0.1-SNAPSHOT - ../parent-boot-2 + parent-modules + 1.0.0-SNAPSHOT + ../ diff --git a/spring-ejb/spring-ejb-client/pom.xml b/spring-ejb/spring-ejb-client/pom.xml index 8d4cdd37e8..2dd3120532 100644 --- a/spring-ejb/spring-ejb-client/pom.xml +++ b/spring-ejb/spring-ejb-client/pom.xml @@ -12,7 +12,19 @@ spring-ejb 1.0.0-SNAPSHOT - + + + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot.version} + pom + import + + + + org.springframework.boot @@ -49,9 +61,13 @@ org.springframework.boot spring-boot-maven-plugin - 2.0.4.RELEASE + ${spring-boot.version} + + 2.0.4.RELEASE + + From b0af74ef81778533021ebc22b052b9ca9a33f258 Mon Sep 17 00:00:00 2001 From: Kaushik Bagchi Date: Mon, 28 Oct 2019 18:00:42 +0100 Subject: [PATCH 239/265] updated as per Sam's comment --- .../lists/client/EmployeeClient.java | 21 ------------------- 1 file changed, 21 deletions(-) diff --git a/spring-rest/src/main/java/com/baeldung/resttemplate/lists/client/EmployeeClient.java b/spring-rest/src/main/java/com/baeldung/resttemplate/lists/client/EmployeeClient.java index a01aedb7d7..49e375f9cc 100644 --- a/spring-rest/src/main/java/com/baeldung/resttemplate/lists/client/EmployeeClient.java +++ b/spring-rest/src/main/java/com/baeldung/resttemplate/lists/client/EmployeeClient.java @@ -19,9 +19,6 @@ public class EmployeeClient { public static void main(String[] args) { EmployeeClient employeeClient = new EmployeeClient(); - System.out.println("Calling GET using arrays"); - employeeClient.getAllEmployeesAsArray(); - System.out.println("Calling GET for entity using arrays"); employeeClient.getForEntityEmployeesAsArray(); @@ -60,24 +57,6 @@ public class EmployeeClient { } - public Employee[] getAllEmployeesAsArray() { - - RestTemplate restTemplate = new RestTemplate(); - - ResponseEntity response = - restTemplate.exchange( - "http://localhost:8082/spring-rest/employees/", - HttpMethod.GET, - null, Employee[].class); - - Employee[] employees = response.getBody(); - - assert employees != null; - asList(employees).forEach(System.out::println); - - return employees; - - } public List getAllEmployeesUsingParameterizedTypeReference() { RestTemplate restTemplate = new RestTemplate(); From d9babf5ec62773f1196b866df670e1bec2adfba6 Mon Sep 17 00:00:00 2001 From: Jonathan Cook Date: Mon, 28 Oct 2019 19:27:28 +0100 Subject: [PATCH 240/265] Update README.md Update readme for BAEL-2939 --- persistence-modules/java-jpa-2/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/persistence-modules/java-jpa-2/README.md b/persistence-modules/java-jpa-2/README.md index 1b4a175008..ea5f9a424f 100644 --- a/persistence-modules/java-jpa-2/README.md +++ b/persistence-modules/java-jpa-2/README.md @@ -10,4 +10,5 @@ This module contains articles about the Java Persistence API (JPA) in Java. - [Types of JPA Queries](https://www.baeldung.com/jpa-queries) - [JPA/Hibernate Projections](https://www.baeldung.com/jpa-hibernate-projections) - [Combining JPA And/Or Criteria Predicates](https://www.baeldung.com/jpa-and-or-criteria-predicates) -- More articles: [[<-- prev]](/java-jpa) \ No newline at end of file +- [JPA Annotation for the PostgreSQL TEXT Type](https://www.baeldung.com/jpa-annotation-postgresql-text-type) +- More articles: [[<-- prev]](/java-jpa) From 1a54cd7d4d23d35f92874799949fc5d9de660f17 Mon Sep 17 00:00:00 2001 From: Jonathan Cook Date: Mon, 28 Oct 2019 19:30:56 +0100 Subject: [PATCH 241/265] Update README.md Update Readme for BAEL-3322 --- testing-modules/mocks/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/testing-modules/mocks/README.md b/testing-modules/mocks/README.md index 3baefe072b..fc7ec49e8b 100644 --- a/testing-modules/mocks/README.md +++ b/testing-modules/mocks/README.md @@ -9,3 +9,4 @@ - [JMockit Advanced Usage](http://www.baeldung.com/jmockit-advanced-usage) - [Introduction to Jukito](http://www.baeldung.com/jukito) - [A Guide to JavaFaker](https://www.baeldung.com/java-faker) +- [File System Mocking with Jimfs](https://www.baeldung.com/jimfs-file-system-mocking) From 3b56518706026b1baeda72898eff233c1b7438aa Mon Sep 17 00:00:00 2001 From: Jonathan Cook Date: Mon, 28 Oct 2019 19:34:08 +0100 Subject: [PATCH 242/265] Update README.md update readme for BAEL-3089 --- persistence-modules/java-jpa-2/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/persistence-modules/java-jpa-2/README.md b/persistence-modules/java-jpa-2/README.md index ea5f9a424f..14433f8fc8 100644 --- a/persistence-modules/java-jpa-2/README.md +++ b/persistence-modules/java-jpa-2/README.md @@ -11,4 +11,5 @@ This module contains articles about the Java Persistence API (JPA) in Java. - [JPA/Hibernate Projections](https://www.baeldung.com/jpa-hibernate-projections) - [Combining JPA And/Or Criteria Predicates](https://www.baeldung.com/jpa-and-or-criteria-predicates) - [JPA Annotation for the PostgreSQL TEXT Type](https://www.baeldung.com/jpa-annotation-postgresql-text-type) +- [Mapping a Single Entity to Multiple Tables in JPA](https://www.baeldung.com/jpa-mapping-single-entity-to-multiple-tables) - More articles: [[<-- prev]](/java-jpa) From 8aaa2cef99d78435aad1f0a643863ce5585e89ff Mon Sep 17 00:00:00 2001 From: Ali Dehghani Date: Mon, 28 Oct 2019 23:33:43 +0330 Subject: [PATCH 243/265] Fixed the Integrations Tests in spring-boot-data --- .../java/com/baeldung/disableautoconfig/SpringDataJPA.java | 3 +++ .../com/baeldung/disableautoconfig/SpringDataMongoDB.java | 4 +++- .../java/com/baeldung/disableautoconfig/SpringDataRedis.java | 4 +++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/spring-boot-data/src/main/java/com/baeldung/disableautoconfig/SpringDataJPA.java b/spring-boot-data/src/main/java/com/baeldung/disableautoconfig/SpringDataJPA.java index 8e4ee76a25..87656f66a6 100644 --- a/spring-boot-data/src/main/java/com/baeldung/disableautoconfig/SpringDataJPA.java +++ b/spring-boot-data/src/main/java/com/baeldung/disableautoconfig/SpringDataJPA.java @@ -1,12 +1,15 @@ package com.baeldung.disableautoconfig; +import org.javers.spring.boot.sql.JaversSqlAutoConfiguration; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.data.web.SpringDataWebAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration; import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration; @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, + JaversSqlAutoConfiguration.class, SpringDataWebAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, HibernateJpaAutoConfiguration.class}) public class SpringDataJPA { diff --git a/spring-boot-data/src/main/java/com/baeldung/disableautoconfig/SpringDataMongoDB.java b/spring-boot-data/src/main/java/com/baeldung/disableautoconfig/SpringDataMongoDB.java index 865c137a8d..0845acee6e 100644 --- a/spring-boot-data/src/main/java/com/baeldung/disableautoconfig/SpringDataMongoDB.java +++ b/spring-boot-data/src/main/java/com/baeldung/disableautoconfig/SpringDataMongoDB.java @@ -3,9 +3,11 @@ package com.baeldung.disableautoconfig; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration; +import org.springframework.boot.autoconfigure.data.web.SpringDataWebAutoConfiguration; import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration; -@SpringBootApplication(exclude = {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class}) +@SpringBootApplication(exclude = {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class, + SpringDataWebAutoConfiguration.class}) public class SpringDataMongoDB { public static void main(String[] args) { diff --git a/spring-boot-data/src/main/java/com/baeldung/disableautoconfig/SpringDataRedis.java b/spring-boot-data/src/main/java/com/baeldung/disableautoconfig/SpringDataRedis.java index 9ec831c446..cd8cb0de09 100644 --- a/spring-boot-data/src/main/java/com/baeldung/disableautoconfig/SpringDataRedis.java +++ b/spring-boot-data/src/main/java/com/baeldung/disableautoconfig/SpringDataRedis.java @@ -4,8 +4,10 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; import org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration; +import org.springframework.boot.autoconfigure.data.web.SpringDataWebAutoConfiguration; -@SpringBootApplication(exclude = {RedisAutoConfiguration.class, RedisRepositoriesAutoConfiguration.class}) +@SpringBootApplication(exclude = {RedisAutoConfiguration.class, RedisRepositoriesAutoConfiguration.class, + SpringDataWebAutoConfiguration.class}) public class SpringDataRedis { public static void main(String[] args) { From 9002da9c61ab9809a200d253bdffb9f11583f326 Mon Sep 17 00:00:00 2001 From: Ali Dehghani Date: Mon, 28 Oct 2019 23:52:57 +0330 Subject: [PATCH 244/265] Fixed the Integrations Tests in jee-kotlin --- .../com/baeldung/jeekotlin/StudentResourceIntegrationTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jee-kotlin/src/test/kotlin/com/baeldung/jeekotlin/StudentResourceIntegrationTest.java b/jee-kotlin/src/test/kotlin/com/baeldung/jeekotlin/StudentResourceIntegrationTest.java index b91b47cb1f..d48a3a96da 100644 --- a/jee-kotlin/src/test/kotlin/com/baeldung/jeekotlin/StudentResourceIntegrationTest.java +++ b/jee-kotlin/src/test/kotlin/com/baeldung/jeekotlin/StudentResourceIntegrationTest.java @@ -36,7 +36,7 @@ public class StudentResourceIntegrationTest { .withMavenCentralRepo(true) .withClassPathResolution(true) .loadPomFromFile("pom.xml") - .resolve("org.jetbrains.kotlin:kotlin-stdlib") + .resolve("org.jetbrains.kotlin:kotlin-stdlib:1.3.41") .withTransitivity() .as(JavaArchive.class); From 096ce9d045e8179d4d44319e392ad7804e094de2 Mon Sep 17 00:00:00 2001 From: Alessio Stalla Date: Tue, 29 Oct 2019 00:02:53 +0100 Subject: [PATCH 245/265] #BAEL-10229 Restore removed dependencies from load-testing-comparison module. --- .../load-testing-comparison/pom.xml | 27 ++++++++++++++----- 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/testing-modules/load-testing-comparison/pom.xml b/testing-modules/load-testing-comparison/pom.xml index 6e307a24ca..8441eb3db7 100644 --- a/testing-modules/load-testing-comparison/pom.xml +++ b/testing-modules/load-testing-comparison/pom.xml @@ -34,16 +34,32 @@ scala-library ${scala.version} - - - - - com.fasterxml.jackson.core jackson-databind ${jackson.version} + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-data-jpa + + + com.h2database + h2 + + + org.projectlombok + lombok + compile + @@ -111,7 +127,6 @@ 3.2.2 2.2.1 5.0 - 3.11 From c8d8972a56ced8b22b9bbeba74fc6e395cb45b58 Mon Sep 17 00:00:00 2001 From: Yavuz Tas <12643010+yavuztas@users.noreply.github.com> Date: Tue, 29 Oct 2019 10:01:58 +0100 Subject: [PATCH 246/265] Update javaxval/src/test/java/org/baeldung/javaxval/messageinterpolator/ParameterMessageInterpolaterIntegrationTest.java update to use the givenX_whenY_thenZ naming convention for tests Co-Authored-By: KevinGilmore --- .../ParameterMessageInterpolaterIntegrationTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/javaxval/src/test/java/org/baeldung/javaxval/messageinterpolator/ParameterMessageInterpolaterIntegrationTest.java b/javaxval/src/test/java/org/baeldung/javaxval/messageinterpolator/ParameterMessageInterpolaterIntegrationTest.java index 9badd5d5a4..bd2f508784 100644 --- a/javaxval/src/test/java/org/baeldung/javaxval/messageinterpolator/ParameterMessageInterpolaterIntegrationTest.java +++ b/javaxval/src/test/java/org/baeldung/javaxval/messageinterpolator/ParameterMessageInterpolaterIntegrationTest.java @@ -28,7 +28,7 @@ public class ParameterMessageInterpolaterIntegrationTest { } @Test - public void ifNameLengthIsLess_nameValidationFails() { + public void givenNameLengthLessThanMin_whenValidate_thenValidationFails() { Person person = new Person(); person.setName("John Doe"); person.setAge(18); @@ -67,4 +67,4 @@ public class ParameterMessageInterpolaterIntegrationTest { assertEquals("Email address should be in a correct format: ${validatedValue}", violation.getMessage()); } -} \ No newline at end of file +} From 2f989fb4354469ca28aece46b91429018c782dfe Mon Sep 17 00:00:00 2001 From: Yavuz Tas <12643010+yavuztas@users.noreply.github.com> Date: Tue, 29 Oct 2019 10:02:16 +0100 Subject: [PATCH 247/265] Update javaxval/src/test/java/org/baeldung/javaxval/messageinterpolator/ParameterMessageInterpolaterIntegrationTest.java update to use the givenX_whenY_thenZ naming convention for tests Co-Authored-By: KevinGilmore --- .../ParameterMessageInterpolaterIntegrationTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/javaxval/src/test/java/org/baeldung/javaxval/messageinterpolator/ParameterMessageInterpolaterIntegrationTest.java b/javaxval/src/test/java/org/baeldung/javaxval/messageinterpolator/ParameterMessageInterpolaterIntegrationTest.java index bd2f508784..15c451348e 100644 --- a/javaxval/src/test/java/org/baeldung/javaxval/messageinterpolator/ParameterMessageInterpolaterIntegrationTest.java +++ b/javaxval/src/test/java/org/baeldung/javaxval/messageinterpolator/ParameterMessageInterpolaterIntegrationTest.java @@ -41,7 +41,7 @@ public class ParameterMessageInterpolaterIntegrationTest { } @Test - public void ifAgeIsLess_ageMinValidationFails() { + public void givenAgeIsLessThanMin_whenValidate_thenValidationFails() { Person person = new Person(); person.setName("John Stephaner Doe"); person.setAge(16); From 8582a17ca369f8ee8590805d540ad9456ee0ca5e Mon Sep 17 00:00:00 2001 From: Yavuz Tas <12643010+yavuztas@users.noreply.github.com> Date: Tue, 29 Oct 2019 10:02:27 +0100 Subject: [PATCH 248/265] Update javaxval/src/test/java/org/baeldung/javaxval/messageinterpolator/ParameterMessageInterpolaterIntegrationTest.java update to use the givenX_whenY_thenZ naming convention for tests Co-Authored-By: KevinGilmore --- .../ParameterMessageInterpolaterIntegrationTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/javaxval/src/test/java/org/baeldung/javaxval/messageinterpolator/ParameterMessageInterpolaterIntegrationTest.java b/javaxval/src/test/java/org/baeldung/javaxval/messageinterpolator/ParameterMessageInterpolaterIntegrationTest.java index 15c451348e..6ecb916ab4 100644 --- a/javaxval/src/test/java/org/baeldung/javaxval/messageinterpolator/ParameterMessageInterpolaterIntegrationTest.java +++ b/javaxval/src/test/java/org/baeldung/javaxval/messageinterpolator/ParameterMessageInterpolaterIntegrationTest.java @@ -54,7 +54,7 @@ public class ParameterMessageInterpolaterIntegrationTest { } @Test - public void ifEmailIsMalformed_emailFormatValidationFails() { + public void givenEmailIsMalformed_whenValidate_thenValidationFails() { Person person = new Person(); person.setName("John Stephaner Doe"); person.setAge(18); From cd3b139feff57712384b2d9d95719a5021a8b1ec Mon Sep 17 00:00:00 2001 From: Ali Dehghani Date: Tue, 29 Oct 2019 18:56:57 +0330 Subject: [PATCH 249/265] Disabling the Wildfly Remote Profile --- jee-kotlin/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jee-kotlin/pom.xml b/jee-kotlin/pom.xml index 17163ba23c..60765f6bc2 100644 --- a/jee-kotlin/pom.xml +++ b/jee-kotlin/pom.xml @@ -230,7 +230,7 @@ - wildfly-remote-arquillian + wildfly-remote-arquillian-disabled org.jboss.resteasy From e8a597b5e991c067e7cf058bc9967ab09ec95a91 Mon Sep 17 00:00:00 2001 From: vatsalgosar Date: Wed, 30 Oct 2019 00:07:04 +0530 Subject: [PATCH 250/265] - Updated test names to reflect what it is testing --- .../test/java/com/baeldung/scanner/JavaScannerUnitTest.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/core-java-modules/core-java-io-2/src/test/java/com/baeldung/scanner/JavaScannerUnitTest.java b/core-java-modules/core-java-io-2/src/test/java/com/baeldung/scanner/JavaScannerUnitTest.java index 7c244803dd..5b304284b2 100644 --- a/core-java-modules/core-java-io-2/src/test/java/com/baeldung/scanner/JavaScannerUnitTest.java +++ b/core-java-modules/core-java-io-2/src/test/java/com/baeldung/scanner/JavaScannerUnitTest.java @@ -29,14 +29,15 @@ public class JavaScannerUnitTest { } @Test(expected = NoSuchElementException.class) - public void whenReadingLines_thenThrowNoSuchElementException() { + + public void givenNoNewLine_whenReadingNextLine_thenThrowNoSuchElementException() { try (Scanner scanner = new Scanner("")) { String result = scanner.nextLine(); } } @Test(expected = IllegalStateException.class) - public void whenReadingLines_thenThrowIllegalStateException() { + public void givenScannerIsClosed_whenReadingNextLine_thenThrowIllegalStateException() { Scanner scanner = new Scanner(""); scanner.close(); String result = scanner.nextLine(); From 3d73ba4f8ea21171e0fe4c2c05dd11a8959386d7 Mon Sep 17 00:00:00 2001 From: Ali Dehghani Date: Wed, 30 Oct 2019 00:44:25 +0330 Subject: [PATCH 251/265] Fixed the Max Memory Limit for the Embedded Redis Server --- .../redis/template/RedisKeyCommandsIntegrationTest.java | 2 +- .../redis/template/RedisTemplateListOpsIntegrationTest.java | 2 +- .../redis/template/RedisTemplateValueOpsIntegrationTest.java | 2 +- .../spring/data/redis/RedisMessageListenerIntegrationTest.java | 2 +- .../data/redis/repo/StudentRepositoryIntegrationTest.java | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/reactive/redis/template/RedisKeyCommandsIntegrationTest.java b/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/reactive/redis/template/RedisKeyCommandsIntegrationTest.java index 1333f94653..af790c99b7 100644 --- a/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/reactive/redis/template/RedisKeyCommandsIntegrationTest.java +++ b/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/reactive/redis/template/RedisKeyCommandsIntegrationTest.java @@ -38,7 +38,7 @@ public class RedisKeyCommandsIntegrationTest { @BeforeClass public static void startRedisServer() throws IOException { - redisServer = new RedisServerBuilder().port(6379).setting("maxheap 256M").build(); + redisServer = new RedisServerBuilder().port(6379).setting("maxmemory 256M").build(); redisServer.start(); } diff --git a/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/reactive/redis/template/RedisTemplateListOpsIntegrationTest.java b/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/reactive/redis/template/RedisTemplateListOpsIntegrationTest.java index 88c4fa6eed..58846d7c27 100644 --- a/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/reactive/redis/template/RedisTemplateListOpsIntegrationTest.java +++ b/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/reactive/redis/template/RedisTemplateListOpsIntegrationTest.java @@ -36,7 +36,7 @@ public class RedisTemplateListOpsIntegrationTest { @BeforeClass public static void startRedisServer() throws IOException { - redisServer = new RedisServerBuilder().port(6379).setting("maxheap 128M").build(); + redisServer = new RedisServerBuilder().port(6379).setting("maxmemory 128M").build(); redisServer.start(); } diff --git a/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/reactive/redis/template/RedisTemplateValueOpsIntegrationTest.java b/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/reactive/redis/template/RedisTemplateValueOpsIntegrationTest.java index afa5267582..5d12f90f34 100644 --- a/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/reactive/redis/template/RedisTemplateValueOpsIntegrationTest.java +++ b/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/reactive/redis/template/RedisTemplateValueOpsIntegrationTest.java @@ -38,7 +38,7 @@ public class RedisTemplateValueOpsIntegrationTest { @BeforeClass public static void startRedisServer() throws IOException { - redisServer = new RedisServerBuilder().port(6379).setting("maxheap 256M").build(); + redisServer = new RedisServerBuilder().port(6379).setting("maxmemory 256M").build(); redisServer.start(); } diff --git a/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/redis/RedisMessageListenerIntegrationTest.java b/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/redis/RedisMessageListenerIntegrationTest.java index 1c69b63c09..b2862e26c3 100644 --- a/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/redis/RedisMessageListenerIntegrationTest.java +++ b/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/redis/RedisMessageListenerIntegrationTest.java @@ -33,7 +33,7 @@ public class RedisMessageListenerIntegrationTest { @BeforeClass public static void startRedisServer() throws IOException { - redisServer = new RedisServerBuilder().port(6379).setting("maxheap 256M").build(); + redisServer = new RedisServerBuilder().port(6379).setting("maxmemory 256M").build(); redisServer.start(); } diff --git a/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/redis/repo/StudentRepositoryIntegrationTest.java b/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/redis/repo/StudentRepositoryIntegrationTest.java index b1a36475c3..24191a42b9 100644 --- a/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/redis/repo/StudentRepositoryIntegrationTest.java +++ b/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/redis/repo/StudentRepositoryIntegrationTest.java @@ -34,7 +34,7 @@ public class StudentRepositoryIntegrationTest { @BeforeClass public static void startRedisServer() throws IOException { - redisServer = new RedisServerBuilder().port(6379).setting("maxheap 128M").build(); + redisServer = new RedisServerBuilder().port(6379).setting("maxmemory 128M").build(); redisServer.start(); } From f0a3af9187b46eed372d7d2130501d0ba63a728f Mon Sep 17 00:00:00 2001 From: Ali Dehghani Date: Wed, 30 Oct 2019 01:10:19 +0330 Subject: [PATCH 252/265] Fixed the Integrations Tests in spring-data-rest-querydsl --- .../baeldung/springdatarestquerydsl/IntegrationTest.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/spring-data-rest-querydsl/src/test/java/com/baeldung/springdatarestquerydsl/IntegrationTest.java b/spring-data-rest-querydsl/src/test/java/com/baeldung/springdatarestquerydsl/IntegrationTest.java index ef86c2f36d..2d3dbc4c74 100644 --- a/spring-data-rest-querydsl/src/test/java/com/baeldung/springdatarestquerydsl/IntegrationTest.java +++ b/spring-data-rest-querydsl/src/test/java/com/baeldung/springdatarestquerydsl/IntegrationTest.java @@ -36,17 +36,17 @@ public class IntegrationTest { @Test public void givenRequestHasBeenMade_whenQueryOverNameAttribute_thenGetJohn() throws Exception { // Get John - mockMvc.perform(get("/personQuery?name=John")).andExpect(status().isOk()).andExpect(content().contentType(contentType)) + mockMvc.perform(get("/users?name=John")).andExpect(status().isOk()).andExpect(content().contentType(contentType)) .andExpect(jsonPath("$", hasSize(1))).andExpect(jsonPath("$[0].name", is("John"))) .andExpect(jsonPath("$[0].address.address", is("Fake Street 1"))) - .andExpect(jsonPath("$[0].address.country", is("Fake Country"))); + .andExpect(jsonPath("$[0].address.country", is("Spain"))); } @Test public void givenRequestHasBeenMade_whenQueryOverNameAttribute_thenGetLisa() throws Exception { // Get Lisa - mockMvc.perform(get("/personQuery?name=Lisa")).andExpect(status().isOk()).andExpect(content().contentType(contentType)) + mockMvc.perform(get("/users?name=Lisa")).andExpect(status().isOk()).andExpect(content().contentType(contentType)) .andExpect(jsonPath("$", hasSize(1))).andExpect(jsonPath("$[0].name", is("Lisa"))) .andExpect(jsonPath("$[0].address.address", is("Real Street 1"))) - .andExpect(jsonPath("$[0].address.country", is("Real Country"))); + .andExpect(jsonPath("$[0].address.country", is("Germany"))); } } From 5914a5195a1567e14c9b62f948d77a732d8d11d5 Mon Sep 17 00:00:00 2001 From: Fred Date: Tue, 29 Oct 2019 21:34:29 -0300 Subject: [PATCH 253/265] Customizing the Result of JPA Queries with Aggregation Functions Module (#7977) * Customizing the Result of JPA Queries with Aggregation Functions Module * *Code fix for the PR #7977 * *Inclusion of a method and tests for queries returning Object[] for PR #7977 * *Assertions update PR #7977 * *Adjust in the integration tests PR #7977 --- .../baeldung/aggregation/model/Comment.java | 85 ++++++++++++++ .../com/baeldung/aggregation/model/Post.java | 75 ++++++++++++ .../model/custom/CommentCount.java | 27 +++++ .../model/custom/ICommentCount.java | 8 ++ .../repository/CommentRepository.java | 27 +++++ .../SpringDataAggregateIntegrationTest.java | 107 ++++++++++++++++++ .../test/resources/test-aggregation-data.sql | 7 ++ 7 files changed, 336 insertions(+) create mode 100644 persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/model/Comment.java create mode 100644 persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/model/Post.java create mode 100644 persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/model/custom/CommentCount.java create mode 100644 persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/model/custom/ICommentCount.java create mode 100644 persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/repository/CommentRepository.java create mode 100644 persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/aggregation/SpringDataAggregateIntegrationTest.java create mode 100644 persistence-modules/spring-data-jpa-2/src/test/resources/test-aggregation-data.sql diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/model/Comment.java b/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/model/Comment.java new file mode 100644 index 0000000000..26c2373cbe --- /dev/null +++ b/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/model/Comment.java @@ -0,0 +1,85 @@ +package com.baeldung.aggregation.model; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import java.util.Objects; + +@Entity +public class Comment { + @Id + private Integer id; + private Integer year; + private boolean approved; + private String content; + @ManyToOne + private Post post; + + public Comment() { + } + + public Comment(int id, int year, boolean approved, String content, Post post) { + this.id = id; + this.year = year; + this.approved = approved; + this.content = content; + this.post = post; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Integer getYear() { + return year; + } + + public void setYear(Integer year) { + this.year = year; + } + + public boolean isApproved() { + return approved; + } + + public void setApproved(boolean approved) { + this.approved = approved; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public Post getPost() { + return post; + } + + public void setPost(Post post) { + this.post = post; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (!(o instanceof Comment)) { + return false; + } + Comment comment = (Comment) o; + return getId().equals(comment.getId()); + } + + @Override + public int hashCode() { + return Objects.hash(getId()); + } +} diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/model/Post.java b/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/model/Post.java new file mode 100644 index 0000000000..f396e080ae --- /dev/null +++ b/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/model/Post.java @@ -0,0 +1,75 @@ +package com.baeldung.aggregation.model; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.OneToMany; +import java.util.List; +import java.util.Objects; + +@Entity +public class Post { + @Id + private Integer id; + private String title; + private String content; + @OneToMany(mappedBy = "post") + private List comments; + + public Post() { + } + + public Post(Integer id, String title, String content) { + this.id = id; + this.title = title; + this.content = content; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public List getComments() { + return comments; + } + + public void setComments(List comments) { + this.comments = comments; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (!(o instanceof Post)) { + return false; + } + Post post = (Post) o; + return getId().equals(post.getId()); + } + + @Override + public int hashCode() { + return Objects.hash(getId()); + } +} diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/model/custom/CommentCount.java b/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/model/custom/CommentCount.java new file mode 100644 index 0000000000..510b52a47c --- /dev/null +++ b/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/model/custom/CommentCount.java @@ -0,0 +1,27 @@ +package com.baeldung.aggregation.model.custom; + +public class CommentCount { + private Integer year; + private Long total; + + public CommentCount(Integer year, Long total) { + this.year = year; + this.total = total; + } + + public Integer getYear() { + return year; + } + + public void setYear(Integer year) { + this.year = year; + } + + public Long getTotal() { + return total; + } + + public void setTotal(Long total) { + this.total = total; + } +} diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/model/custom/ICommentCount.java b/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/model/custom/ICommentCount.java new file mode 100644 index 0000000000..acb25cfd49 --- /dev/null +++ b/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/model/custom/ICommentCount.java @@ -0,0 +1,8 @@ +package com.baeldung.aggregation.model.custom; + +public interface ICommentCount { + + Integer getYearComment(); + + Long getTotalComment(); +} diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/repository/CommentRepository.java b/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/repository/CommentRepository.java new file mode 100644 index 0000000000..89e9345e94 --- /dev/null +++ b/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/aggregation/repository/CommentRepository.java @@ -0,0 +1,27 @@ +package com.baeldung.aggregation.repository; + +import com.baeldung.aggregation.model.Comment; +import com.baeldung.aggregation.model.custom.CommentCount; +import com.baeldung.aggregation.model.custom.ICommentCount; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface CommentRepository extends JpaRepository { + + @Query("SELECT c.year, COUNT(c.year) FROM Comment AS c GROUP BY c.year ORDER BY c.year DESC") + List countTotalCommentsByYear(); + + @Query("SELECT new com.baeldung.aggregation.model.custom.CommentCount(c.year, COUNT(c.year)) FROM Comment AS c GROUP BY c.year ORDER BY c.year DESC") + List countTotalCommentsByYearClass(); + + @Query("SELECT c.year AS yearComment, COUNT(c.year) AS totalComment FROM Comment AS c GROUP BY c.year ORDER BY c.year DESC") + List countTotalCommentsByYearInterface(); + + @Query(value = "SELECT c.year AS yearComment, COUNT(c.*) AS totalComment FROM comment AS c GROUP BY c.year ORDER BY c.year DESC", nativeQuery = true) + List countTotalCommentsByYearNative(); + +} diff --git a/persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/aggregation/SpringDataAggregateIntegrationTest.java b/persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/aggregation/SpringDataAggregateIntegrationTest.java new file mode 100644 index 0000000000..779ade7a3f --- /dev/null +++ b/persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/aggregation/SpringDataAggregateIntegrationTest.java @@ -0,0 +1,107 @@ +package com.baeldung.aggregation; + +import com.baeldung.aggregation.model.custom.CommentCount; +import com.baeldung.aggregation.model.custom.ICommentCount; +import com.baeldung.aggregation.repository.CommentRepository; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import org.springframework.test.context.jdbc.Sql; +import org.springframework.test.context.junit4.SpringRunner; + +import java.util.List; + +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; + +@RunWith(SpringRunner.class) +@DataJpaTest + +@Sql(scripts = "/test-aggregation-data.sql") +public class SpringDataAggregateIntegrationTest { + + @Autowired + private CommentRepository commentRepository; + + @Test + public void whenQueryWithAggregation_thenReturnResult() { + List commentCountsByYear = commentRepository.countTotalCommentsByYear(); + + Object[] countYear2019 = commentCountsByYear.get(0); + + assertThat(countYear2019[0], is(Integer.valueOf(2019))); + assertThat(countYear2019[1], is(1l)); + + Object[] countYear2018 = commentCountsByYear.get(1); + + assertThat(countYear2018[0], is(Integer.valueOf(2018))); + assertThat(countYear2018[1], is(2l)); + + Object[] countYear2017 = commentCountsByYear.get(2); + + assertThat(countYear2017[0], is(Integer.valueOf(2017))); + assertThat(countYear2017[1], is(1l)); + } + + @Test + public void whenQueryWithAggregation_thenReturnCustomResult() { + List commentCountsByYear = commentRepository.countTotalCommentsByYearClass(); + + CommentCount countYear2019 = commentCountsByYear.get(0); + + assertThat(countYear2019.getYear(), is(Integer.valueOf(2019))); + assertThat(countYear2019.getTotal(), is(1l)); + + CommentCount countYear2018 = commentCountsByYear.get(1); + + assertThat(countYear2018.getYear(), is(Integer.valueOf(2018))); + assertThat(countYear2018.getTotal(), is(2l)); + + CommentCount countYear2017 = commentCountsByYear.get(2); + + assertThat(countYear2017.getYear(), is(Integer.valueOf(2017))); + assertThat(countYear2017.getTotal(), is(1l)); + } + + @Test + public void whenQueryWithAggregation_thenReturnInterfaceResult() { + List commentCountsByYear = commentRepository.countTotalCommentsByYearInterface(); + + ICommentCount countYear2019 = commentCountsByYear.get(0); + + assertThat(countYear2019.getYearComment(), is(Integer.valueOf(2019))); + assertThat(countYear2019.getTotalComment(), is(1l)); + + ICommentCount countYear2018 = commentCountsByYear.get(1); + + assertThat(countYear2018.getYearComment(), is(Integer.valueOf(2018))); + assertThat(countYear2018.getTotalComment(), is(2l)); + + ICommentCount countYear2017 = commentCountsByYear.get(2); + + assertThat(countYear2017.getYearComment(), is(Integer.valueOf(2017))); + assertThat(countYear2017.getTotalComment(), is(1l)); + } + + @Test + public void whenNativeQueryWithAggregation_thenReturnInterfaceResult() { + List commentCountsByYear = commentRepository.countTotalCommentsByYearNative(); + + ICommentCount countYear2019 = commentCountsByYear.get(0); + + assertThat(countYear2019.getYearComment(), is(Integer.valueOf(2019))); + assertThat(countYear2019.getTotalComment(), is(1l)); + + ICommentCount countYear2018 = commentCountsByYear.get(1); + + assertThat(countYear2018.getYearComment(), is(Integer.valueOf(2018))); + assertThat(countYear2018.getTotalComment(), is(2l)); + + ICommentCount countYear2017 = commentCountsByYear.get(2); + + assertThat(countYear2017.getYearComment(), is(Integer.valueOf(2017))); + assertThat(countYear2017.getTotalComment(), is(1l)); + } + +} diff --git a/persistence-modules/spring-data-jpa-2/src/test/resources/test-aggregation-data.sql b/persistence-modules/spring-data-jpa-2/src/test/resources/test-aggregation-data.sql new file mode 100644 index 0000000000..12409a124e --- /dev/null +++ b/persistence-modules/spring-data-jpa-2/src/test/resources/test-aggregation-data.sql @@ -0,0 +1,7 @@ +INSERT INTO post (id, title, content) VALUES (1, 'Comment 1', 'Content 1'); +INSERT INTO post (id, title, content) VALUES (2, 'Comment 2', 'Content 2'); +INSERT INTO post (id, title, content) VALUES (3, 'Comment 3', 'Content 3'); +INSERT INTO comment (id, year, approved, content, post_id) VALUES (1, 2019, false, 'Comment 1', 1); +INSERT INTO comment (id, year, approved, content, post_id) VALUES (2, 2018, true, 'Comment 2', 1); +INSERT INTO comment (id, year, approved, content, post_id) VALUES (3, 2018, true, 'Comment 3', 2); +INSERT INTO comment (id, year, approved, content, post_id) VALUES (4, 2017, false, 'Comment 4', 3); \ No newline at end of file From ff853f6be4f279d12a8b16ecb6fcecd1875eb15e Mon Sep 17 00:00:00 2001 From: Ali Dehghani Date: Wed, 30 Oct 2019 08:08:48 +0330 Subject: [PATCH 254/265] Wait a little bit longer. --- .../spring/data/redis/RedisMessageListenerIntegrationTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/redis/RedisMessageListenerIntegrationTest.java b/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/redis/RedisMessageListenerIntegrationTest.java index b2862e26c3..6f9e6a8757 100644 --- a/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/redis/RedisMessageListenerIntegrationTest.java +++ b/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/redis/RedisMessageListenerIntegrationTest.java @@ -46,7 +46,7 @@ public class RedisMessageListenerIntegrationTest { public void testOnMessage() throws Exception { String message = "Message " + UUID.randomUUID(); redisMessagePublisher.publish(message); - Thread.sleep(100); + Thread.sleep(1000); assertTrue(RedisMessageSubscriber.messageList.get(0).contains(message)); } } \ No newline at end of file From 236261536d75c1062950d8e54fb18eda2aace176 Mon Sep 17 00:00:00 2001 From: catalin-burcea Date: Wed, 30 Oct 2019 16:51:30 +0200 Subject: [PATCH 255/265] Split or move spring-thymeleaf module --- spring-thymeleaf-2/README.md | 10 ++++++++ spring-thymeleaf-2/pom.xml | 22 ++++++++++++++++++ .../arrays}/ThymeleafArrayController.java | 2 +- .../BooleanExpressionsController.java | 2 +- .../thymeleaf/customhtml}/Course.java | 2 +- .../CourseRegistrationController.java | 8 +++---- .../ParticipantController.java | 2 +- .../main/resources/templates}/booleans.html | 0 .../main/resources/templates/continents.html | 0 .../templates}/courseRegistration.html | 0 spring-thymeleaf/.gitignore | 1 - spring-thymeleaf/README.md | 6 ----- spring-thymeleaf/pom.xml | 21 ----------------- ...rkingWithArraysInThymeleafApplication.java | 12 ---------- .../src/main/webapp/WEB-INF/views/home.html | 3 --- .../SpringContextIntegrationTest.java | 13 +++++------ .../thymeleaf}/SpringContextTest.java | 13 +++++------ .../csrf/CsrfEnabledIntegrationTest.java | 23 +++++++++---------- 18 files changed, 62 insertions(+), 78 deletions(-) rename {spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/controller => spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/arrays}/ThymeleafArrayController.java (92%) rename {spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/controller => spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/booleanexpressions}/BooleanExpressionsController.java (96%) rename {spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/model => spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/customhtml}/Course.java (95%) rename {spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/controller => spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/customhtml}/CourseRegistrationController.java (83%) rename spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/{controller => requestparameters}/ParticipantController.java (94%) rename {spring-thymeleaf/src/main/webapp/WEB-INF/views => spring-thymeleaf-2/src/main/resources/templates}/booleans.html (100%) rename {spring-thymeleaf => spring-thymeleaf-2}/src/main/resources/templates/continents.html (100%) rename {spring-thymeleaf/src/main/webapp/WEB-INF/views => spring-thymeleaf-2/src/main/resources/templates}/courseRegistration.html (100%) delete mode 100644 spring-thymeleaf/.gitignore delete mode 100644 spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/WorkingWithArraysInThymeleafApplication.java rename spring-thymeleaf/src/test/java/{org/baeldung => com/baeldung/thymeleaf}/SpringContextIntegrationTest.java (95%) rename spring-thymeleaf/src/test/java/{org/baeldung => com/baeldung/thymeleaf}/SpringContextTest.java (95%) rename spring-thymeleaf/src/test/java/{org/baeldung => com/baeldung/thymeleaf}/security/csrf/CsrfEnabledIntegrationTest.java (98%) diff --git a/spring-thymeleaf-2/README.md b/spring-thymeleaf-2/README.md index e7f0c60add..9f727f30ca 100644 --- a/spring-thymeleaf-2/README.md +++ b/spring-thymeleaf-2/README.md @@ -1,6 +1,16 @@ +## Spring Thymeleaf + +This module contains articles about Spring with Thymeleaf + ## Relevant Articles: - [Working with Enums in Thymeleaf](https://www.baeldung.com/thymeleaf-enums) - [Changing the Thymeleaf Template Directory in Spring Boot](https://www.baeldung.com/spring-thymeleaf-template-directory) - [Spring Request Parameters with Thymeleaf](https://www.baeldung.com/spring-thymeleaf-request-parameters) - [Thymeleaf lists Utility Object](https://www.baeldung.com/thymeleaf-lists-utility) +- [Working with Arrays in Thymeleaf](https://www.baeldung.com/thymeleaf-arrays) +- [Spring Path Variables with Thymeleaf](https://www.baeldung.com/spring-thymeleaf-path-variables) +- [Working with Boolean in Thymeleaf](https://www.baeldung.com/thymeleaf-boolean) +- [Working With Custom HTML Attributes in Thymeleaf](https://www.baeldung.com/thymeleaf-custom-html-attributes) +- [How to Create an Executable JAR with Maven](https://www.baeldung.com/executable-jar-with-maven) +- [[<-- prev]](/spring-thymeleaf) \ No newline at end of file diff --git a/spring-thymeleaf-2/pom.xml b/spring-thymeleaf-2/pom.xml index d31e5fa7f6..d53bb8ab1a 100644 --- a/spring-thymeleaf-2/pom.xml +++ b/spring-thymeleaf-2/pom.xml @@ -35,6 +35,27 @@ org.apache.maven.plugins maven-war-plugin + + + org.apache.tomcat.maven + tomcat7-maven-plugin + ${tomcat7-maven-plugin.version} + + + tomcat-run + + exec-war-only + + package + + / + false + webapp.jar + utf-8 + + + + spring-thymeleaf-2 @@ -42,5 +63,6 @@ 1.8 1.8 + 2.2 diff --git a/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/controller/ThymeleafArrayController.java b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/arrays/ThymeleafArrayController.java similarity index 92% rename from spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/controller/ThymeleafArrayController.java rename to spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/arrays/ThymeleafArrayController.java index 8276cc4376..d137cbdf94 100644 --- a/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/controller/ThymeleafArrayController.java +++ b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/arrays/ThymeleafArrayController.java @@ -1,4 +1,4 @@ -package com.baeldung.thymeleaf.controller; +package com.baeldung.thymeleaf.arrays; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; diff --git a/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/controller/BooleanExpressionsController.java b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/booleanexpressions/BooleanExpressionsController.java similarity index 96% rename from spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/controller/BooleanExpressionsController.java rename to spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/booleanexpressions/BooleanExpressionsController.java index 3a640e1499..e43e08334a 100644 --- a/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/controller/BooleanExpressionsController.java +++ b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/booleanexpressions/BooleanExpressionsController.java @@ -1,4 +1,4 @@ -package com.baeldung.thymeleaf.controller; +package com.baeldung.thymeleaf.booleanexpressions; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; diff --git a/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/model/Course.java b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/customhtml/Course.java similarity index 95% rename from spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/model/Course.java rename to spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/customhtml/Course.java index df2e9cd097..9bf8e5e52c 100644 --- a/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/model/Course.java +++ b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/customhtml/Course.java @@ -1,4 +1,4 @@ -package com.baeldung.thymeleaf.model; +package com.baeldung.thymeleaf.customhtml; import java.util.Date; diff --git a/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/controller/CourseRegistrationController.java b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/customhtml/CourseRegistrationController.java similarity index 83% rename from spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/controller/CourseRegistrationController.java rename to spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/customhtml/CourseRegistrationController.java index 2d2b5906e1..06e81ecba8 100644 --- a/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/controller/CourseRegistrationController.java +++ b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/customhtml/CourseRegistrationController.java @@ -1,4 +1,4 @@ -package com.baeldung.thymeleaf.controller; +package com.baeldung.thymeleaf.customhtml; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -6,8 +6,6 @@ import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; -import com.baeldung.thymeleaf.model.Course; - /** * Handles requests for the student model. * @@ -18,13 +16,13 @@ public class CourseRegistrationController { @RequestMapping(value = "/registerCourse", method = RequestMethod.POST) public String register(@ModelAttribute Course course, Model model) { model.addAttribute("successMessage", "You have successfully registered for course: " + course.getName() + "."); - return "courseRegistration.html"; + return "templates/courseRegistration.html"; } @RequestMapping(value = "/registerCourse", method = RequestMethod.GET) public String register(Model model) { model.addAttribute("course", new Course()); - return "courseRegistration.html"; + return "templates/courseRegistration.html"; } } diff --git a/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/controller/ParticipantController.java b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/requestparameters/ParticipantController.java similarity index 94% rename from spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/controller/ParticipantController.java rename to spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/requestparameters/ParticipantController.java index 9a354e709c..faa4ae0cf9 100644 --- a/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/controller/ParticipantController.java +++ b/spring-thymeleaf-2/src/main/java/com/baeldung/thymeleaf/requestparameters/ParticipantController.java @@ -1,4 +1,4 @@ -package com.baeldung.thymeleaf.controller; +package com.baeldung.thymeleaf.requestparameters; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; diff --git a/spring-thymeleaf/src/main/webapp/WEB-INF/views/booleans.html b/spring-thymeleaf-2/src/main/resources/templates/booleans.html similarity index 100% rename from spring-thymeleaf/src/main/webapp/WEB-INF/views/booleans.html rename to spring-thymeleaf-2/src/main/resources/templates/booleans.html diff --git a/spring-thymeleaf/src/main/resources/templates/continents.html b/spring-thymeleaf-2/src/main/resources/templates/continents.html similarity index 100% rename from spring-thymeleaf/src/main/resources/templates/continents.html rename to spring-thymeleaf-2/src/main/resources/templates/continents.html diff --git a/spring-thymeleaf/src/main/webapp/WEB-INF/views/courseRegistration.html b/spring-thymeleaf-2/src/main/resources/templates/courseRegistration.html similarity index 100% rename from spring-thymeleaf/src/main/webapp/WEB-INF/views/courseRegistration.html rename to spring-thymeleaf-2/src/main/resources/templates/courseRegistration.html diff --git a/spring-thymeleaf/.gitignore b/spring-thymeleaf/.gitignore deleted file mode 100644 index b83d22266a..0000000000 --- a/spring-thymeleaf/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/target/ diff --git a/spring-thymeleaf/README.md b/spring-thymeleaf/README.md index 329ef8580c..a5c6791609 100644 --- a/spring-thymeleaf/README.md +++ b/spring-thymeleaf/README.md @@ -9,16 +9,11 @@ This module contains articles about Spring with Thymeleaf - [Spring and Thymeleaf 3: Expressions](https://www.baeldung.com/spring-thymeleaf-3-expressions) - [Spring MVC + Thymeleaf 3.0: New Features](https://www.baeldung.com/spring-thymeleaf-3) - [How to Work with Dates in Thymeleaf](https://www.baeldung.com/dates-in-thymeleaf) -- [How to Create an Executable JAR with Maven](https://www.baeldung.com/executable-jar-with-maven) -- [Working with Boolean in Thymeleaf](https://www.baeldung.com/thymeleaf-boolean) - [Working with Fragments in Thymeleaf](https://www.baeldung.com/spring-thymeleaf-fragments) - [Conditionals in Thymeleaf](https://www.baeldung.com/spring-thymeleaf-conditionals) - [Iteration in Thymeleaf](https://www.baeldung.com/thymeleaf-iteration) -- [Working With Arrays in Thymeleaf](https://www.baeldung.com/thymeleaf-arrays) - [Spring with Thymeleaf Pagination for a List](https://www.baeldung.com/spring-thymeleaf-pagination) - [Working with Select and Option in Thymeleaf](https://www.baeldung.com/thymeleaf-select-option) -- [Working With Custom HTML Attributes in Thymeleaf](https://www.baeldung.com/thymeleaf-custom-html-attributes) -- [Spring Request Parameters with Thymeleaf](https://www.baeldung.com/spring-thymeleaf-request-parameters) - [[next -->]](/spring-thymeleaf-2) ### Build the Project @@ -35,7 +30,6 @@ Access the pages using the URLs: - http://localhost:8082/spring-thymeleaf/ - http://localhost:8082/spring-thymeleaf/addStudent/ - http://localhost:8082/spring-thymeleaf/listStudents/ - - http://localhost:8082/spring-thymeleaf/booleans/ The first URL is the home page of the application. The home page has links to the second and third pages. diff --git a/spring-thymeleaf/pom.xml b/spring-thymeleaf/pom.xml index cdc2ed25ae..d260a78d76 100644 --- a/spring-thymeleaf/pom.xml +++ b/spring-thymeleaf/pom.xml @@ -141,26 +141,6 @@ - - org.apache.tomcat.maven - tomcat7-maven-plugin - ${tomcat7-maven-plugin.version} - - - tomcat-run - - exec-war-only - - package - - / - false - webapp.jar - utf-8 - - - - @@ -174,7 +154,6 @@ 1.6.1 - 2.2 diff --git a/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/WorkingWithArraysInThymeleafApplication.java b/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/WorkingWithArraysInThymeleafApplication.java deleted file mode 100644 index bce0660fda..0000000000 --- a/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/WorkingWithArraysInThymeleafApplication.java +++ /dev/null @@ -1,12 +0,0 @@ -// package com.baeldung.thymeleaf; - -// import org.springframework.boot.SpringApplication; -// import org.springframework.boot.autoconfigure.SpringBootApplication; - -// @SpringBootApplication -// public class WorkingWithArraysInThymeleafApplication { - -// public static void main(String[] args) { -// SpringApplication.run(WorkingWithArraysInThymeleafApplication.class, args); -// } -// } diff --git a/spring-thymeleaf/src/main/webapp/WEB-INF/views/home.html b/spring-thymeleaf/src/main/webapp/WEB-INF/views/home.html index 25ff6a19bb..b458f7270c 100644 --- a/spring-thymeleaf/src/main/webapp/WEB-INF/views/home.html +++ b/spring-thymeleaf/src/main/webapp/WEB-INF/views/home.html @@ -24,9 +24,6 @@ - - - diff --git a/spring-thymeleaf/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-thymeleaf/src/test/java/com/baeldung/thymeleaf/SpringContextIntegrationTest.java similarity index 95% rename from spring-thymeleaf/src/test/java/org/baeldung/SpringContextIntegrationTest.java rename to spring-thymeleaf/src/test/java/com/baeldung/thymeleaf/SpringContextIntegrationTest.java index c7a0b4fc60..9a066b3101 100644 --- a/spring-thymeleaf/src/test/java/org/baeldung/SpringContextIntegrationTest.java +++ b/spring-thymeleaf/src/test/java/com/baeldung/thymeleaf/SpringContextIntegrationTest.java @@ -1,15 +1,14 @@ -package org.baeldung; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.web.WebAppConfiguration; +package com.baeldung.thymeleaf; import com.baeldung.thymeleaf.config.InitSecurity; import com.baeldung.thymeleaf.config.WebApp; import com.baeldung.thymeleaf.config.WebMVCConfig; import com.baeldung.thymeleaf.config.WebMVCSecurity; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.web.WebAppConfiguration; @RunWith(SpringJUnit4ClassRunner.class) @WebAppConfiguration diff --git a/spring-thymeleaf/src/test/java/org/baeldung/SpringContextTest.java b/spring-thymeleaf/src/test/java/com/baeldung/thymeleaf/SpringContextTest.java similarity index 95% rename from spring-thymeleaf/src/test/java/org/baeldung/SpringContextTest.java rename to spring-thymeleaf/src/test/java/com/baeldung/thymeleaf/SpringContextTest.java index 1ff1c52c68..cbd3f85b48 100644 --- a/spring-thymeleaf/src/test/java/org/baeldung/SpringContextTest.java +++ b/spring-thymeleaf/src/test/java/com/baeldung/thymeleaf/SpringContextTest.java @@ -1,15 +1,14 @@ -package org.baeldung; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.web.WebAppConfiguration; +package com.baeldung.thymeleaf; import com.baeldung.thymeleaf.config.InitSecurity; import com.baeldung.thymeleaf.config.WebApp; import com.baeldung.thymeleaf.config.WebMVCConfig; import com.baeldung.thymeleaf.config.WebMVCSecurity; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.web.WebAppConfiguration; @RunWith(SpringJUnit4ClassRunner.class) @WebAppConfiguration diff --git a/spring-thymeleaf/src/test/java/org/baeldung/security/csrf/CsrfEnabledIntegrationTest.java b/spring-thymeleaf/src/test/java/com/baeldung/thymeleaf/security/csrf/CsrfEnabledIntegrationTest.java similarity index 98% rename from spring-thymeleaf/src/test/java/org/baeldung/security/csrf/CsrfEnabledIntegrationTest.java rename to spring-thymeleaf/src/test/java/com/baeldung/thymeleaf/security/csrf/CsrfEnabledIntegrationTest.java index 4f6480e3b2..a7c9fb4ae4 100644 --- a/spring-thymeleaf/src/test/java/org/baeldung/security/csrf/CsrfEnabledIntegrationTest.java +++ b/spring-thymeleaf/src/test/java/com/baeldung/thymeleaf/security/csrf/CsrfEnabledIntegrationTest.java @@ -1,12 +1,9 @@ -package org.baeldung.security.csrf; - -import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf; -import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.user; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; - -import javax.servlet.Filter; +package com.baeldung.thymeleaf.security.csrf; +import com.baeldung.thymeleaf.config.InitSecurity; +import com.baeldung.thymeleaf.config.WebApp; +import com.baeldung.thymeleaf.config.WebMVCConfig; +import com.baeldung.thymeleaf.config.WebMVCSecurity; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -21,10 +18,12 @@ import org.springframework.test.web.servlet.request.RequestPostProcessor; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.web.context.WebApplicationContext; -import com.baeldung.thymeleaf.config.InitSecurity; -import com.baeldung.thymeleaf.config.WebApp; -import com.baeldung.thymeleaf.config.WebMVCConfig; -import com.baeldung.thymeleaf.config.WebMVCSecurity; +import javax.servlet.Filter; + +import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf; +import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.user; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; @RunWith(SpringJUnit4ClassRunner.class) @WebAppConfiguration From ba50a42d437290dc0453c9d7f11a755c947c1b04 Mon Sep 17 00:00:00 2001 From: catalin-burcea Date: Tue, 29 Oct 2019 14:54:28 +0200 Subject: [PATCH 256/265] Move articles out of java-strings part4 --- .../core-java-string-operations-2/README.md | 11 ++ .../core-java-string-operations-2/pom.xml | 81 +++++++++ .../emptystrings/EmptyStringCheck.java | 2 +- .../emptystrings/Java5EmptyStringCheck.java | 2 +- .../PlainJavaBlankStringCheck.java | 2 +- .../SomeClassWithValidations.java | 2 +- .../changecase/ToLowerCaseUnitTest.java | 58 +++---- .../changecase/ToUpperCaseUnitTest.java | 58 +++---- .../emptystrings/EmptyStringsUnitTest.java | 18 +- .../StringEqualsIgnoreCaseUnitTest.java | 2 +- .../StringInitializationUnitTest.java | 6 +- .../StringConcatenationUnitTest.java | 2 +- .../core-java-string-operations/README.md | 16 ++ .../core-java-string-operations/pom.xml | 66 +++++++ .../com/baeldung}/isnumeric/Benchmarking.java | 2 +- .../isnumeric/CheckIntegerInput.java | 2 +- .../com/baeldung}/isnumeric/IsNumeric.java | 2 +- .../baeldung}/isnumeric/IsNumericDriver.java | 2 +- .../newline/AddingNewLineToString.java | 2 +- .../streamoperations}/JoinerSplitter.java | 2 +- .../SubstringSearchPerformanceComparison.java | 15 +- .../java/com/baeldung}/tostring/Customer.java | 2 +- .../tostring/CustomerArrayToString.java | 2 +- .../CustomerComplexObjectToString.java | 2 +- .../tostring/CustomerPrimitiveToString.java | 2 +- .../tostring/CustomerReflectionToString.java | 2 +- .../CustomerWrapperCollectionToString.java | 2 +- .../java/com/baeldung}/tostring/Order.java | 2 +- .../src/main/resources/log4j.properties | 8 + .../ApacheCommonsEncodeDecodeUnitTest.java | 0 .../Java8EncodeDecodeUnitTest.java | 0 .../StringToByteArrayUnitTest.java | 9 +- .../isnumeric/CoreJavaIsNumericUnitTest.java | 2 +- .../NumberUtilsIsCreatableUnitTest.java | 2 +- .../NumberUtilsIsParsableUnitTest.java | 2 +- .../isnumeric/RegularExpressionsUnitTest.java | 2 +- .../StringUtilsIsNumericSpaceUnitTest.java | 2 +- .../StringUtilsIsNumericUnitTest.java | 2 +- .../com/baeldung/split}/SplitUnitTest.java | 2 +- .../JoinerSplitterUnitTest.java | 2 +- .../StringComparisonUnitTest.java | 2 +- .../substring}/SubstringUnitTest.java | 2 +- .../SubstringSearchUnitTest.java | 8 +- .../CustomerArrayToStringUnitTest.java | 2 +- ...CustomerComplexObjectToStringUnitTest.java | 2 +- .../CustomerPrimitiveToStringUnitTest.java | 2 +- ...omerWrapperCollectionToStringUnitTest.java | 2 +- java-strings-2/README.md | 8 +- java-strings-3/README.md | 10 -- java-strings-3/pom.xml | 161 ------------------ java-strings-3/src/main/resources/.gitignore | 13 -- java-strings-3/src/test/resources/.gitignore | 13 -- java-strings-ops/README.md | 6 - java-strings/README.md | 2 - pom.xml | 6 +- 55 files changed, 299 insertions(+), 340 deletions(-) create mode 100644 core-java-modules/core-java-string-operations-2/README.md create mode 100644 core-java-modules/core-java-string-operations-2/pom.xml rename {java-strings-2/src/main/java/com/baeldung/string => core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung}/emptystrings/EmptyStringCheck.java (75%) rename {java-strings-2/src/main/java/com/baeldung/string => core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung}/emptystrings/Java5EmptyStringCheck.java (76%) rename {java-strings-2/src/main/java/com/baeldung/string => core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung}/emptystrings/PlainJavaBlankStringCheck.java (77%) rename {java-strings-2/src/main/java/com/baeldung/string => core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung}/emptystrings/SomeClassWithValidations.java (87%) rename {java-strings-2/src/test/java/com/baeldung/string => core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung}/changecase/ToLowerCaseUnitTest.java (91%) rename {java-strings-2/src/test/java/com/baeldung/string => core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung}/changecase/ToUpperCaseUnitTest.java (91%) rename {java-strings-2/src/test/java/com/baeldung/string => core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung}/emptystrings/EmptyStringsUnitTest.java (96%) rename {java-strings-3/src/test/java/com/baeldung/string => core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung}/equalsIgnoreCase/StringEqualsIgnoreCaseUnitTest.java (94%) rename {java-strings-2 => core-java-modules/core-java-string-operations-2}/src/test/java/com/baeldung/initialization/StringInitializationUnitTest.java (91%) rename {java-strings-2/src/test/java/com/baeldung => core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/stringconcatenation}/StringConcatenationUnitTest.java (98%) create mode 100644 core-java-modules/core-java-string-operations/README.md create mode 100644 core-java-modules/core-java-string-operations/pom.xml rename {java-strings-ops/src/main/java/com/baeldung/string => core-java-modules/core-java-string-operations/src/main/java/com/baeldung}/isnumeric/Benchmarking.java (98%) rename {java-strings-ops/src/main/java/com/baeldung/string => core-java-modules/core-java-string-operations/src/main/java/com/baeldung}/isnumeric/CheckIntegerInput.java (92%) rename {java-strings-ops/src/main/java/com/baeldung/string => core-java-modules/core-java-string-operations/src/main/java/com/baeldung}/isnumeric/IsNumeric.java (96%) rename {java-strings-ops/src/main/java/com/baeldung/string => core-java-modules/core-java-string-operations/src/main/java/com/baeldung}/isnumeric/IsNumericDriver.java (96%) rename {java-strings/src/main/java/com/baeldung/string => core-java-modules/core-java-string-operations/src/main/java/com/baeldung}/newline/AddingNewLineToString.java (98%) rename {java-strings/src/main/java/com/baeldung/string => core-java-modules/core-java-string-operations/src/main/java/com/baeldung/streamoperations}/JoinerSplitter.java (96%) rename {java-strings-2/src/main/java/com/baeldung/string/search/performance => core-java-modules/core-java-string-operations/src/main/java/com/baeldung/substringsearch}/SubstringSearchPerformanceComparison.java (79%) rename {java-strings-ops/src/main/java/com/baeldung/string => core-java-modules/core-java-string-operations/src/main/java/com/baeldung}/tostring/Customer.java (91%) rename {java-strings-ops/src/main/java/com/baeldung/string => core-java-modules/core-java-string-operations/src/main/java/com/baeldung}/tostring/CustomerArrayToString.java (92%) rename {java-strings-ops/src/main/java/com/baeldung/string => core-java-modules/core-java-string-operations/src/main/java/com/baeldung}/tostring/CustomerComplexObjectToString.java (91%) rename {java-strings-ops/src/main/java/com/baeldung/string => core-java-modules/core-java-string-operations/src/main/java/com/baeldung}/tostring/CustomerPrimitiveToString.java (91%) rename {java-strings-ops/src/main/java/com/baeldung/string => core-java-modules/core-java-string-operations/src/main/java/com/baeldung}/tostring/CustomerReflectionToString.java (95%) rename {java-strings-ops/src/main/java/com/baeldung/string => core-java-modules/core-java-string-operations/src/main/java/com/baeldung}/tostring/CustomerWrapperCollectionToString.java (95%) rename {java-strings-ops/src/main/java/com/baeldung/string => core-java-modules/core-java-string-operations/src/main/java/com/baeldung}/tostring/Order.java (95%) create mode 100644 core-java-modules/core-java-string-operations/src/main/resources/log4j.properties rename {java-strings-2 => core-java-modules/core-java-string-operations}/src/test/java/com/baeldung/base64encodinganddecoding/ApacheCommonsEncodeDecodeUnitTest.java (100%) rename {java-strings-2 => core-java-modules/core-java-string-operations}/src/test/java/com/baeldung/base64encodinganddecoding/Java8EncodeDecodeUnitTest.java (100%) rename {java-strings-2 => core-java-modules/core-java-string-operations}/src/test/java/com/baeldung/base64encodinganddecoding/StringToByteArrayUnitTest.java (99%) rename {java-strings-ops/src/test/java/com/baeldung/string => core-java-modules/core-java-string-operations/src/test/java/com/baeldung}/isnumeric/CoreJavaIsNumericUnitTest.java (95%) rename {java-strings-ops/src/test/java/com/baeldung/string => core-java-modules/core-java-string-operations/src/test/java/com/baeldung}/isnumeric/NumberUtilsIsCreatableUnitTest.java (96%) rename {java-strings-ops/src/test/java/com/baeldung/string => core-java-modules/core-java-string-operations/src/test/java/com/baeldung}/isnumeric/NumberUtilsIsParsableUnitTest.java (96%) rename {java-strings-ops/src/test/java/com/baeldung/string => core-java-modules/core-java-string-operations/src/test/java/com/baeldung}/isnumeric/RegularExpressionsUnitTest.java (93%) rename {java-strings-ops/src/test/java/com/baeldung/string => core-java-modules/core-java-string-operations/src/test/java/com/baeldung}/isnumeric/StringUtilsIsNumericSpaceUnitTest.java (95%) rename {java-strings-ops/src/test/java/com/baeldung/string => core-java-modules/core-java-string-operations/src/test/java/com/baeldung}/isnumeric/StringUtilsIsNumericUnitTest.java (95%) rename {java-strings-ops/src/test/java/com/baeldung/string => core-java-modules/core-java-string-operations/src/test/java/com/baeldung/split}/SplitUnitTest.java (98%) rename {java-strings/src/test/java/com/baeldung/string => core-java-modules/core-java-string-operations/src/test/java/com/baeldung/streamoperations}/JoinerSplitterUnitTest.java (98%) rename {java-strings-ops/src/test/java/com/baeldung/string => core-java-modules/core-java-string-operations/src/test/java/com/baeldung/stringcomparison}/StringComparisonUnitTest.java (99%) rename {java-strings-ops/src/test/java/com/baeldung/string => core-java-modules/core-java-string-operations/src/test/java/com/baeldung/substring}/SubstringUnitTest.java (98%) rename {java-strings-2/src/test/java/com/baeldung/string/search => core-java-modules/core-java-string-operations/src/test/java/com/baeldung/substringsearch}/SubstringSearchUnitTest.java (98%) rename {java-strings-ops/src/test/java/com/baeldung/string => core-java-modules/core-java-string-operations/src/test/java/com/baeldung}/tostring/CustomerArrayToStringUnitTest.java (95%) rename {java-strings-ops/src/test/java/com/baeldung/string => core-java-modules/core-java-string-operations/src/test/java/com/baeldung}/tostring/CustomerComplexObjectToStringUnitTest.java (95%) rename {java-strings-ops/src/test/java/com/baeldung/string => core-java-modules/core-java-string-operations/src/test/java/com/baeldung}/tostring/CustomerPrimitiveToStringUnitTest.java (94%) rename {java-strings-ops/src/test/java/com/baeldung/string => core-java-modules/core-java-string-operations/src/test/java/com/baeldung}/tostring/CustomerWrapperCollectionToStringUnitTest.java (96%) delete mode 100644 java-strings-3/README.md delete mode 100644 java-strings-3/pom.xml delete mode 100644 java-strings-3/src/main/resources/.gitignore delete mode 100644 java-strings-3/src/test/resources/.gitignore diff --git a/core-java-modules/core-java-string-operations-2/README.md b/core-java-modules/core-java-string-operations-2/README.md new file mode 100644 index 0000000000..50f40ac2af --- /dev/null +++ b/core-java-modules/core-java-string-operations-2/README.md @@ -0,0 +1,11 @@ +## Java String Operations + +This module contains articles about string operations. + +### Relevant Articles: +- [Concatenating Strings In Java](https://www.baeldung.com/java-strings-concatenation) +- [Checking for Empty or Blank Strings in Java](https://www.baeldung.com/java-blank-empty-strings) +- [String Initialization in Java](https://www.baeldung.com/java-string-initialization) +- [String toLowerCase and toUpperCase Methods in Java](https://www.baeldung.com/java-string-convert-case) +- [Java String equalsIgnoreCase()](https://www.baeldung.com/java-string-equalsignorecase) +- More articles: [[<-- prev]](../core-java-string-operations) diff --git a/core-java-modules/core-java-string-operations-2/pom.xml b/core-java-modules/core-java-string-operations-2/pom.xml new file mode 100644 index 0000000000..95aeec8fcb --- /dev/null +++ b/core-java-modules/core-java-string-operations-2/pom.xml @@ -0,0 +1,81 @@ + + 4.0.0 + core-java-string-operations-2 + 0.1.0-SNAPSHOT + jar + core-java-string-operations-2 + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../../parent-java + + + + + javax.validation + validation-api + ${validation-api.version} + + + com.google.guava + guava + ${guava.version} + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + org.hibernate.validator + hibernate-validator + ${hibernate-validator.version} + + + javax.el + javax.el-api + ${javax.el-api.version} + + + org.glassfish.web + javax.el + ${javax.el.version} + + + org.hamcrest + hamcrest-library + ${org.hamcrest.version} + test + + + org.assertj + assertj-core + ${assertj.version} + test + + + + + core-java-string-operations-2 + + + src/main/resources + true + + + + + + 3.6.1 + 2.0.0.Final + 3.8.1 + 27.0.1-jre + 6.0.2.Final + 3.0.0 + 2.2.6 + + + diff --git a/java-strings-2/src/main/java/com/baeldung/string/emptystrings/EmptyStringCheck.java b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/EmptyStringCheck.java similarity index 75% rename from java-strings-2/src/main/java/com/baeldung/string/emptystrings/EmptyStringCheck.java rename to core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/EmptyStringCheck.java index 6d3234a4ec..85689eff99 100644 --- a/java-strings-2/src/main/java/com/baeldung/string/emptystrings/EmptyStringCheck.java +++ b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/EmptyStringCheck.java @@ -1,4 +1,4 @@ -package com.baeldung.string.emptystrings; +package com.baeldung.emptystrings; class EmptyStringCheck { diff --git a/java-strings-2/src/main/java/com/baeldung/string/emptystrings/Java5EmptyStringCheck.java b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/Java5EmptyStringCheck.java similarity index 76% rename from java-strings-2/src/main/java/com/baeldung/string/emptystrings/Java5EmptyStringCheck.java rename to core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/Java5EmptyStringCheck.java index 096b83acea..0c7997c075 100644 --- a/java-strings-2/src/main/java/com/baeldung/string/emptystrings/Java5EmptyStringCheck.java +++ b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/Java5EmptyStringCheck.java @@ -1,4 +1,4 @@ -package com.baeldung.string.emptystrings; +package com.baeldung.emptystrings; class Java5EmptyStringCheck { diff --git a/java-strings-2/src/main/java/com/baeldung/string/emptystrings/PlainJavaBlankStringCheck.java b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/PlainJavaBlankStringCheck.java similarity index 77% rename from java-strings-2/src/main/java/com/baeldung/string/emptystrings/PlainJavaBlankStringCheck.java rename to core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/PlainJavaBlankStringCheck.java index 26e281c9b7..315ce4613a 100644 --- a/java-strings-2/src/main/java/com/baeldung/string/emptystrings/PlainJavaBlankStringCheck.java +++ b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/PlainJavaBlankStringCheck.java @@ -1,4 +1,4 @@ -package com.baeldung.string.emptystrings; +package com.baeldung.emptystrings; class PlainJavaBlankStringCheck { diff --git a/java-strings-2/src/main/java/com/baeldung/string/emptystrings/SomeClassWithValidations.java b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/SomeClassWithValidations.java similarity index 87% rename from java-strings-2/src/main/java/com/baeldung/string/emptystrings/SomeClassWithValidations.java rename to core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/SomeClassWithValidations.java index 8c484efb43..058d53ba82 100644 --- a/java-strings-2/src/main/java/com/baeldung/string/emptystrings/SomeClassWithValidations.java +++ b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/SomeClassWithValidations.java @@ -1,4 +1,4 @@ -package com.baeldung.string.emptystrings; +package com.baeldung.emptystrings; import javax.validation.constraints.Pattern; diff --git a/java-strings-2/src/test/java/com/baeldung/string/changecase/ToLowerCaseUnitTest.java b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/changecase/ToLowerCaseUnitTest.java similarity index 91% rename from java-strings-2/src/test/java/com/baeldung/string/changecase/ToLowerCaseUnitTest.java rename to core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/changecase/ToLowerCaseUnitTest.java index c395b61068..4826ba2ef7 100644 --- a/java-strings-2/src/test/java/com/baeldung/string/changecase/ToLowerCaseUnitTest.java +++ b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/changecase/ToLowerCaseUnitTest.java @@ -1,29 +1,29 @@ -package com.baeldung.string.changecase; - -import static org.junit.Assert.assertEquals; - -import java.util.Locale; - -import org.junit.Test; - -public class ToLowerCaseUnitTest { - - private static final Locale TURKISH = new Locale("tr"); - private String name = "John Doe"; - private String foreignUppercase = "\u0049"; - - @Test - public void givenMixedCaseString_WhenToLowerCase_ThenResultIsLowerCase() { - assertEquals("john doe", name.toLowerCase()); - } - - @Test - public void givenForeignString_WhenToLowerCaseWithoutLocale_ThenResultIsLowerCase() { - assertEquals("\u0069", foreignUppercase.toLowerCase()); - } - - @Test - public void givenForeignString_WhenToLowerCaseWithLocale_ThenResultIsLowerCase() { - assertEquals("\u0131", foreignUppercase.toLowerCase(TURKISH)); - } -} +package com.baeldung.changecase; + +import org.junit.Test; + +import java.util.Locale; + +import static org.junit.Assert.assertEquals; + +public class ToLowerCaseUnitTest { + + private static final Locale TURKISH = new Locale("tr"); + private String name = "John Doe"; + private String foreignUppercase = "\u0049"; + + @Test + public void givenMixedCaseString_WhenToLowerCase_ThenResultIsLowerCase() { + assertEquals("john doe", name.toLowerCase()); + } + + @Test + public void givenForeignString_WhenToLowerCaseWithoutLocale_ThenResultIsLowerCase() { + assertEquals("\u0069", foreignUppercase.toLowerCase()); + } + + @Test + public void givenForeignString_WhenToLowerCaseWithLocale_ThenResultIsLowerCase() { + assertEquals("\u0131", foreignUppercase.toLowerCase(TURKISH)); + } +} diff --git a/java-strings-2/src/test/java/com/baeldung/string/changecase/ToUpperCaseUnitTest.java b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/changecase/ToUpperCaseUnitTest.java similarity index 91% rename from java-strings-2/src/test/java/com/baeldung/string/changecase/ToUpperCaseUnitTest.java rename to core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/changecase/ToUpperCaseUnitTest.java index 1807f854b2..ab740f19b1 100644 --- a/java-strings-2/src/test/java/com/baeldung/string/changecase/ToUpperCaseUnitTest.java +++ b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/changecase/ToUpperCaseUnitTest.java @@ -1,29 +1,29 @@ -package com.baeldung.string.changecase; - -import static org.junit.Assert.assertEquals; - -import java.util.Locale; - -import org.junit.Test; - -public class ToUpperCaseUnitTest { - - private static final Locale TURKISH = new Locale("tr"); - private String name = "John Doe"; - private String foreignLowercase = "\u0069"; - - @Test - public void givenMixedCaseString_WhenToUpperCase_ThenResultIsUpperCase() { - assertEquals("JOHN DOE", name.toUpperCase()); - } - - @Test - public void givenForeignString_WhenToUpperCaseWithoutLocale_ThenResultIsUpperCase() { - assertEquals("\u0049", foreignLowercase.toUpperCase()); - } - - @Test - public void givenForeignString_WhenToUpperCaseWithLocale_ThenResultIsUpperCase() { - assertEquals("\u0130", foreignLowercase.toUpperCase(TURKISH)); - } -} +package com.baeldung.changecase; + +import org.junit.Test; + +import java.util.Locale; + +import static org.junit.Assert.assertEquals; + +public class ToUpperCaseUnitTest { + + private static final Locale TURKISH = new Locale("tr"); + private String name = "John Doe"; + private String foreignLowercase = "\u0069"; + + @Test + public void givenMixedCaseString_WhenToUpperCase_ThenResultIsUpperCase() { + assertEquals("JOHN DOE", name.toUpperCase()); + } + + @Test + public void givenForeignString_WhenToUpperCaseWithoutLocale_ThenResultIsUpperCase() { + assertEquals("\u0049", foreignLowercase.toUpperCase()); + } + + @Test + public void givenForeignString_WhenToUpperCaseWithLocale_ThenResultIsUpperCase() { + assertEquals("\u0130", foreignLowercase.toUpperCase(TURKISH)); + } +} diff --git a/java-strings-2/src/test/java/com/baeldung/string/emptystrings/EmptyStringsUnitTest.java b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/emptystrings/EmptyStringsUnitTest.java similarity index 96% rename from java-strings-2/src/test/java/com/baeldung/string/emptystrings/EmptyStringsUnitTest.java rename to core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/emptystrings/EmptyStringsUnitTest.java index 96b1d681dd..d772c38341 100644 --- a/java-strings-2/src/test/java/com/baeldung/string/emptystrings/EmptyStringsUnitTest.java +++ b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/emptystrings/EmptyStringsUnitTest.java @@ -1,21 +1,17 @@ -package com.baeldung.string.emptystrings; +package com.baeldung.emptystrings; -import static org.hamcrest.Matchers.iterableWithSize; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.assertTrue; - -import java.util.Set; +import com.google.common.base.Strings; +import org.apache.commons.lang3.StringUtils; +import org.junit.Test; import javax.validation.ConstraintViolation; import javax.validation.Validation; import javax.validation.Validator; import javax.validation.ValidatorFactory; +import java.util.Set; -import org.apache.commons.lang3.StringUtils; -import org.junit.Test; - -import com.google.common.base.Strings; +import static org.hamcrest.Matchers.iterableWithSize; +import static org.junit.Assert.*; public class EmptyStringsUnitTest { diff --git a/java-strings-3/src/test/java/com/baeldung/string/equalsIgnoreCase/StringEqualsIgnoreCaseUnitTest.java b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/equalsIgnoreCase/StringEqualsIgnoreCaseUnitTest.java similarity index 94% rename from java-strings-3/src/test/java/com/baeldung/string/equalsIgnoreCase/StringEqualsIgnoreCaseUnitTest.java rename to core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/equalsIgnoreCase/StringEqualsIgnoreCaseUnitTest.java index 5aab63db94..14fbf20c1d 100644 --- a/java-strings-3/src/test/java/com/baeldung/string/equalsIgnoreCase/StringEqualsIgnoreCaseUnitTest.java +++ b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/equalsIgnoreCase/StringEqualsIgnoreCaseUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.string.equalsIgnoreCase; +package com.baeldung.equalsIgnoreCase; import org.apache.commons.lang3.StringUtils; import org.junit.Test; diff --git a/java-strings-2/src/test/java/com/baeldung/initialization/StringInitializationUnitTest.java b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/initialization/StringInitializationUnitTest.java similarity index 91% rename from java-strings-2/src/test/java/com/baeldung/initialization/StringInitializationUnitTest.java rename to core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/initialization/StringInitializationUnitTest.java index 50d9a2b058..02beaa690a 100644 --- a/java-strings-2/src/test/java/com/baeldung/initialization/StringInitializationUnitTest.java +++ b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/initialization/StringInitializationUnitTest.java @@ -1,11 +1,9 @@ package com.baeldung.initialization; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.assertFalse; - import org.junit.Test; +import static org.junit.Assert.*; + public class StringInitializationUnitTest { private String fieldString; diff --git a/java-strings-2/src/test/java/com/baeldung/StringConcatenationUnitTest.java b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/stringconcatenation/StringConcatenationUnitTest.java similarity index 98% rename from java-strings-2/src/test/java/com/baeldung/StringConcatenationUnitTest.java rename to core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/stringconcatenation/StringConcatenationUnitTest.java index c25d4ce8f9..9a444e8229 100644 --- a/java-strings-2/src/test/java/com/baeldung/StringConcatenationUnitTest.java +++ b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/stringconcatenation/StringConcatenationUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung; +package com.baeldung.stringconcatenation; import org.junit.Test; diff --git a/core-java-modules/core-java-string-operations/README.md b/core-java-modules/core-java-string-operations/README.md new file mode 100644 index 0000000000..18a2649a6a --- /dev/null +++ b/core-java-modules/core-java-string-operations/README.md @@ -0,0 +1,16 @@ +## Java String Operations + +This module contains articles about string operations. + +### Relevant Articles: +- [Comparing Strings in Java](https://www.baeldung.com/java-compare-strings) +- [Check If a String Is Numeric in Java](https://www.baeldung.com/java-check-string-number) +- [Get Substring from String in Java](https://www.baeldung.com/java-substring) +- [Split a String in Java](https://www.baeldung.com/java-split-string) +- [Common String Operations in Java](https://www.baeldung.com/java-string-operations) +- [Java toString() Method](https://www.baeldung.com/java-tostring) +- [String Operations with Java Streams](https://www.baeldung.com/java-stream-operations-on-strings) +- [Adding a Newline Character to a String in Java](https://www.baeldung.com/java-string-newline) +- [Check If a String Contains a Substring](https://www.baeldung.com/java-string-contains-substring) +- [Java Base64 Encoding and Decoding](https://www.baeldung.com/java-base64-encode-and-decode) +- More articles: [[next -->]](../core-java-string-operations-2) diff --git a/core-java-modules/core-java-string-operations/pom.xml b/core-java-modules/core-java-string-operations/pom.xml new file mode 100644 index 0000000000..fdddd99433 --- /dev/null +++ b/core-java-modules/core-java-string-operations/pom.xml @@ -0,0 +1,66 @@ + + 4.0.0 + core-java-string-operations + 0.1.0-SNAPSHOT + jar + core-java-string-operations + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../../parent-java + + + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + org.openjdk.jmh + jmh-core + ${jmh-core.version} + + + log4j + log4j + ${log4j.version} + + + org.openjdk.jmh + jmh-generator-annprocess + ${jmh-generator.version} + + + commons-codec + commons-codec + ${commons-codec.version} + + + org.assertj + assertj-core + ${assertj.version} + test + + + + + core-java-string-operations + + + src/main/resources + true + + + + + + 3.8.1 + 3.6.1 + 1.10 + + + diff --git a/java-strings-ops/src/main/java/com/baeldung/string/isnumeric/Benchmarking.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/Benchmarking.java similarity index 98% rename from java-strings-ops/src/main/java/com/baeldung/string/isnumeric/Benchmarking.java rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/Benchmarking.java index c4e2742da6..97e7a46757 100644 --- a/java-strings-ops/src/main/java/com/baeldung/string/isnumeric/Benchmarking.java +++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/Benchmarking.java @@ -1,4 +1,4 @@ -package com.baeldung.string.isnumeric; +package com.baeldung.isnumeric; import java.util.concurrent.TimeUnit; diff --git a/java-strings-ops/src/main/java/com/baeldung/string/isnumeric/CheckIntegerInput.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/CheckIntegerInput.java similarity index 92% rename from java-strings-ops/src/main/java/com/baeldung/string/isnumeric/CheckIntegerInput.java rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/CheckIntegerInput.java index 2785df0c9b..6c08615c74 100644 --- a/java-strings-ops/src/main/java/com/baeldung/string/isnumeric/CheckIntegerInput.java +++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/CheckIntegerInput.java @@ -1,4 +1,4 @@ -package com.baeldung.string.isnumeric; +package com.baeldung.isnumeric; import java.util.Scanner; diff --git a/java-strings-ops/src/main/java/com/baeldung/string/isnumeric/IsNumeric.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/IsNumeric.java similarity index 96% rename from java-strings-ops/src/main/java/com/baeldung/string/isnumeric/IsNumeric.java rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/IsNumeric.java index 508cedd168..6eed0d777d 100644 --- a/java-strings-ops/src/main/java/com/baeldung/string/isnumeric/IsNumeric.java +++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/IsNumeric.java @@ -1,4 +1,4 @@ -package com.baeldung.string.isnumeric; +package com.baeldung.isnumeric; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; diff --git a/java-strings-ops/src/main/java/com/baeldung/string/isnumeric/IsNumericDriver.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/IsNumericDriver.java similarity index 96% rename from java-strings-ops/src/main/java/com/baeldung/string/isnumeric/IsNumericDriver.java rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/IsNumericDriver.java index bb3c96c06e..a6c5449696 100644 --- a/java-strings-ops/src/main/java/com/baeldung/string/isnumeric/IsNumericDriver.java +++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/IsNumericDriver.java @@ -1,4 +1,4 @@ -package com.baeldung.string.isnumeric; +package com.baeldung.isnumeric; import org.apache.log4j.Logger; diff --git a/java-strings/src/main/java/com/baeldung/string/newline/AddingNewLineToString.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/newline/AddingNewLineToString.java similarity index 98% rename from java-strings/src/main/java/com/baeldung/string/newline/AddingNewLineToString.java rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/newline/AddingNewLineToString.java index 48b71eed12..f701ab2e45 100644 --- a/java-strings/src/main/java/com/baeldung/string/newline/AddingNewLineToString.java +++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/newline/AddingNewLineToString.java @@ -1,4 +1,4 @@ -package com.baeldung.string.newline; +package com.baeldung.newline; public class AddingNewLineToString { diff --git a/java-strings/src/main/java/com/baeldung/string/JoinerSplitter.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/streamoperations/JoinerSplitter.java similarity index 96% rename from java-strings/src/main/java/com/baeldung/string/JoinerSplitter.java rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/streamoperations/JoinerSplitter.java index cdbba1ef53..8a105188ad 100644 --- a/java-strings/src/main/java/com/baeldung/string/JoinerSplitter.java +++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/streamoperations/JoinerSplitter.java @@ -1,4 +1,4 @@ -package com.baeldung.string; +package com.baeldung.streamoperations; import java.util.Arrays; import java.util.List; diff --git a/java-strings-2/src/main/java/com/baeldung/string/search/performance/SubstringSearchPerformanceComparison.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/substringsearch/SubstringSearchPerformanceComparison.java similarity index 79% rename from java-strings-2/src/main/java/com/baeldung/string/search/performance/SubstringSearchPerformanceComparison.java rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/substringsearch/SubstringSearchPerformanceComparison.java index bf33c47a7e..92aef0b879 100644 --- a/java-strings-2/src/main/java/com/baeldung/string/search/performance/SubstringSearchPerformanceComparison.java +++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/substringsearch/SubstringSearchPerformanceComparison.java @@ -1,18 +1,11 @@ -package com.baeldung.string.search.performance; +package com.baeldung.substringsearch; + +import org.apache.commons.lang3.StringUtils; +import org.openjdk.jmh.annotations.*; import java.util.concurrent.TimeUnit; import java.util.regex.Pattern; -import org.apache.commons.lang3.StringUtils; -import org.openjdk.jmh.annotations.Benchmark; -import org.openjdk.jmh.annotations.BenchmarkMode; -import org.openjdk.jmh.annotations.Fork; -import org.openjdk.jmh.annotations.Mode; -import org.openjdk.jmh.annotations.OutputTimeUnit; -import org.openjdk.jmh.annotations.Scope; -import org.openjdk.jmh.annotations.Setup; -import org.openjdk.jmh.annotations.State; - /** * Based on https://github.com/tedyoung/indexof-contains-benchmark */ diff --git a/java-strings-ops/src/main/java/com/baeldung/string/tostring/Customer.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/Customer.java similarity index 91% rename from java-strings-ops/src/main/java/com/baeldung/string/tostring/Customer.java rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/Customer.java index 7ab3936cb9..16e2b05a7c 100644 --- a/java-strings-ops/src/main/java/com/baeldung/string/tostring/Customer.java +++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/Customer.java @@ -1,4 +1,4 @@ -package com.baeldung.string.tostring; +package com.baeldung.tostring; public class Customer { private String firstName; diff --git a/java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerArrayToString.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerArrayToString.java similarity index 92% rename from java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerArrayToString.java rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerArrayToString.java index 391ced61d3..c942f978da 100644 --- a/java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerArrayToString.java +++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerArrayToString.java @@ -1,4 +1,4 @@ -package com.baeldung.string.tostring; +package com.baeldung.tostring; import java.util.Arrays; diff --git a/java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerComplexObjectToString.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerComplexObjectToString.java similarity index 91% rename from java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerComplexObjectToString.java rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerComplexObjectToString.java index ae3d999b12..3ca11779c4 100644 --- a/java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerComplexObjectToString.java +++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerComplexObjectToString.java @@ -1,4 +1,4 @@ -package com.baeldung.string.tostring; +package com.baeldung.tostring; public class CustomerComplexObjectToString extends Customer { private Order order; diff --git a/java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerPrimitiveToString.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerPrimitiveToString.java similarity index 91% rename from java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerPrimitiveToString.java rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerPrimitiveToString.java index 01fe4c8b09..38555aa236 100644 --- a/java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerPrimitiveToString.java +++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerPrimitiveToString.java @@ -1,4 +1,4 @@ -package com.baeldung.string.tostring; +package com.baeldung.tostring; public class CustomerPrimitiveToString extends Customer { private long balance; diff --git a/java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerReflectionToString.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerReflectionToString.java similarity index 95% rename from java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerReflectionToString.java rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerReflectionToString.java index 2a9e3700ec..ad0c57351a 100644 --- a/java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerReflectionToString.java +++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerReflectionToString.java @@ -1,4 +1,4 @@ -package com.baeldung.string.tostring; +package com.baeldung.tostring; import java.util.List; diff --git a/java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerWrapperCollectionToString.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerWrapperCollectionToString.java similarity index 95% rename from java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerWrapperCollectionToString.java rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerWrapperCollectionToString.java index b3ff97dc07..7b7d9e4e7d 100644 --- a/java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerWrapperCollectionToString.java +++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerWrapperCollectionToString.java @@ -1,4 +1,4 @@ -package com.baeldung.string.tostring; +package com.baeldung.tostring; import java.util.List; diff --git a/java-strings-ops/src/main/java/com/baeldung/string/tostring/Order.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/Order.java similarity index 95% rename from java-strings-ops/src/main/java/com/baeldung/string/tostring/Order.java rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/Order.java index 58e0fcce5a..85a5dd169f 100644 --- a/java-strings-ops/src/main/java/com/baeldung/string/tostring/Order.java +++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/Order.java @@ -1,4 +1,4 @@ -package com.baeldung.string.tostring; +package com.baeldung.tostring; public class Order { diff --git a/core-java-modules/core-java-string-operations/src/main/resources/log4j.properties b/core-java-modules/core-java-string-operations/src/main/resources/log4j.properties new file mode 100644 index 0000000000..2ea9fa9209 --- /dev/null +++ b/core-java-modules/core-java-string-operations/src/main/resources/log4j.properties @@ -0,0 +1,8 @@ +# Root logger option +log4j.rootLogger=DEBUG, stdout + +# Redirect log messages to console +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.Target=System.out +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n \ No newline at end of file diff --git a/java-strings-2/src/test/java/com/baeldung/base64encodinganddecoding/ApacheCommonsEncodeDecodeUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/base64encodinganddecoding/ApacheCommonsEncodeDecodeUnitTest.java similarity index 100% rename from java-strings-2/src/test/java/com/baeldung/base64encodinganddecoding/ApacheCommonsEncodeDecodeUnitTest.java rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/base64encodinganddecoding/ApacheCommonsEncodeDecodeUnitTest.java diff --git a/java-strings-2/src/test/java/com/baeldung/base64encodinganddecoding/Java8EncodeDecodeUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/base64encodinganddecoding/Java8EncodeDecodeUnitTest.java similarity index 100% rename from java-strings-2/src/test/java/com/baeldung/base64encodinganddecoding/Java8EncodeDecodeUnitTest.java rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/base64encodinganddecoding/Java8EncodeDecodeUnitTest.java diff --git a/java-strings-2/src/test/java/com/baeldung/base64encodinganddecoding/StringToByteArrayUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/base64encodinganddecoding/StringToByteArrayUnitTest.java similarity index 99% rename from java-strings-2/src/test/java/com/baeldung/base64encodinganddecoding/StringToByteArrayUnitTest.java rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/base64encodinganddecoding/StringToByteArrayUnitTest.java index e2bb7bb64d..6f8a17e316 100644 --- a/java-strings-2/src/test/java/com/baeldung/base64encodinganddecoding/StringToByteArrayUnitTest.java +++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/base64encodinganddecoding/StringToByteArrayUnitTest.java @@ -1,16 +1,15 @@ package com.baeldung.base64encodinganddecoding; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import org.junit.Test; +import javax.xml.bind.DatatypeConverter; import java.io.UnsupportedEncodingException; import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.Base64; -import javax.xml.bind.DatatypeConverter; - -import org.junit.Test; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; public class StringToByteArrayUnitTest { diff --git a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/CoreJavaIsNumericUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/CoreJavaIsNumericUnitTest.java similarity index 95% rename from java-strings-ops/src/test/java/com/baeldung/string/isnumeric/CoreJavaIsNumericUnitTest.java rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/CoreJavaIsNumericUnitTest.java index 6228fdb5af..6c03b00e69 100644 --- a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/CoreJavaIsNumericUnitTest.java +++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/CoreJavaIsNumericUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.string.isnumeric; +package com.baeldung.isnumeric; import static org.assertj.core.api.Assertions.assertThat; diff --git a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/NumberUtilsIsCreatableUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/NumberUtilsIsCreatableUnitTest.java similarity index 96% rename from java-strings-ops/src/test/java/com/baeldung/string/isnumeric/NumberUtilsIsCreatableUnitTest.java rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/NumberUtilsIsCreatableUnitTest.java index 346248cb40..3b88721ad4 100644 --- a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/NumberUtilsIsCreatableUnitTest.java +++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/NumberUtilsIsCreatableUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.string.isnumeric; +package com.baeldung.isnumeric; import static org.assertj.core.api.Assertions.assertThat; diff --git a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/NumberUtilsIsParsableUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/NumberUtilsIsParsableUnitTest.java similarity index 96% rename from java-strings-ops/src/test/java/com/baeldung/string/isnumeric/NumberUtilsIsParsableUnitTest.java rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/NumberUtilsIsParsableUnitTest.java index fa2f2aec6d..6b96a6efa1 100644 --- a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/NumberUtilsIsParsableUnitTest.java +++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/NumberUtilsIsParsableUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.string.isnumeric; +package com.baeldung.isnumeric; import static org.assertj.core.api.Assertions.assertThat; diff --git a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/RegularExpressionsUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/RegularExpressionsUnitTest.java similarity index 93% rename from java-strings-ops/src/test/java/com/baeldung/string/isnumeric/RegularExpressionsUnitTest.java rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/RegularExpressionsUnitTest.java index 0f7f0eb081..04f3de8dc5 100644 --- a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/RegularExpressionsUnitTest.java +++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/RegularExpressionsUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.string.isnumeric; +package com.baeldung.isnumeric; import static org.assertj.core.api.Assertions.assertThat; diff --git a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/StringUtilsIsNumericSpaceUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/StringUtilsIsNumericSpaceUnitTest.java similarity index 95% rename from java-strings-ops/src/test/java/com/baeldung/string/isnumeric/StringUtilsIsNumericSpaceUnitTest.java rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/StringUtilsIsNumericSpaceUnitTest.java index 05651cc567..0c5e52580f 100644 --- a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/StringUtilsIsNumericSpaceUnitTest.java +++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/StringUtilsIsNumericSpaceUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.string.isnumeric; +package com.baeldung.isnumeric; import static org.assertj.core.api.Assertions.assertThat; diff --git a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/StringUtilsIsNumericUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/StringUtilsIsNumericUnitTest.java similarity index 95% rename from java-strings-ops/src/test/java/com/baeldung/string/isnumeric/StringUtilsIsNumericUnitTest.java rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/StringUtilsIsNumericUnitTest.java index cae08874da..660426cdbb 100644 --- a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/StringUtilsIsNumericUnitTest.java +++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/StringUtilsIsNumericUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.string.isnumeric; +package com.baeldung.isnumeric; import static org.assertj.core.api.Assertions.assertThat; diff --git a/java-strings-ops/src/test/java/com/baeldung/string/SplitUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/split/SplitUnitTest.java similarity index 98% rename from java-strings-ops/src/test/java/com/baeldung/string/SplitUnitTest.java rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/split/SplitUnitTest.java index 1936bfb6fb..eaa61e5041 100644 --- a/java-strings-ops/src/test/java/com/baeldung/string/SplitUnitTest.java +++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/split/SplitUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.string; +package com.baeldung.split; import static org.assertj.core.api.Assertions.assertThat; diff --git a/java-strings/src/test/java/com/baeldung/string/JoinerSplitterUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/streamoperations/JoinerSplitterUnitTest.java similarity index 98% rename from java-strings/src/test/java/com/baeldung/string/JoinerSplitterUnitTest.java rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/streamoperations/JoinerSplitterUnitTest.java index a9488e27a4..2a0f03d3a8 100644 --- a/java-strings/src/test/java/com/baeldung/string/JoinerSplitterUnitTest.java +++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/streamoperations/JoinerSplitterUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.string; +package com.baeldung.streamoperations; import org.junit.Test; diff --git a/java-strings-ops/src/test/java/com/baeldung/string/StringComparisonUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/stringcomparison/StringComparisonUnitTest.java similarity index 99% rename from java-strings-ops/src/test/java/com/baeldung/string/StringComparisonUnitTest.java rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/stringcomparison/StringComparisonUnitTest.java index 5339a0c72e..0bab708fde 100644 --- a/java-strings-ops/src/test/java/com/baeldung/string/StringComparisonUnitTest.java +++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/stringcomparison/StringComparisonUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.string; +package com.baeldung.stringcomparison; import static org.assertj.core.api.Assertions.assertThat; diff --git a/java-strings-ops/src/test/java/com/baeldung/string/SubstringUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/substring/SubstringUnitTest.java similarity index 98% rename from java-strings-ops/src/test/java/com/baeldung/string/SubstringUnitTest.java rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/substring/SubstringUnitTest.java index eb397f2a3f..00340ba7cc 100644 --- a/java-strings-ops/src/test/java/com/baeldung/string/SubstringUnitTest.java +++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/substring/SubstringUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.string; +package com.baeldung.substring; import java.util.Scanner; import java.util.regex.Matcher; diff --git a/java-strings-2/src/test/java/com/baeldung/string/search/SubstringSearchUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/substringsearch/SubstringSearchUnitTest.java similarity index 98% rename from java-strings-2/src/test/java/com/baeldung/string/search/SubstringSearchUnitTest.java rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/substringsearch/SubstringSearchUnitTest.java index 293e6d2125..c641ccbe07 100644 --- a/java-strings-2/src/test/java/com/baeldung/string/search/SubstringSearchUnitTest.java +++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/substringsearch/SubstringSearchUnitTest.java @@ -1,12 +1,12 @@ -package com.baeldung.string.search; - -import java.util.regex.Matcher; -import java.util.regex.Pattern; +package com.baeldung.substringsearch; import org.apache.commons.lang3.StringUtils; import org.junit.Assert; import org.junit.Test; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + /** * BAEL-2832: Different ways to check if a Substring could be found in a String. */ diff --git a/java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerArrayToStringUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerArrayToStringUnitTest.java similarity index 95% rename from java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerArrayToStringUnitTest.java rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerArrayToStringUnitTest.java index ced8b15f2e..a754ed3c68 100644 --- a/java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerArrayToStringUnitTest.java +++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerArrayToStringUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.string.tostring; +package com.baeldung.tostring; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerComplexObjectToStringUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerComplexObjectToStringUnitTest.java similarity index 95% rename from java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerComplexObjectToStringUnitTest.java rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerComplexObjectToStringUnitTest.java index 564fde8766..1b26d3e0a2 100644 --- a/java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerComplexObjectToStringUnitTest.java +++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerComplexObjectToStringUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.string.tostring; +package com.baeldung.tostring; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerPrimitiveToStringUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerPrimitiveToStringUnitTest.java similarity index 94% rename from java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerPrimitiveToStringUnitTest.java rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerPrimitiveToStringUnitTest.java index f585a8a26c..a21ab1616f 100644 --- a/java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerPrimitiveToStringUnitTest.java +++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerPrimitiveToStringUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.string.tostring; +package com.baeldung.tostring; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerWrapperCollectionToStringUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerWrapperCollectionToStringUnitTest.java similarity index 96% rename from java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerWrapperCollectionToStringUnitTest.java rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerWrapperCollectionToStringUnitTest.java index 9b3f8a1a6f..da4937ccdd 100644 --- a/java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerWrapperCollectionToStringUnitTest.java +++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerWrapperCollectionToStringUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.string.tostring; +package com.baeldung.tostring; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/java-strings-2/README.md b/java-strings-2/README.md index b97df7c969..ecbdb7def9 100644 --- a/java-strings-2/README.md +++ b/java-strings-2/README.md @@ -5,13 +5,7 @@ This module contains articles about strings in Java. ### Relevant Articles: - [Java Localization – Formatting Messages](https://www.baeldung.com/java-localization-messages-formatting) -- [Check If a String Contains a Substring](https://www.baeldung.com/java-string-contains-substring) - [Java – Generate Random String](https://www.baeldung.com/java-random-string) -- [Java Base64 Encoding and Decoding](https://www.baeldung.com/java-base64-encode-and-decode) -- [Concatenating Strings In Java](https://www.baeldung.com/java-strings-concatenation) - [Java String Interview Questions and Answers](https://www.baeldung.com/java-string-interview-questions) -- [Checking for Empty or Blank Strings in Java](https://www.baeldung.com/java-blank-empty-strings) -- [String Initialization in Java](https://www.baeldung.com/java-string-initialization) - [Java Multi-line String](https://www.baeldung.com/java-multiline-string) -- [String toLowerCase and toUpperCase Methods in Java](https://www.baeldung.com/java-string-convert-case) -- More articles: [[<-- prev>]](/java-strings) [[next -->]](/java-strings-3) +- More articles: [[<-- prev>]](/java-strings) diff --git a/java-strings-3/README.md b/java-strings-3/README.md deleted file mode 100644 index 642752182f..0000000000 --- a/java-strings-3/README.md +++ /dev/null @@ -1,10 +0,0 @@ -## Java Strings Cookbooks and Examples - -This module contains articles about strings in Java. - -### Relevant Articles: -- [Java String equalsIgnoreCase()](https://www.baeldung.com/java-string-equalsignorecase) -- [Finding the Difference Between Two Strings in Java](https://www.baeldung.com/java-difference-between-two-strings) -- [Counting Words in a String](https://www.baeldung.com/java-word-counting) -- [Convert Character Array to String in Java](https://www.baeldung.com/java-char-array-to-string) -- More articles: [[<-- prev>]](/java-strings-2) diff --git a/java-strings-3/pom.xml b/java-strings-3/pom.xml deleted file mode 100644 index 4589780c15..0000000000 --- a/java-strings-3/pom.xml +++ /dev/null @@ -1,161 +0,0 @@ - - 4.0.0 - java-strings-3 - 0.1.0-SNAPSHOT - jar - java-strings-3 - - - com.baeldung - parent-java - 0.0.1-SNAPSHOT - ../parent-java - - - - - org.openjdk.jmh - jmh-core - ${jmh-core.version} - - - org.openjdk.jmh - jmh-generator-annprocess - ${jmh-core.version} - - - com.ibm.icu - icu4j - ${icu4j.version} - - - com.google.guava - guava - ${guava.version} - - - org.apache.commons - commons-lang3 - ${commons-lang3.version} - - - commons-io - commons-io - ${commons-io.version} - - - commons-codec - commons-codec - ${commons-codec.version} - - - junit - junit - ${junit.version} - test - - - org.hamcrest - hamcrest-library - ${org.hamcrest.version} - test - - - org.assertj - assertj-core - ${assertj.version} - test - - - org.bitbucket.cowwoc - diff-match-patch - 1.2 - test - - - - - org.passay - passay - ${passay.version} - - - org.apache.commons - commons-text - ${commons-text.version} - - - com.vdurmont - emoji-java - ${emoji-java.version} - - - org.ahocorasick - ahocorasick - ${ahocorasick.version} - - - javax.validation - validation-api - ${validation-api.version} - - - org.hibernate.validator - hibernate-validator - ${hibernate-validator.version} - - - javax.el - javax.el-api - ${javax.el-api.version} - - - org.glassfish.web - javax.el - ${javax.el.version} - - - - - java-strings-3 - - - src/main/resources - true - - - - - - org.apache.maven.plugins - maven-compiler-plugin - ${maven-compiler-plugin.version} - - ${java.version} - ${java.version} - -parameters - - - - - - - 3.8.1 - 1.10 - 1.3.1 - - 3.6.1 - 4.0.0 - 0.4.0 - 61.1 - 28.0-jre - 1.4 - 2.0.0.Final - 6.0.2.Final - 3.0.0 - 2.2.6 - - - \ No newline at end of file diff --git a/java-strings-3/src/main/resources/.gitignore b/java-strings-3/src/main/resources/.gitignore deleted file mode 100644 index 83c05e60c8..0000000000 --- a/java-strings-3/src/main/resources/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -*.class - -#folders# -/target -/neoDb* -/data -/src/main/webapp/WEB-INF/classes -*/META-INF/* - -# Packaged files # -*.jar -*.war -*.ear \ No newline at end of file diff --git a/java-strings-3/src/test/resources/.gitignore b/java-strings-3/src/test/resources/.gitignore deleted file mode 100644 index 83c05e60c8..0000000000 --- a/java-strings-3/src/test/resources/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -*.class - -#folders# -/target -/neoDb* -/data -/src/main/webapp/WEB-INF/classes -*/META-INF/* - -# Packaged files # -*.jar -*.war -*.ear \ No newline at end of file diff --git a/java-strings-ops/README.md b/java-strings-ops/README.md index e35a3808f0..4c618585f3 100644 --- a/java-strings-ops/README.md +++ b/java-strings-ops/README.md @@ -3,10 +3,4 @@ This module contains articles about operations on strings in Java. ### Relevant Articles: -- [Comparing Strings in Java](https://www.baeldung.com/java-compare-strings) -- [Check If a String Is Numeric in Java](https://www.baeldung.com/java-check-string-number) -- [Get Substring from String in Java](https://www.baeldung.com/java-substring) - [Guide to Java String Pool](https://www.baeldung.com/java-string-pool) -- [Split a String in Java](https://www.baeldung.com/java-split-string) -- [Common String Operations in Java](https://www.baeldung.com/java-string-operations) -- [Java toString() Method](https://www.baeldung.com/java-tostring) diff --git a/java-strings/README.md b/java-strings/README.md index e2ffbe6453..4668ad014e 100644 --- a/java-strings/README.md +++ b/java-strings/README.md @@ -3,10 +3,8 @@ This module contains articles about strings in Java. ### Relevant Articles: -- [String Operations with Java Streams](https://www.baeldung.com/java-stream-operations-on-strings) - [Use char[] Array Over a String for Manipulating Passwords in Java?](https://www.baeldung.com/java-storing-passwords) - [Compact Strings in Java 9](https://www.baeldung.com/java-9-compact-string) - [String Not Empty Test Assertions in Java](https://www.baeldung.com/java-assert-string-not-empty) - [String Performance Hints](https://www.baeldung.com/java-string-performance) -- [Adding a Newline Character to a String in Java](https://www.baeldung.com/java-string-newline) - More articles: [[next -->]](/java-strings-2) diff --git a/pom.xml b/pom.xml index 14eb9e842e..f5776731c9 100644 --- a/pom.xml +++ b/pom.xml @@ -440,6 +440,8 @@ core-java-modules/core-java-sun core-java-modules/core-java-string-conversions core-java-modules/core-java-string-conversions-2 + core-java-modules/core-java-string-operations + core-java-modules/core-java-string-operations-2 core-java-modules/core-java-string-algorithms core-java-modules/core-java-string-algorithms-2 core-java-modules/core-java-string-apis @@ -507,7 +509,6 @@ java-spi java-strings java-strings-2 - java-strings-3 java-strings-ops java-vavr-stream java-websocket @@ -1211,6 +1212,8 @@ core-java-modules/core-java-sun core-java-modules/core-java-string-conversions core-java-modules/core-java-string-conversions-2 + core-java-modules/core-java-string-operations + core-java-modules/core-java-string-operations-2 core-java-modules/core-java-string-algorithms core-java-modules/core-java-string-algorithms-2 core-java-modules/core-java-string-apis @@ -1276,7 +1279,6 @@ java-spi java-strings java-strings-2 - java-strings-3 java-strings-ops java-vavr-stream java-websocket From 53887eb8528431d74114421e07ca18a1d70217ea Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Wed, 30 Oct 2019 22:49:34 +0530 Subject: [PATCH 257/265] BAEL-18211 Fix the integrations tests in spring-5-data-reactive - Several fixes to fix the project setup in case of multiple spring data reactive repositories and fix assertion failures --- .../r2dbc/configuration/R2DBCConfiguration.java | 2 +- .../main/java/com/baeldung/r2dbc/model/Player.java | 2 ++ .../r2dbc/R2dbcApplicationIntegrationTest.java | 12 ++++++------ 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/r2dbc/configuration/R2DBCConfiguration.java b/spring-5-data-reactive/src/main/java/com/baeldung/r2dbc/configuration/R2DBCConfiguration.java index 17eac7fee2..54f06d9c6c 100644 --- a/spring-5-data-reactive/src/main/java/com/baeldung/r2dbc/configuration/R2DBCConfiguration.java +++ b/spring-5-data-reactive/src/main/java/com/baeldung/r2dbc/configuration/R2DBCConfiguration.java @@ -8,7 +8,7 @@ import org.springframework.data.r2dbc.config.AbstractR2dbcConfiguration; import org.springframework.data.r2dbc.repository.config.EnableR2dbcRepositories; @Configuration -//@EnableR2dbcRepositories(basePackages = "com.baeldung.r2dbc.repository") +@EnableR2dbcRepositories(basePackages = "com.baeldung.r2dbc.repository") public class R2DBCConfiguration extends AbstractR2dbcConfiguration { @Bean public H2ConnectionFactory connectionFactory() { diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/r2dbc/model/Player.java b/spring-5-data-reactive/src/main/java/com/baeldung/r2dbc/model/Player.java index 1926997e97..1e28cb3d07 100644 --- a/spring-5-data-reactive/src/main/java/com/baeldung/r2dbc/model/Player.java +++ b/spring-5-data-reactive/src/main/java/com/baeldung/r2dbc/model/Player.java @@ -4,10 +4,12 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import org.springframework.data.annotation.Id; +import org.springframework.data.relational.core.mapping.Table; @Data @NoArgsConstructor @AllArgsConstructor +@Table public class Player { @Id Integer id; diff --git a/spring-5-data-reactive/src/test/java/com/baeldung/r2dbc/R2dbcApplicationIntegrationTest.java b/spring-5-data-reactive/src/test/java/com/baeldung/r2dbc/R2dbcApplicationIntegrationTest.java index a31ef4458d..ffd2e98f8e 100644 --- a/spring-5-data-reactive/src/test/java/com/baeldung/r2dbc/R2dbcApplicationIntegrationTest.java +++ b/spring-5-data-reactive/src/test/java/com/baeldung/r2dbc/R2dbcApplicationIntegrationTest.java @@ -111,12 +111,12 @@ public class R2dbcApplicationIntegrationTest { private void insertPlayers() { List players = Arrays.asList( - new Player(1, "Kaka", 37), - new Player(2, "Messi", 32), - new Player(3, "Mbappé", 20), - new Player(4, "CR7", 34), - new Player(5, "Lewandowski", 30), - new Player(6, "Cavani", 32) + new Player(null, "Kaka", 37), + new Player(null, "Messi", 32), + new Player(null, "Mbappé", 20), + new Player(null, "CR7", 34), + new Player(null, "Lewandowski", 30), + new Player(null, "Cavani", 32) ); playerRepository.saveAll(players).subscribe(); From 7e5dfdcf45e837247ea21cdfb465edbce1749237 Mon Sep 17 00:00:00 2001 From: Ali Dehghani Date: Thu, 31 Oct 2019 00:48:17 +0330 Subject: [PATCH 258/265] Disabling the Fork Option Each test setups a Redis server before test class and tears it down after them. Since each Redis server listens on port 6379, we can't let them to listen to the same port with parallel options. --- persistence-modules/spring-data-redis/pom.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/persistence-modules/spring-data-redis/pom.xml b/persistence-modules/spring-data-redis/pom.xml index 4ae8ac0a87..cd8c729844 100644 --- a/persistence-modules/spring-data-redis/pom.xml +++ b/persistence-modules/spring-data-redis/pom.xml @@ -87,7 +87,8 @@ ${maven-surefire-plugin.version} true - true + false + 0 -Xmx1024m From 5be2b72eff7d670cd4b5a59bcfad2b5b2a0fe4d0 Mon Sep 17 00:00:00 2001 From: Ali Dehghani Date: Thu, 31 Oct 2019 00:49:42 +0330 Subject: [PATCH 259/265] Fixed failing connection. --- .../SpringContextIntegrationTest.java | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/persistence-modules/spring-data-redis/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/persistence-modules/spring-data-redis/src/test/java/org/baeldung/SpringContextIntegrationTest.java index e093892365..f5c8177cbe 100644 --- a/persistence-modules/spring-data-redis/src/test/java/org/baeldung/SpringContextIntegrationTest.java +++ b/persistence-modules/spring-data-redis/src/test/java/org/baeldung/SpringContextIntegrationTest.java @@ -1,16 +1,35 @@ package org.baeldung; +import com.baeldung.spring.data.redis.config.RedisConfig; +import org.junit.AfterClass; +import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; +import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import redis.embedded.RedisServerBuilder; -import com.baeldung.spring.data.redis.config.RedisConfig; +import static org.springframework.test.annotation.DirtiesContext.ClassMode.BEFORE_CLASS; @RunWith(SpringJUnit4ClassRunner.class) +@DirtiesContext(classMode = BEFORE_CLASS) @ContextConfiguration(classes = RedisConfig.class) public class SpringContextIntegrationTest { + private static redis.embedded.RedisServer redisServer; + + @BeforeClass + public static void startRedisServer() { + redisServer = new RedisServerBuilder().port(6379).setting("maxmemory 256M").build(); + redisServer.start(); + } + + @AfterClass + public static void stopRedisServer() { + redisServer.stop(); + } + @Test public void whenSpringContextIsBootstrapped_thenNoExceptions() { } From 97d0a7373ba2cfa5cb647d2f9e88e857fbc66fee Mon Sep 17 00:00:00 2001 From: Ali Dehghani Date: Thu, 31 Oct 2019 01:16:28 +0330 Subject: [PATCH 260/265] Added the Missing CSV Files --- libraries-data-io/src/main/resources/csv/twoColumn.csv | 5 +++++ libraries-data-io/src/main/resources/csv/writtenAll.csv | 0 libraries-data-io/src/main/resources/csv/writtenBean.csv | 0 libraries-data-io/src/main/resources/csv/writtenOneByOne.csv | 0 4 files changed, 5 insertions(+) create mode 100644 libraries-data-io/src/main/resources/csv/twoColumn.csv create mode 100644 libraries-data-io/src/main/resources/csv/writtenAll.csv create mode 100644 libraries-data-io/src/main/resources/csv/writtenBean.csv create mode 100644 libraries-data-io/src/main/resources/csv/writtenOneByOne.csv diff --git a/libraries-data-io/src/main/resources/csv/twoColumn.csv b/libraries-data-io/src/main/resources/csv/twoColumn.csv new file mode 100644 index 0000000000..56d8fa1901 --- /dev/null +++ b/libraries-data-io/src/main/resources/csv/twoColumn.csv @@ -0,0 +1,5 @@ +colA, ColB +A, B +C, D +G, G +G, F \ No newline at end of file diff --git a/libraries-data-io/src/main/resources/csv/writtenAll.csv b/libraries-data-io/src/main/resources/csv/writtenAll.csv new file mode 100644 index 0000000000..e69de29bb2 diff --git a/libraries-data-io/src/main/resources/csv/writtenBean.csv b/libraries-data-io/src/main/resources/csv/writtenBean.csv new file mode 100644 index 0000000000..e69de29bb2 diff --git a/libraries-data-io/src/main/resources/csv/writtenOneByOne.csv b/libraries-data-io/src/main/resources/csv/writtenOneByOne.csv new file mode 100644 index 0000000000..e69de29bb2 From d800702e47f10504366664fe26058c3fe8db13fa Mon Sep 17 00:00:00 2001 From: Ali Dehghani Date: Thu, 31 Oct 2019 02:08:44 +0330 Subject: [PATCH 261/265] Fixed the Dependency Conflict Issue --- spring-jersey/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spring-jersey/pom.xml b/spring-jersey/pom.xml index e053ee7b4b..cf80ac4069 100644 --- a/spring-jersey/pom.xml +++ b/spring-jersey/pom.xml @@ -222,12 +222,12 @@ - 2.27 + 2.29.1 1.6.1 4.4.9 4.5.5 4.0.0 - 1.58 + 2.25.1 3.10.0 1.5.10.RELEASE From 03679107fd87e4ad8341ebe01b9875753c939491 Mon Sep 17 00:00:00 2001 From: Ali Dehghani Date: Thu, 31 Oct 2019 15:04:40 +0330 Subject: [PATCH 262/265] Using blocking queue for pub-sub --- .../redis/queue/RedisMessageSubscriber.java | 8 +++---- .../RedisMessageListenerIntegrationTest.java | 21 ++++++++----------- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/persistence-modules/spring-data-redis/src/main/java/com/baeldung/spring/data/redis/queue/RedisMessageSubscriber.java b/persistence-modules/spring-data-redis/src/main/java/com/baeldung/spring/data/redis/queue/RedisMessageSubscriber.java index 849e1fb59f..86656f4ffc 100644 --- a/persistence-modules/spring-data-redis/src/main/java/com/baeldung/spring/data/redis/queue/RedisMessageSubscriber.java +++ b/persistence-modules/spring-data-redis/src/main/java/com/baeldung/spring/data/redis/queue/RedisMessageSubscriber.java @@ -4,16 +4,16 @@ import org.springframework.data.redis.connection.Message; import org.springframework.data.redis.connection.MessageListener; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.List; +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.BlockingQueue; @Service public class RedisMessageSubscriber implements MessageListener { - public static List messageList = new ArrayList(); + public static BlockingQueue messages = new ArrayBlockingQueue(100); public void onMessage(final Message message, final byte[] pattern) { - messageList.add(message.toString()); + messages.add(message.toString()); System.out.println("Message received: " + new String(message.getBody())); } } \ No newline at end of file diff --git a/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/redis/RedisMessageListenerIntegrationTest.java b/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/redis/RedisMessageListenerIntegrationTest.java index 6f9e6a8757..92c796bb36 100644 --- a/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/redis/RedisMessageListenerIntegrationTest.java +++ b/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/redis/RedisMessageListenerIntegrationTest.java @@ -1,10 +1,8 @@ package com.baeldung.spring.data.redis; -import static org.junit.Assert.assertTrue; - -import java.io.IOException; -import java.util.UUID; - +import com.baeldung.spring.data.redis.config.RedisConfig; +import com.baeldung.spring.data.redis.queue.RedisMessagePublisher; +import com.baeldung.spring.data.redis.queue.RedisMessageSubscriber; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; @@ -14,13 +12,13 @@ import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.annotation.DirtiesContext.ClassMode; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; - -import com.baeldung.spring.data.redis.config.RedisConfig; -import com.baeldung.spring.data.redis.queue.RedisMessagePublisher; -import com.baeldung.spring.data.redis.queue.RedisMessageSubscriber; - import redis.embedded.RedisServerBuilder; +import java.io.IOException; +import java.util.UUID; + +import static org.junit.Assert.assertTrue; + @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = RedisConfig.class) @DirtiesContext(classMode = ClassMode.BEFORE_CLASS) @@ -46,7 +44,6 @@ public class RedisMessageListenerIntegrationTest { public void testOnMessage() throws Exception { String message = "Message " + UUID.randomUUID(); redisMessagePublisher.publish(message); - Thread.sleep(1000); - assertTrue(RedisMessageSubscriber.messageList.get(0).contains(message)); + assertTrue(RedisMessageSubscriber.messages.take().contains(message)); } } \ No newline at end of file From 3cf31474b6dcf209623ca3793a1b0ce310ddfdbb Mon Sep 17 00:00:00 2001 From: Ali Dehghani Date: Thu, 31 Oct 2019 16:42:52 +0330 Subject: [PATCH 263/265] Making Wiremock to Listen to a Random Port --- .../ClientOrchestrationIntegrationTest.java | 48 ++++++++++++------- 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/spring-jersey/src/test/java/com/baeldung/clientrx/ClientOrchestrationIntegrationTest.java b/spring-jersey/src/test/java/com/baeldung/clientrx/ClientOrchestrationIntegrationTest.java index 990279a481..8f40636d01 100644 --- a/spring-jersey/src/test/java/com/baeldung/clientrx/ClientOrchestrationIntegrationTest.java +++ b/spring-jersey/src/test/java/com/baeldung/clientrx/ClientOrchestrationIntegrationTest.java @@ -41,9 +41,9 @@ public class ClientOrchestrationIntegrationTest { private Client client = ClientBuilder.newClient(); - private WebTarget userIdService = client.target("http://localhost:8080/id-service/ids"); - private WebTarget nameService = client.target("http://localhost:8080/name-service/users/{userId}/name"); - private WebTarget hashService = client.target("http://localhost:8080/hash-service/{rawValue}"); + private WebTarget userIdService = client.target("http://localhost:{port}/id-service/ids"); + private WebTarget nameService = client.target("http://localhost:{port}/name-service/users/{userId}/name"); + private WebTarget hashService = client.target("http://localhost:{port}/hash-service/{rawValue}"); private Logger logger = LoggerFactory.getLogger(ClientOrchestrationIntegrationTest.class); @@ -54,7 +54,7 @@ public class ClientOrchestrationIntegrationTest { private List expectedHashValues = Arrays.asList("roht1", "kluh2", "WodiwKcalb3", "RehtnapKclab4", "kciteht5", "eyekwah6"); @Rule - public WireMockRule wireMockServer = new WireMockRule(); + public WireMockRule wireMockServer = new WireMockRule(0); @Before public void setup() { @@ -83,19 +83,19 @@ public class ClientOrchestrationIntegrationTest { final CountDownLatch completionTracker = new CountDownLatch(expectedHashValues.size()); // used to keep track of the progress of the subsequent calls - userIdService.request().accept(MediaType.APPLICATION_JSON).async().get(new InvocationCallback>() { + getUserIdService().request().accept(MediaType.APPLICATION_JSON).async().get(new InvocationCallback>() { @Override public void completed(List employeeIds) { logger.info("[CallbackExample] id-service result: {}", employeeIds); employeeIds.forEach((id) -> { // for each employee ID, get the name - nameService.resolveTemplate("userId", id).request().async().get(new InvocationCallback() { + getNameService().resolveTemplate("userId", id).request().async().get(new InvocationCallback() { @Override public void completed(String response) { logger.info("[CallbackExample] name-service result: {}", response); - hashService.resolveTemplate("rawValue", response + id).request().async().get(new InvocationCallback() { + getHashService().resolveTemplate("rawValue", response + id).request().async().get(new InvocationCallback() { @Override public void completed(String response) { logger.info("[CallbackExample] hash-service result: {}", response); @@ -144,7 +144,7 @@ public class ClientOrchestrationIntegrationTest { final CountDownLatch completionTracker = new CountDownLatch(expectedHashValues.size()); // used to keep track of the progress of the subsequent calls - CompletionStage> userIdStage = userIdService.request().accept(MediaType.APPLICATION_JSON).rx().get(new GenericType>() { + CompletionStage> userIdStage = getUserIdService().request().accept(MediaType.APPLICATION_JSON).rx().get(new GenericType>() { }).exceptionally((throwable) -> { logger.warn("[CompletionStageExample] An error has occurred"); return null; @@ -153,11 +153,11 @@ public class ClientOrchestrationIntegrationTest { userIdStage.thenAcceptAsync(employeeIds -> { logger.info("[CompletionStageExample] id-service result: {}", employeeIds); employeeIds.forEach((Long id) -> { - CompletableFuture completable = nameService.resolveTemplate("userId", id).request().rx().get(String.class).toCompletableFuture(); + CompletableFuture completable = getNameService().resolveTemplate("userId", id).request().rx().get(String.class).toCompletableFuture(); completable.thenAccept((String userName) -> { logger.info("[CompletionStageExample] name-service result: {}", userName); - hashService.resolveTemplate("rawValue", userName + id).request().rx().get(String.class).toCompletableFuture().thenAcceptAsync(hashValue -> { + getHashService().resolveTemplate("rawValue", userName + id).request().rx().get(String.class).toCompletableFuture().thenAcceptAsync(hashValue -> { logger.info("[CompletionStageExample] hash-service result: {}", hashValue); receivedHashValues.add(hashValue); completionTracker.countDown(); @@ -191,18 +191,18 @@ public class ClientOrchestrationIntegrationTest { final CountDownLatch completionTracker = new CountDownLatch(expectedHashValues.size()); // used to keep track of the progress of the subsequent calls - Observable> observableUserIdService = userIdService.register(RxObservableInvokerProvider.class).request().accept(MediaType.APPLICATION_JSON).rx(RxObservableInvoker.class).get(new GenericType>() { + Observable> observableUserIdService = getUserIdService().register(RxObservableInvokerProvider.class).request().accept(MediaType.APPLICATION_JSON).rx(RxObservableInvoker.class).get(new GenericType>() { }).asObservable(); observableUserIdService.subscribe((List employeeIds) -> { logger.info("[ObservableExample] id-service result: {}", employeeIds); - Observable.from(employeeIds).subscribe(id -> nameService.register(RxObservableInvokerProvider.class).resolveTemplate("userId", id).request().rx(RxObservableInvoker.class).get(String.class).asObservable() // gotten the name for the given + Observable.from(employeeIds).subscribe(id -> getNameService().register(RxObservableInvokerProvider.class).resolveTemplate("userId", id).request().rx(RxObservableInvoker.class).get(String.class).asObservable() // gotten the name for the given // userId .doOnError((throwable) -> { logger.warn("[ObservableExample] An error has occurred in the username request step {}", throwable.getMessage()); }).subscribe(userName -> { logger.info("[ObservableExample] name-service result: {}", userName); - hashService.register(RxObservableInvokerProvider.class).resolveTemplate("rawValue", userName + id).request().rx(RxObservableInvoker.class).get(String.class).asObservable() // gotten the hash value for + getHashService().register(RxObservableInvokerProvider.class).resolveTemplate("rawValue", userName + id).request().rx(RxObservableInvoker.class).get(String.class).asObservable() // gotten the hash value for // userId+username .doOnError((throwable) -> { logger.warn("[ObservableExample] An error has occurred in the hashing request step {}", throwable.getMessage()); @@ -233,18 +233,18 @@ public class ClientOrchestrationIntegrationTest { final CountDownLatch completionTracker = new CountDownLatch(expectedHashValues.size()); // used to keep track of the progress of the subsequent calls - Flowable> userIdFlowable = userIdService.register(RxFlowableInvokerProvider.class).request().rx(RxFlowableInvoker.class).get(new GenericType>() { + Flowable> userIdFlowable = getUserIdService().register(RxFlowableInvokerProvider.class).request().rx(RxFlowableInvoker.class).get(new GenericType>() { }); userIdFlowable.subscribe((List employeeIds) -> { logger.info("[FlowableExample] id-service result: {}", employeeIds); Flowable.fromIterable(employeeIds).subscribe(id -> { - nameService.register(RxFlowableInvokerProvider.class).resolveTemplate("userId", id).request().rx(RxFlowableInvoker.class).get(String.class) // gotten the name for the given userId + getNameService().register(RxFlowableInvokerProvider.class).resolveTemplate("userId", id).request().rx(RxFlowableInvoker.class).get(String.class) // gotten the name for the given userId .doOnError((throwable) -> { logger.warn("[FlowableExample] An error has occurred in the username request step {}", throwable.getMessage()); }).subscribe(userName -> { logger.info("[FlowableExample] name-service result: {}", userName); - hashService.register(RxFlowableInvokerProvider.class).resolveTemplate("rawValue", userName + id).request().rx(RxFlowableInvoker.class).get(String.class) // gotten the hash value for userId+username + getHashService().register(RxFlowableInvokerProvider.class).resolveTemplate("rawValue", userName + id).request().rx(RxFlowableInvoker.class).get(String.class) // gotten the hash value for userId+username .doOnError((throwable) -> { logger.warn(" [FlowableExample] An error has occurred in the hashing request step!", throwable); }).subscribe(hashValue -> { @@ -269,4 +269,20 @@ public class ClientOrchestrationIntegrationTest { assertThat(receivedHashValues).containsAll(expectedHashValues); } + private int getPort() { + return wireMockServer.port(); + } + + private WebTarget getUserIdService() { + return userIdService.resolveTemplate("port", getPort()); + } + + private WebTarget getNameService() { + return nameService.resolveTemplate("port", getPort()); + } + + private WebTarget getHashService() { + return hashService.resolveTemplate("port", getPort()); + } + } From 7e084e2721a6b8ea88ee133602eb48d876bac882 Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Thu, 31 Oct 2019 20:40:42 -0500 Subject: [PATCH 264/265] Revert "BAEL-3275: Using blocking queue for pub-sub" --- .../redis/queue/RedisMessageSubscriber.java | 8 +++---- .../RedisMessageListenerIntegrationTest.java | 21 +++++++++++-------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/persistence-modules/spring-data-redis/src/main/java/com/baeldung/spring/data/redis/queue/RedisMessageSubscriber.java b/persistence-modules/spring-data-redis/src/main/java/com/baeldung/spring/data/redis/queue/RedisMessageSubscriber.java index 86656f4ffc..849e1fb59f 100644 --- a/persistence-modules/spring-data-redis/src/main/java/com/baeldung/spring/data/redis/queue/RedisMessageSubscriber.java +++ b/persistence-modules/spring-data-redis/src/main/java/com/baeldung/spring/data/redis/queue/RedisMessageSubscriber.java @@ -4,16 +4,16 @@ import org.springframework.data.redis.connection.Message; import org.springframework.data.redis.connection.MessageListener; import org.springframework.stereotype.Service; -import java.util.concurrent.ArrayBlockingQueue; -import java.util.concurrent.BlockingQueue; +import java.util.ArrayList; +import java.util.List; @Service public class RedisMessageSubscriber implements MessageListener { - public static BlockingQueue messages = new ArrayBlockingQueue(100); + public static List messageList = new ArrayList(); public void onMessage(final Message message, final byte[] pattern) { - messages.add(message.toString()); + messageList.add(message.toString()); System.out.println("Message received: " + new String(message.getBody())); } } \ No newline at end of file diff --git a/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/redis/RedisMessageListenerIntegrationTest.java b/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/redis/RedisMessageListenerIntegrationTest.java index 92c796bb36..6f9e6a8757 100644 --- a/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/redis/RedisMessageListenerIntegrationTest.java +++ b/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/redis/RedisMessageListenerIntegrationTest.java @@ -1,8 +1,10 @@ package com.baeldung.spring.data.redis; -import com.baeldung.spring.data.redis.config.RedisConfig; -import com.baeldung.spring.data.redis.queue.RedisMessagePublisher; -import com.baeldung.spring.data.redis.queue.RedisMessageSubscriber; +import static org.junit.Assert.assertTrue; + +import java.io.IOException; +import java.util.UUID; + import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; @@ -12,13 +14,13 @@ import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.annotation.DirtiesContext.ClassMode; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import com.baeldung.spring.data.redis.config.RedisConfig; +import com.baeldung.spring.data.redis.queue.RedisMessagePublisher; +import com.baeldung.spring.data.redis.queue.RedisMessageSubscriber; + import redis.embedded.RedisServerBuilder; -import java.io.IOException; -import java.util.UUID; - -import static org.junit.Assert.assertTrue; - @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = RedisConfig.class) @DirtiesContext(classMode = ClassMode.BEFORE_CLASS) @@ -44,6 +46,7 @@ public class RedisMessageListenerIntegrationTest { public void testOnMessage() throws Exception { String message = "Message " + UUID.randomUUID(); redisMessagePublisher.publish(message); - assertTrue(RedisMessageSubscriber.messages.take().contains(message)); + Thread.sleep(1000); + assertTrue(RedisMessageSubscriber.messageList.get(0).contains(message)); } } \ No newline at end of file From 1431f2333743ad6741a8a819228e3d70af64c2d0 Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Fri, 1 Nov 2019 23:48:07 -0500 Subject: [PATCH 265/265] Update JavaScannerUnitTest.java --- .../src/test/java/com/baeldung/scanner/JavaScannerUnitTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/core-java-modules/core-java-io-2/src/test/java/com/baeldung/scanner/JavaScannerUnitTest.java b/core-java-modules/core-java-io-2/src/test/java/com/baeldung/scanner/JavaScannerUnitTest.java index 5b304284b2..471c0ea1c7 100644 --- a/core-java-modules/core-java-io-2/src/test/java/com/baeldung/scanner/JavaScannerUnitTest.java +++ b/core-java-modules/core-java-io-2/src/test/java/com/baeldung/scanner/JavaScannerUnitTest.java @@ -29,7 +29,6 @@ public class JavaScannerUnitTest { } @Test(expected = NoSuchElementException.class) - public void givenNoNewLine_whenReadingNextLine_thenThrowNoSuchElementException() { try (Scanner scanner = new Scanner("")) { String result = scanner.nextLine();