Merge branch 'eugenp:master' into master

This commit is contained in:
Asjad J 2022-06-30 16:09:55 +05:00 committed by GitHub
commit d083b710cd
126 changed files with 625 additions and 393 deletions

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,49 @@
package com.baeldung.inputstreamtobase64;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.io.InputStream;
import java.util.Base64;
import org.apache.commons.io.IOUtils;
import org.junit.Test;
/**
* Test the Stream to base64 conversion
*/
public class InputStreamToBase64UnitTest {
/**
* Test stream to base64 conversion
* @throws Exception
*/
@Test
public void givenABinaryInputStream_whenItIsConvertedToBase64_thenItCanBeDecoded() throws Exception {
// given a binary input stream
InputStream sourceStream = getClass().getClassLoader().getResourceAsStream("logo.png");
byte[] sourceBytes = IOUtils.toByteArray(sourceStream);
// when it is converted to base64
String encodedString = Base64.getEncoder().encodeToString(sourceBytes);
assertNotNull(encodedString);
// then it can be decoded
byte[] decodedBytes = Base64.getDecoder().decode(encodedString);
assertNotNull(decodedBytes);
assertTrue(decodedBytes.length == sourceBytes.length);
assertTrue(calculateChecksum(decodedBytes) == calculateChecksum(sourceBytes));
}
/**
* Calculate a checksum
* @param bytes array of bytes to check
* @return the total sum of all bytes
*/
private int calculateChecksum(byte[] bytes) {
int checksum = 0;
for(int index=0; index < bytes.length; index++) {
checksum+=bytes[index];
}
return checksum;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -7,7 +7,7 @@ public class EvenOdd {
} }
static boolean isOdd(int x) { static boolean isOdd(int x) {
return x % 2 == 1; return x % 2 != 0;
} }
static boolean isOrEven(int x) { static boolean isOrEven(int x) {

View File

@ -15,6 +15,16 @@
</parent> </parent>
<dependencies> <dependencies>
<dependency>
<groupId>io.reactivex</groupId>
<artifactId>rxjava</artifactId>
<version>${rx.java.version}</version>
</dependency>
<dependency>
<groupId>io.reactivex.rxjava2</groupId>
<artifactId>rxjava</artifactId>
<version>${rx.java2.version}</version>
</dependency>
<dependency> <dependency>
<groupId>log4j</groupId> <groupId>log4j</groupId>
<artifactId>log4j</artifactId> <artifactId>log4j</artifactId>
@ -27,6 +37,13 @@
<type>pom</type> <type>pom</type>
<scope>import</scope> <scope>import</scope>
</dependency> </dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.23.1</version>
<scope>test</scope>
</dependency>
</dependencies> </dependencies>
<build> <build>
@ -54,8 +71,10 @@
<properties> <properties>
<!-- testing --> <!-- testing -->
<maven-compiler-plugin.version>3.1</maven-compiler-plugin.version> <maven-compiler-plugin.version>3.1</maven-compiler-plugin.version>
<maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.source>12</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.target>12</maven.compiler.target>
<rx.java.version>1.2.5</rx.java.version>
<rx.java2.version>2.2.2</rx.java2.version>
</properties> </properties>
</project> </project>

View File

@ -0,0 +1,37 @@
package splitting;
class Article {
private final String target;
private final boolean featured;
public Article(String target, boolean featured) {
this.target = target;
this.featured = featured;
}
public String getTarget() {
return target;
}
public boolean isFeatured() {
return featured;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Article article = (Article) o;
if (featured != article.featured) return false;
return target.equals(article.target);
}
@Override
public int hashCode() {
int result = target.hashCode();
result = 31 * result + (featured ? 1 : 0);
return result;
}
}

View File

@ -0,0 +1,95 @@
package splitting;
import com.google.common.collect.Lists;
import org.junit.Test;
import rx.Observable;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static org.assertj.core.api.Assertions.assertThat;
public class StreamSplittingUnitTest {
private final static List<Article> articles = Lists.newArrayList(
new Article("Baeldung", true),
new Article("Baeldung", false),
new Article("Programming Daily", false),
new Article("The Code", false)
);
@Test
public void givenListOfArticles_shouldSplitListInTwoCategories_usingPartitioningBy() {
Map<Boolean, List<Article>> groupedArticles = articles.stream().collect(Collectors.partitioningBy(a -> a.getTarget().equals("Baeldung")));
assertThat(groupedArticles.get(true)).containsExactly(
new Article("Baeldung", true),
new Article("Baeldung", false));
assertThat(groupedArticles.get(false)).containsExactly(
new Article("Programming Daily", false),
new Article("The Code", false));
}
@Test
public void givenListOfArticles_shouldSplitListInMultipleCategories_usingGroupingBy() {
Map<String, List<Article>> groupedArticles = articles.stream().collect(Collectors.groupingBy(Article::getTarget));
assertThat(groupedArticles.get("Baeldung")).hasSize(2);
assertThat(groupedArticles.get("Programming Daily")).hasSize(1);
assertThat(groupedArticles.get("The Code")).hasSize(1);
assertThat(groupedArticles.get("Baeldung")).containsExactly(
new Article("Baeldung", true),
new Article("Baeldung", false));
assertThat(groupedArticles.get("Programming Daily")).containsExactly(new Article("Programming Daily", false));
assertThat(groupedArticles.get("The Code")).containsExactly(new Article("The Code", false));
}
@Test
public void givenListOfArticles_shouldSplitListInTwoCategories_usingTeeing() {
List<Long> countedArticles = articles.stream().collect(Collectors.teeing(
Collectors.filtering(article -> article.getTarget().equals("Baeldung"), Collectors.counting()),
Collectors.filtering(article -> !article.getTarget().equals("Baeldung"), Collectors.counting()),
List::of));
assertThat(countedArticles.get(0)).isEqualTo(2);
assertThat(countedArticles.get(1)).isEqualTo(2);
}
@Test
public void givenListOfArticles_shouldSplitListInTwoOVerlappingCategories_usingTeeing() {
List<List<Article>> groupedArticles = articles.stream().collect(Collectors.teeing(
Collectors.filtering(article -> article.getTarget().equals("Baeldung"), Collectors.toList()),
Collectors.filtering(Article::isFeatured, Collectors.toList()),
List::of));
assertThat(groupedArticles.get(0)).hasSize(2);
assertThat(groupedArticles.get(1)).hasSize(1);
assertThat(groupedArticles.get(0)).containsExactly(
new Article("Baeldung", true),
new Article("Baeldung", false));
assertThat(groupedArticles.get(1)).containsExactly(new Article("Baeldung", true));
}
@Test
public void givenListOfArticles_shouldSplitStreamInMultipleCategories_usingRxJava() {
Observable<Article> observableArticles = Observable.from(articles);
Observable<Article> baeldungObservable = observableArticles.filter(article -> article.getTarget().equals("Baeldung"));
Observable<Article> featuredObservable = observableArticles.filter(Article::isFeatured);
List<Article> baeldungArticles = new ArrayList<>();
List<Article> featuredArticles = new ArrayList<>();
baeldungObservable.subscribe(baeldungArticles::add);
featuredObservable.subscribe(featuredArticles::add);
assertThat(baeldungArticles).hasSize(2);
assertThat(featuredArticles).hasSize(1);
assertThat(baeldungArticles).containsExactly(
new Article("Baeldung", true),
new Article("Baeldung", false));
assertThat(featuredArticles).containsExactly(new Article("Baeldung", true));
}
}

View File

@ -115,7 +115,6 @@
<module>core-java-streams</module> <module>core-java-streams</module>
<module>core-java-streams-2</module> <module>core-java-streams-2</module>
<module>core-java-streams-3</module> <module>core-java-streams-3</module>
<module>core-java-streams-4</module>
<module>core-java-string-algorithms</module> <module>core-java-string-algorithms</module>
<module>core-java-string-algorithms-2</module> <module>core-java-string-algorithms-2</module>
<module>core-java-string-apis</module> <module>core-java-string-apis</module>

15
pom.xml
View File

@ -504,8 +504,7 @@
<!-- <module>play-framework</module> --> <!-- Not a maven project --> <!-- <module>play-framework</module> --> <!-- Not a maven project -->
<module>protobuffer</module> <module>protobuffer</module>
<module>quarkus</module> <module>quarkus-modules</module>
<module>quarkus-extension</module>
<module>rabbitmq</module> <module>rabbitmq</module>
<!-- <module>raml</module> --> <!-- Not a maven project --> <!-- <module>raml</module> --> <!-- Not a maven project -->
@ -941,8 +940,7 @@
<!-- <module>play-framework</module> --> <!-- Not a maven project --> <!-- <module>play-framework</module> --> <!-- Not a maven project -->
<module>protobuffer</module> <module>protobuffer</module>
<module>quarkus</module> <module>quarkus-modules</module>
<module>quarkus-extension</module>
<module>rabbitmq</module> <module>rabbitmq</module>
<!-- <module>raml</module> --> <!-- Not a maven project --> <!-- <module>raml</module> --> <!-- Not a maven project -->
@ -1240,6 +1238,7 @@
<module>core-java-modules/core-java-io-conversions-2</module> <module>core-java-modules/core-java-io-conversions-2</module>
<module>core-java-modules/core-java-jpms</module> <module>core-java-modules/core-java-jpms</module>
<module>core-java-modules/core-java-os</module> <module>core-java-modules/core-java-os</module>
<module>core-java-modules/core-java-streams-4</module>
<module>core-java-modules/core-java-string-algorithms-3</module> <module>core-java-modules/core-java-string-algorithms-3</module>
<module>core-java-modules/core-java-string-operations-3</module> <module>core-java-modules/core-java-string-operations-3</module>
<module>core-java-modules/core-java-string-operations-4</module> <module>core-java-modules/core-java-string-operations-4</module>
@ -1254,8 +1253,8 @@
<module>maven-modules/multimodulemavenproject</module> <module>maven-modules/multimodulemavenproject</module>
<module>persistence-modules/sirix</module> <module>persistence-modules/sirix</module>
<module>persistence-modules/spring-data-cassandra-2</module> <module>persistence-modules/spring-data-cassandra-2</module>
<module>quarkus-vs-springboot</module> <module>quarkus-modules/quarkus-vs-springboot</module>
<module>quarkus-jandex</module> <module>quarkus-modules/quarkus-jandex</module>
<module>spring-boot-modules/spring-boot-cassandre</module> <module>spring-boot-modules/spring-boot-cassandre</module>
<module>spring-boot-modules/spring-boot-camel</module> <module>spring-boot-modules/spring-boot-camel</module>
<module>testing-modules/testing-assertions</module> <module>testing-modules/testing-assertions</module>
@ -1322,8 +1321,8 @@
<module>maven-modules/multimodulemavenproject</module> <module>maven-modules/multimodulemavenproject</module>
<module>persistence-modules/sirix</module> <module>persistence-modules/sirix</module>
<module>persistence-modules/spring-data-cassandra-2</module> <module>persistence-modules/spring-data-cassandra-2</module>
<module>quarkus-vs-springboot</module> <module>quarkus-modules/quarkus-vs-springboot</module>
<module>quarkus-jandex</module> <module>quarkus-modules/quarkus-jandex</module>
<module>spring-boot-modules/spring-boot-cassandre</module> <module>spring-boot-modules/spring-boot-cassandre</module>
<module>spring-boot-modules/spring-boot-camel</module> <module>spring-boot-modules/spring-boot-camel</module>
<module>testing-modules/testing-assertions</module> <module>testing-modules/testing-assertions</module>

View File

@ -0,0 +1,3 @@
## Quarkus Modules
This module contains articles about quarkus. Actual articles go into its submodules.

25
quarkus-modules/pom.xml Normal file
View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
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>
<artifactId>quarkus-modules</artifactId>
<name>quarkus-modules</name>
<packaging>pom</packaging>
<parent>
<groupId>com.baeldung</groupId>
<artifactId>parent-modules</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<modules>
<module>quarkus</module>
<module>quarkus-extension</module>
<!--Disabled because requires Java-9
<module>quarkus-jandex</module>
<module>quarkus-vs-springboot</module>
-->
</modules>
</project>

View File

@ -11,7 +11,7 @@
<parent> <parent>
<groupId>com.baeldung</groupId> <groupId>com.baeldung</groupId>
<artifactId>parent-modules</artifactId> <artifactId>quarkus-modules</artifactId>
<version>1.0.0-SNAPSHOT</version> <version>1.0.0-SNAPSHOT</version>
</parent> </parent>

View File

@ -8,6 +8,12 @@
<version>1.0.0-SNAPSHOT</version> <version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging> <packaging>pom</packaging>
<parent>
<groupId>com.baeldung</groupId>
<artifactId>quarkus-modules</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<modules> <modules>
<module>hello-service</module> <module>hello-service</module>
<module>hello-sender-beans-xml</module> <module>hello-sender-beans-xml</module>

View File

@ -9,8 +9,8 @@
<packaging>pom</packaging> <packaging>pom</packaging>
<parent> <parent>
<artifactId>parent-modules</artifactId>
<groupId>com.baeldung</groupId> <groupId>com.baeldung</groupId>
<artifactId>quarkus-modules</artifactId>
<version>1.0.0-SNAPSHOT</version> <version>1.0.0-SNAPSHOT</version>
</parent> </parent>

0
quarkus/mvnw → quarkus-modules/quarkus/mvnw vendored Executable file → Normal file
View File

0
quarkus/mvnw.cmd → quarkus-modules/quarkus/mvnw.cmd vendored Executable file → Normal file
View File

View File

@ -10,7 +10,7 @@
<parent> <parent>
<groupId>com.baeldung</groupId> <groupId>com.baeldung</groupId>
<artifactId>parent-modules</artifactId> <artifactId>quarkus-modules</artifactId>
<version>1.0.0-SNAPSHOT</version> <version>1.0.0-SNAPSHOT</version>
</parent> </parent>

Some files were not shown because too many files have changed in this diff Show More